UNPKG

mlld

Version:

mlld: llm scripting language

63,362 lines 1.8 MB
import { __name } from './chunk-NJQT543K.mjs';
import { randomUUID } from 'crypto';
import * as acorn from 'acorn';

var NodeType = {
  Text: "Text",
  Comment: "Comment",
  CodeFence: "CodeFence",
  MlldRunBlock: "MlldRunBlock",
  VariableReference: "VariableReference",
  Directive: "Directive",
  PathSeparator: "PathSeparator",
  DotSeparator: "DotSeparator",
  Literal: "Literal",
  SectionMarker: "SectionMarker",
  Error: "Error",
  Newline: "Newline",
  StringLiteral: "StringLiteral",
  Frontmatter: "Frontmatter",
  CommandBase: "CommandBase",
  Parameter: "Parameter",
  ExecInvocation: "ExecInvocation",
  CommandReference: "CommandReference",
  FileReference: "FileReference",
  BinaryExpression: "BinaryExpression",
  TernaryExpression: "TernaryExpression",
  UnaryExpression: "UnaryExpression",
  WhenExpression: "WhenExpression"
};
var DirectiveKind = {
  run: "run",
  var: "var",
  show: "show",
  stream: "stream",
  exe: "exe",
  for: "for",
  path: "path",
  import: "import",
  export: "export",
  output: "output",
  append: "append",
  when: "when",
  guard: "guard",
  // NO deprecated entries - clean break!
  needs: "needs",
  wants: "wants",
  policy: "policy",
  while: "while"
};
var warningCollector = null;
var helpers = {
  debug(msg, ...args) {
    if (process.env.DEBUG_MLLD_GRAMMAR) console.log("[DEBUG GRAMMAR]", msg, ...args);
  },
  warn(message, suggestion, loc, code) {
    const warning = {
      message,
      ...suggestion ? {
        suggestion
      } : {},
      ...loc ? {
        location: loc
      } : {},
      ...code ? {
        code
      } : {}
    };
    if (warningCollector) {
      try {
        warningCollector(warning);
        return warning;
      } catch {
      }
    }
    try {
      console.warn(`[mlld grammar warning] ${warning.message}`);
    } catch {
    }
    return warning;
  },
  setWarningCollector(collector) {
    if (!collector) {
      warningCollector = null;
      return;
    }
    if (Array.isArray(collector)) {
      warningCollector = /* @__PURE__ */ __name((warning) => {
        collector.push(warning);
      }, "warningCollector");
      return;
    }
    warningCollector = collector;
  },
  clearWarningCollector() {
    warningCollector = null;
  },
  isExecutableReference(ref) {
    if (!ref) return false;
    if (ref.type === "ExecInvocation") return true;
    if (ref.type === "FieldAccessExec") return true;
    if (ref.arguments !== void 0 && ref.arguments !== null) return true;
    if (ref.hasParentheses === true) return true;
    return false;
  },
  isLogicalLineStart(input, pos) {
    if (pos === 0) return true;
    let i = pos - 1;
    while (i >= 0 && " 	\r".includes(input[i])) i--;
    return i < 0 || input[i] === "\n";
  },
  // Context Detection System - Core Helper Methods
  // ---------------------------------------------
  /**
   * Determines if the current position represents a directive context.
   * A directive context requires:
   * 1. Logical line start
   * 2. Optional leading slash
   * 3. Followed by a directive keyword
   */
  isDirectiveContext(input, pos) {
    if (!this.isLogicalLineStart(input, pos)) return false;
    let cursor = pos;
    if (input[cursor] === "/") cursor++;
    const directiveKeywords = [
      ...Object.keys(DirectiveKind),
      "log"
    ];
    for (const keyword of directiveKeywords) {
      const end = cursor + keyword.length;
      if (end > input.length) continue;
      const potentialKeyword = input.substring(cursor, end);
      if (potentialKeyword !== keyword) continue;
      if (end === input.length) return true;
      const nextChar = input[end];
      if (" 	\r\n".includes(nextChar)) return true;
    }
    return false;
  },
  /**
   * Legacy helper retained for compatibility.
   * Delegates to isDirectiveContext but requires the slash prefix.
   */
  isSlashDirectiveContext(input, pos) {
    return input[pos] === "/" && this.isDirectiveContext(input, pos);
  },
  /**
   * Determines if the current position represents a variable reference context
   * A variable context requires:
   * 1. @ symbol NOT at logical line start, or
   * 2. @ at line start but NOT followed by directive keyword
   */
  isAtVariableContext(input, pos) {
    if (input[pos] !== "@") return false;
    if (this.isDirectiveContext(input, pos)) return false;
    return true;
  },
  /**
   * DEPRECATED: RHS slashes are no longer supported
   * Keeping for reference but this should not be used
   * @deprecated
   */
  isRHSContext(input, pos) {
    return false;
  },
  /**
   * Determines if the current position represents plain text context
   * Plain text is any context that isn't a directive, variable, or RHS
   */
  isPlainTextContext(input, pos) {
    return !this.isDirectiveContext(input, pos) && !this.isAtVariableContext(input, pos);
  },
  /**
   * Determines if the current position is within a run code block context
   * This is used to identify language + code block patterns
   */
  isInRunCodeBlockContext(input, pos) {
    return false;
  },
  createNode(type, props) {
    if (!props.location && process.env.DEBUG_MLLD_GRAMMAR) {
      console.warn(`WARNING: Creating ${type} node without location data`);
      if (process.env.DEBUG_MLLD_GRAMMAR_TRACE) {
        console.trace();
      }
    }
    return Object.freeze({
      type,
      nodeId: randomUUID(),
      location: props.location,
      ...props
    });
  },
  createDirective(kind, data) {
    return this.createNode(NodeType.Directive, {
      directive: {
        kind,
        ...data
      }
    });
  },
  // New method for creating directives with the updated structure
  createStructuredDirective(kind, subtype, values, raw, meta, locationData, source = null) {
    return this.createNode(NodeType.Directive, {
      kind,
      subtype,
      source,
      values,
      raw,
      meta,
      location: locationData
    });
  },
  createVariableReferenceNode(valueType, data, location) {
    if (!location) {
      throw new Error(`Location is required for createVariableReferenceNode (valueType: ${valueType}, identifier: ${data.identifier || "unknown"})`);
    }
    return this.createNode(NodeType.VariableReference, {
      valueType,
      ...data,
      location
    });
  },
  normalizePathVar(id) {
    return id;
  },
  validateRunContent: /* @__PURE__ */ __name(() => true, "validateRunContent"),
  validateDefineContent: /* @__PURE__ */ __name(() => true, "validateDefineContent"),
  validatePath(pathParts, directiveKind) {
    const raw = this.reconstructRawString(pathParts).trim();
    let hasVariables = false;
    if (pathParts && pathParts.length > 0) {
      for (const node of pathParts) {
        if (node.type === NodeType.VariableReference) {
          hasVariables = true;
        }
      }
    }
    const finalFlags = {
      hasVariables
    };
    const result = {
      raw,
      values: pathParts,
      ...finalFlags
    };
    this.debug("PATH", "validatePath final result:", JSON.stringify(result, null, 2));
    return result;
  },
  getImportSubtype(list) {
    if (!list) return "importAll";
    if (list.length === 0) return "importAll";
    if (list.length === 1 && list[0].name === "*") return "importAll";
    return "importSelected";
  },
  trace(pos, reason) {
  },
  reconstructRawString(nodes) {
    if (!Array.isArray(nodes)) {
      if (nodes && typeof nodes === "object") {
        if (nodes.type === NodeType.Text) return nodes.content || "";
        if (nodes.type === NodeType.VariableReference) {
          const varId = nodes.identifier;
          const valueType = nodes.valueType;
          const fields = nodes.fields || [];
          let fieldPath = "";
          for (const field of fields) {
            if (field.type === "field" || field.type === "dot") {
              fieldPath += `.${field.name || field.value}`;
            } else if (field.type === "array") {
              fieldPath += `[${field.index}]`;
            }
          }
          if (valueType === "varInterpolation") {
            return `{{${varId}${fieldPath}}}`;
          } else if (valueType === "varIdentifier") {
            return `@${varId}${fieldPath}`;
          } else {
            return `{{${varId}${fieldPath}}}`;
          }
        }
        if (nodes.type === "ConditionalStringFragment") {
          const conditionRaw = this.reconstructRawString(nodes.condition);
          const contentRaw = this.reconstructRawString(nodes.content || []);
          return `${conditionRaw}?"${contentRaw}"`;
        }
        if (nodes.type === "ConditionalTemplateSnippet") {
          const conditionRaw = this.reconstructRawString(nodes.condition);
          const contentRaw = this.reconstructRawString(nodes.content || []);
          return `${conditionRaw}?\`${contentRaw}\``;
        }
      }
      return String(nodes || "");
    }
    let raw = "";
    for (const node of nodes) {
      if (!node) continue;
      if (node.type === NodeType.Text) {
        raw += node.content || "";
      } else if (node.type === NodeType.VariableReference) {
        const varId = node.identifier;
        const valueType = node.valueType;
        const fields = node.fields || [];
        let fieldPath = "";
        for (const field of fields) {
          if (field.type === "field" || field.type === "dot") {
            fieldPath += `.${field.name || field.value}`;
          } else if (field.type === "array") {
            fieldPath += `[${field.index}]`;
          }
        }
        if (valueType === "varInterpolation") {
          raw += `{{${varId}${fieldPath}}}`;
        } else if (valueType === "varIdentifier") {
          raw += `@${varId}${fieldPath}`;
        } else {
          raw += `{{${varId}${fieldPath}}}`;
        }
      } else if (node.type === NodeType.PathSeparator) {
        raw += node.value || "";
      } else if (node.type === NodeType.SectionMarker) {
        raw += node.value || "";
      } else if (node.type === NodeType.StringLiteral) {
        raw += node.value || "";
      } else if (node.type === "ConditionalStringFragment") {
        const conditionRaw = this.reconstructRawString(node.condition);
        const contentRaw = this.reconstructRawString(node.content || []);
        raw += `${conditionRaw}?"${contentRaw}"`;
      } else if (node.type === "ConditionalTemplateSnippet") {
        const conditionRaw = this.reconstructRawString(node.condition);
        const contentRaw = this.reconstructRawString(node.content || []);
        raw += `${conditionRaw}?\`${contentRaw}\``;
      } else if (typeof node === "string") {
        raw += node;
      } else {
        raw += node.content || node.value || node.raw || "";
      }
    }
    return raw;
  },
  createPathMetadata(rawPath, parts) {
    return {
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference),
      isAbsolute: rawPath.startsWith("/"),
      hasExtension: /\.[a-zA-Z0-9]+$/.test(rawPath),
      extension: rawPath.match(/\.([a-zA-Z0-9]+)$/)?.[1] || null
    };
  },
  createCommandMetadata(parts) {
    return {
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference)
    };
  },
  createTemplateMetadata(parts, wrapperType) {
    return {
      hasVariables: parts.some((p) => p && (p.type === NodeType.VariableReference || p.type === NodeType.ExecInvocation || p.type === "ConditionalTemplateSnippet" || p.type === "ConditionalStringFragment")),
      isTemplateContent: wrapperType === "doubleBracket"
    };
  },
  createUrlMetadata(protocol, parts, hasSection = false) {
    return {
      isUrl: true,
      protocol,
      hasVariables: parts.some((p) => p && p.type === NodeType.VariableReference),
      hasSection
    };
  },
  ttlToSeconds(value, unit) {
    const multipliers = {
      "milliseconds": 1 / 1e3,
      "seconds": 1,
      "minutes": 60,
      "hours": 3600,
      "days": 86400,
      "weeks": 604800
    };
    return value * (multipliers[unit] || 1);
  },
  detectFormatFromPath(path) {
    const ext = path.match(/\.([a-zA-Z0-9]+)$/)?.[1]?.toLowerCase();
    if (!ext) return null;
    const formatMap = {
      "json": "json",
      "xml": "xml",
      "yaml": "yaml",
      "yml": "yaml",
      "csv": "csv",
      "md": "markdown",
      "markdown": "markdown",
      "txt": "text",
      "text": "text"
    };
    return formatMap[ext] || null;
  },
  createSectionMeta(pathParts, sectionParts, hasRename) {
    return {
      sourceType: "section",
      hasVariables: [
        ...pathParts,
        ...sectionParts
      ].some((part) => part && part.type === "VariableReference"),
      hasRename
    };
  },
  reconstructSectionPath(pathParts, sectionParts) {
    const pathStr = this.reconstructRawString(pathParts);
    const sectionStr = this.reconstructRawString(sectionParts);
    return `${pathStr} # ${sectionStr}`;
  },
  /**
   * Checks if we're at a bracket that should end command parsing
   * This uses a specific heuristic: ] at end of input OR ] on its own line
   */
  isCommandEndingBracket(input, pos) {
    if (input[pos] !== "]") return false;
    const nextPos = pos + 1;
    if (nextPos >= input.length) return true;
    let i = nextPos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    return i >= input.length || input[i] === "\n";
  },
  /**
   * Parse command content that may contain variables and text segments
   * This is used by the CommandBracketContent rule to handle @var interpolation
   *
   * @param content - The content to parse
   * @param baseLocation - The location of the content in the source
   */
  parseCommandContent(content, baseLocation) {
    const parts = [];
    let i = 0;
    let currentText = "";
    let textStartOffset = 0;
    if (!baseLocation) {
      console.warn("parseCommandContent called without baseLocation");
      return this.parseCommandContentLegacy(content);
    }
    let currentOffset = baseLocation.start.offset;
    let currentLine = baseLocation.start.line;
    let currentColumn = baseLocation.start.column;
    while (i < content.length) {
      if (content[i] === "@" && i + 1 < content.length) {
        if (currentText) {
          const textEndOffset = currentOffset;
          const textEndLine = currentLine;
          const textEndColumn = currentColumn;
          parts.push(this.createNode(NodeType.Text, {
            content: currentText,
            location: {
              start: {
                offset: baseLocation.start.offset + textStartOffset,
                line: baseLocation.start.line,
                column: baseLocation.start.column + textStartOffset
              },
              end: {
                offset: textEndOffset,
                line: textEndLine,
                column: textEndColumn
              }
            }
          }));
          currentText = "";
        }
        const varStartOffset = currentOffset;
        const varStartLine = currentLine;
        const varStartColumn = currentColumn;
        i++;
        currentOffset++;
        currentColumn++;
        let varName = "";
        while (i < content.length && /[a-zA-Z0-9_]/.test(content[i])) {
          varName += content[i];
          i++;
          currentOffset++;
          currentColumn++;
        }
        if (varName) {
          const varEndOffset = currentOffset;
          const varEndLine = currentLine;
          const varEndColumn = currentColumn;
          parts.push(this.createVariableReferenceNode("varIdentifier", {
            identifier: varName
          }, {
            start: {
              offset: varStartOffset,
              line: varStartLine,
              column: varStartColumn
            },
            end: {
              offset: varEndOffset,
              line: varEndLine,
              column: varEndColumn
            }
          }));
          textStartOffset = i;
        } else {
          currentText += "@";
        }
      } else {
        if (currentText === "") {
          textStartOffset = i;
        }
        currentText += content[i];
        if (content[i] === "\n") {
          currentLine++;
          currentColumn = 1;
        } else {
          currentColumn++;
        }
        currentOffset++;
        i++;
      }
    }
    if (currentText) {
      parts.push(this.createNode(NodeType.Text, {
        content: currentText,
        location: {
          start: {
            offset: baseLocation.start.offset + textStartOffset,
            line: baseLocation.start.line,
            column: baseLocation.start.column + textStartOffset
          },
          end: {
            offset: currentOffset,
            line: currentLine,
            column: currentColumn
          }
        }
      }));
    }
    return parts;
  },
  /**
   * Legacy version of parseCommandContent for backward compatibility
   * Creates nodes without proper location data
   */
  parseCommandContentLegacy(content) {
    const parts = [];
    let i = 0;
    let currentText = "";
    while (i < content.length) {
      if (content[i] === "@" && i + 1 < content.length) {
        if (currentText) {
          parts.push(this.createNode(NodeType.Text, {
            content: currentText
          }));
          currentText = "";
        }
        i++;
        let varName = "";
        while (i < content.length && /[a-zA-Z0-9_]/.test(content[i])) {
          varName += content[i];
          i++;
        }
        if (varName) {
          parts.push(this.createNode(NodeType.Text, {
            content: "@" + varName
          }));
        } else {
          currentText += "@";
        }
      } else {
        currentText += content[i];
        i++;
      }
    }
    if (currentText) {
      parts.push(this.createNode(NodeType.Text, {
        content: currentText
      }));
    }
    return parts;
  },
  /**
   * Create an ExecInvocation node
   */
  createExecInvocation(commandRef, withClause, location) {
    return this.createNode("ExecInvocation", {
      commandRef,
      withClause: withClause || null,
      location
    });
  },
  attachPostFields(exec, post) {
    if (!post || post.length === 0) {
      return exec;
    }
    let current = exec;
    const tail = current.withClause || null;
    if (tail) {
      current = {
        ...current,
        withClause: null
      };
    }
    const additionalFields = [];
    for (const entry of post) {
      if (entry?.type === "methodCall") {
        if (additionalFields.length > 0) {
          const existingFields = current.fields || [];
          current = {
            ...current,
            fields: [
              ...existingFields,
              ...additionalFields
            ]
          };
          additionalFields.length = 0;
        }
        const methodRef = {
          name: entry.name,
          identifier: [
            this.createNode(NodeType.Text, {
              content: entry.name,
              location: entry.location
            })
          ],
          args: entry.args || [],
          isCommandReference: true,
          objectSource: current
        };
        current = this.createExecInvocation(methodRef, null, entry.location);
      } else {
        additionalFields.push(entry);
      }
    }
    if (additionalFields.length > 0) {
      const existingFields = current.fields || [];
      current = {
        ...current,
        fields: [
          ...existingFields,
          ...additionalFields
        ]
      };
    }
    if (tail) {
      current = {
        ...current,
        withClause: tail
      };
    }
    return current;
  },
  applyTail(exec, tail) {
    if (!tail) {
      return exec;
    }
    return {
      ...exec,
      withClause: tail
    };
  },
  /**
   * Get the command name from an ExecInvocation node
   */
  getExecInvocationName(node) {
    if (!node || node.type !== "ExecInvocation") return null;
    return node.commandRef?.identifier || node.commandRef?.name;
  },
  /**
   * Check if a node is an ExecInvocation
   */
  isExecInvocationNode(node) {
    return node?.type === "ExecInvocation";
  },
  /**
   * Parse a JavaScript code block using acorn to find the complete block
   * This handles nested braces, strings, template literals, etc. properly
   *
   * @param input - The full input string
   * @param startPos - Position after the opening brace
   * @returns The parsed code content and end position, or null if invalid
   */
  parseJavaScriptBlock(input, startPos) {
    const potentialCode = input.substring(startPos);
    let lastValidEnd = -1;
    let lastValidCode = "";
    for (let i = 0; i < potentialCode.length; i++) {
      if (potentialCode[i] !== "}") continue;
      const testCode = potentialCode.substring(0, i);
      try {
        acorn.parse(`(${testCode})`, {
          ecmaVersion: "latest",
          allowReturnOutsideFunction: true
        });
        lastValidEnd = i;
        lastValidCode = testCode;
      } catch (e) {
        try {
          acorn.parse(testCode, {
            ecmaVersion: "latest",
            allowReturnOutsideFunction: true,
            sourceType: "module"
          });
          lastValidEnd = i;
          lastValidCode = testCode;
        } catch (e2) {
        }
      }
    }
    if (lastValidEnd >= 0) {
      return {
        content: lastValidCode.trim(),
        endPos: startPos + lastValidEnd
      };
    }
    return null;
  },
  // Array vs Path disambiguation helpers for /var directive
  createEmptyArray(location) {
    return {
      type: "array",
      items: [],
      location
    };
  },
  createArrayFromContent(content, location) {
    return {
      type: "array",
      items: content,
      location
    };
  },
  createSectionExtraction(content, location) {
    return {
      type: "section",
      path: content.path,
      section: content.section,
      location
    };
  },
  createPathDereference(content, location) {
    return {
      type: "path",
      segments: content,
      location
    };
  },
  createObjectFromProperties(properties, location) {
    return {
      type: "object",
      properties: properties || {},
      location
    };
  },
  // Error Recovery Helper Functions
  // --------------------------------
  /**
   * Checks if an array is unclosed by scanning ahead
   * Returns true if we hit a newline before finding the closing bracket
   */
  isUnclosedArray(input, pos) {
    let depth = 1;
    let i = pos;
    let hasHash = false;
    this.debug("isUnclosedArray starting at pos", pos, "first 50 chars:", input.substring(pos, pos + 50));
    while (i < input.length && depth > 0) {
      const char = input[i];
      if (char === "[") {
        depth++;
        this.debug("Found [ at", i, "depth now", depth);
      } else if (char === "]") {
        depth--;
        this.debug("Found ] at", i, "depth now", depth);
      } else if (char === "#" && depth === 1) {
        hasHash = true;
        this.debug("Found # at", i, "in brackets - this is section syntax");
      } else if (char === "\n" && depth > 0) {
        if (!hasHash) {
          this.debug("Found newline at", i, "without # - unclosed array");
          return true;
        }
        this.debug("Found newline at", i, "but has # - continuing scan");
      }
      i++;
    }
    const result = depth > 0;
    this.debug("isUnclosedArray finished: result=", result, "hasHash=", hasHash, "depth=", depth, "scanned to pos", i);
    return result;
  },
  /**
   * Checks if an object is unclosed by scanning ahead
   * Returns true if we hit a newline before finding the closing brace
   */
  isUnclosedObject(input, pos) {
    let depth = 1;
    let i = pos;
    let inString = false;
    let stringChar = null;
    while (i < input.length && depth > 0) {
      const char = input[i];
      if ((char === '"' || char === "'") && (i === 0 || input[i - 1] !== "\\")) {
        if (!inString) {
          inString = true;
          stringChar = char;
        } else if (char === stringChar) {
          inString = false;
          stringChar = null;
        }
      }
      if (!inString) {
        if (char === "{") depth++;
        else if (char === "}") depth--;
        else if (char === "\n" && depth > 0) return true;
      }
      i++;
    }
    return depth > 0;
  },
  /**
   * Checks if a string quote is unclosed
   * Returns true if we hit a newline or end of input before finding the closing quote
   */
  detectMissingQuoteClose(input, pos, quoteChar) {
    let i = pos;
    while (i < input.length) {
      if (input[i] === quoteChar && input[i - 1] !== "\\") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  },
  /**
   * Checks if a template delimiter (::) is unclosed
   */
  isUnclosedTemplate(input, pos) {
    let i = pos;
    while (i < input.length - 1) {
      if (input[i] === ":" && input[i + 1] === ":") return false;
      i++;
    }
    return true;
  },
  /**
   * Checks if we're at the start of what looks like a multiline array
   * (array with newline after opening bracket)
   */
  isMultilineArrayStart(input, pos) {
    let i = pos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    return i < input.length && input[i] === "\n";
  },
  /**
   * Scans ahead to check if this looks like a valid language identifier for /run
   */
  isValidLanguageKeyword(input, pos, lang) {
    const validLanguages = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLanguages.includes(lang.toLowerCase());
  },
  /**
   * Checks if we're missing a 'from' keyword in an import statement
   */
  isMissingFromKeyword(input, pos) {
    let i = pos;
    while (i < input.length && (input[i] === " " || input[i] === "	")) {
      i++;
    }
    if (i < input.length) {
      const char = input[i];
      return char === '"' || char === "'" || char === "[" || char === "@";
    }
    return false;
  },
  /**
   * Create an error with enhanced location tracking
   * Since we can't access parser internals from here, we'll just throw
   * a regular error and let the parser enhance it
   */
  mlldError(message, expectedToken, loc) {
    const error = new Error(message);
    error.isMlldError = true;
    error.expectedToken = expectedToken;
    error.mlldErrorLocation = loc;
    throw error;
  },
  /**
   * Capture content inside balanced [ ] brackets starting at startPos (the first character after '[')
   * Returns null if no matching closing bracket is found
   */
  captureBracketContent(input, startPos) {
    let depth = 1;
    let i = startPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'" || ch === "`") {
          inString = true;
          quote = ch;
        } else if (ch === "[") {
          depth++;
        } else if (ch === "]") {
          depth--;
          if (depth === 0) {
            return {
              content: input.slice(startPos, i),
              endOffset: i
            };
          }
        }
      }
      i++;
    }
    return null;
  },
  /**
   * Offset a location object by a base location (start of the block content)
   */
  offsetLocation(loc, baseLocation) {
    if (!loc || !baseLocation?.start) return loc;
    const baseStart = baseLocation.start;
    const adjustPosition = /* @__PURE__ */ __name((pos) => {
      const line = (pos?.line || 1) + (baseStart.line || 1) - 1;
      const column = pos?.line === 1 ? (pos?.column || 1) + (baseStart.column || 1) - 1 : pos?.column || 1;
      return {
        offset: (pos?.offset || 0) + (baseStart.offset || 0),
        line,
        column
      };
    }, "adjustPosition");
    return {
      source: baseLocation.source || loc.source,
      start: adjustPosition(loc.start),
      end: adjustPosition(loc.end)
    };
  },
  /**
   * Reparse a block substring with a specific start rule to surface inner errors with corrected offsets
   */
  reparseBlock(options) {
    const parseOptions = {
      startRule: options.startRule
    };
    if (options.mode) parseOptions.mode = options.mode;
    if (options.grammarSource) parseOptions.grammarSource = options.grammarSource;
    try {
      const normalizedText = options.text.replace(/\s+$/, "");
      options.parse(normalizedText, parseOptions);
    } catch (error) {
      const err = error;
      if (err instanceof options.SyntaxErrorClass && err.location) {
        const adjustedLocation = this.offsetLocation(err.location, options.baseLocation);
        const enhancedError = new options.SyntaxErrorClass(err.message, err.expected, err.found, adjustedLocation);
        enhancedError.expected = err.expected;
        enhancedError.found = err.found;
        enhancedError.location = adjustedLocation;
        throw enhancedError;
      }
      throw error;
    }
    throw this.mlldError("Invalid block content.", void 0, options.baseLocation);
  },
  // Parser State Management for Code Blocks
  // ----------------------------------------
  // These functions help prevent state corruption when parsing multiple
  // complex functions in mlld-run blocks
  /**
   * Parser state tracking object
   * Used to detect and prevent state corruption issues
   */
  parserState: {
    codeBlockDepth: 0,
    braceDepth: 0,
    inString: false,
    stringChar: null,
    lastDirectiveEndPos: -1,
    functionCount: 0,
    maxNestingDepth: 20
  },
  /**
   * Reset parser state between functions
   * This prevents state corruption when parsing multiple complex functions
   */
  resetCodeParsingState() {
    this.parserState.braceDepth = 0;
    this.parserState.inString = false;
    this.parserState.stringChar = null;
    this.parserState.functionCount++;
    this.debug("Parser state reset", {
      functionCount: this.parserState.functionCount,
      lastEndPos: this.parserState.lastDirectiveEndPos
    });
  },
  /**
   * Get current brace depth for debugging and limits
   */
  getBraceDepth() {
    return this.parserState.braceDepth;
  },
  /**
   * Increment brace depth with overflow checking
   */
  incrementBraceDepth() {
    this.parserState.braceDepth++;
    if (this.parserState.braceDepth > this.parserState.maxNestingDepth) {
      this.mlldError(`Code block nesting too deep (${this.parserState.braceDepth} levels). Consider simplifying your function or splitting it into smaller functions.`);
    }
  },
  /**
   * Decrement brace depth with underflow checking
   */
  decrementBraceDepth() {
    this.parserState.braceDepth--;
    if (this.parserState.braceDepth < 0) {
      this.debug("WARNING: Brace depth underflow detected", {
        depth: this.parserState.braceDepth,
        functionCount: this.parserState.functionCount
      });
      this.parserState.braceDepth = 0;
    }
  },
  /**
   * Validate parser state consistency
   * Returns true if state is valid, false if corrupted
   */
  validateParserState() {
    const isValid = this.parserState.braceDepth >= 0 && this.parserState.braceDepth <= this.parserState.maxNestingDepth;
    if (!isValid) {
      this.debug("Parser state validation failed", {
        braceDepth: this.parserState.braceDepth,
        inString: this.parserState.inString,
        functionCount: this.parserState.functionCount
      });
    }
    return isValid;
  },
  /**
   * Mark the end of a directive for state tracking
   */
  markDirectiveEnd(pos) {
    this.parserState.lastDirectiveEndPos = pos;
  },
  // File Reference Helper Functions
  // --------------------------------
  /**
   * Checks if content inside <...> represents a file reference
   * File references are detected by presence of: . * @
   * Note: We don't include / since we don't support directories
   * Files without extensions can be used outside interpolation contexts
   */
  isFileReferenceContent(content) {
    if (content.trim().startsWith("!")) {
      return false;
    }
    return /[.*@]/.test(content);
  },
  /**
   * Creates a FileReference AST node
   */
  createFileReferenceNode(source, fields, pipes, location) {
    return {
      type: "FileReference",
      nodeId: randomUUID(),
      source,
      fields: fields || [],
      pipes: pipes || [],
      location,
      meta: {
        isFileReference: true,
        hasGlob: typeof source === "object" && source.raw && source.raw.includes("*"),
        isPlaceholder: source && source.type === "placeholder"
      }
    };
  },
  // Binary expression builder with left-to-right associativity
  createBinaryExpression(first, rest, location) {
    if (!rest || rest.length === 0) return first;
    return rest.reduce((left, { op, right }) => this.createNode("BinaryExpression", {
      operator: op,
      left,
      right,
      location
    }), first);
  },
  buildWhenBoundPatternExpression(boundIdentifier, pattern) {
    const anchorLocation = /* @__PURE__ */ __name((loc) => {
      if (!loc || !loc.start) return loc;
      return {
        start: loc.start,
        end: loc.start
      };
    }, "anchorLocation");
    const boundRef = /* @__PURE__ */ __name((loc) => this.createVariableReferenceNode("identifier", {
      identifier: boundIdentifier
    }, anchorLocation(loc)), "boundRef");
    const build = /* @__PURE__ */ __name((p) => {
      if (!p) return p;
      if (p.kind === "logical") {
        const first = build(p.first);
        const rest = Array.isArray(p.rest) ? p.rest.map((r) => ({
          op: r.op,
          right: build(r.right)
        })) : [];
        return this.createBinaryExpression(first, rest, p.location);
      }
      if (p.kind === "wildcard") return p.node;
      if (p.kind === "compare") {
        return this.createNode("BinaryExpression", {
          operator: p.op,
          left: boundRef(p.location),
          right: p.right,
          location: p.location
        });
      }
      if (p.kind === "equals") {
        const value = p.value;
        if (value && typeof value === "object" && "type" in value && value.type === "Literal") {
          if (value.valueType === "none" || value.valueType === "wildcard") return value;
        }
        return this.createNode("BinaryExpression", {
          operator: "==",
          left: boundRef(p.location),
          right: value,
          location: p.location
        });
      }
      return p;
    }, "build");
    return build(pattern);
  },
  // Check if nodes contain newlines
  containsNewline(nodes) {
    if (!Array.isArray(nodes)) nodes = [
      nodes
    ];
    return nodes.some((n) => n.type === "Newline" || n.content && n.content.includes("\n") || n.raw && n.raw.includes("\n"));
  },
  /**
   * Creates a WhenExpression node for when expressions (used in /var assignments)
   */
  createWhenExpression(conditions, withClause, location, modifier = null, bound = null) {
    return this.createNode(NodeType.WhenExpression, {
      conditions,
      withClause: withClause || null,
      ...bound ? {
        boundIdentifier: bound.boundIdentifier,
        boundValue: bound.boundValue
      } : {},
      meta: {
        conditionCount: conditions.length,
        isValueReturning: true,
        evaluationType: "expression",
        hasTailModifiers: !!withClause,
        modifier,
        hasBoundValue: !!bound,
        ...bound ? {
          boundIdentifier: bound.boundIdentifier
        } : {}
      },
      location
    });
  },
  /**
   * Creates a ForExpression node for for...in expressions in /var assignments
   */
  createForExpression(variable, source, expression, location, opts, batchPipeline) {
    const meta = {
      isForExpression: true
    };
    if (opts) {
      meta.forOptions = opts;
    }
    if (batchPipeline) {
      meta.batchPipeline = batchPipeline;
    }
    return {
      type: "ForExpression",
      nodeId: randomUUID(),
      variable,
      source,
      expression: Array.isArray(expression) ? expression : [
        expression
      ],
      location,
      meta
    };
  },
  /**
   * Creates an action node for /for directive actions
   */
  createForActionNode(directive, content, location, endingTail, endingComment) {
    const kind = directive;
    if (kind === "show" && content) {
      if (content && typeof content === "object" && "content" in content && "wrapperType" in content) {
        const values2 = {
          content: content.content
        };
        if (endingTail && endingTail.pipeline) {
          values2.pipeline = endingTail.pipeline;
        }
        const meta3 = {
          implicit: false,
          isTemplateContent: true
        };
        if (endingComment) {
          meta3.comment = endingComment;
        }
        return [
          this.createNode(NodeType.Directive, {
            kind,
            subtype: "showTemplate",
            values: values2,
            raw: {
              content: this.reconstructRawString(content.content)
            },
            meta: meta3,
            location
          })
        ];
      }
      const isExec = content && typeof content === "object" && content.type === "ExecInvocation";
      const values = {
        invocation: content
      };
      if (endingTail && endingTail.pipeline) {
        values.withClause = {
          pipeline: endingTail.pipeline
        };
      }
      const meta2 = {
        implicit: false
      };
      if (endingComment) {
        meta2.comment = endingComment;
      }
      return [
        this.createNode(NodeType.Directive, {
          kind,
          subtype: isExec ? "showInvocation" : "showVariable",
          values,
          raw: {
            content: this.reconstructRawString(content)
          },
          meta: meta2,
          location
        })
      ];
    }
    const meta = {
      implicit: false
    };
    if (endingComment) {
      meta.comment = endingComment;
    }
    return [
      this.createNode(NodeType.Directive, {
        kind,
        subtype: kind,
        values: {
          content: Array.isArray(content) ? content : [
            content
          ]
        },
        raw: {
          content: this.reconstructRawString(content)
        },
        meta,
        location
      })
    ];
  },
  /**
   * Helper functions for expression context detection
   */
  isSimpleCondition(expr) {
    return expr.type === "VariableReference" || expr.type === "Literal" || expr.type === "UnaryExpression" && expr.operator === "!";
  },
  extractConditionVariables(expr) {
    const variables = [];
    function traverse(node) {
      if (node.type === "VariableReference") {
        variables.push(node.name || node.identifier);
      } else if (node.left) traverse(node.left);
      if (node.right) traverse(node.right);
      if (node.operand) traverse(node.operand);
    }
    __name(traverse, "traverse");
    traverse(expr);
    return [
      ...new Set(variables)
    ];
  },
  /**
   * Unified pipeline processing helper
   * Consolidates pipeline handling across directive contexts
   */
  processPipelineEnding(values, raw, meta, ending) {
    if (ending.tail) {
      const pipeline = ending.tail.pipeline;
      raw.pipeline = pipeline.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(" | ");
      meta.hasPipeline = true;
      if (ending.parallel) {
        values.withClause = {
          pipeline,
          ...ending.parallel
        };
        meta.withClause = {
          ...meta.withClause || {},
          ...ending.parallel
        };
      } else {
        values.pipeline = pipeline;
      }
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
  }
};

// grammar/generated/parser/deps/node-type.js
var node_type_default = NodeType;

// grammar/generated/parser/deps/directive-kind.js
var directive_kind_default = DirectiveKind;

// grammar/generated/parser/deps/helpers.js
var helpers_default = helpers;

// grammar/generated/parser/parser.js
function peg$subclass(child, parent) {
  function C() {
    this.constructor = child;
  }
  __name(C, "C");
  C.prototype = parent.prototype;
  child.prototype = new C();
}
__name(peg$subclass, "peg$subclass");
function peg$SyntaxError(message, expected, found, location) {
  var self = Error.call(this, message);
  if (Object.setPrototypeOf) {
    Object.setPrototypeOf(self, peg$SyntaxError.prototype);
  }
  self.expected = expected;
  self.found = found;
  self.location = location;
  self.name = "SyntaxError";
  return self;
}
__name(peg$SyntaxError, "peg$SyntaxError");
peg$subclass(peg$SyntaxError, Error);
function peg$padEnd(str, targetLength, padString) {
  padString = padString || " ";
  if (str.length > targetLength) {
    return str;
  }
  targetLength -= str.length;
  padString += padString.repeat(targetLength);
  return str + padString.slice(0, targetLength);
}
__name(peg$padEnd, "peg$padEnd");
peg$SyntaxError.prototype.format = function(sources) {
  var str = "Error: " + this.message;
  if (this.location) {
    var src = null;
    var k;
    for (k = 0; k < sources.length; k++) {
      if (sources[k].source === this.location.source) {
        src = sources[k].text.split(/\r\n|\n|\r/g);
        break;
      }
    }
    var s = this.location.start;
    var offset_s = this.location.source && typeof this.location.source.offset === "function" ? this.location.source.offset(s) : s;
    var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column;
    if (src) {
      var e = this.location.end;
      var filler = peg$padEnd("", offset_s.line.toString().length, " ");
      var line = src[s.line - 1];
      var last = s.line === e.line ? e.column : line.length + 1;
      var hatLen = last - s.column || 1;
      str += "\n --> " + loc + "\n" + filler + " |\n" + offset_s.line + " | " + line + "\n" + filler + " | " + peg$padEnd("", s.column - 1, " ") + peg$padEnd("", hatLen, "^");
    } else {
      str += "\n at " + loc;
    }
  }
  return str;
};
peg$SyntaxError.buildMessage = function(expected, found) {
  var DESCRIBE_EXPECTATION_FNS = {
    literal: /* @__PURE__ */ __name(function(expectation) {
      return '"' + literalEscape(expectation.text) + '"';
    }, "literal"),
    class: /* @__PURE__ */ __name(function(expectation) {
      var escapedParts = expectation.parts.map(function(part) {
        return Array.isArray(part) ? classEscape(part[0]) + "-" + classEscape(part[1]) : classEscape(part);
      });
      return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]";
    }, "class"),
    any: /* @__PURE__ */ __name(function() {
      return "any character";
    }, "any"),
    end: /* @__PURE__ */ __name(function() {
      return "end of input";
    }, "end"),
    other: /* @__PURE__ */ __name(function(expectation) {
      return expectation.description;
    }, "other")
  };
  function hex(ch) {
    return ch.charCodeAt(0).toString(16).toUpperCase();
  }
  __name(hex, "hex");
  function literalEscape(s) {
    return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
      return "\\x0" + hex(ch);
    }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
      return "\\x" + hex(ch);
    });
  }
  __name(literalEscape, "literalEscape");
  function classEscape(s) {
    return s.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(ch) {
      return "\\x0" + hex(ch);
    }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) {
      return "\\x" + hex(ch);
    });
  }
  __name(classEscape, "classEscape");
  function describeExpectation(expectation) {
    return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
  }
  __name(describeExpectation, "describeExpectation");
  function describeExpected(expected2) {
    var descriptions = expected2.map(describeExpectation);
    var i, j;
    descriptions.sort();
    if (descriptions.length > 0) {
      for (i = 1, j = 1; i < descriptions.length; i++) {
        if (descriptions[i - 1] !== descriptions[i]) {
          descriptions[j] = descriptions[i];
          j++;
        }
      }
      descriptions.length = j;
    }
    switch (descriptions.length) {
      case 1:
        return descriptions[0];
      case 2:
        return descriptions[0] + " or " + descriptions[1];
      default:
        return descriptions.slice(0, -1).join(", ") + ", or " + descriptions[descriptions.length - 1];
    }
  }
  __name(describeExpected, "describeExpected");
  function describeFound(found2) {
    return found2 ? '"' + literalEscape(found2) + '"' : "end of input";
  }
  __name(describeFound, "describeFound");
  return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
};
function peg$parse(input, options) {
  options = options !== void 0 ? options : {};
  var peg$FAILED = {};
  var peg$source = options.grammarSource;
  var peg$startRuleFunctions = {
    Start: peg$parseStart,
    ExeBlockBody: peg$parseExeBlockBody,
    ForBlockBody: peg$parseForBlockBody,
    ForBlockStatementList: peg$parseForBlockStatementList,
    WhenConditionList: peg$parseWhenConditionList,
    WhenExpressionConditionList: peg$parseWhenExpressionConditionList,
    WhenBoundExpressionConditionList: peg$parseWhenBoundExpressionConditionList,
    GuardRuleList: peg$parseGuardRuleList,
    WhenActionBlockContent: peg$parseWhenActionBlockContent,
    TemplateBodyAtt: peg$parseTemplateBodyAtt,
    TemplateBodyMtt: peg$parseTemplateBodyMtt
  };
  var peg$startRuleFunction = peg$parseStart;
  var peg$c0 = ">>";
  var peg$c1 = "<<";
  var peg$c2 = "\n";
  var peg$c3 = "::";
  var peg$c4 = "```";
  var peg$c5 = "mlld-run";
  var peg$c6 = "---";
  var peg$c7 = "'";
  var peg$c8 = '"';
  var peg$c9 = "-";
  var peg$c10 = ".";
  var peg$c11 = "true";
  var peg$c12 = "false";
  var peg$c13 = "null";
  var peg$c14 = "*";
  var peg$c15 = "none";
  var peg$c16 = "denied";
  var peg$c17 = "done";
  var peg$c18 = "(";
  var peg$c19 = ")";
  var peg$c20 = "continue";
  var peg$c21 = "retry";
  var peg$c22 = "ms";
  var peg$c23 = "s";
  var peg$c24 = "m";
  var peg$c25 = "h";
  var peg$c26 = "d";
  var peg$c27 = "w";
  var peg$c28 = "y";
  var peg$c29 = "[[";
  var peg$c30 = "]]";
  var peg$c31 = "@@";
  var peg$c32 = "\\";
  var peg$c33 = "{{";
  var peg$c34 = "}}";
  var peg$c35 = "<";
  var peg$c36 = "`";
  var peg$c37 = "/";
  var peg$c38 = "#";
  var peg$c39 = "/var";
  var peg$c40 = "/show";
  var peg$c41 = "/stream";
  var peg$c42 = "/run";
  var peg$c43 = "/exe";
  var peg$c44 = "/path";
  var peg$c45 = "/import";
  var peg$c46 = "/when";
  var peg$c47 = "/output";
  var peg$c48 = "/append";
  var peg$c49 = "/for";
  var peg$c50 = "/log";
  var peg$c51 = "/guard";
  var peg$c52 = "/export";
  var peg$c53 = "/policy";
  var peg$c54 = "stream";
  var peg$c55 = "?";
  var peg$c56 = ":";
  var peg$c57 = "??";
  var peg$c58 = "||";
  var peg$c59 = "&&";
  var peg$c60 = "==";
  var peg$c61 = "!=";
  var peg$c62 = "~=";
  var peg$c63 = "<=";
  var peg$c64 = ">=";
  var peg$c65 = "=";
  var peg$c66 = ">";
  var peg$c67 = "!";
  var peg$c68 = "@";
  var peg$c69 = "[?";
  var peg$c70 = "]";
  var peg$c71 = "[";
  var peg$c72 = "/end";
  var peg$c73 = ":::";
  var peg$c74 = "\\@";
  var peg$c75 = "now";
  var peg$c76 = "base";
  var peg$c77 = "input";
  var peg$c78 = "debug";
  var peg$c79 = "pipeline";
  var peg$c80 = "frontmatter";
  var peg$c81 = "fm";
  var peg$c82 = "\\\\";
  var peg$c83 = "\r\n";
  var peg$c84 = "{";
  var peg$c85 = ",";
  var peg$c86 = "}";
  var peg$c87 = "fn";
  var peg$c88 = "var";
  var peg$c89 = "class";
  var peg$c90 = "interface";
  var peg$c91 = "type";
  var peg$c92 = "enum";
  var peg$c93 = "struct";
  var peg$c94 = "trait";
  var peg$c95 = "module";
  var peg$c96 = "https";
  var peg$c97 = "http";
  var peg$c98 = "://";
  var peg$c99 = " as ";
  var peg$c100 = "as";
  var peg$c101 = " as";
  var peg$c102 = "<>";
  var peg$c103 = "...";
  var peg$c104 = "show";
  var peg$c105 = "log";
  var peg$c106 = "output";
  var peg$c107 = "to";
  var peg$c108 = "append";
  var peg$c109 = "run";
  var peg$c110 = "|";
  var peg$c111 = "template";
  var peg$c112 = "prose:";
  var peg$c113 = "prose";
  var peg$c114 = "=>";
  var peg$c115 = "when";
  var peg$c116 = "first";
  var peg$c117 = "for";
  var peg$c118 = "in";
  var peg$c119 = "each";
  var peg$c120 = "~";
  var peg$c121 = "foreach";
  var peg$c122 = "with";
  var peg$c123 = "separator";
  var peg$c124 = "parallel";
  var peg$c125 = ";";
  var peg$c126 = "let";
  var peg$c127 = "+=";
  var peg$c128 = "trust";
  var peg$c129 = "@run";
  var peg$c130 = "stdout";
  var peg$c131 = "stderr";
  var peg$c132 = "env";
  var peg$c133 = '\\"';
  var peg$c134 = "file";
  var peg$c135 = "//";
  var peg$c136 = "cmd";
  var peg$c137 = "[(";
  var peg$c138 = ")]";
  var peg$c139 = "/*";
  var peg$c140 = "*/";
  var peg$c141 = "js";
  var peg$c142 = "javascript";
  var peg$c143 = "node";
  var peg$c144 = "python";
  var peg$c145 = "bash";
  var peg$c146 = "sh";
  var peg$c147 = "skip";
  var peg$c148 = "skipDirs";
  var peg$c149 = "guards";
  var peg$c150 = "stdin";
  var peg$c151 = "format";
  var peg$c152 = "asSection";
  var peg$c153 = "policy";
  var peg$c154 = "delay";
  var peg$c155 = "streamFormat";
  var peg$c156 = "only";
  var peg$c157 = "except";
  var peg$c158 = "data";
  var peg$c159 = "while";
  var peg$c160 = "from";
  var peg$c161 = "nodejs";
  var peg$c162 = "py";
  var peg$c163 = "exe";
  var peg$c164 = "risk.high";
  var peg$c165 = "risk.med";
  var peg$c166 = "risk.low";
  var peg$c167 = "risk";
  var peg$c168 = "about";
  var peg$c169 = "meta";
  var peg$c170 = "export";
  var peg$c171 = "@item";
  var peg$c172 = "guard";
  var peg$c173 = "before";
  var peg$c174 = "after";
  var peg$c175 = "always";
  var peg$c176 = "op:";
  var peg$c177 = "allow";
  var peg$c178 = "deny";
  var peg$c179 = "import";
  var peg$c180 = "static";
  var peg$c181 = "live";
  var peg$c182 = "local";
  var peg$c183 = "templates";
  var peg$c184 = "cached";
  var peg$c185 = "@payload";
  var peg$c186 = "@state";
  var peg$c187 = "@input";
  var peg$c188 = "@now";
  var peg$c189 = "@time";
  var peg$c190 = "@stdin";
  var peg$c191 = "mld";
  var peg$c192 = "mlld";
  var peg$c193 = "md";
  var peg$c194 = ".md";
  var peg$c195 = "+";
  var peg$c196 = "needs";
  var peg$c197 = "wants";
  var peg$c198 = "methods";
  var peg$c199 = "subcommands";
  var peg$c200 = "flags";
  var peg$c201 = "ruby";
  var peg$c202 = "rb";
  var peg$c203 = "go";
  var peg$c204 = "rust";
  var peg$c205 = "network";
  var peg$c206 = "net";
  var peg$c207 = "filesystem";
  var peg$c208 = "fs";
  var peg$c209 = "tier";
  var peg$c210 = "why";
  var peg$c211 = "env:";
  var peg$c212 = "path";
  var peg$c213 = "PROJECTPATH";
  var peg$c214 = "union";
  var peg$c215 = "under";
  var peg$c216 = "any";
  var peg$c217 = "all";
  var peg$r0 = /^[ \t\r]/;
  var peg$r1 = /^[^\n]/;
  var peg$r2 = /^[ \t]/;
  var peg$r3 = /^[^`\r\n]/;
  var peg$r4 = /^[0-9]/;
  var peg$r5 = /^[a-zA-Z0-9_]/;
  var peg$r6 = /^["$'@[-\]`{}]/;
  var peg$r7 = /^["'.0\\nrt]/;
  var peg$r8 = /^[ \t\r\n\/\]@${{}"'`]/;
  var peg$r9 = /^[\/[\]@${}]/;
  var peg$r10 = /^[\]\/[\]@${}\r\n]/;
  var peg$r11 = /^[\]]/;
  var peg$r12 = /^["@\n\r]/;
  var peg$r13 = /^[a-zA-Z_]/;
  var peg$r14 = /^[.~]/;
  var peg$r15 = /^[+\-]/;
  var peg$r16 = /^[%*\/]/;
  var peg$r17 = /^[@`]/;
  var peg$r18 = /^[ \t\r\n\u200B\u200C\u200D]/;
  var peg$r19 = /^[ \t\r\n]/;
  var peg$r20 = /^[ \t\r\u200B\u200C\u200D]/;
  var peg$r21 = /^[\r\u2028-\u2029]/;
  var peg$r22 = /^[^\r\n]/;
  var peg$r23 = /^[A-Za-z0-9_]/;
  var peg$r24 = /^[A-Za-z_*?]/;
  var peg$r25 = /^[A-Za-z0-9_*?]/;
  var peg$r26 = /^[<"]/;
  var peg$r27 = /^[`<@]/;
  var peg$r28 = /^[a-zA-Z0-9.\-]/;
  var peg$r29 = /^[^> ]/;
  var peg$r30 = /^["'),`]/;
  var peg$r31 = /^["'),\\`]/;
  var peg$r32 = /^[`@<]/;
  var peg$r33 = /^[<@]/;
  var peg$r34 = /^[ \t\r\n\/\]{}]/;
  var peg$r35 = /^[^[\n]/;
  var peg$r36 = /^[^\]]/;
  var peg$r37 = /^[a-zA-Z0-9_@\-]/;
  var peg$r38 = /^[a-zA-Z0-9_\/@\-]/;
  var peg$r39 = /^[.[]/;
  var peg$r40 = /^[^ \t\n\r]/;
  var peg$r41 = /^[^ \t\n\r"'[\]]/;
  var peg$r42 = /^[^\/s]/;
  var peg$r43 = /^[^']/;
  var peg$r44 = /^["@]/;
  var peg$r45 = /^[^@\\s\n]/;
  var peg$r46 = /^[\]"'\r\n]/;
  var peg$r47 = /^[^"]/;
  var peg$r48 = /^[\n\r\/]/;
  var peg$r49 = /^[a-zA-Z]/;
  var peg$r50 = /^[^}]/;
  var peg$r51 = /^[ \t\n\r]/;
  var peg$r52 = /^[\n\r]/;
  var peg$r53 = /^[a-zA-Z@]/;
  var peg$r54 = /^[^=]/;
  var peg$r55 = /^[ \t\xA0\u200B\u200C\u200D]/;
  var peg$r56 = /^[^#\]]/;
  var peg$r57 = /^[^\\s\\n]/;
  var peg$r58 = /^[^)]/;
  var peg$r59 = /^[a-zA-Z0-9_\-]/;
  var peg$r60 = /^[a-f0-9]/;
  var peg$r61 = /^[a-zA-Z0-9\-]/;
  var peg$r62 = /^[a-zA-Z0-9@._+\-\^=~><!]/;
  var peg$r63 = /^["'@]/;
  var peg$e0 = peg$classExpectation([
    " ",
    "	",
    "\r"
  ], false, false);
  var peg$e1 = peg$literalExpectation(">>", false);
  var peg$e2 = peg$literalExpectation("<<", false);
  var peg$e3 = peg$classExpectation([
    "\n"
  ], true, false);
  var peg$e4 = peg$literalExpectation("\n", false);
  var peg$e5 = peg$literalExpectation("::", false);
  var peg$e6 = peg$anyExpectation();
  var peg$e7 = peg$classExpectation([
    " ",
    "	"
  ], false, false);
  var peg$e8 = peg$literalExpectation("```", false);
  var peg$e9 = peg$literalExpectation("mlld-run", false);
  var peg$e10 = peg$classExpectation([
    "`",
    "\r",
    "\n"
  ], true, false);
  var peg$e11 = peg$otherExpectation("Top-level directive context");
  var peg$e12 = peg$otherExpectation("Variable reference context");
  var peg$e13 = peg$otherExpectation("Right-hand side context");
  var peg$e14 = peg$otherExpectation("Plain text context");
  var peg$e15 = peg$otherExpectation("Run-style code block context");
  var peg$e16 = peg$otherExpectation("Exec /run right-hand side context");
  var peg$e17 = peg$otherExpectation("Path starting with @variable context");
  var peg$e18 = peg$otherExpectation("Directive boundary");
  var peg$e19 = peg$otherExpectation("YAML frontmatter");
  var peg$e20 = peg$literalExpectation("---", false);
  var peg$e21 = peg$otherExpectation("String Literal");
  var peg$e22 = peg$literalExpectation("'", false);
  var peg$e23 = peg$literalExpectation('"', false);
  var peg$e24 = peg$otherExpectation("Number Literal");
  var peg$e25 = peg$literalExpectation("-", false);
  var peg$e26 = peg$classExpectation([
    [
      "0",
      "9"
    ]
  ], false, false);
  var peg$e27 = peg$literalExpectation(".", false);
  var peg$e28 = peg$otherExpectation("Boolean Literal");
  var peg$e29 = peg$literalExpectation("true", false);
  var peg$e30 = peg$literalExpectation("false", false);
  var peg$e31 = peg$otherExpectation("Null Literal");
  var peg$e32 = peg$literalExpectation("null", false);
  var peg$e33 = peg$otherExpectation("Wildcard Literal");
  var peg$e34 = peg$literalExpectation("*", false);
  var peg$e35 = peg$otherExpectation("none literal");
  var peg$e36 = peg$literalExpectation("none", false);
  var peg$e37 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_"
  ], false, false);
  var peg$e38 = peg$otherExpectation("denied literal");
  var peg$e39 = peg$literalExpectation("denied", false);
  var peg$e40 = peg$otherExpectation("done literal");
  var peg$e41 = peg$literalExpectation("done", false);
  var peg$e42 = peg$literalExpectation("(", false);
  var peg$e43 = peg$literalExpectation(")", false);
  var peg$e44 = peg$otherExpectation("continue literal");
  var peg$e45 = peg$literalExpectation("continue", false);
  var peg$e46 = peg$otherExpectation("Retry Literal");
  var peg$e47 = peg$literalExpectation("retry", false);
  var peg$e48 = peg$otherExpectation("Time Duration Literal");
  var peg$e49 = peg$otherExpectation("Time Unit");
  var peg$e50 = peg$literalExpectation("ms", false);
  var peg$e51 = peg$literalExpectation("s", false);
  var peg$e52 = peg$literalExpectation("m", false);
  var peg$e53 = peg$literalExpectation("h", false);
  var peg$e54 = peg$literalExpectation("d", false);
  var peg$e55 = peg$literalExpectation("w", false);
  var peg$e56 = peg$literalExpectation("y", false);
  var peg$e57 = peg$otherExpectation("Multi-line Template Literal");
  var peg$e58 = peg$literalExpectation("[[", false);
  var peg$e59 = peg$literalExpectation("]]", false);
  var peg$e60 = peg$otherExpectation("Escape sequence");
  var peg$e61 = peg$literalExpectation("@@", false);
  var peg$e62 = peg$literalExpectation("\\", false);
  var peg$e63 = peg$classExpectation([
    '"',
    "$",
    "'",
    "@",
    [
      "[",
      "]"
    ],
    "`",
    "{",
    "}"
  ], false, false);
  var peg$e64 = peg$otherExpectation("String escape sequence");
  var peg$e65 = peg$classExpectation([
    '"',
    "'",
    ".",
    "0",
    "\\",
    "n",
    "r",
    "t"
  ], false, false);
  var peg$e66 = peg$otherExpectation("Plain text segment");
  var peg$e67 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "/",
    "]",
    "@",
    "$",
    "{",
    "{",
    "}",
    '"',
    "'",
    "`"
  ], false, false);
  var peg$e68 = peg$otherExpectation("Template text segment");
  var peg$e69 = peg$literalExpectation("{{", false);
  var peg$e70 = peg$literalExpectation("}}", false);
  var peg$e71 = peg$literalExpectation("<", false);
  var peg$e72 = peg$otherExpectation("Command text segment");
  var peg$e73 = peg$classExpectation([
    "/",
    "[",
    "]",
    "@",
    "$",
    "{",
    "}"
  ], false, false);
  var peg$e74 = peg$otherExpectation("Path text segment");
  var peg$e75 = peg$classExpectation([
    "]",
    "/",
    "[",
    "]",
    "@",
    "$",
    "{",
    "}",
    "\r",
    "\n"
  ], false, false);
  var peg$e76 = peg$otherExpectation("Section text segment");
  var peg$e77 = peg$classExpectation([
    "]"
  ], false, false);
  var peg$e78 = peg$otherExpectation("String content with escapes");
  var peg$e79 = peg$otherExpectation("Single-quoted string content with escapes");
  var peg$e80 = peg$otherExpectation("Backtick string content with escapes");
  var peg$e81 = peg$literalExpectation("`", false);
  var peg$e82 = peg$classExpectation([
    '"',
    "@",
    "\n",
    "\r"
  ], false, false);
  var peg$e83 = peg$otherExpectation("Path separator");
  var peg$e84 = peg$literalExpectation("/", false);
  var peg$e85 = peg$otherExpectation("Dot separator");
  var peg$e86 = peg$otherExpectation("Section marker");
  var peg$e87 = peg$literalExpectation("#", false);
  var peg$e88 = peg$otherExpectation("Identifier");
  var peg$e89 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    "_"
  ], false, false);
  var peg$e90 = peg$otherExpectation("Special Path Character");
  var peg$e91 = peg$classExpectation([
    ".",
    "~"
  ], false, false);
  var peg$e92 = peg$otherExpectation("Path Separator");
  var peg$e93 = peg$otherExpectation("Dot Separator");
  var peg$e94 = peg$otherExpectation("Section Marker");
  var peg$e95 = peg$otherExpectation("Backtick Sequence");
  var peg$e96 = peg$otherExpectation("Reserved Directive Name");
  var peg$e97 = peg$literalExpectation("/var", false);
  var peg$e98 = peg$literalExpectation("/show", false);
  var peg$e99 = peg$literalExpectation("/stream", false);
  var peg$e100 = peg$literalExpectation("/run", false);
  var peg$e101 = peg$literalExpectation("/exe", false);
  var peg$e102 = peg$literalExpectation("/path", false);
  var peg$e103 = peg$literalExpectation("/import", false);
  var peg$e104 = peg$literalExpectation("/when", false);
  var peg$e105 = peg$literalExpectation("/output", false);
  var peg$e106 = peg$literalExpectation("/append", false);
  var peg$e107 = peg$literalExpectation("/for", false);
  var peg$e108 = peg$literalExpectation("/log", false);
  var peg$e109 = peg$literalExpectation("/guard", false);
  var peg$e110 = peg$literalExpectation("/export", false);
  var peg$e111 = peg$literalExpectation("/policy", false);
  var peg$e112 = peg$otherExpectation("stream keyword");
  var peg$e113 = peg$literalExpectation("stream", false);
  var peg$e114 = peg$literalExpectation("?", false);
  var peg$e115 = peg$literalExpectation(":", false);
  var peg$e116 = peg$literalExpectation("??", false);
  var peg$e117 = peg$literalExpectation("||", false);
  var peg$e118 = peg$literalExpectation("&&", false);
  var peg$e119 = peg$literalExpectation("==", false);
  var peg$e120 = peg$literalExpectation("!=", false);
  var peg$e121 = peg$literalExpectation("~=", false);
  var peg$e122 = peg$literalExpectation("<=", false);
  var peg$e123 = peg$literalExpectation(">=", false);
  var peg$e124 = peg$literalExpectation("=", false);
  var peg$e125 = peg$literalExpectation(">", false);
  var peg$e126 = peg$classExpectation([
    "+",
    "-"
  ], false, false);
  var peg$e127 = peg$classExpectation([
    "%",
    "*",
    "/"
  ], false, false);
  var peg$e128 = peg$literalExpectation("!", false);
  var peg$e129 = peg$literalExpectation("@", false);
  var peg$e130 = peg$literalExpectation("[?", false);
  var peg$e131 = peg$literalExpectation("]", false);
  var peg$e132 = peg$literalExpectation("[", false);
  var peg$e133 = peg$otherExpectation("Unified quote or template pattern");
  var peg$e134 = peg$otherExpectation("Unified quote pattern");
  var peg$e135 = peg$otherExpectation("Double quoted string with interpolation");
  var peg$e136 = peg$otherExpectation("Single quoted literal string");
  var peg$e137 = peg$otherExpectation("Backtick string with interpolation");
  var peg$e138 = peg$otherExpectation("Shared interpolation content");
  var peg$e139 = peg$otherExpectation("conditional template snippet");
  var peg$e140 = peg$otherExpectation("conditional string fragment");
  var peg$e141 = peg$otherExpectation("Backtick interpolation content");
  var peg$e142 = peg$classExpectation([
    "@",
    "`"
  ], false, false);
  var peg$e143 = peg$literalExpectation("/end", false);
  var peg$e144 = peg$otherExpectation("literal @ character");
  var peg$e145 = peg$otherExpectation("slash for-block (backtick)");
  var peg$e146 = peg$otherExpectation("Unified template pattern");
  var peg$e147 = peg$otherExpectation("Triple colon template");
  var peg$e148 = peg$literalExpectation(":::", false);
  var peg$e149 = peg$otherExpectation("Double colon template");
  var peg$e150 = peg$otherExpectation("Double bracket template");
  var peg$e151 = peg$otherExpectation("Brace interpolation");
  var peg$e152 = peg$otherExpectation("At-sign interpolation");
  var peg$e153 = peg$literalExpectation("\\@", false);
  var peg$e154 = peg$otherExpectation("line-start check");
  var peg$e155 = peg$otherExpectation("Double colon text segment");
  var peg$e156 = peg$otherExpectation("Bracket text segment");
  var peg$e157 = peg$otherExpectation("slash for-block (double-colon)");
  var peg$e158 = peg$otherExpectation("inline show (template)");
  var peg$e159 = peg$otherExpectation("template body for .att files");
  var peg$e160 = peg$otherExpectation("ATT text segment");
  var peg$e161 = peg$otherExpectation("template body for .mtt files");
  var peg$e162 = peg$otherExpectation("Special reserved variable");
  var peg$e163 = peg$literalExpectation("now", false);
  var peg$e164 = peg$literalExpectation("base", false);
  var peg$e165 = peg$literalExpectation("input", false);
  var peg$e166 = peg$literalExpectation("debug", false);
  var peg$e167 = peg$literalExpectation("pipeline", false);
  var peg$e168 = peg$literalExpectation("frontmatter", false);
  var peg$e169 = peg$literalExpectation("fm", false);
  var peg$e170 = peg$otherExpectation("variable reference with tail modifiers");
  var peg$e171 = peg$otherExpectation("variable reference without tail modifiers");
  var peg$e172 = peg$otherExpectation("variable with optional pipes");
  var peg$e173 = peg$otherExpectation("variable reference in template context");
  var peg$e174 = peg$otherExpectation("variable boundary");
  var peg$e175 = peg$literalExpectation("\\\\", false);
  var peg$e176 = peg$otherExpectation("boundary-aware field access");
  var peg$e177 = peg$otherExpectation("whitespace");
  var peg$e178 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "\u200B",
    "\u200C",
    "\u200D"
  ], false, false);
  var peg$e179 = peg$otherExpectation("mandatory whitespace");
  var peg$e180 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n"
  ], false, false);
  var peg$e181 = peg$otherExpectation("horizontal whitespace");
  var peg$e182 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\u200B",
    "\u200C",
    "\u200D"
  ], false, false);
  var peg$e183 = peg$literalExpectation("\r\n", false);
  var peg$e184 = peg$classExpectation([
    "\r",
    [
      "\u2028",
      "\u2029"
    ]
  ], false, false);
  var peg$e185 = peg$classExpectation([
    "\r",
    "\n"
  ], true, false);
  var peg$e186 = peg$otherExpectation("alligator expression");
  var peg$e187 = peg$otherExpectation("AST pattern list");
  var peg$e188 = peg$literalExpectation("{", false);
  var peg$e189 = peg$literalExpectation(",", false);
  var peg$e190 = peg$literalExpectation("}", false);
  var peg$e191 = peg$otherExpectation("AST pattern");
  var peg$e192 = peg$otherExpectation("AST pattern inner");
  var peg$e193 = peg$classExpectation([
    [
      "A",
      "Z"
    ],
    [
      "a",
      "z"
    ],
    [
      "0",
      "9"
    ],
    "_"
  ], false, false);
  var peg$e194 = peg$otherExpectation("AST type keyword");
  var peg$e195 = peg$literalExpectation("fn", false);
  var peg$e196 = peg$literalExpectation("var", false);
  var peg$e197 = peg$literalExpectation("class", false);
  var peg$e198 = peg$literalExpectation("interface", false);
  var peg$e199 = peg$literalExpectation("type", false);
  var peg$e200 = peg$literalExpectation("enum", false);
  var peg$e201 = peg$literalExpectation("struct", false);
  var peg$e202 = peg$literalExpectation("trait", false);
  var peg$e203 = peg$literalExpectation("module", false);
  var peg$e204 = peg$otherExpectation("AST identifier pattern");
  var peg$e205 = peg$otherExpectation("pattern part");
  var peg$e206 = peg$classExpectation([
    [
      "A",
      "Z"
    ],
    [
      "a",
      "z"
    ],
    "_",
    "*",
    "?"
  ], false, false);
  var peg$e207 = peg$classExpectation([
    [
      "A",
      "Z"
    ],
    [
      "a",
      "z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "*",
    "?"
  ], false, false);
  var peg$e208 = peg$otherExpectation("URL source");
  var peg$e209 = peg$literalExpectation("https", false);
  var peg$e210 = peg$literalExpectation("http", false);
  var peg$e211 = peg$literalExpectation("://", false);
  var peg$e212 = peg$otherExpectation("file path source");
  var peg$e213 = peg$otherExpectation("quoted path");
  var peg$e214 = peg$otherExpectation("unquoted path");
  var peg$e215 = peg$otherExpectation("alligator path parts");
  var peg$e216 = peg$otherExpectation("alligator variable");
  var peg$e217 = peg$otherExpectation("alligator path segment");
  var peg$e218 = peg$literalExpectation(" as ", false);
  var peg$e219 = peg$literalExpectation("as", false);
  var peg$e220 = peg$otherExpectation("alligator section identifier");
  var peg$e221 = peg$literalExpectation(" as", false);
  var peg$e222 = peg$otherExpectation("section rename");
  var peg$e223 = peg$otherExpectation("section rename string template");
  var peg$e224 = peg$classExpectation([
    "<",
    '"'
  ], false, false);
  var peg$e225 = peg$classExpectation([
    "`",
    "<",
    "@"
  ], false, false);
  var peg$e226 = peg$otherExpectation("as transform");
  var peg$e227 = peg$otherExpectation("alligator transform template");
  var peg$e228 = peg$literalExpectation("<>", false);
  var peg$e229 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    ".",
    "-"
  ], false, false);
  var peg$e230 = peg$classExpectation([
    ">",
    " "
  ], true, false);
  var peg$e231 = peg$otherExpectation("array literal");
  var peg$e232 = peg$otherExpectation("array items");
  var peg$e233 = peg$otherExpectation("array value");
  var peg$e234 = peg$otherExpectation("command reference");
  var peg$e235 = peg$otherExpectation("command arguments list");
  var peg$e236 = peg$otherExpectation("nested exec invocation");
  var peg$e237 = peg$otherExpectation("command template argument");
  var peg$e238 = peg$otherExpectation("backtick template argument");
  var peg$e239 = peg$otherExpectation("backtick template");
  var peg$e240 = peg$otherExpectation("escaped argument");
  var peg$e241 = peg$classExpectation([
    '"',
    "'",
    ")",
    ",",
    "`"
  ], false, false);
  var peg$e242 = peg$otherExpectation("raw argument");
  var peg$e243 = peg$classExpectation([
    '"',
    "'",
    ")",
    ",",
    "\\",
    "`"
  ], false, false);
  var peg$e244 = peg$otherExpectation("Literal content without interpolation");
  var peg$e245 = peg$otherExpectation("Semantic section content");
  var peg$e246 = peg$otherExpectation("Path component parts");
  var peg$e247 = peg$otherExpectation("Section name");
  var peg$e248 = peg$otherExpectation("Semantic command content with @var interpolation");
  var peg$e249 = peg$otherExpectation("Command content with @var interpolation");
  var peg$e250 = peg$otherExpectation("Quoted string in command");
  var peg$e251 = peg$classExpectation([
    "`",
    "@",
    "<"
  ], false, false);
  var peg$e252 = peg$classExpectation([
    "<",
    "@"
  ], false, false);
  var peg$e253 = peg$otherExpectation("Permissive command text content");
  var peg$e254 = peg$otherExpectation("Content with @var interpolation");
  var peg$e255 = peg$otherExpectation("Content with {{var}} interpolation");
  var peg$e256 = peg$otherExpectation("Unquoted path with @var interpolation");
  var peg$e257 = peg$otherExpectation("Unquoted path text");
  var peg$e258 = peg$classExpectation([
    " ",
    "	",
    "\r",
    "\n",
    "/",
    "]",
    "{",
    "}"
  ], false, false);
  var peg$e259 = peg$otherExpectation("Unquoted command with @var interpolation");
  var peg$e260 = peg$otherExpectation("Semantic code content without any interpolation");
  var peg$e261 = peg$otherExpectation("Code content without interpolation");
  var peg$e262 = peg$classExpectation([
    "[",
    "\n"
  ], true, false);
  var peg$e263 = peg$otherExpectation("Literal code content with natural bracket nesting");
  var peg$e264 = peg$otherExpectation("Template content with interpolation");
  var peg$e265 = peg$otherExpectation("Command interpolation patterns");
  var peg$e266 = peg$otherExpectation("Semantic content for @text directive");
  var peg$e267 = peg$classExpectation([
    "]"
  ], true, false);
  var peg$e268 = peg$otherExpectation("Wrapped template content");
  var peg$e269 = peg$otherExpectation("Wrapped command content");
  var peg$e270 = peg$otherExpectation("Command content interpolation patterns");
  var peg$e271 = peg$otherExpectation("Wrapped code content");
  var peg$e272 = peg$otherExpectation("data object literal");
  var peg$e273 = peg$otherExpectation("spread property");
  var peg$e274 = peg$literalExpectation("...", false);
  var peg$e275 = peg$otherExpectation("data context property value");
  var peg$e276 = peg$otherExpectation("data template value");
  var peg$e277 = peg$otherExpectation("data context string value");
  var peg$e278 = peg$otherExpectation("standard directive ending");
  var peg$e279 = peg$otherExpectation("secured directive ending");
  var peg$e280 = peg$otherExpectation("commented directive ending");
  var peg$e281 = peg$otherExpectation("effect action");
  var peg$e282 = peg$literalExpectation("show", false);
  var peg$e283 = peg$literalExpectation("log", false);
  var peg$e284 = peg$literalExpectation("output", false);
  var peg$e285 = peg$literalExpectation("to", false);
  var peg$e286 = peg$literalExpectation("append", false);
  var peg$e287 = peg$otherExpectation("exe assignment value");
  var peg$e288 = peg$otherExpectation("exe unified reference");
  var peg$e289 = peg$otherExpectation("exe run command with stdin");
  var peg$e290 = peg$literalExpectation("run", false);
  var peg$e291 = peg$otherExpectation("exe run command pipe stdin");
  var peg$e292 = peg$literalExpectation("|", false);
  var peg$e293 = peg$otherExpectation("exe stream command pattern");
  var peg$e294 = peg$otherExpectation("exe run command pattern");
  var peg$e295 = peg$otherExpectation("exe code pattern");
  var peg$e296 = peg$otherExpectation("exe command pattern");
  var peg$e297 = peg$otherExpectation("exe data pattern");
  var peg$e298 = peg$otherExpectation("exe template pattern");
  var peg$e299 = peg$otherExpectation("exe template-from-file pattern");
  var peg$e300 = peg$literalExpectation("template", false);
  var peg$e301 = peg$otherExpectation("exe prose pattern");
  var peg$e302 = peg$literalExpectation("prose:", false);
  var peg$e303 = peg$literalExpectation("prose", false);
  var peg$e304 = peg$otherExpectation("prose inline content");
  var peg$e305 = peg$otherExpectation("prose content parts");
  var peg$e306 = peg$otherExpectation("prose @ interpolation");
  var peg$e307 = peg$otherExpectation("prose text segment");
  var peg$e308 = peg$otherExpectation("exe section pattern");
  var peg$e309 = peg$otherExpectation("exe resolver pattern");
  var peg$e310 = peg$otherExpectation("exe foreach pattern");
  var peg$e311 = peg$otherExpectation("exe environment declaration");
  var peg$e312 = peg$otherExpectation("exe statement block");
  var peg$e313 = peg$otherExpectation("exe return statement");
  var peg$e314 = peg$literalExpectation("=>", false);
  var peg$e315 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "@",
    "-"
  ], false, false);
  var peg$e316 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "/",
    "@",
    "-"
  ], false, false);
  var peg$e317 = peg$otherExpectation("when expression");
  var peg$e318 = peg$literalExpectation("when", false);
  var peg$e319 = peg$literalExpectation("first", false);
  var peg$e320 = peg$otherExpectation("for expression with actions");
  var peg$e321 = peg$literalExpectation("for", false);
  var peg$e322 = peg$literalExpectation("in", false);
  var peg$e323 = peg$literalExpectation("each", false);
  var peg$e324 = peg$literalExpectation("~", false);
  var peg$e325 = peg$otherExpectation("file reference interpolation");
  var peg$e326 = peg$otherExpectation("file reference content");
  var peg$e327 = peg$otherExpectation("template pipe (no args)");
  var peg$e328 = peg$otherExpectation("template pipe chain");
  var peg$e329 = peg$otherExpectation("field chain");
  var peg$e330 = peg$otherExpectation("Unified angle bracket content");
  var peg$e331 = peg$otherExpectation("Literal angle bracket text");
  var peg$e332 = peg$literalExpectation("foreach", false);
  var peg$e333 = peg$otherExpectation("foreach batch pipeline");
  var peg$e334 = peg$literalExpectation("with", false);
  var peg$e335 = peg$literalExpectation("separator", false);
  var peg$e336 = peg$otherExpectation("for iteration pattern");
  var peg$e337 = peg$literalExpectation("parallel", false);
  var peg$e338 = peg$otherExpectation("for action");
  var peg$e339 = peg$literalExpectation(";", false);
  var peg$e340 = peg$otherExpectation("for block statement list");
  var peg$e341 = peg$otherExpectation("for block statement");
  var peg$e342 = peg$otherExpectation("for block return statement");
  var peg$e343 = peg$otherExpectation("for block body");
  var peg$e344 = peg$otherExpectation("for block action");
  var peg$e345 = peg$otherExpectation("for action variant");
  var peg$e346 = peg$otherExpectation("for expression action");
  var peg$e347 = peg$otherExpectation("let assignment");
  var peg$e348 = peg$literalExpectation("let", false);
  var peg$e349 = peg$otherExpectation("augmented assignment");
  var peg$e350 = peg$literalExpectation("+=", false);
  var peg$e351 = peg$classExpectation([
    ".",
    "["
  ], false, false);
  var peg$e352 = peg$otherExpectation("local assignment");
  var peg$e353 = peg$otherExpectation("comma with optional whitespace");
  var peg$e354 = peg$otherExpectation("semicolon with optional whitespace");
  var peg$e355 = peg$otherExpectation("environment variable list");
  var peg$e356 = peg$otherExpectation("environment variable reference");
  var peg$e357 = peg$otherExpectation("output source");
  var peg$e358 = peg$otherExpectation("output source (variables only)");
  var peg$e359 = peg$otherExpectation("output source (variables and exec)");
  var peg$e360 = peg$literalExpectation("trust", false);
  var peg$e361 = peg$literalExpectation("@run", false);
  var peg$e362 = peg$otherExpectation("output target");
  var peg$e363 = peg$otherExpectation("stream target");
  var peg$e364 = peg$literalExpectation("stdout", false);
  var peg$e365 = peg$literalExpectation("stderr", false);
  var peg$e366 = peg$otherExpectation("environment variable target");
  var peg$e367 = peg$literalExpectation("env", false);
  var peg$e368 = peg$otherExpectation("resolver target");
  var peg$e369 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r"
  ], true, false);
  var peg$e370 = peg$otherExpectation("file target");
  var peg$e371 = peg$otherExpectation("output file path");
  var peg$e372 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r",
    '"',
    "'",
    "[",
    "]"
  ], true, false);
  var peg$e373 = peg$otherExpectation("output format");
  var peg$e374 = peg$classExpectation([
    "/",
    "s"
  ], true, false);
  var peg$e375 = peg$otherExpectation("Any path expression");
  var peg$e376 = peg$otherExpectation("quoted string path");
  var peg$e377 = peg$classExpectation([
    "'"
  ], true, false);
  var peg$e378 = peg$otherExpectation("quoted path part");
  var peg$e379 = peg$otherExpectation("quoted path variable");
  var peg$e380 = peg$otherExpectation("escaped @ in quoted path");
  var peg$e381 = peg$otherExpectation("quoted path text segment");
  var peg$e382 = peg$otherExpectation("quoted path character");
  var peg$e383 = peg$literalExpectation('\\"', false);
  var peg$e384 = peg$classExpectation([
    '"',
    "@"
  ], false, false);
  var peg$e385 = peg$otherExpectation("URL protocol type");
  var peg$e386 = peg$literalExpectation("file", false);
  var peg$e387 = peg$otherExpectation("URL content");
  var peg$e388 = peg$literalExpectation("//", false);
  var peg$e389 = peg$otherExpectation("URL parts");
  var peg$e390 = peg$otherExpectation("Escaped backslash in URL");
  var peg$e391 = peg$otherExpectation("Escaped @ in URL");
  var peg$e392 = peg$otherExpectation("URL variable reference");
  var peg$e393 = peg$otherExpectation("URL segment");
  var peg$e394 = peg$classExpectation([
    "@",
    "\\",
    "s",
    "\n"
  ], true, false);
  var peg$e395 = peg$otherExpectation("Section name or variable reference");
  var peg$e396 = peg$classExpectation([
    "]",
    '"',
    "'",
    "\r",
    "\n"
  ], false, false);
  var peg$e397 = peg$otherExpectation("In right-hand side of assignment");
  var peg$e398 = peg$otherExpectation("run block action");
  var peg$e399 = peg$classExpectation([
    '"'
  ], true, false);
  var peg$e400 = peg$otherExpectation("Data Context String");
  var peg$e401 = peg$otherExpectation("Template Context String");
  var peg$e402 = peg$otherExpectation("literal @ character in data string");
  var peg$e403 = peg$otherExpectation("Expression Context String");
  var peg$e404 = peg$otherExpectation("tail modifiers");
  var peg$e405 = peg$otherExpectation("unified argument");
  var peg$e406 = peg$otherExpectation("regex literal");
  var peg$e407 = peg$classExpectation([
    "\n",
    "\r",
    "/"
  ], false, false);
  var peg$e408 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ]
  ], false, false);
  var peg$e409 = peg$otherExpectation("unified variable or exec reference");
  var peg$e410 = peg$otherExpectation("unified reference with tail support");
  var peg$e411 = peg$otherExpectation("unified reference without tail support");
  var peg$e412 = peg$otherExpectation("unified reference for pipeline commands");
  var peg$e413 = peg$otherExpectation("field access exec invocation");
  var peg$e414 = peg$otherExpectation("field access exec invocation without tail");
  var peg$e415 = peg$otherExpectation("simple exec invocation");
  var peg$e416 = peg$otherExpectation("simple exec invocation without tail");
  var peg$e417 = peg$otherExpectation("field access exec for pipeline");
  var peg$e418 = peg$otherExpectation("simple exec for pipeline");
  var peg$e419 = peg$otherExpectation("variable reference for pipeline");
  var peg$e420 = peg$otherExpectation("variable reference with optional tail modifiers");
  var peg$e421 = peg$otherExpectation("Code brackets {...}");
  var peg$e422 = peg$otherExpectation("Command brackets {...}");
  var peg$e423 = peg$otherExpectation("cmd command brackets");
  var peg$e424 = peg$literalExpectation("cmd", false);
  var peg$e425 = peg$otherExpectation("Unified run content [(...))]");
  var peg$e426 = peg$literalExpectation("[(", false);
  var peg$e427 = peg$literalExpectation(")]", false);
  var peg$e428 = peg$classExpectation([
    "}"
  ], true, false);
  var peg$e429 = peg$classExpectation([
    " ",
    "	",
    "\n",
    "\r"
  ], false, false);
  var peg$e430 = peg$literalExpectation("/*", false);
  var peg$e431 = peg$literalExpectation("*/", false);
  var peg$e432 = peg$otherExpectation("var assignment value");
  var peg$e433 = peg$otherExpectation("var block");
  var peg$e434 = peg$otherExpectation("exec invocation with post fields");
  var peg$e435 = peg$otherExpectation("alligator with field access");
  var peg$e436 = peg$otherExpectation("template with pipeline");
  var peg$e437 = peg$otherExpectation("alligator with external pipe chain");
  var peg$e438 = peg$otherExpectation("variable with flexible pipe syntax");
  var peg$e439 = peg$otherExpectation("pipe command");
  var peg$e440 = peg$otherExpectation("flexible pipe chain");
  var peg$e441 = peg$otherExpectation("exec invocation pattern");
  var peg$e442 = peg$otherExpectation("object property value");
  var peg$e443 = peg$otherExpectation("code execution");
  var peg$e444 = peg$otherExpectation("code language");
  var peg$e445 = peg$literalExpectation("js", false);
  var peg$e446 = peg$literalExpectation("javascript", false);
  var peg$e447 = peg$literalExpectation("node", false);
  var peg$e448 = peg$literalExpectation("python", false);
  var peg$e449 = peg$literalExpectation("bash", false);
  var peg$e450 = peg$literalExpectation("sh", false);
  var peg$e451 = peg$otherExpectation("code block content");
  var peg$e452 = peg$otherExpectation("for expression");
  var peg$e453 = peg$otherExpectation("for batch pipeline");
  var peg$e454 = peg$otherExpectation("when RHS action");
  var peg$e455 = peg$classExpectation([
    "\n",
    "\r"
  ], false, false);
  var peg$e456 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    "@"
  ], false, false);
  var peg$e457 = peg$classExpectation([
    "="
  ], true, false);
  var peg$e458 = peg$literalExpectation("skip", false);
  var peg$e459 = peg$literalExpectation("skipDirs", false);
  var peg$e460 = peg$literalExpectation("guards", false);
  var peg$e461 = peg$literalExpectation("stdin", false);
  var peg$e462 = peg$literalExpectation("format", false);
  var peg$e463 = peg$literalExpectation("asSection", false);
  var peg$e464 = peg$literalExpectation("policy", false);
  var peg$e465 = peg$literalExpectation("delay", false);
  var peg$e466 = peg$literalExpectation("streamFormat", false);
  var peg$e467 = peg$literalExpectation("only", false);
  var peg$e468 = peg$literalExpectation("except", false);
  var peg$e469 = peg$literalExpectation("data", false);
  var peg$e470 = peg$otherExpectation("while pipeline stage");
  var peg$e471 = peg$literalExpectation("while", false);
  var peg$e472 = peg$otherExpectation("inline whitespace without newline");
  var peg$e473 = peg$classExpectation([
    " ",
    "	",
    "\xA0",
    "\u200B",
    "\u200C",
    "\u200D"
  ], false, false);
  var peg$e474 = peg$otherExpectation("inline effect source (same line only)");
  var peg$e475 = peg$otherExpectation("working directory path");
  var peg$e476 = peg$literalExpectation("from", false);
  var peg$e477 = peg$classExpectation([
    "#",
    "]"
  ], true, false);
  var peg$e478 = peg$literalExpectation("nodejs", false);
  var peg$e479 = peg$literalExpectation("py", false);
  var peg$e480 = peg$classExpectation([
    "\\",
    "s",
    "\\",
    "n"
  ], true, false);
  var peg$e481 = peg$otherExpectation("Section extraction");
  var peg$e482 = peg$literalExpectation("exe", false);
  var peg$e483 = peg$classExpectation([
    ")"
  ], true, false);
  var peg$e484 = peg$literalExpectation("risk.high", false);
  var peg$e485 = peg$literalExpectation("risk.med", false);
  var peg$e486 = peg$literalExpectation("risk.low", false);
  var peg$e487 = peg$literalExpectation("risk", false);
  var peg$e488 = peg$literalExpectation("about", false);
  var peg$e489 = peg$literalExpectation("meta", false);
  var peg$e490 = peg$literalExpectation("export", false);
  var peg$e491 = peg$otherExpectation("for directive simple");
  var peg$e492 = peg$literalExpectation("@item", false);
  var peg$e493 = peg$otherExpectation("for directive");
  var peg$e494 = peg$literalExpectation("guard", false);
  var peg$e495 = peg$literalExpectation("before", false);
  var peg$e496 = peg$literalExpectation("after", false);
  var peg$e497 = peg$literalExpectation("always", false);
  var peg$e498 = peg$literalExpectation("op:", false);
  var peg$e499 = peg$literalExpectation("allow", false);
  var peg$e500 = peg$literalExpectation("deny", false);
  var peg$e501 = peg$literalExpectation("import", false);
  var peg$e502 = peg$literalExpectation("static", false);
  var peg$e503 = peg$literalExpectation("live", false);
  var peg$e504 = peg$literalExpectation("local", false);
  var peg$e505 = peg$literalExpectation("templates", false);
  var peg$e506 = peg$literalExpectation("cached", false);
  var peg$e507 = peg$literalExpectation("@payload", true);
  var peg$e508 = peg$literalExpectation("@state", true);
  var peg$e509 = peg$literalExpectation("@INPUT", true);
  var peg$e510 = peg$literalExpectation("@NOW", true);
  var peg$e511 = peg$literalExpectation("@TIME", true);
  var peg$e512 = peg$literalExpectation("@stdin", false);
  var peg$e513 = peg$otherExpectation("Module extension");
  var peg$e514 = peg$literalExpectation("mld", false);
  var peg$e515 = peg$literalExpectation("mlld", false);
  var peg$e516 = peg$literalExpectation("md", false);
  var peg$e517 = peg$literalExpectation(".md", false);
  var peg$e518 = peg$otherExpectation("Module Identifier Part");
  var peg$e519 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "_",
    "-"
  ], false, false);
  var peg$e520 = peg$classExpectation([
    [
      "a",
      "f"
    ],
    [
      "0",
      "9"
    ]
  ], false, false);
  var peg$e521 = peg$literalExpectation("+", false);
  var peg$e522 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "-"
  ], false, false);
  var peg$e523 = peg$literalExpectation("needs", false);
  var peg$e524 = peg$literalExpectation("wants", false);
  var peg$e525 = peg$literalExpectation("methods", false);
  var peg$e526 = peg$literalExpectation("subcommands", false);
  var peg$e527 = peg$literalExpectation("flags", false);
  var peg$e528 = peg$classExpectation([
    [
      "a",
      "z"
    ],
    [
      "A",
      "Z"
    ],
    [
      "0",
      "9"
    ],
    "@",
    ".",
    "_",
    "+",
    "-",
    "^",
    "=",
    "~",
    ">",
    "<",
    "!"
  ], false, false);
  var peg$e529 = peg$literalExpectation("ruby", false);
  var peg$e530 = peg$literalExpectation("rb", false);
  var peg$e531 = peg$literalExpectation("go", false);
  var peg$e532 = peg$literalExpectation("rust", false);
  var peg$e533 = peg$literalExpectation("network", false);
  var peg$e534 = peg$literalExpectation("net", false);
  var peg$e535 = peg$literalExpectation("filesystem", false);
  var peg$e536 = peg$literalExpectation("fs", false);
  var peg$e537 = peg$literalExpectation("tier", false);
  var peg$e538 = peg$literalExpectation("why", false);
  var peg$e539 = peg$literalExpectation("env:", false);
  var peg$e540 = peg$literalExpectation("path", false);
  var peg$e541 = peg$literalExpectation("PROJECTPATH", false);
  var peg$e542 = peg$literalExpectation("union", false);
  var peg$e543 = peg$classExpectation([
    '"',
    "'",
    "@"
  ], false, false);
  var peg$e544 = peg$literalExpectation("under", false);
  var peg$e545 = peg$otherExpectation("var directive");
  var peg$e546 = peg$literalExpectation("any", false);
  var peg$e547 = peg$literalExpectation("all", false);
  var peg$e548 = peg$otherExpectation("while directive");
  var peg$f0 = /* @__PURE__ */ __name(function(frontmatter, nodes) {
    helpers_default.debug("Start: Entered");
    const result = [];
    if (frontmatter) result.push(frontmatter);
    for (const node of nodes) {
      if (node !== null && node !== void 0) {
        result.push(node);
      }
    }
    return result;
  }, "peg$f0");
  var peg$f1 = /* @__PURE__ */ __name(function(ws, term) {
    let i = offset();
    while (i < input.length && (input[i] === " " || input[i] === "	" || input[i] === "\r")) {
      i++;
    }
    const isStrictMode = options?.mode === "strict";
    const isDirectiveLine = i < input.length && helpers_default.isDirectiveContext(input, i);
    const hasSlash = i < input.length && input[i] === "/";
    return isDirectiveLine && (isStrictMode || hasSlash);
  }, "peg$f1");
  var peg$f2 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f2");
  var peg$f3 = /* @__PURE__ */ __name(function(ws, term) {
    return term;
  }, "peg$f3");
  var peg$f4 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const isAtLineStart = helpers_default.isLogicalLineStart(input, pos);
    return isAtLineStart;
  }, "peg$f4");
  var peg$f5 = /* @__PURE__ */ __name(function(marker, content) {
    return helpers_default.createNode(node_type_default.Comment, {
      content: content.trim(),
      marker,
      location: location()
    });
  }, "peg$f5");
  var peg$f6 = /* @__PURE__ */ __name(function(marker, content) {
    return helpers_default.createNode(node_type_default.Comment, {
      content: content.trim(),
      marker,
      location: location()
    });
  }, "peg$f6");
  var peg$f7 = /* @__PURE__ */ __name(function() {
    return ">>";
  }, "peg$f7");
  var peg$f8 = /* @__PURE__ */ __name(function() {
    return "<<";
  }, "peg$f8");
  var peg$f9 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f9");
  var peg$f10 = /* @__PURE__ */ __name(function(marker, content) {
    return {
      type: "Comment",
      marker,
      content: content.trim(),
      location: location()
    };
  }, "peg$f10");
  var peg$f11 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f11");
  var peg$f12 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f12");
  var peg$f13 = /* @__PURE__ */ __name(function(comment) {
    return comment;
  }, "peg$f13");
  var peg$f14 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createNode(node_type_default.Text, {
      content: first + rest.join(""),
      location: location()
    });
  }, "peg$f14");
  var peg$f15 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const isAtLineStart = helpers_default.isLogicalLineStart(input, pos);
    if (isAtLineStart && helpers_default.isDirectiveContext(input, pos)) {
      const hasSlash = input[pos] === "/";
      const isStrictMode = options?.mode === "strict";
      if (isStrictMode || hasSlash) {
        return true;
      }
    }
    if (isAtLineStart && input[pos] === ">" && input[pos + 1] === ">") {
      return true;
    }
    return false;
  }, "peg$f15");
  var peg$f16 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    helpers_default.trace(pos, "brace/backtick guard");
    return true;
  }, "peg$f16");
  var peg$f17 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f17");
  var peg$f18 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    if (!helpers_default.isLogicalLineStart(input, pos)) return false;
    if (!helpers_default.isDirectiveContext(input, pos)) return false;
    const hasSlash = input[pos] === "/";
    const isStrictMode = options?.mode === "strict";
    return isStrictMode || hasSlash;
  }, "peg$f18");
  var peg$f19 = /* @__PURE__ */ __name(function(dir) {
    return dir;
  }, "peg$f19");
  var peg$f20 = /* @__PURE__ */ __name(function() {
    return options?.mode === "strict";
  }, "peg$f20");
  var peg$f21 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f21");
  var peg$f22 = /* @__PURE__ */ __name(function() {
    return options?.mode === "strict";
  }, "peg$f22");
  var peg$f23 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f23");
  var peg$f24 = /* @__PURE__ */ __name(function() {
    return options?.mode === "strict";
  }, "peg$f24");
  var peg$f25 = /* @__PURE__ */ __name(function() {
    return !helpers_default.isDirectiveContext(input, offset());
  }, "peg$f25");
  var peg$f26 = /* @__PURE__ */ __name(function() {
    error("Text content not allowed in strict mode (.mld). Use .mld.md for prose.");
  }, "peg$f26");
  var peg$f27 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f27");
  var peg$f28 = /* @__PURE__ */ __name(function(content) {
    const rawContent = content.join("");
    helpers_default.debug("MlldRunFence: Parsing content", {
      content: rawContent
    });
    try {
      const innerParser = peg$parse;
      const parsed = innerParser(rawContent, {
        ...options,
        mode: "strict",
        startRule: "Start"
      });
      return helpers_default.createNode(node_type_default.MlldRunBlock, {
        content: parsed,
        raw: rawContent,
        location: location()
      });
    } catch (e) {
      return helpers_default.createNode(node_type_default.MlldRunBlock, {
        content: [],
        raw: rawContent,
        error: e.message,
        location: location()
      });
    }
  }, "peg$f28");
  var peg$f29 = /* @__PURE__ */ __name(function(opener) {
    const rest = input.substring(peg$currPos);
    return rest.startsWith("`") && rest.match(/^`+mlld-run/);
  }, "peg$f29");
  var peg$f30 = /* @__PURE__ */ __name(function(opener) {
    helpers_default.mlldError("mlld-run blocks must use exactly 3 backticks (```). Nested backticks are not supported.");
  }, "peg$f30");
  var peg$f31 = /* @__PURE__ */ __name(function(opener, lang) {
    return true;
  }, "peg$f31");
  var peg$f32 = /* @__PURE__ */ __name(function(opener, lang, closer) {
    return closer.length === opener.length;
  }, "peg$f32");
  var peg$f33 = /* @__PURE__ */ __name(function(opener, lang, c) {
    return c;
  }, "peg$f33");
  var peg$f34 = /* @__PURE__ */ __name(function(opener, lang, content, closer) {
    return closer.length !== opener.length;
  }, "peg$f34");
  var peg$f35 = /* @__PURE__ */ __name(function(opener, lang, content, closer) {
    const rawContent = content.join("");
    const preserveCodeFences = options?.preserveCodeFences !== false;
    const finalContent = preserveCodeFences ? opener.join("") + (lang ? lang : "") + "\n" + rawContent + (rawContent ? "" : "\n") + closer.join("") : rawContent.trimEnd();
    return helpers_default.createNode(node_type_default.CodeFence, {
      language: lang || void 0,
      content: finalContent,
      location: location()
    });
  }, "peg$f35");
  var peg$f36 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f36");
  var peg$f37 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isDirectiveContext(input, pos);
  }, "peg$f37");
  var peg$f38 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isAtVariableContext(input, pos);
  }, "peg$f38");
  var peg$f39 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isRHSContext(input, pos);
  }, "peg$f39");
  var peg$f40 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isPlainTextContext(input, pos);
  }, "peg$f40");
  var peg$f41 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isInRunCodeBlockContext(input, pos);
  }, "peg$f41");
  var peg$f42 = /* @__PURE__ */ __name(function() {
    return false;
  }, "peg$f42");
  var peg$f43 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    const remaining = input.substring(pos);
    const pathPattern = /^@[a-zA-Z_][a-zA-Z0-9_]*[\/\.]/;
    return pathPattern.test(remaining);
  }, "peg$f43");
  var peg$f44 = /* @__PURE__ */ __name(function() {
    helpers_default.resetCodeParsingState();
    helpers_default.debug("DirectiveBoundary: Parser state reset between directives");
    return true;
  }, "peg$f44");
  var peg$f45 = /* @__PURE__ */ __name(function(expr) {
    const result = {
      ...expr,
      meta: {
        ...expr.meta,
        isWhenCondition: true,
        isSimple: helpers_default.isSimpleCondition(expr),
        negated: expr.type === "UnaryExpression" && expr.operator === "!"
      }
    };
    return result;
  }, "peg$f45");
  var peg$f46 = /* @__PURE__ */ __name(function(filter) {
    return {
      type: "arrayOperation",
      operation: filter.type,
      condition: filter.filter,
      array: filter.array,
      parameters: {
        start: filter.start,
        end: filter.end
      }
    };
  }, "peg$f46");
  var peg$f47 = /* @__PURE__ */ __name(function(expr) {
    const result = {
      ...expr,
      meta: {
        ...expr.meta,
        isBooleanContext: true
      }
    };
    return result;
  }, "peg$f47");
  var peg$f48 = /* @__PURE__ */ __name(function(expr) {
    return expr.type === "BinaryExpression";
  }, "peg$f48");
  var peg$f49 = /* @__PURE__ */ __name(function(expr) {
    const result = {
      ...expr,
      meta: {
        ...expr.meta,
        isComparison: true,
        isEquality: [
          "==",
          "!=",
          "~="
        ].includes(expr.operator),
        isRelational: [
          "<",
          ">",
          "<=",
          ">="
        ].includes(expr.operator)
      }
    };
    return result;
  }, "peg$f49");
  var peg$f50 = /* @__PURE__ */ __name(function() {
    return offset() === 0;
  }, "peg$f50");
  var peg$f51 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Frontmatter, {
      content,
      location: location()
    });
  }, "peg$f51");
  var peg$f52 = /* @__PURE__ */ __name(function(line) {
    return line;
  }, "peg$f52");
  var peg$f53 = /* @__PURE__ */ __name(function(lines) {
    return lines.join("");
  }, "peg$f53");
  var peg$f54 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("") + "\n";
  }, "peg$f54");
  var peg$f55 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f55");
  var peg$f56 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f56");
  var peg$f57 = /* @__PURE__ */ __name(function(digits, decimal) {
    return parseFloat((text().startsWith("-") ? "-" : "") + digits.join("") + (decimal ? decimal[0] + decimal[1].join("") : ""));
  }, "peg$f57");
  var peg$f58 = /* @__PURE__ */ __name(function() {
    return true;
  }, "peg$f58");
  var peg$f59 = /* @__PURE__ */ __name(function() {
    return false;
  }, "peg$f59");
  var peg$f60 = /* @__PURE__ */ __name(function() {
    return null;
  }, "peg$f60");
  var peg$f61 = /* @__PURE__ */ __name(function() {
    return "*";
  }, "peg$f61");
  var peg$f62 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode("Literal", {
      value: "none",
      valueType: "none",
      location: location()
    });
  }, "peg$f62");
  var peg$f63 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode("Literal", {
      value: "denied",
      valueType: "denied",
      location: location()
    });
  }, "peg$f63");
  var peg$f64 = /* @__PURE__ */ __name(function(expr) {
    const normalized = Array.isArray(expr) ? expr : [
      expr
    ];
    return helpers_default.createNode("Literal", {
      value: normalized,
      valueType: "done",
      location: location()
    });
  }, "peg$f64");
  var peg$f65 = /* @__PURE__ */ __name(function(value) {
    const normalized = Array.isArray(value) ? value : [
      value
    ];
    return helpers_default.createNode("Literal", {
      value: normalized,
      valueType: "done",
      location: location()
    });
  }, "peg$f65");
  var peg$f66 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode("Literal", {
      value: "done",
      valueType: "done",
      location: location()
    });
  }, "peg$f66");
  var peg$f67 = /* @__PURE__ */ __name(function(expr) {
    const normalized = Array.isArray(expr) ? expr : [
      expr
    ];
    return helpers_default.createNode("Literal", {
      value: normalized,
      valueType: "continue",
      location: location()
    });
  }, "peg$f67");
  var peg$f68 = /* @__PURE__ */ __name(function(value) {
    const normalized = Array.isArray(value) ? value : [
      value
    ];
    return helpers_default.createNode("Literal", {
      value: normalized,
      valueType: "continue",
      location: location()
    });
  }, "peg$f68");
  var peg$f69 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode("Literal", {
      value: "continue",
      valueType: "continue",
      location: location()
    });
  }, "peg$f69");
  var peg$f70 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode("Literal", {
      value: "retry",
      valueType: "retry",
      location: location()
    });
  }, "peg$f70");
  var peg$f71 = /* @__PURE__ */ __name(function(num, unit) {
    return {
      type: "TimeDuration",
      value: num,
      unit,
      location: location()
    };
  }, "peg$f71");
  var peg$f72 = /* @__PURE__ */ __name(function() {
    return "milliseconds";
  }, "peg$f72");
  var peg$f73 = /* @__PURE__ */ __name(function() {
    return "seconds";
  }, "peg$f73");
  var peg$f74 = /* @__PURE__ */ __name(function() {
    return "minutes";
  }, "peg$f74");
  var peg$f75 = /* @__PURE__ */ __name(function() {
    return "hours";
  }, "peg$f75");
  var peg$f76 = /* @__PURE__ */ __name(function() {
    return "days";
  }, "peg$f76");
  var peg$f77 = /* @__PURE__ */ __name(function() {
    return "weeks";
  }, "peg$f77");
  var peg$f78 = /* @__PURE__ */ __name(function() {
    return "years";
  }, "peg$f78");
  var peg$f79 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f79");
  var peg$f80 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f80");
  var peg$f81 = /* @__PURE__ */ __name(function() {
    return "@";
  }, "peg$f81");
  var peg$f82 = /* @__PURE__ */ __name(function(char) {
    return char === "\\" ? "\\" : char;
  }, "peg$f82");
  var peg$f83 = /* @__PURE__ */ __name(function(char) {
    switch (char) {
      case "n":
        return "\n";
      case "t":
        return "	";
      case "r":
        return "\r";
      case "0":
        return "\0";
      case "\\":
        return "\\";
      case '"':
        return '"';
      case "'":
        return "'";
      case ".":
        return ".";
      default:
        return char;
    }
  }, "peg$f83");
  var peg$f84 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("BaseTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f84");
  var peg$f85 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f85");
  var peg$f86 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("TemplateTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f86");
  var peg$f87 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f87");
  var peg$f88 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("CommandTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f88");
  var peg$f89 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f89");
  var peg$f90 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("PathTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f90");
  var peg$f91 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    return !rest.match(/^\s*#\s*/);
  }, "peg$f91");
  var peg$f92 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f92");
  var peg$f93 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("SectionTextSegment matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f93");
  var peg$f94 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f94");
  var peg$f95 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f95");
  var peg$f96 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f96");
  var peg$f97 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f97");
  var peg$f98 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f98");
  var peg$f99 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f99");
  var peg$f100 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f100");
  var peg$f101 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f101");
  var peg$f102 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f102");
  var peg$f103 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.PathSeparator, {
      value: "/",
      location: location()
    });
  }, "peg$f103");
  var peg$f104 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.DotSeparator, {
      value: ".",
      location: location()
    });
  }, "peg$f104");
  var peg$f105 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.SectionMarker, {
      value: "#",
      location: location()
    });
  }, "peg$f105");
  var peg$f106 = /* @__PURE__ */ __name(function(first, rest) {
    return first + rest.join("");
  }, "peg$f106");
  var peg$f107 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.PathSeparator, {
      value: "/",
      location: location()
    });
  }, "peg$f107");
  var peg$f108 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.DotSeparator, {
      value: ".",
      location: location()
    });
  }, "peg$f108");
  var peg$f109 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.SectionMarker, {
      value: "#",
      location: location()
    });
  }, "peg$f109");
  var peg$f110 = /* @__PURE__ */ __name(function(backticks) {
    return backticks.length >= 3 && backticks.length <= 5;
  }, "peg$f110");
  var peg$f111 = /* @__PURE__ */ __name(function(backticks) {
    return backticks;
  }, "peg$f111");
  var peg$f112 = /* @__PURE__ */ __name(function(condition, trueBranch, falseBranch) {
    return helpers_default.createNode("TernaryExpression", {
      condition,
      trueBranch,
      falseBranch,
      location: location()
    });
  }, "peg$f112");
  var peg$f113 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "??",
      right
    };
  }, "peg$f113");
  var peg$f114 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f114");
  var peg$f115 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "||",
      right
    };
  }, "peg$f115");
  var peg$f116 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f116");
  var peg$f117 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "&&",
      right
    };
  }, "peg$f117");
  var peg$f118 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f118");
  var peg$f119 = /* @__PURE__ */ __name(function(first, op, right) {
    return {
      op,
      right
    };
  }, "peg$f119");
  var peg$f120 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f120");
  var peg$f121 = /* @__PURE__ */ __name(function(first, op, right) {
    return {
      op,
      right
    };
  }, "peg$f121");
  var peg$f122 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f122");
  var peg$f123 = /* @__PURE__ */ __name(function(first, op, right) {
    return {
      op,
      right
    };
  }, "peg$f123");
  var peg$f124 = /* @__PURE__ */ __name(function(first, rest) {
    return helpers_default.createBinaryExpression(first, rest, location());
  }, "peg$f124");
  var peg$f125 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f125");
  var peg$f126 = /* @__PURE__ */ __name(function(expr) {
    return helpers_default.createNode("UnaryExpression", {
      operator: "!",
      operand: expr,
      location: location()
    });
  }, "peg$f126");
  var peg$f127 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "number",
      location: location()
    });
  }, "peg$f127");
  var peg$f128 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "boolean",
      location: location()
    });
  }, "peg$f128");
  var peg$f129 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "null",
      location: location()
    });
  }, "peg$f129");
  var peg$f130 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "wildcard",
      location: location()
    });
  }, "peg$f130");
  var peg$f131 = /* @__PURE__ */ __name(function(streamPrefix, func, args, method, margs, post, tail) {
    const baseRef = {
      name: func,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: func
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    const baseInvocation = helpers_default.createExecInvocation(baseRef, null, location());
    const methodRef = {
      name: method,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: method,
          location: location()
        })
      ],
      args: margs || [],
      isCommandReference: true,
      objectSource: baseInvocation
      // Non-standard: handled by evaluator
    };
    const finalTail = streamPrefix ? tail ? {
      ...tail,
      stream: true
    } : {
      stream: true
    } : tail;
    const exec = helpers_default.createExecInvocation(methodRef, null, location());
    const execWithPost = helpers_default.attachPostFields(exec, post);
    return finalTail ? helpers_default.applyTail(execWithPost, finalTail) : execWithPost;
  }, "peg$f131");
  var peg$f132 = /* @__PURE__ */ __name(function(arrayRef, filter) {
    return helpers_default.createNode("ArrayFilterExpression", {
      array: arrayRef,
      filter,
      location: location()
    });
  }, "peg$f132");
  var peg$f133 = /* @__PURE__ */ __name(function(arrayRef, start, end) {
    return helpers_default.createNode("ArraySliceExpression", {
      array: arrayRef,
      start,
      end,
      location: location()
    });
  }, "peg$f133");
  var peg$f134 = /* @__PURE__ */ __name(function(expr) {
    const rest = input.substring(peg$currPos);
    return !rest.includes(")");
  }, "peg$f134");
  var peg$f135 = /* @__PURE__ */ __name(function(expr) {
    error("Unclosed parenthesis in expression. Expected ')'");
  }, "peg$f135");
  var peg$f136 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("UnifiedQuoteOrTemplate matched UnifiedTemplate", {
      template
    });
    return template;
  }, "peg$f136");
  var peg$f137 = /* @__PURE__ */ __name(function(quote) {
    helpers_default.debug("UnifiedQuoteOrTemplate matched UnifiedQuote", {
      quote
    });
    return quote;
  }, "peg$f137");
  var peg$f138 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedQuote: DoubleQuote matched", {
      parts
    });
    if (parts.length === 1 && parts[0].type === "Text") {
      const content2 = [
        helpers_default.createNode("Literal", {
          value: parts[0].content,
          valueType: "string",
          location: location()
        })
      ];
      return {
        content: content2,
        wrapperType: "doubleQuote",
        hasInterpolation: false
      };
    }
    const content = parts.length === 0 ? [
      helpers_default.createNode("Literal", {
        value: "",
        valueType: "string",
        location: location()
      })
    ] : parts;
    return {
      content,
      wrapperType: "doubleQuote",
      hasInterpolation: parts.length > 1 || parts.length === 1 && parts[0].type !== "Text"
    };
  }, "peg$f138");
  var peg$f139 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedQuote: SingleQuote matched", {
      content
    });
    return {
      content: [
        helpers_default.createNode("Literal", {
          value: content,
          valueType: "string",
          location: location()
        })
      ],
      wrapperType: "singleQuote",
      hasInterpolation: false
    };
  }, "peg$f139");
  var peg$f140 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedQuote: Backtick matched", {
      content
    });
    if (content.length === 1 && content[0].type === "Text") {
      return {
        content: [
          helpers_default.createNode("Literal", {
            value: content[0].content,
            valueType: "string",
            location: location()
          })
        ],
        wrapperType: "backtick",
        hasInterpolation: false
      };
    }
    if (content.length === 0) {
      return {
        content: [
          helpers_default.createNode("Literal", {
            value: "",
            valueType: "string",
            location: location()
          })
        ],
        wrapperType: "backtick",
        hasInterpolation: false
      };
    }
    return {
      content,
      wrapperType: "backtick",
      hasInterpolation: true
    };
  }, "peg$f140");
  var peg$f141 = /* @__PURE__ */ __name(function(condition, content) {
    return {
      type: "ConditionalTemplateSnippet",
      condition: condition.variable,
      content,
      location: location()
    };
  }, "peg$f141");
  var peg$f142 = /* @__PURE__ */ __name(function(condition, parts) {
    return {
      type: "ConditionalStringFragment",
      condition: condition.variable,
      content: parts,
      location: location()
    };
  }, "peg$f142");
  var peg$f143 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f143");
  var peg$f144 = /* @__PURE__ */ __name(function(name, argList) {
    helpers_default.debug("UnifiedExecInvocation matched", {
      name,
      argList
    });
    const args = argList.arguments || [];
    const commandRef = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args,
      isCommandReference: true
    };
    return helpers_default.createExecInvocation(commandRef, null, location());
  }, "peg$f144");
  var peg$f145 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f145");
  var peg$f146 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f146");
  var peg$f147 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f147");
  var peg$f148 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f148");
  var peg$f149 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f149");
  var peg$f150 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    if (pos === 0) return true;
    const prev = input[pos - 1];
    return prev === "\n" || prev === "\r";
  }, "peg$f150");
  var peg$f151 = /* @__PURE__ */ __name(function(pattern, parts) {
    const pos = offset();
    if (pos === 0) return true;
    const prev = input[pos - 1];
    return prev === "\n" || prev === "\r";
  }, "peg$f151");
  var peg$f152 = /* @__PURE__ */ __name(function(pattern, parts) {
    return {
      type: "TemplateForBlock",
      variable: pattern.variable,
      source: pattern.source,
      body: parts,
      style: "slash"
    };
  }, "peg$f152");
  var peg$f153 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedTripleColon matched :::...:::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return {
      content: processedParts,
      wrapperType: "tripleColon",
      interpolationType: "doubleBrace"
      // {{var}} style
    };
  }, "peg$f153");
  var peg$f154 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedDoubleColon matched ::...::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return {
      content: processedParts,
      wrapperType: "doubleColon",
      interpolationType: "atSign"
      // @var style
    };
  }, "peg$f154");
  var peg$f155 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedDoubleBracket matched [[...]]", {
      parts
    });
    return {
      content: parts,
      wrapperType: "doubleBracket",
      interpolationType: "doubleBrace"
      // {{var}} style
    };
  }, "peg$f155");
  var peg$f156 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f156");
  var peg$f157 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f157");
  var peg$f158 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f158");
  var peg$f159 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    if (pos === 0) return true;
    const prev = input[pos - 1];
    return prev === "\n" || prev === "\r";
  }, "peg$f159");
  var peg$f160 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f160");
  var peg$f161 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f161");
  var peg$f162 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f162");
  var peg$f163 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f163");
  var peg$f164 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f164");
  var peg$f165 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f165");
  var peg$f166 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    if (pos === 0) return true;
    const prev = input[pos - 1];
    return prev === "\n" || prev === "\r";
  }, "peg$f166");
  var peg$f167 = /* @__PURE__ */ __name(function(pattern, parts) {
    const pos = offset();
    if (pos === 0) return true;
    const prev = input[pos - 1];
    return prev === "\n" || prev === "\r";
  }, "peg$f167");
  var peg$f168 = /* @__PURE__ */ __name(function(pattern, parts) {
    return {
      type: "TemplateForBlock",
      variable: pattern.variable,
      source: pattern.source,
      body: parts,
      style: "slash"
    };
  }, "peg$f168");
  var peg$f169 = /* @__PURE__ */ __name(function(content, tail) {
    return {
      type: "TemplateInlineShow",
      showKind: "command",
      content,
      tail: tail || null
    };
  }, "peg$f169");
  var peg$f170 = /* @__PURE__ */ __name(function(lang, code, tail) {
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: lang,
      location: location()
    });
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: code.content,
      location: location()
    });
    return {
      type: "TemplateInlineShow",
      showKind: "code",
      lang: [
        langNode
      ],
      code: [
        codeNode
      ],
      meta: {
        isMultiLine: code.isMultiLine,
        language: lang
      },
      tail: tail || null
    };
  }, "peg$f170");
  var peg$f171 = /* @__PURE__ */ __name(function(template, tail) {
    return {
      type: "TemplateInlineShow",
      showKind: "template",
      template,
      tail: tail || null
    };
  }, "peg$f171");
  var peg$f172 = /* @__PURE__ */ __name(function(loader, tail) {
    return {
      type: "TemplateInlineShow",
      showKind: "load",
      loadContent: loader,
      tail: tail || null
    };
  }, "peg$f172");
  var peg$f173 = /* @__PURE__ */ __name(function(ref) {
    return {
      type: "TemplateInlineShow",
      showKind: "reference",
      reference: ref
    };
  }, "peg$f173");
  var peg$f174 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f174");
  var peg$f175 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f175");
  var peg$f176 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f176");
  var peg$f177 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f177");
  var peg$f178 = /* @__PURE__ */ __name(function(id, fields) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      isSpecial: true,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f178");
  var peg$f179 = /* @__PURE__ */ __name(function() {
    return "now";
  }, "peg$f179");
  var peg$f180 = /* @__PURE__ */ __name(function() {
    return "base";
  }, "peg$f180");
  var peg$f181 = /* @__PURE__ */ __name(function() {
    return "input";
  }, "peg$f181");
  var peg$f182 = /* @__PURE__ */ __name(function() {
    return "debug";
  }, "peg$f182");
  var peg$f183 = /* @__PURE__ */ __name(function() {
    return "pipeline";
  }, "peg$f183");
  var peg$f184 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "frontmatter",
      fields: id.fields
    }, location());
  }, "peg$f184");
  var peg$f185 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "UnifiedAtVar",
      node,
      fields
    });
    return node;
  }, "peg$f185");
  var peg$f186 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const node = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      fields
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "UnifiedAtVar with bracket",
      node,
      fields
    });
    return node;
  }, "peg$f186");
  var peg$f187 = /* @__PURE__ */ __name(function(id, fields, format) {
    const node = helpers_default.createVariableReferenceNode("varInterpolation", {
      identifier: id,
      isSpecial: true,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "UnifiedInterpolationSpecialVar",
      node
    });
    return node;
  }, "peg$f187");
  var peg$f188 = /* @__PURE__ */ __name(function(id, format) {
    const node = helpers_default.createVariableReferenceNode("varInterpolation", {
      identifier: id,
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "UnifiedInterpolationSimpleVar",
      node
    });
    return node;
  }, "peg$f188");
  var peg$f189 = /* @__PURE__ */ __name(function(id, fields, format) {
    const node = helpers_default.createVariableReferenceNode("varInterpolation", {
      identifier: id,
      fields: fields || [],
      ...format ? {
        format
      } : {}
    }, location());
    helpers_default.debug("CreateVAR", {
      rule: "UnifiedInterpolationDataVar",
      node
    });
    return node;
  }, "peg$f189");
  var peg$f190 = /* @__PURE__ */ __name(function(format) {
    return format;
  }, "peg$f190");
  var peg$f191 = /* @__PURE__ */ __name(function(field, rest) {
    return {
      fields: [
        {
          type: "dot",
          value: field
        },
        ...rest
      ]
    };
  }, "peg$f191");
  var peg$f192 = /* @__PURE__ */ __name(function(id, fields, tail) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    if (tail) {
      return {
        type: "VariableReferenceWithTail",
        variable: varRef,
        withClause: tail
      };
    }
    return varRef;
  }, "peg$f192");
  var peg$f193 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f193");
  var peg$f194 = /* @__PURE__ */ __name(function(varRef, pipes) {
    if (pipes && pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f194");
  var peg$f195 = /* @__PURE__ */ __name(function(id, fields, boundary, pipes) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
    if (pipes && pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f195");
  var peg$f196 = /* @__PURE__ */ __name(function() {
    return {
      type: "literal",
      value: "\\"
    };
  }, "peg$f196");
  var peg$f197 = /* @__PURE__ */ __name(function() {
    return {
      type: "consumed"
    };
  }, "peg$f197");
  var peg$f198 = /* @__PURE__ */ __name(function(field) {
    return field;
  }, "peg$f198");
  var peg$f199 = /* @__PURE__ */ __name(function(text2) {
    return text2.join("");
  }, "peg$f199");
  var peg$f200 = /* @__PURE__ */ __name(function(ws, term) {
    const pos = offset();
    const isBeforeDirective = input.substr(pos).match(/^\s*@[a-z]/i);
    return isBeforeDirective;
  }, "peg$f200");
  var peg$f201 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f201");
  var peg$f202 = /* @__PURE__ */ __name(function(ws, term) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: term,
      location: location()
    });
  }, "peg$f202");
  var peg$f203 = /* @__PURE__ */ __name(function(ws) {
    const atEof = offset() === input.length;
    const nextChar = input[offset()];
    return atEof || nextChar === "@" && helpers_default.isLogicalLineStart(input, offset());
  }, "peg$f203");
  var peg$f204 = /* @__PURE__ */ __name(function(ws) {
    return helpers_default.createNode(node_type_default.Newline, {
      content: "\n",
      location: location()
    });
  }, "peg$f204");
  var peg$f205 = /* @__PURE__ */ __name(function(source, ast, options2, pipes) {
    helpers_default.debug("AlligatorExpression matched", {
      source,
      ast,
      options: options2,
      pipes
    });
    return {
      type: "load-content",
      source,
      ...ast ? {
        ast
      } : {},
      ...options2 ? {
        options: options2
      } : {},
      ...pipes && pipes.length > 0 ? {
        pipes
      } : {},
      location: location()
    };
  }, "peg$f205");
  var peg$f206 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest.map((r) => r[3])
    ];
  }, "peg$f206");
  var peg$f207 = /* @__PURE__ */ __name(function(pattern) {
    return {
      ...pattern,
      usage: true
    };
  }, "peg$f207");
  var peg$f208 = /* @__PURE__ */ __name(function(pattern) {
    return pattern;
  }, "peg$f208");
  var peg$f209 = /* @__PURE__ */ __name(function() {
    return {
      type: "name-list-all"
    };
  }, "peg$f209");
  var peg$f210 = /* @__PURE__ */ __name(function(type) {
    return {
      type: "name-list",
      filter: type
    };
  }, "peg$f210");
  var peg$f211 = /* @__PURE__ */ __name(function(type) {
    return {
      type: "type-filter",
      filter: type
    };
  }, "peg$f211");
  var peg$f212 = /* @__PURE__ */ __name(function(id, fields) {
    return {
      type: "type-filter-var",
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {}
    };
  }, "peg$f212");
  var peg$f213 = /* @__PURE__ */ __name(function() {
    return {
      type: "type-filter-all"
    };
  }, "peg$f213");
  var peg$f214 = /* @__PURE__ */ __name(function(id, fields) {
    return {
      type: "name-list-var",
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {}
    };
  }, "peg$f214");
  var peg$f215 = /* @__PURE__ */ __name(function(id) {
    return {
      type: "definition",
      name: id
    };
  }, "peg$f215");
  var peg$f216 = /* @__PURE__ */ __name(function() {
    return text();
  }, "peg$f216");
  var peg$f217 = /* @__PURE__ */ __name(function(protocol, host, path) {
    helpers_default.debug("AlligatorURL matched", {
      protocol,
      host,
      path
    });
    return {
      type: "url",
      protocol,
      host,
      path: path || "/",
      raw: text()
    };
  }, "peg$f217");
  var peg$f218 = /* @__PURE__ */ __name(function(chars) {
    helpers_default.debug("AlligatorQuotedPath matched", {
      chars
    });
    const pathString = chars.join("");
    const textNode = helpers_default.createNode(node_type_default.Text, {
      content: pathString,
      location: location()
    });
    return {
      type: "path",
      segments: [
        textNode
      ],
      raw: pathString,
      meta: helpers_default.createPathMetadata(pathString, [
        textNode
      ])
    };
  }, "peg$f218");
  var peg$f219 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("AlligatorUnquotedPath matched", {
      parts
    });
    const pathString = helpers_default.reconstructRawString(parts);
    return {
      type: "path",
      segments: parts,
      raw: pathString,
      meta: helpers_default.createPathMetadata(pathString, parts)
    };
  }, "peg$f219");
  var peg$f220 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f220");
  var peg$f221 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f221");
  var peg$f222 = /* @__PURE__ */ __name(function(id, fields, boundary) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
  }, "peg$f222");
  var peg$f223 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f223");
  var peg$f224 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f224");
  var peg$f225 = /* @__PURE__ */ __name(function(section, transform) {
    const options2 = {
      section
    };
    options2.transform = transform;
    return options2;
  }, "peg$f225");
  var peg$f226 = /* @__PURE__ */ __name(function(section, rename) {
    const options2 = {
      section
    };
    section.renamed = rename;
    return options2;
  }, "peg$f226");
  var peg$f227 = /* @__PURE__ */ __name(function(section) {
    return {
      section
    };
  }, "peg$f227");
  var peg$f228 = /* @__PURE__ */ __name(function(transform) {
    return {
      transform
    };
  }, "peg$f228");
  var peg$f229 = /* @__PURE__ */ __name(function(identifier) {
    helpers_default.debug("SectionClause matched", {
      identifier
    });
    return {
      type: "section",
      identifier
    };
  }, "peg$f229");
  var peg$f230 = /* @__PURE__ */ __name(function(hashes) {
    return {
      type: "section-list",
      level: hashes.length
    };
  }, "peg$f230");
  var peg$f231 = /* @__PURE__ */ __name(function(varRef, fields) {
    return helpers_default.createVariableReferenceNode("sectionVariable", {
      identifier: varRef,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f231");
  var peg$f232 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("").trim();
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f232");
  var peg$f233 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f233");
  var peg$f234 = /* @__PURE__ */ __name(function(title) {
    return {
      type: "rename-template",
      parts: title
    };
  }, "peg$f234");
  var peg$f235 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f235");
  var peg$f236 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f236");
  var peg$f237 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f237");
  var peg$f238 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f238");
  var peg$f239 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f239");
  var peg$f240 = /* @__PURE__ */ __name(function(id, fields, boundary) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
  }, "peg$f240");
  var peg$f241 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f241");
  var peg$f242 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f242");
  var peg$f243 = /* @__PURE__ */ __name(function(template) {
    return template;
  }, "peg$f243");
  var peg$f244 = /* @__PURE__ */ __name(function(parts) {
    return {
      type: "template",
      parts
    };
  }, "peg$f244");
  var peg$f245 = /* @__PURE__ */ __name(function(parts) {
    return {
      type: "template",
      parts
    };
  }, "peg$f245");
  var peg$f246 = /* @__PURE__ */ __name(function(fields) {
    return {
      type: "placeholder",
      fields
    };
  }, "peg$f246");
  var peg$f247 = /* @__PURE__ */ __name(function(id, fields, boundary) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
  }, "peg$f247");
  var peg$f248 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f248");
  var peg$f249 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f249");
  var peg$f250 = /* @__PURE__ */ __name(function(fields) {
    return {
      type: "placeholder",
      fields
    };
  }, "peg$f250");
  var peg$f251 = /* @__PURE__ */ __name(function(id, fields, boundary) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
  }, "peg$f251");
  var peg$f252 = /* @__PURE__ */ __name(function(segment) {
    return segment;
  }, "peg$f252");
  var peg$f253 = /* @__PURE__ */ __name(function(first, field) {
    return field;
  }, "peg$f253");
  var peg$f254 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f254");
  var peg$f255 = /* @__PURE__ */ __name(function(id) {
    return {
      type: "field",
      value: id
    };
  }, "peg$f255");
  var peg$f256 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f256");
  var peg$f257 = /* @__PURE__ */ __name(function(chars) {
    return "/" + chars.join("");
  }, "peg$f257");
  var peg$f258 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ArrayLiteral matched empty array");
    return {
      type: "array",
      items: [],
      location: location()
    };
  }, "peg$f258");
  var peg$f259 = /* @__PURE__ */ __name(function(items) {
    helpers_default.debug("ArrayLiteral matched with items", {
      itemCount: items.length
    });
    return {
      type: "array",
      items,
      location: location()
    };
  }, "peg$f259");
  var peg$f260 = /* @__PURE__ */ __name(function(first, value) {
    return value;
  }, "peg$f260");
  var peg$f261 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f261");
  var peg$f262 = /* @__PURE__ */ __name(function(varRef) {
    return {
      type: "ConditionalArrayElement",
      condition: varRef.variable,
      value: varRef.variable,
      location: location()
    };
  }, "peg$f262");
  var peg$f263 = /* @__PURE__ */ __name(function(name, argList) {
    helpers_default.debug("CommandReference matched", {
      name,
      argList
    });
    const args = argList ? argList.arguments || [] : [];
    return {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args,
      isCommandReference: true
    };
  }, "peg$f263");
  var peg$f264 = /* @__PURE__ */ __name(function(name, argList) {
    helpers_default.debug("NestedExecInvocation matched", {
      name,
      argList
    });
    const args = argList.arguments || [];
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args,
      isCommandReference: true
    };
    return helpers_default.createNode(node_type_default.ExecInvocation, {
      commandRef: ref,
      withClause: null,
      location: location()
    });
  }, "peg$f264");
  var peg$f265 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: content.map((c) => c.content || c.identifier || "").join(""),
      isTemplate: true,
      templateParts: content,
      location: location()
    });
  }, "peg$f265");
  var peg$f266 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("BacktickTemplateArgument matched", {
      template
    });
    return template;
  }, "peg$f266");
  var peg$f267 = /* @__PURE__ */ __name(function(parts) {
    return {
      content: parts,
      wrapperType: "backtick"
    };
  }, "peg$f267");
  var peg$f268 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f268");
  var peg$f269 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f269");
  var peg$f270 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f270");
  var peg$f271 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f271");
  var peg$f272 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f272");
  var peg$f273 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("").trim();
    if (!content) return null;
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f273");
  var peg$f274 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f274");
  var peg$f275 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    return {
      type: "ConditionalVarRef",
      variable: helpers_default.createVariableReferenceNode("varIdentifier", {
        identifier: normalizedId,
        ...fields.length > 0 ? {
          fields
        } : {}
      }, location())
    };
  }, "peg$f275");
  var peg$f276 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f276");
  var peg$f277 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f277");
  var peg$f278 = /* @__PURE__ */ __name(function(pathParts, section) {
    const pathString = helpers_default.reconstructRawString(pathParts);
    let sectionRaw;
    if (section.type === "VariableReference") {
      sectionRaw = "@" + section.identifier;
    } else if (typeof section === "string") {
      sectionRaw = section;
    } else {
      sectionRaw = section.content || section.identifier || "";
    }
    return {
      type: "sectionPath",
      parts: pathParts,
      section: sectionRaw,
      sectionNodes: Array.isArray(section) ? section : [
        section
      ],
      raw: pathString + " # " + sectionRaw
    };
  }, "peg$f278");
  var peg$f279 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f279");
  var peg$f280 = /* @__PURE__ */ __name(function(chars) {
    return chars.trim();
  }, "peg$f280");
  var peg$f281 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f281");
  var peg$f282 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: '"' + content + '"',
      location: location()
    });
  }, "peg$f282");
  var peg$f283 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "'" + content + "'",
      location: location()
    });
  }, "peg$f283");
  var peg$f284 = /* @__PURE__ */ __name(function(parts) {
    return parts.map((p) => {
      if (p.type === node_type_default.VariableReference) {
        return "@" + p.identifier;
      }
      return p.content || "";
    }).join("");
  }, "peg$f284");
  var peg$f285 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f285");
  var peg$f286 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f286");
  var peg$f287 = /* @__PURE__ */ __name(function(name, argList) {
    helpers_default.debug("BacktickExecInvocation matched", {
      name,
      argList
    });
    const args = argList.arguments || [];
    const commandRef = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args,
      isCommandReference: true
    };
    return helpers_default.createExecInvocation(commandRef, null, location());
  }, "peg$f287");
  var peg$f288 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f288");
  var peg$f289 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f289");
  var peg$f290 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f290");
  var peg$f291 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f291");
  var peg$f292 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    helpers_default.debug("CommandTextContent matched", {
      content
    });
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f292");
  var peg$f293 = /* @__PURE__ */ __name(function() {
    return !helpers_default.isCommandEndingBracket(input, peg$currPos);
  }, "peg$f293");
  var peg$f294 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f294");
  var peg$f295 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("DoubleColonContent matched ::...::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return processedParts;
  }, "peg$f295");
  var peg$f296 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f296");
  var peg$f297 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("TripleColonContent matched :::...:::", {
      parts
    });
    let processedParts = parts;
    if (processedParts.length > 0 && processedParts[0].type === "Text" && processedParts[0].content) {
      if (processedParts[0].content === "\n") {
        processedParts = processedParts.slice(1);
      } else if (processedParts[0].content.startsWith("\n")) {
        processedParts[0] = {
          ...processedParts[0],
          content: processedParts[0].content.slice(1)
        };
      }
    }
    if (processedParts.length > 0) {
      const lastIndex = processedParts.length - 1;
      const lastPart = processedParts[lastIndex];
      if (lastPart.type === "Text" && lastPart.content) {
        if (lastPart.content === "\n") {
          processedParts = processedParts.slice(0, -1);
        } else if (lastPart.content.endsWith("\n")) {
          processedParts[lastIndex] = {
            ...lastPart,
            content: lastPart.content.slice(0, -1)
          };
        }
      }
    }
    return processedParts;
  }, "peg$f297");
  var peg$f298 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("DoubleBracketContent matched {{var}}", {
      parts,
      type: parts ? parts.type : "unknown"
    });
    return [
      parts
    ];
  }, "peg$f298");
  var peg$f299 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f299");
  var peg$f300 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f300");
  var peg$f301 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f301");
  var peg$f302 = /* @__PURE__ */ __name(function(chars) {
    helpers_default.debug("UnquotedPathText matched", {
      chars
    });
    return helpers_default.createNode(node_type_default.Text, {
      content: chars,
      location: location()
    });
  }, "peg$f302");
  var peg$f303 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f303");
  var peg$f304 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f304");
  var peg$f305 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f305");
  var peg$f306 = /* @__PURE__ */ __name(function(parts) {
    return parts.join("");
  }, "peg$f306");
  var peg$f307 = /* @__PURE__ */ __name(function(inner) {
    return "[" + inner + "]";
  }, "peg$f307");
  var peg$f308 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f308");
  var peg$f309 = /* @__PURE__ */ __name(function(quote) {
    return quote.content;
  }, "peg$f309");
  var peg$f310 = /* @__PURE__ */ __name(function(quote) {
    return quote.content;
  }, "peg$f310");
  var peg$f311 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected [[");
    return {
      type: "template",
      lookahead: "[["
    };
  }, "peg$f311");
  var peg$f312 = /* @__PURE__ */ __name(function(ahead) {
    return ahead.includes(" # ");
  }, "peg$f312");
  var peg$f313 = /* @__PURE__ */ __name(function(ahead) {
    helpers_default.debug("SemanticTextContent detected [ with section");
    return {
      type: "section",
      lookahead: "["
    };
  }, "peg$f313");
  var peg$f314 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected [");
    return {
      type: "path",
      lookahead: "["
    };
  }, "peg$f314");
  var peg$f315 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected /run");
    return {
      type: "run",
      lookahead: "/run"
    };
  }, "peg$f315");
  var peg$f316 = /* @__PURE__ */ __name(function() {
    helpers_default.debug('SemanticTextContent detected "');
    return {
      type: "template",
      lookahead: '"'
    };
  }, "peg$f316");
  var peg$f317 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("SemanticTextContent detected '");
    return {
      type: "literal",
      lookahead: "'"
    };
  }, "peg$f317");
  var peg$f318 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("WrappedTemplateContent matched", {
      contentType: typeof content,
      isArray: Array.isArray(content),
      contentLength: Array.isArray(content) ? content.length : "not array",
      contentHasType: content && content.type,
      wrapperType: content && content.wrapperType
    });
    const rawString = helpers_default.reconstructRawString(content.content);
    return {
      parts: content.content,
      raw: rawString,
      wrapperType: content.wrapperType
    };
  }, "peg$f318");
  var peg$f319 = /* @__PURE__ */ __name(function(content) {
    const rawString = helpers_default.reconstructRawString(content);
    return {
      parts: content,
      raw: rawString
    };
  }, "peg$f319");
  var peg$f320 = /* @__PURE__ */ __name(function(quote) {
    return quote.content;
  }, "peg$f320");
  var peg$f321 = /* @__PURE__ */ __name(function(quote) {
    return quote.content;
  }, "peg$f321");
  var peg$f322 = /* @__PURE__ */ __name(function(content) {
    const rawString = helpers_default.reconstructRawString(content);
    return {
      parts: content,
      raw: rawString
    };
  }, "peg$f322");
  var peg$f323 = /* @__PURE__ */ __name(function(entries) {
    return {
      type: "object",
      entries: entries || [],
      location: location()
    };
  }, "peg$f323");
  var peg$f324 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f324");
  var peg$f325 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f325");
  var peg$f326 = /* @__PURE__ */ __name(function(variable) {
    return {
      type: "spread",
      value: [
        variable
      ]
      // Wrap in array to match VariableNodeArray type
    };
  }, "peg$f326");
  var peg$f327 = /* @__PURE__ */ __name(function(key, optional, value) {
    return {
      type: optional ? "conditionalPair" : "pair",
      key,
      value
    };
  }, "peg$f327");
  var peg$f328 = /* @__PURE__ */ __name(function(content) {
    return {
      content,
      wrapperType: "doubleBracket"
    };
  }, "peg$f328");
  var peg$f329 = /* @__PURE__ */ __name(function(parts) {
    return {
      content: parts,
      wrapperType: "backtick"
    };
  }, "peg$f329");
  var peg$f330 = /* @__PURE__ */ __name(function(first, value) {
    return value;
  }, "peg$f330");
  var peg$f331 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f331");
  var peg$f332 = /* @__PURE__ */ __name(function(item) {
    return [
      item
    ];
  }, "peg$f332");
  var peg$f333 = /* @__PURE__ */ __name(function(tail, caps, comment) {
    helpers_default.debug("StandardDirectiveEnding matched", {
      hasTail: !!tail,
      hasCaps: !!caps,
      hasComment: !!comment
    });
    return {
      tail: tail || null,
      parallel: caps || null,
      comment: comment || null
    };
  }, "peg$f333");
  var peg$f334 = /* @__PURE__ */ __name(function(tail, comment) {
    helpers_default.debug("SecuredDirectiveEnding matched", {
      hasTail: !!tail,
      hasComment: !!comment
    });
    return {
      tail: tail || null,
      comment: comment || null
    };
  }, "peg$f334");
  var peg$f335 = /* @__PURE__ */ __name(function(comment) {
    helpers_default.debug("CommentedDirectiveEnding matched", {
      hasComment: !!comment
    });
    return {
      comment: comment || null
    };
  }, "peg$f335");
  var peg$f336 = /* @__PURE__ */ __name(function(cap, wait) {
    const delayMs = helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3;
    return {
      parallel: Number(cap),
      delayMs
    };
  }, "peg$f336");
  var peg$f337 = /* @__PURE__ */ __name(function(capOnly) {
    return {
      parallel: Number(capOnly)
    };
  }, "peg$f337");
  var peg$f338 = /* @__PURE__ */ __name(function(content, ending) {
    helpers_default.debug("EffectShowAction matched", {
      content,
      ending
    });
    return helpers_default.createForActionNode("show", content, location(), ending ? ending.tail : null, ending ? ending.comment : null);
  }, "peg$f338");
  var peg$f339 = /* @__PURE__ */ __name(function(source) {
    const stdoutTarget = {
      type: "stream",
      stream: "stderr",
      raw: "stderr"
    };
    const values = {
      target: stdoutTarget
    };
    const raw = {
      target: "stderr"
    };
    let subtype = "outputStream";
    const meta = {
      hasSource: false,
      targetType: "stream",
      isLogSugar: true
    };
    if (source) {
      if (source && typeof source === "object" && source.wrapperType) {
        values.source = source.content;
        raw.source = source.raw || text();
        meta.sourceType = "literal";
        meta.wrapperType = source.wrapperType;
      } else if (source && source.type === "VariableReference") {
        values.source = {
          identifier: [
            source
          ],
          args: []
        };
        raw.source = "@" + source.identifier;
        meta.sourceType = "variable";
      } else if (source && source.type === "ExecInvocation") {
        values.source = {
          identifier: source.commandRef.identifier,
          args: source.commandRef.args || []
        };
        raw.source = source.commandRef.name;
        meta.sourceType = "execInvocation";
      } else {
        values.source = [
          helpers_default.createNode(node_type_default.Text, {
            content: String(source),
            location: location()
          })
        ];
        raw.source = String(source);
        meta.sourceType = "literal";
      }
      meta.hasSource = true;
    }
    return helpers_default.createNode(node_type_default.Directive, {
      kind: "output",
      subtype,
      values,
      raw,
      meta,
      location: location()
    });
  }, "peg$f339");
  var peg$f340 = /* @__PURE__ */ __name(function(source, target, f) {
    return f;
  }, "peg$f340");
  var peg$f341 = /* @__PURE__ */ __name(function(source, target, format) {
    helpers_default.debug("EffectOutputAction matched", {
      source,
      target,
      format
    });
    const values = {
      target
    };
    const raw = {
      target: target.raw || String(target)
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: target.type || "file",
      enhanced: true
    };
    if (source) {
      meta.hasSource = true;
      if (source && typeof source === "object" && source.wrapperType) {
        values.source = source.content;
        raw.source = source.raw || text();
        meta.sourceType = "literal";
        meta.wrapperType = source.wrapperType;
        subtype = "outputText";
      } else if (source && source.type === "VariableReference") {
        values.source = {
          identifier: [
            source
          ],
          args: []
        };
        raw.source = "@" + source.identifier;
        meta.sourceType = "variable";
        subtype = "outputVariable";
      } else if (source && source.type === "ExecInvocation") {
        values.source = {
          identifier: source.commandRef.identifier,
          args: source.commandRef.args || []
        };
        raw.source = source.commandRef.name;
        meta.sourceType = "execInvocation";
        subtype = "outputInvocation";
      } else {
        values.source = [
          helpers_default.createNode(node_type_default.Text, {
            content: String(source),
            location: location()
          })
        ];
        raw.source = String(source);
        meta.sourceType = "literal";
        subtype = "outputText";
      }
    }
    if (format) {
      meta.format = format;
    }
    return helpers_default.createNode(node_type_default.Directive, {
      kind: "output",
      subtype,
      values,
      raw,
      meta,
      location: location()
    });
  }, "peg$f341");
  var peg$f342 = /* @__PURE__ */ __name(function(source, target, f) {
    return f;
  }, "peg$f342");
  var peg$f343 = /* @__PURE__ */ __name(function(source, target, format, ending) {
    let sourceValues, sourceRaw, sourceType;
    if (source && typeof source === "object" && source.wrapperType) {
      sourceValues = source.content;
      sourceRaw = source.raw || text();
      sourceType = "literal";
    } else if (source && source.type === "VariableReference") {
      sourceValues = {
        identifier: [
          source
        ],
        args: []
      };
      sourceRaw = "@" + source.identifier;
      sourceType = "variable";
    } else if (source && source.type === "ExecInvocation") {
      sourceValues = {
        identifier: source.commandRef.identifier,
        args: source.commandRef.args || []
      };
      sourceRaw = source.commandRef.name;
      sourceType = "execInvocation";
    } else {
      sourceValues = [
        helpers_default.createNode(node_type_default.Text, {
          content: String(source),
          location: location()
        })
      ];
      sourceRaw = String(source);
      sourceType = "literal";
    }
    const values = {
      source: sourceValues,
      target
    };
    const raw = {
      source: sourceRaw,
      target: target.raw
    };
    const meta = {
      sourceType,
      targetType: "file",
      hasSource: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("append", "appendFile", values, raw, meta, location());
  }, "peg$f343");
  var peg$f344 = /* @__PURE__ */ __name(function(leading) {
    const pipeline = leading.withClause.pipeline || [];
    const pipelineSummary = pipeline.map((stage) => {
      if (Array.isArray(stage)) {
        return `[${stage.map((cmd) => `@${cmd.rawIdentifier}`).join(", ")}]`;
      }
      return `@${stage.rawIdentifier}`;
    }).join(" | ");
    return {
      type: "exePipelineLeading",
      subtype: "exeCommand",
      source: "pipeline",
      values: {
        withClause: leading.withClause
      },
      raw: {
        pipeline: pipelineSummary
      },
      meta: {
        hasPipeline: true,
        isPipelineOnly: true,
        pipelineSource: "leadingParallel"
      }
    };
  }, "peg$f344");
  var peg$f345 = /* @__PURE__ */ __name(function(invocation) {
    helpers_default.debug("ExeUnifiedReference matched", {
      invocation
    });
    if (invocation.type === "ExecInvocation") {
      return {
        type: "exeExecInvocation",
        values: {
          commandRef: invocation.commandRef,
          args: invocation.commandRef.args || [],
          ...invocation.withClause ? {
            withClause: invocation.withClause
          } : {}
        },
        raw: {
          commandRef: invocation.commandRef.name,
          args: (invocation.commandRef.args || []).map((arg) => arg.type === "Text" ? arg.content : arg.type === "VariableReference" ? "@" + arg.identifier : ""),
          ...invocation.withClause?.pipeline ? {
            pipeline: invocation.withClause.pipeline.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(" | ")
          } : {}
        },
        meta: {
          isExecInvocation: true,
          parameterCount: (invocation.commandRef.args || []).length,
          hasPipeline: !!invocation.withClause?.pipeline
        },
        subtype: "exeCommand",
        source: "invocation"
      };
    }
    if (invocation.type === "VariableReferenceWithTail") {
      const variable = invocation.variable;
      const withClause = invocation.withClause;
      return {
        type: "exeCommandRef",
        values: {
          commandRef: [
            variable
          ],
          ...withClause ? {
            withClause
          } : {}
        },
        raw: {
          commandRef: variable.identifier,
          ...withClause?.pipeline ? {
            pipeline: withClause.pipeline.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(" | ")
          } : {}
        },
        meta: {
          isCommandRef: true,
          hasPipeline: !!withClause?.pipeline
        },
        subtype: "exeCommand",
        source: "reference"
      };
    }
    return {
      type: "exeCommandRef",
      values: {
        commandRef: [
          invocation
        ]
      },
      raw: {
        commandRef: invocation.identifier
      },
      meta: {
        isCommandRef: true
      },
      subtype: "exeCommand",
      source: "reference"
    };
  }, "peg$f345");
  var peg$f346 = /* @__PURE__ */ __name(function(content, withClause) {
    if (!withClause || !("stdin" in withClause)) {
      return null;
    }
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        ...content.values,
        withClause
      },
      raw: {
        ...content.raw,
        withClause
      },
      meta: {
        ...content.meta,
        hasStdin: true
      }
    };
  }, "peg$f346");
  var peg$f347 = /* @__PURE__ */ __name(function(stdinExpr, content, tail) {
    const withClause = {
      stdin: stdinExpr
    };
    if (tail) {
      Object.assign(withClause, tail);
    }
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        ...content.values,
        withClause
      },
      raw: {
        ...content.raw,
        stdinExpr: stdinExpr.type === "VariableReference" ? "@" + stdinExpr.identifier : "expression",
        ...tail ? {
          tailModifiers: tail
        } : {}
      },
      meta: {
        ...content.meta,
        hasStdin: true,
        isPipeSugar: true,
        hasTailModifiers: !!tail
      }
    };
  }, "peg$f347");
  var peg$f348 = /* @__PURE__ */ __name(function(content, tail) {
    const withClause = {
      stream: true
    };
    if (tail) {
      Object.assign(withClause, tail);
    }
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        ...content.values,
        withClause
      },
      raw: {
        ...content.raw,
        ...tail ? {
          tailModifiers: tail
        } : {},
        stream: true
      },
      meta: {
        ...content.meta,
        hasTailModifiers: !!tail,
        isStream: true
      }
    };
  }, "peg$f348");
  var peg$f349 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        ...content.values
      },
      raw: {
        ...content.raw
      },
      meta: content.meta
    };
  }, "peg$f349");
  var peg$f350 = /* @__PURE__ */ __name(function(codeCore) {
    return {
      subtype: "exeCode",
      source: "code",
      values: {
        ...codeCore.values
      },
      raw: {
        ...codeCore.raw
      },
      meta: codeCore.meta
    };
  }, "peg$f350");
  var peg$f351 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "exeCommand",
      source: "command",
      values: {
        ...content.values
      },
      raw: {
        ...content.raw
      },
      meta: content.meta
    };
  }, "peg$f351");
  var peg$f352 = /* @__PURE__ */ __name(function(dataObj) {
    return {
      subtype: "exeData",
      source: "data",
      values: {
        data: dataObj
      },
      raw: {
        data: text()
      },
      meta: {
        inferredType: "object"
      }
    };
  }, "peg$f352");
  var peg$f353 = /* @__PURE__ */ __name(function(template) {
    return {
      subtype: "exeTemplate",
      source: "template",
      values: {
        template: template.values.content
      },
      raw: {
        template: template.raw.content
      },
      meta: template.meta
    };
  }, "peg$f353");
  var peg$f354 = /* @__PURE__ */ __name(function(path) {
    return {
      subtype: "exeTemplateFile",
      source: "templateFile",
      values: {
        path: path.values.path
      },
      raw: {
        path: path.raw.path
      },
      meta: {
        pathMeta: path.meta
      }
    };
  }, "peg$f354");
  var peg$f355 = /* @__PURE__ */ __name(function(configRef, content) {
    helpers_default.debug("ExeProsePattern matched inline", {
      configRef,
      content
    });
    return {
      subtype: "exeProse",
      source: "prose",
      values: {
        configRef: [
          configRef
        ],
        content: content.parts,
        contentType: "inline"
      },
      raw: {
        configRef: "@" + configRef.identifier + (configRef.fields ? "." + configRef.fields.map((f) => f.value || f.name).join(".") : ""),
        content: content.raw,
        contentType: "inline"
      },
      meta: {
        hasConfig: true,
        isInline: true,
        hasVariables: content.hasVariables || false
      }
    };
  }, "peg$f355");
  var peg$f356 = /* @__PURE__ */ __name(function(configRef, path) {
    helpers_default.debug("ExeProsePattern matched template file", {
      configRef,
      path
    });
    return {
      subtype: "exeProseTemplate",
      source: "proseTemplate",
      values: {
        configRef: [
          configRef
        ],
        path: path.values.path,
        contentType: "template"
      },
      raw: {
        configRef: "@" + configRef.identifier + (configRef.fields ? "." + configRef.fields.map((f) => f.value || f.name).join(".") : ""),
        path: path.raw.path,
        contentType: "template"
      },
      meta: {
        hasConfig: true,
        isTemplate: true,
        pathMeta: path.meta
      }
    };
  }, "peg$f356");
  var peg$f357 = /* @__PURE__ */ __name(function(configRef, path) {
    helpers_default.debug("ExeProsePattern matched file reference", {
      configRef,
      path
    });
    return {
      subtype: "exeProseFile",
      source: "proseFile",
      values: {
        configRef: [
          configRef
        ],
        path: path.values.path,
        contentType: "file"
      },
      raw: {
        configRef: "@" + configRef.identifier + (configRef.fields ? "." + configRef.fields.map((f) => f.value || f.name).join(".") : ""),
        path: path.raw.path,
        contentType: "file"
      },
      meta: {
        hasConfig: true,
        isFile: true,
        pathMeta: path.meta
      }
    };
  }, "peg$f357");
  var peg$f358 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Prose blocks require a config reference. Use: prose:@config { ... } or prose:@config "file.prose"', ":", location());
  }, "peg$f358");
  var peg$f359 = /* @__PURE__ */ __name(function(parts) {
    const raw = parts.map((p) => {
      if (p.type === "Text") return p.content || "";
      if (p.type === "VariableReference") return "@" + p.identifier + (p.fields ? "." + p.fields.map((f) => f.value || f.name).join(".") : "");
      if (p.type === "ExecInvocation") return "@" + (p.commandRef?.identifier || "fn") + "(...)";
      return "";
    }).join("");
    const hasVariables = parts.some((p) => p.type === "VariableReference" || p.type === "ExecInvocation");
    return {
      parts,
      raw: raw.trim(),
      hasVariables
    };
  }, "peg$f359");
  var peg$f360 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f360");
  var peg$f361 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f361");
  var peg$f362 = /* @__PURE__ */ __name(function(char) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@" + char,
      location: location()
    });
  }, "peg$f362");
  var peg$f363 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f363");
  var peg$f364 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f364");
  var peg$f365 = /* @__PURE__ */ __name(function(pathVar, section, rename) {
    return {
      type: "exeSection",
      values: {
        path: [
          pathVar
        ],
        section: Array.isArray(section) ? section : [
          section
        ],
        ...rename ? {
          rename
        } : {}
      },
      raw: {
        path: "@" + pathVar.identifier + (pathVar.fields ? "." + pathVar.fields.map((f) => f.name || f.index).join(".") : ""),
        section: section.type === "VariableReference" ? "@" + section.identifier : section.content || section,
        ...rename ? {
          rename: rename[0].type === "VariableReference" ? "@" + rename[0].identifier : rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename
      },
      subtype: "exeSection",
      source: "section"
    };
  }, "peg$f365");
  var peg$f366 = /* @__PURE__ */ __name(function(resolver, payload) {
    return {
      type: "exeResolver",
      values: {
        resolver: [
          helpers_default.createVariableReferenceNode("varIdentifier", {
            identifier: resolver
          }, location())
        ],
        ...payload ? {
          payload
        } : {}
      },
      raw: {
        resolver,
        ...payload ? {
          payload: payload[0].identifier || payload[0].content
        } : {}
      },
      meta: {
        hasPayload: !!payload
      },
      subtype: "exeResolver",
      source: "resolver"
    };
  }, "peg$f366");
  var peg$f367 = /* @__PURE__ */ __name(function(foreach) {
    return {
      subtype: "exeForeach",
      source: "foreach",
      values: {
        content: [
          foreach
        ]
      },
      raw: {
        foreach: foreach.rawText || "foreach ..."
      },
      meta: {
        isForeach: true
      }
    };
  }, "peg$f367");
  var peg$f368 = /* @__PURE__ */ __name(function(envVars) {
    return {
      type: "exeEnvironment",
      values: {
        environment: envVars
      },
      raw: {
        environment: envVars.map((v) => v.identifier)
      },
      meta: {
        environmentCount: envVars.length
      },
      subtype: "environment",
      source: "environment"
    };
  }, "peg$f368");
  var peg$f369 = /* @__PURE__ */ __name(function(body) {
    const statements = body.statements || [];
    const normalize = /* @__PURE__ */ __name((stmt) => Array.isArray(stmt) ? stmt.flat() : [
      stmt
    ], "normalize");
    const normalizedStatements = statements.flatMap(normalize);
    const hasReturn = !!body.returnStmt;
    return helpers_default.createNode("ExeBlock", {
      values: {
        statements: normalizedStatements,
        ...body.returnStmt ? {
          return: body.returnStmt
        } : {}
      },
      raw: {
        statements: helpers_default.reconstructRawString(normalizedStatements),
        hasReturn
      },
      meta: {
        statementCount: normalizedStatements.length,
        hasReturn
      },
      location: location()
    });
  }, "peg$f369");
  var peg$f370 = /* @__PURE__ */ __name(function() {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "ExeBlockBody",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f370");
  var peg$f371 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f371");
  var peg$f372 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Unterminated block. Expected ']' to close the block.`, "]", location());
  }, "peg$f372");
  var peg$f373 = /* @__PURE__ */ __name(function(statements, ret) {
    return ret;
  }, "peg$f373");
  var peg$f374 = /* @__PURE__ */ __name(function(statements, ret) {
    return ret;
  }, "peg$f374");
  var peg$f375 = /* @__PURE__ */ __name(function(statements, firstReturn) {
    return true;
  }, "peg$f375");
  var peg$f376 = /* @__PURE__ */ __name(function(statements, firstReturn, extraReturn) {
    return true;
  }, "peg$f376");
  var peg$f377 = /* @__PURE__ */ __name(function(statements, firstReturn, extraReturn, trailing) {
    if (extraReturn) {
      helpers_default.mlldError("Multiple return statements in exe block. Only one return allowed as last statement.", "single return", location());
    }
    if (trailing) {
      helpers_default.mlldError("Return must be the last statement in a block.", "end of block", location());
    }
    return {
      statements,
      returnStmt: firstReturn
    };
  }, "peg$f377");
  var peg$f378 = /* @__PURE__ */ __name(function(statements) {
    return {
      statements,
      returnStmt: null
    };
  }, "peg$f378");
  var peg$f379 = /* @__PURE__ */ __name(function(leadingComments, ret) {
    return {
      statements: [],
      returnStmt: ret
    };
  }, "peg$f379");
  var peg$f380 = /* @__PURE__ */ __name(function(leadingComments, first, stmt) {
    return stmt;
  }, "peg$f380");
  var peg$f381 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const normalize = /* @__PURE__ */ __name((stmt) => Array.isArray(stmt) ? stmt.flat() : [
      stmt
    ], "normalize");
    const stmts = [
      ...normalize(first),
      ...rest.flatMap(normalize)
    ];
    if (leadingComments.length > 0 && stmts.length > 0) {
      const firstStmt = stmts[0];
      if (firstStmt && typeof firstStmt === "object") {
        const existingMeta = firstStmt.meta || {};
        stmts[0] = {
          ...firstStmt,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return stmts;
  }, "peg$f381");
  var peg$f382 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f382");
  var peg$f383 = /* @__PURE__ */ __name(function(value, noise) {
    const normalized = typeof value === "undefined" ? [] : Array.isArray(value) ? value.flat() : [
      value
    ];
    return helpers_default.createNode("ExeReturn", {
      values: normalized,
      raw: text(),
      meta: {
        hasValue: normalized.length > 0
      },
      location: location()
    });
  }, "peg$f383");
  var peg$f384 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f384");
  var peg$f385 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f385");
  var peg$f386 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f386");
  var peg$f387 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f387");
  var peg$f388 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f388");
  var peg$f389 = /* @__PURE__ */ __name(function(boundValue, modifier, entries, tail) {
    const boundOffset = boundValue && typeof boundValue === "object" && boundValue.location && boundValue.location.start ? boundValue.location.start.offset : location().start.offset;
    const boundIdentifier = `__when_bound_${boundOffset}`;
    const conditions = entries.map((entry) => {
      if (entry && typeof entry === "object" && "pattern" in entry) {
        const conditionExpr = helpers_default.buildWhenBoundPatternExpression(boundIdentifier, entry.pattern);
        return {
          condition: [
            conditionExpr
          ],
          action: entry.action
        };
      }
      return entry;
    });
    helpers_default.debug("WhenExpression matched", {
      conditionCount: conditions.length,
      hasTailModifiers: !!tail,
      modifier,
      hasBoundValue: true
    });
    return helpers_default.createWhenExpression(conditions, tail, location(), modifier, {
      boundIdentifier,
      boundValue
    });
  }, "peg$f389");
  var peg$f390 = /* @__PURE__ */ __name(function(boundValue, modifier) {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "WhenBoundExpressionConditionList",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f390");
  var peg$f391 = /* @__PURE__ */ __name(function(modifier, conditions, tail) {
    helpers_default.debug("WhenExpression matched", {
      conditionCount: conditions.length,
      hasTailModifiers: !!tail,
      modifier
    });
    return helpers_default.createWhenExpression(conditions, tail, location(), modifier);
  }, "peg$f391");
  var peg$f392 = /* @__PURE__ */ __name(function(modifier) {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "WhenExpressionConditionList",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f392");
  var peg$f393 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing condition list in when expression. Expected: when @value [pattern => value, ...]`, "[", location());
  }, "peg$f393");
  var peg$f394 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing condition list in when expression. Expected: when [condition => value, ...]`, "[", location());
  }, "peg$f394");
  var peg$f395 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f395");
  var peg$f396 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Unclosed array in when expression. Expected ']' to close the condition list.`, "]", location());
  }, "peg$f396");
  var peg$f397 = /* @__PURE__ */ __name(function(leadingComments, first, entry) {
    return entry;
  }, "peg$f397");
  var peg$f398 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const entries = [
      first,
      ...rest
    ];
    if (leadingComments.length > 0 && entries.length > 0) {
      const firstEntry = entries[0];
      if (firstEntry && typeof firstEntry === "object") {
        const existingMeta = firstEntry.meta || {};
        entries[0] = {
          ...firstEntry,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return entries;
  }, "peg$f398");
  var peg$f399 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f399");
  var peg$f400 = /* @__PURE__ */ __name(function(pattern, action) {
    const act = Array.isArray(action) ? action : [
      action
    ];
    return {
      pattern,
      action: act
    };
  }, "peg$f400");
  var peg$f401 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "||",
      right
    };
  }, "peg$f401");
  var peg$f402 = /* @__PURE__ */ __name(function(first, rest) {
    if (!rest || rest.length === 0) return first;
    return {
      kind: "logical",
      first,
      rest,
      location: location()
    };
  }, "peg$f402");
  var peg$f403 = /* @__PURE__ */ __name(function(first, right) {
    return {
      op: "&&",
      right
    };
  }, "peg$f403");
  var peg$f404 = /* @__PURE__ */ __name(function(first, rest) {
    if (!rest || rest.length === 0) return first;
    return {
      kind: "logical",
      first,
      rest,
      location: location()
    };
  }, "peg$f404");
  var peg$f405 = /* @__PURE__ */ __name(function(inner) {
    return inner;
  }, "peg$f405");
  var peg$f406 = /* @__PURE__ */ __name(function(wc) {
    return {
      kind: "wildcard",
      node: wc,
      location: location()
    };
  }, "peg$f406");
  var peg$f407 = /* @__PURE__ */ __name(function(op, right) {
    return {
      kind: "compare",
      op,
      right,
      location: location()
    };
  }, "peg$f407");
  var peg$f408 = /* @__PURE__ */ __name(function(value) {
    return {
      kind: "equals",
      value,
      location: location()
    };
  }, "peg$f408");
  var peg$f409 = /* @__PURE__ */ __name(function(mod) {
    return mod;
  }, "peg$f409");
  var peg$f410 = /* @__PURE__ */ __name(function(leadingComments, first, entry) {
    return entry;
  }, "peg$f410");
  var peg$f411 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const entries = [
      first,
      ...rest
    ];
    if (leadingComments.length > 0 && entries.length > 0) {
      const firstEntry = entries[0];
      if (firstEntry && typeof firstEntry === "object") {
        const existingMeta = firstEntry.meta || {};
        entries[0] = {
          ...firstEntry,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return entries;
  }, "peg$f411");
  var peg$f412 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f412");
  var peg$f413 = /* @__PURE__ */ __name(function(condition, action) {
    const act = Array.isArray(action) ? action : [
      action
    ];
    return {
      condition,
      action: act
    };
  }, "peg$f413");
  var peg$f414 = /* @__PURE__ */ __name(function(block) {
    return block;
  }, "peg$f414");
  var peg$f415 = /* @__PURE__ */ __name(function(condition, action) {
    const act = Array.isArray(action) ? action : [
      action
    ];
    const conditions = [
      {
        condition: [
          condition
        ],
        action: act
      }
    ];
    return helpers_default.createWhenExpression(conditions, null, location(), null);
  }, "peg$f415");
  var peg$f416 = /* @__PURE__ */ __name(function(opts, pattern, whenExpr, batchPipe) {
    const hasNoneCondition = Array.isArray(whenExpr.conditions) && whenExpr.conditions.some((entry) => {
      const condition = entry && entry.condition;
      return Array.isArray(condition) && condition.length === 1 && condition[0]?.type === node_type_default.Literal && condition[0]?.valueType === "none";
    });
    let normalizedWhen = whenExpr;
    if (!hasNoneCondition) {
      const loc = whenExpr.location || location();
      const noneLiteral = helpers_default.createNode(node_type_default.Literal, {
        value: "none",
        valueType: "none",
        location: loc
      });
      const skipLiteral = helpers_default.createNode(node_type_default.Literal, {
        value: "skip",
        valueType: "skip",
        location: loc
      });
      const conditions = [
        ...whenExpr.conditions,
        {
          condition: [
            noneLiteral
          ],
          action: [
            skipLiteral
          ]
        }
      ];
      normalizedWhen = helpers_default.createWhenExpression(conditions, whenExpr.withClause || null, loc, whenExpr.meta?.modifier || null);
    }
    helpers_default.debug("ForExpressionExe when-filter matched", {
      pattern,
      hasNoneCondition
    });
    return helpers_default.createForExpression(pattern.variable, pattern.source, [
      normalizedWhen
    ], location(), opts || null, batchPipe || null);
  }, "peg$f416");
  var peg$f417 = /* @__PURE__ */ __name(function(opts, pattern, action, batchPipe) {
    helpers_default.debug("ForExpressionExe matched", {
      pattern,
      action,
      hasBatch: !!batchPipe
    });
    return helpers_default.createForExpression(pattern.variable, pattern.source, action, location(), opts || null, batchPipe || null);
  }, "peg$f417");
  var peg$f418 = /* @__PURE__ */ __name(function(id, source) {
    helpers_default.mlldError("Missing '=>' in for expression. Expected: for @var in @collection => action", "=>", location());
  }, "peg$f418");
  var peg$f419 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing 'in' in for expression. Expected: for @var in @collection => action", "in", location());
  }, "peg$f419");
  var peg$f420 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid for expression syntax. Expected: for @var in @collection => action", "@", location());
  }, "peg$f420");
  var peg$f421 = /* @__PURE__ */ __name(function(action) {
    return action;
  }, "peg$f421");
  var peg$f422 = /* @__PURE__ */ __name(function(block) {
    return block.statements;
  }, "peg$f422");
  var peg$f423 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f423");
  var peg$f424 = /* @__PURE__ */ __name(function(fieldStart, field) {
    return {
      type: "field",
      value: field,
      location: {
        start: {
          offset: fieldStart,
          line: location().start.line,
          column: location().start.column + 1
        },
        end: location().end
      }
    };
  }, "peg$f424");
  var peg$f425 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f425");
  var peg$f426 = /* @__PURE__ */ __name(function(fieldStart, index) {
    return {
      type: "numericField",
      value: index,
      location: {
        start: {
          offset: fieldStart,
          line: location().start.line,
          column: location().start.column + 1
        },
        end: location().end
      }
    };
  }, "peg$f426");
  var peg$f427 = /* @__PURE__ */ __name(function(start, end) {
    return {
      type: "arraySlice",
      start: start !== void 0 ? start : null,
      end: end !== void 0 ? end : null,
      location: location()
    };
  }, "peg$f427");
  var peg$f428 = /* @__PURE__ */ __name(function(sign, num) {
    return sign ? -num : num;
  }, "peg$f428");
  var peg$f429 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f429");
  var peg$f430 = /* @__PURE__ */ __name(function(condition) {
    return {
      type: "arrayFilter",
      condition,
      location: location()
    };
  }, "peg$f430");
  var peg$f431 = /* @__PURE__ */ __name(function(field, value) {
    return {
      field,
      operator: "~",
      value
    };
  }, "peg$f431");
  var peg$f432 = /* @__PURE__ */ __name(function(field, op, value) {
    return {
      field,
      operator: op,
      value
    };
  }, "peg$f432");
  var peg$f433 = /* @__PURE__ */ __name(function(field) {
    return {
      field
    };
  }, "peg$f433");
  var peg$f434 = /* @__PURE__ */ __name(function(first, id) {
    return id;
  }, "peg$f434");
  var peg$f435 = /* @__PURE__ */ __name(function(first, rest) {
    return rest.length > 0 ? [
      first,
      ...rest
    ] : first;
  }, "peg$f435");
  var peg$f436 = /* @__PURE__ */ __name(function() {
    return "==";
  }, "peg$f436");
  var peg$f437 = /* @__PURE__ */ __name(function() {
    return "==";
  }, "peg$f437");
  var peg$f438 = /* @__PURE__ */ __name(function() {
    return "!=";
  }, "peg$f438");
  var peg$f439 = /* @__PURE__ */ __name(function() {
    return "<=";
  }, "peg$f439");
  var peg$f440 = /* @__PURE__ */ __name(function() {
    return ">=";
  }, "peg$f440");
  var peg$f441 = /* @__PURE__ */ __name(function() {
    return "<";
  }, "peg$f441");
  var peg$f442 = /* @__PURE__ */ __name(function() {
    return ">";
  }, "peg$f442");
  var peg$f443 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "arrayIndex",
      value: index,
      location: location()
    };
  }, "peg$f443");
  var peg$f444 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "bracketAccess",
      value: index,
      location: location()
    };
  }, "peg$f444");
  var peg$f445 = /* @__PURE__ */ __name(function(index, fields) {
    return {
      type: "variableIndex",
      value: helpers_default.createVariableReferenceNode("varIdentifier", {
        identifier: index,
        ...fields.length > 0 ? {
          fields
        } : {}
      }, location()),
      location: location()
    };
  }, "peg$f445");
  var peg$f446 = /* @__PURE__ */ __name(function(index) {
    return {
      type: "stringIndex",
      value: index,
      location: location()
    };
  }, "peg$f446");
  var peg$f447 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f447");
  var peg$f448 = /* @__PURE__ */ __name(function(methodStart, method, args) {
    return {
      type: "methodCall",
      name: method,
      args: args || [],
      location: {
        start: {
          offset: methodStart,
          line: location().start.line,
          column: location().start.column + 1
        },
        end: location().end
      }
    };
  }, "peg$f448");
  var peg$f449 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    const closingIndex = rest.indexOf(">");
    if (closingIndex === -1) return false;
    const content = rest.substring(0, closingIndex).trim();
    if (content.startsWith("!")) return false;
    return /[.*@]/.test(content);
  }, "peg$f449");
  var peg$f450 = /* @__PURE__ */ __name(function(content, fields, pipes) {
    let contentStr;
    if (content.raw) {
      contentStr = content.raw;
    } else if (content.type === node_type_default.Text) {
      contentStr = content.content;
    } else if (Array.isArray(content)) {
      contentStr = helpers_default.reconstructRawString(content);
    } else {
      contentStr = String(content);
    }
    if (!helpers_default.isFileReferenceContent(contentStr)) {
      return helpers_default.createNode(node_type_default.Text, {
        content: `<${contentStr}>`,
        location: location()
      });
    }
    return helpers_default.createFileReferenceNode(content, fields, pipes, location());
  }, "peg$f450");
  var peg$f451 = /* @__PURE__ */ __name(function(fields, pipes) {
    return helpers_default.createFileReferenceNode({
      type: "placeholder",
      raw: ""
    }, fields, pipes, location());
  }, "peg$f451");
  var peg$f452 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f452");
  var peg$f453 = /* @__PURE__ */ __name(function(pipeStart, name, part) {
    return part;
  }, "peg$f453");
  var peg$f454 = /* @__PURE__ */ __name(function(pipeStart, name, fieldParts) {
    const loc = location();
    const startOffset = pipeStart;
    const fields = fieldParts || [];
    const fullName = fields.length > 0 ? `${name}.${fields.join(".")}` : name;
    return {
      type: "CondensedPipe",
      transform: fullName,
      hasAt: true,
      args: [],
      fields,
      location: {
        source: loc.source,
        start: {
          offset: startOffset,
          line: loc.start.line,
          column: loc.start.column - (loc.start.offset - startOffset)
        },
        end: loc.end
      }
    };
  }, "peg$f454");
  var peg$f455 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f455");
  var peg$f456 = /* @__PURE__ */ __name(function(pipeStart, name, part) {
    return part;
  }, "peg$f456");
  var peg$f457 = /* @__PURE__ */ __name(function(pipeStart, name, fieldParts) {
    const loc = location();
    const startOffset = pipeStart;
    const fields = fieldParts || [];
    const fullName = fields.length > 0 ? `${name}.${fields.join(".")}` : name;
    return {
      type: "CondensedPipe",
      transform: fullName,
      hasAt: true,
      args: [],
      fields,
      location: {
        source: loc.source,
        start: {
          offset: startOffset,
          line: loc.start.line,
          column: loc.start.column - (loc.start.offset - startOffset)
        },
        end: loc.end
      }
    };
  }, "peg$f457");
  var peg$f458 = /* @__PURE__ */ __name(function(pipes) {
    return pipes;
  }, "peg$f458");
  var peg$f459 = /* @__PURE__ */ __name(function(fields) {
    return fields;
  }, "peg$f459");
  var peg$f460 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    const closingIndex = rest.indexOf(">");
    if (closingIndex === -1) return false;
    const content = rest.substring(0, closingIndex);
    if (closingIndex > 100) return false;
    if (/[\n\r]/.test(content)) return false;
    if (/[.*@]/.test(content)) return false;
    return true;
  }, "peg$f460");
  var peg$f461 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f461");
  var peg$f462 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: "<" + chars.join("") + ">",
      location: location()
    });
  }, "peg$f462");
  var peg$f463 = /* @__PURE__ */ __name(function(execInvocation, batchPipe, withClause) {
    helpers_default.debug("ForeachCommandExpression matched", {
      execInvocation,
      hasBatch: !!batchPipe,
      withClause
    });
    let arrays = [];
    if (execInvocation.type === "ExecInvocation" && execInvocation.commandRef.args) {
      arrays = execInvocation.commandRef.args;
    }
    const withOptions = {
      ...withClause || {}
    };
    if (batchPipe) {
      withOptions.batchPipeline = batchPipe.pipeline;
      withOptions.isBatchPipeline = true;
    }
    return {
      type: "foreach-command",
      value: {
        type: "foreach",
        execInvocation,
        arrays,
        ...Object.keys(withOptions).length > 0 ? {
          with: withOptions
        } : {},
        ...batchPipe ? {
          batchPipeline: batchPipe
        } : {}
      },
      rawText: text(),
      ...batchPipe ? {
        batchPipeline: batchPipe
      } : {}
    };
  }, "peg$f463");
  var peg$f464 = /* @__PURE__ */ __name(function(firstParallel, rest, caps) {
    const pipeline = [
      [
        ...firstParallel
      ],
      ...rest
    ];
    helpers_default.debug("ForeachBatchPipeline matched (parallel)", {
      stageCount: pipeline.length,
      hasCaps: !!caps
    });
    return {
      pipeline,
      isBatchPipeline: true,
      ...caps ? {
        parallel: caps.parallel,
        delayMs: caps.delayMs
      } : {}
    };
  }, "peg$f464");
  var peg$f465 = /* @__PURE__ */ __name(function(firstStage, rest) {
    const pipeline = [
      firstStage,
      ...rest
    ];
    helpers_default.debug("ForeachBatchPipeline matched", {
      stageCount: pipeline.length
    });
    return {
      pipeline,
      isBatchPipeline: true
    };
  }, "peg$f465");
  var peg$f466 = /* @__PURE__ */ __name(function(first, arr) {
    return arr;
  }, "peg$f466");
  var peg$f467 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first
    ].concat(rest || []);
  }, "peg$f467");
  var peg$f468 = /* @__PURE__ */ __name(function(options2) {
    return options2;
  }, "peg$f468");
  var peg$f469 = /* @__PURE__ */ __name(function(first, opt) {
    return opt;
  }, "peg$f469");
  var peg$f470 = /* @__PURE__ */ __name(function(first, rest) {
    const options2 = {};
    [
      first,
      ...rest
    ].forEach((option) => {
      options2[option.key] = option.value;
    });
    return options2;
  }, "peg$f470");
  var peg$f471 = /* @__PURE__ */ __name(function(value) {
    return {
      key: "separator",
      value
    };
  }, "peg$f471");
  var peg$f472 = /* @__PURE__ */ __name(function(value) {
    return {
      key: "template",
      value
    };
  }, "peg$f472");
  var peg$f473 = /* @__PURE__ */ __name(function(variable, source) {
    return {
      variable,
      source: Array.isArray(source) ? source : [
        source
      ]
    };
  }, "peg$f473");
  var peg$f474 = /* @__PURE__ */ __name(function(cap, wait) {
    const rateMs = helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3;
    return {
      parallel: true,
      cap: Number(cap),
      rateMs
    };
  }, "peg$f474");
  var peg$f475 = /* @__PURE__ */ __name(function(cap) {
    return {
      parallel: true,
      cap: Number(cap)
    };
  }, "peg$f475");
  var peg$f476 = /* @__PURE__ */ __name(function() {
    return {
      parallel: true
    };
  }, "peg$f476");
  var peg$f477 = /* @__PURE__ */ __name(function() {
    return {
      parallel: true
    };
  }, "peg$f477");
  var peg$f478 = /* @__PURE__ */ __name(function(cap, wait) {
    helpers_default.warn("Use parallel(cap, pacing) instead of (cap, pacing) parallel", "parallel(cap, pacing)", location(), "for-parallel-deprecated");
    const rateMs = helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3;
    return {
      parallel: true,
      cap: Number(cap),
      rateMs
    };
  }, "peg$f478");
  var peg$f479 = /* @__PURE__ */ __name(function(cap) {
    helpers_default.warn("Use parallel(cap) instead of cap parallel", "parallel(cap)", location(), "for-parallel-deprecated");
    return {
      parallel: true,
      cap: Number(cap)
    };
  }, "peg$f479");
  var peg$f480 = /* @__PURE__ */ __name(function(effect) {
    return Array.isArray(effect) ? effect : [
      effect
    ];
  }, "peg$f480");
  var peg$f481 = /* @__PURE__ */ __name(function(directive, content, ending) {
    return helpers_default.createForActionNode(directive, content, location(), ending ? ending.tail : null, ending ? ending.comment : null);
  }, "peg$f481");
  var peg$f482 = /* @__PURE__ */ __name(function(whenAction) {
    return Array.isArray(whenAction) ? whenAction : [
      whenAction
    ];
  }, "peg$f482");
  var peg$f483 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f483");
  var peg$f484 = /* @__PURE__ */ __name(function(opts, pattern, actionVariant) {
    helpers_default.debug("Nested for directive matched", {
      pattern,
      action: actionVariant
    });
    const meta = {
      hasVariables: true,
      actionType: actionVariant.actionType,
      isNested: true
    };
    if (actionVariant.blockMeta) {
      meta.block = actionVariant.blockMeta;
    }
    const normalizedAction = Array.isArray(actionVariant.action) ? actionVariant.action : [
      actionVariant.action
    ];
    const nestedFor = helpers_default.createStructuredDirective("for", "for", {
      variable: [
        pattern.variable
      ],
      source: pattern.source,
      action: normalizedAction,
      forOptions: opts || void 0
    }, {
      variable: helpers_default.reconstructRawString(pattern.variable),
      source: helpers_default.reconstructRawString(pattern.source),
      action: actionVariant.raw
    }, meta, location());
    return [
      nestedFor
    ];
  }, "peg$f484");
  var peg$f485 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Comma separators are not allowed in block statements. Use whitespace or semicolons between statements.", "whitespace", location());
  }, "peg$f485");
  var peg$f486 = /* @__PURE__ */ __name(function(leadingComments, first, stmt) {
    return stmt;
  }, "peg$f486");
  var peg$f487 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const normalize = /* @__PURE__ */ __name((stmt) => Array.isArray(stmt) ? stmt : [
      stmt
    ], "normalize");
    const stmts = [
      ...normalize(first),
      ...rest.flatMap(normalize)
    ];
    if (leadingComments.length > 0 && stmts.length > 0) {
      const firstStmt = stmts[0];
      if (firstStmt && typeof firstStmt === "object") {
        const existingMeta = firstStmt.meta || {};
        stmts[0] = {
          ...firstStmt,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return stmts;
  }, "peg$f487");
  var peg$f488 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f488");
  var peg$f489 = /* @__PURE__ */ __name(function(value, noise) {
    const normalized = Array.isArray(value) ? value.flat() : [
      value
    ];
    return normalized;
  }, "peg$f489");
  var peg$f490 = /* @__PURE__ */ __name(function(statements, ret) {
    return ret;
  }, "peg$f490");
  var peg$f491 = /* @__PURE__ */ __name(function(statements, ret) {
    return ret;
  }, "peg$f491");
  var peg$f492 = /* @__PURE__ */ __name(function(statements, firstReturn) {
    return true;
  }, "peg$f492");
  var peg$f493 = /* @__PURE__ */ __name(function(statements, firstReturn, extraReturn) {
    return true;
  }, "peg$f493");
  var peg$f494 = /* @__PURE__ */ __name(function(statements, firstReturn, extraReturn, trailing) {
    if (extraReturn) {
      helpers_default.mlldError("Multiple return statements in for block. Only one return allowed as last statement.", "single return", location());
    }
    if (trailing) {
      helpers_default.mlldError("Return must be the last statement in a block.", "end of block", location());
    }
    return {
      statements,
      returnStmt: firstReturn
    };
  }, "peg$f494");
  var peg$f495 = /* @__PURE__ */ __name(function(statements) {
    return {
      statements,
      returnStmt: null
    };
  }, "peg$f495");
  var peg$f496 = /* @__PURE__ */ __name(function(body) {
    const statements = body.statements || [];
    const returnStmt = body.returnStmt;
    const hasReturn = Array.isArray(returnStmt) ? returnStmt.length > 0 : !!returnStmt;
    const mergedStatements = hasReturn ? [
      ...statements,
      ...returnStmt
    ] : statements;
    return {
      type: "ForBlock",
      statements: mergedStatements,
      meta: {
        statementCount: statements.length,
        hasReturn
      }
    };
  }, "peg$f496");
  var peg$f497 = /* @__PURE__ */ __name(function() {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "ForBlockBody",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f497");
  var peg$f498 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f498");
  var peg$f499 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Unterminated block in for action. Expected ']' to close the block.`, "]", location());
  }, "peg$f499");
  var peg$f500 = /* @__PURE__ */ __name(function(action) {
    const normalized = Array.isArray(action) ? action : [
      action
    ];
    return {
      action: normalized,
      actionType: "single",
      raw: helpers_default.reconstructRawString(normalized)
    };
  }, "peg$f500");
  var peg$f501 = /* @__PURE__ */ __name(function(block) {
    const normalized = Array.isArray(block.statements) ? block.statements : [
      block.statements
    ];
    return {
      action: normalized,
      actionType: "block",
      raw: helpers_default.reconstructRawString(normalized),
      blockMeta: block.meta
    };
  }, "peg$f501");
  var peg$f502 = /* @__PURE__ */ __name(function(block) {
    const normalized = Array.isArray(block.statements) ? block.statements : [
      block.statements
    ];
    return {
      action: normalized,
      actionType: "block",
      raw: helpers_default.reconstructRawString(normalized),
      blockMeta: block.meta
    };
  }, "peg$f502");
  var peg$f503 = /* @__PURE__ */ __name(function(block) {
    return block.statements;
  }, "peg$f503");
  var peg$f504 = /* @__PURE__ */ __name(function(whenExpr) {
    return [
      whenExpr
    ];
  }, "peg$f504");
  var peg$f505 = /* @__PURE__ */ __name(function(action) {
    return Array.isArray(action) ? action : [
      action
    ];
  }, "peg$f505");
  var peg$f506 = /* @__PURE__ */ __name(function(id, value, ending) {
    let tail = ending.tail;
    const comment = ending.comment;
    const loc = location();
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      if (processedValue.length === 0) {
        processedValue = [
          helpers_default.createNode(node_type_default.Text, {
            content: "",
            location: loc
          })
        ];
      }
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
      if (!value.withClause && tail && tail.pipeline) {
        const wrapper = value.wrapperType;
        const isTemplateWrapper = wrapper === "backtick" || wrapper === "doubleColon" || wrapper === "tripleColon";
        if (isTemplateWrapper) {
          const filteredTail = {
            ...tail
          };
          delete filteredTail.pipeline;
          tail = filteredTail;
        }
      }
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
      metaInfo.isEmptyArray = value.items.length === 0;
    } else if (value && value.type === "load-content") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = value.options && value.options.section ? "section-content" : "file-content";
      metaInfo.sourceType = value.source.type;
    } else if (value && (value.type === "variableReference" || value.type === "VariableReference")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
    } else if (value && value.type === "LeadingParallelPipeline") {
      const placeholder = value.placeholder;
      processedValue = [
        placeholder
      ];
      metaInfo.inferredType = "pipeline";
      tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isDataValue = true;
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.language = value.language;
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isForeach = true;
    } else if (value && (value.type === "BinaryExpression" || value.type === "TernaryExpression" || value.type === "UnaryExpression")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "expression";
      metaInfo.expressionType = value.type;
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
      metaInfo.primitiveType = value === null ? "null" : typeof value;
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    if (comment) {
      metaInfo.comment = comment;
    }
    const nodeInit = {
      identifier: id,
      value: processedValue,
      location: loc
    };
    if (tail) {
      nodeInit.withClause = tail;
      metaInfo.withClause = tail;
    }
    if (Object.keys(metaInfo).length > 0) {
      nodeInit.meta = metaInfo;
    }
    return helpers_default.createNode("LetAssignment", nodeInit);
  }, "peg$f506");
  var peg$f507 = /* @__PURE__ */ __name(function(value, ending) {
    helpers_default.mlldError("ETOOCOMPLEX: Augmented assignment only supports simple variables. Use: let @variable += value", "@variable", location());
  }, "peg$f507");
  var peg$f508 = /* @__PURE__ */ __name(function(id, value, ending) {
    let tail = ending.tail;
    const comment = ending.comment;
    const loc = location();
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      if (processedValue.length === 0) {
        processedValue = [
          helpers_default.createNode(node_type_default.Text, {
            content: "",
            location: loc
          })
        ];
      }
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
      if (!value.withClause && tail && tail.pipeline) {
        const wrapper = value.wrapperType;
        const isTemplateWrapper = wrapper === "backtick" || wrapper === "doubleColon" || wrapper === "tripleColon";
        if (isTemplateWrapper) {
          const filteredTail = {
            ...tail
          };
          delete filteredTail.pipeline;
          tail = filteredTail;
        }
      }
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
      metaInfo.isEmptyArray = value.items.length === 0;
    } else if (value && value.type === "load-content") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = value.options && value.options.section ? "section-content" : "file-content";
      metaInfo.sourceType = value.source.type;
    } else if (value && (value.type === "variableReference" || value.type === "VariableReference")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
    } else if (value && value.type === "LeadingParallelPipeline") {
      const placeholder = value.placeholder;
      processedValue = [
        placeholder
      ];
      metaInfo.inferredType = "pipeline";
      tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isDataValue = true;
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.language = value.language;
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isForeach = true;
    } else if (value && (value.type === "BinaryExpression" || value.type === "TernaryExpression" || value.type === "UnaryExpression")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "expression";
      metaInfo.expressionType = value.type;
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
      metaInfo.primitiveType = value === null ? "null" : typeof value;
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    if (comment) {
      metaInfo.comment = comment;
    }
    const nodeInit = {
      identifier: id,
      operator: "+=",
      value: processedValue,
      location: loc
    };
    if (tail) {
      nodeInit.withClause = tail;
      metaInfo.withClause = tail;
    }
    if (Object.keys(metaInfo).length > 0) {
      nodeInit.meta = metaInfo;
    }
    return helpers_default.createNode("AugmentedAssignment", {
      ...nodeInit
    });
  }, "peg$f508");
  var peg$f509 = /* @__PURE__ */ __name(function(first, ref) {
    return ref;
  }, "peg$f509");
  var peg$f510 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f510");
  var peg$f511 = /* @__PURE__ */ __name(function(name) {
    return helpers_default.createNode(node_type_default.VariableReference, {
      identifier: name,
      valueType: "identifier"
    }, location());
  }, "peg$f511");
  var peg$f512 = /* @__PURE__ */ __name(function(invocation) {
    helpers_default.debug("OutputExecInvocation matched", {
      invocation
    });
    const isExecInvocation = invocation.type === "ExecInvocation";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return {
      type: isExecInvocation ? "exec" : "variable",
      subtype: isExecInvocation ? "outputExecInvocation" : "outputVariable",
      values: invocation,
      raw: {
        [isExecInvocation ? "commandName" : "variable"]: rawValue
      }
    };
  }, "peg$f512");
  var peg$f513 = /* @__PURE__ */ __name(function(ref) {
    let values, raw, subtype;
    if (ref.type === "ExecInvocation") {
      const isExecResultMethod = ref.commandRef && ref.commandRef.objectSource;
      if (isExecResultMethod) {
        return {
          type: "exec",
          subtype: "outputExecInvocation",
          values: ref,
          raw: {
            commandName: ref.commandRef.name
          }
        };
      }
      values = {
        identifier: ref.commandRef.identifier,
        args: ref.commandRef.args || []
      };
      raw = {
        identifier: ref.commandRef.name,
        args: ref.commandRef.args ? ref.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      subtype = "outputInvocation";
    } else {
      values = {
        identifier: [
          ref
        ],
        args: [],
        ...ref.fields && ref.fields.length > 0 ? {
          fields: ref.fields
        } : {}
      };
      raw = {
        identifier: ref.identifier,
        ...ref.fields && ref.fields.length > 0 ? {
          fields: ref.fields.map((f) => f.value)
        } : {}
      };
      subtype = "outputVariable";
    }
    return {
      type: "variable",
      subtype,
      values,
      raw
    };
  }, "peg$f513");
  var peg$f514 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("OutputCommand matched unified reference", {
      commandRef
    });
    let values, raw;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      raw = {
        identifier: commandRef.commandRef.name,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
    }
    return {
      type: "command",
      subtype: "outputCommand",
      values,
      raw
    };
  }, "peg$f514");
  var peg$f515 = /* @__PURE__ */ __name(function(source) {
    return {
      type: "literal",
      subtype: "outputLiteral",
      values: source.content,
      raw: source,
      meta: {
        wrapperType: source.wrapperType,
        hasInterpolation: source.hasInterpolation || false
      }
    };
  }, "peg$f515");
  var peg$f516 = /* @__PURE__ */ __name(function(stream) {
    helpers_default.debug("OutputTargetStream matched", {
      stream
    });
    return {
      type: "stream",
      stream,
      raw: stream
    };
  }, "peg$f516");
  var peg$f517 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f517");
  var peg$f518 = /* @__PURE__ */ __name(function(varname) {
    helpers_default.debug("OutputTargetEnv matched", {
      varname
    });
    return {
      type: "env",
      varname: varname || null,
      raw: varname ? `env:${varname}` : "env"
    };
  }, "peg$f518");
  var peg$f519 = /* @__PURE__ */ __name(function(resolver, path) {
    helpers_default.debug("OutputTargetResolver matched", {
      resolver,
      path
    });
    return {
      type: "resolver",
      resolver,
      path: path || [],
      raw: `@${resolver}${path ? "/" + path.map((p) => p.content || "").join("/") : ""}`
    };
  }, "peg$f519");
  var peg$f520 = /* @__PURE__ */ __name(function(chars) {
    const pathStr = chars.join("");
    return pathStr.split("/").filter((s) => s).map((segment) => ({
      type: "Text",
      content: segment
    }));
  }, "peg$f520");
  var peg$f521 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("OutputTargetFile matched", {
      path
    });
    return {
      type: "file",
      path: path.parts || path.values,
      raw: path.raw,
      meta: path.meta || {}
    };
  }, "peg$f521");
  var peg$f522 = /* @__PURE__ */ __name(function(str) {
    if (typeof str === "string") {
      return {
        parts: [
          helpers_default.createNode(node_type_default.Text, {
            content: str,
            location: location()
          })
        ],
        raw: `"${str}"`,
        meta: {
          quoted: true
        }
      };
    } else if (str.needsInterpolation) {
      return {
        parts: str.parts,
        raw: helpers_default.reconstructRawString(str.parts),
        meta: {
          quoted: true,
          needsInterpolation: true
        }
      };
    }
  }, "peg$f522");
  var peg$f523 = /* @__PURE__ */ __name(function(chars) {
    const path = chars.join("");
    return {
      parts: [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ],
      raw: path,
      meta: {
        unquoted: true
      }
    };
  }, "peg$f523");
  var peg$f524 = /* @__PURE__ */ __name(function(format) {
    helpers_default.debug("OutputFormat matched", {
      format
    });
    return format;
  }, "peg$f524");
  var peg$f525 = /* @__PURE__ */ __name(function(first, segment) {
    return segment;
  }, "peg$f525");
  var peg$f526 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f526");
  var peg$f527 = /* @__PURE__ */ __name(function(chars) {
    return {
      type: "Text",
      content: chars.join("")
    };
  }, "peg$f527");
  var peg$f528 = /* @__PURE__ */ __name(function(parts) {
    const pathString = helpers_default.reconstructRawString(parts);
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: parts.length > 0 ? parts : [
          helpers_default.createNode(node_type_default.Text, {
            content: "",
            location: location()
          })
        ]
      },
      raw: {
        path: pathString
      },
      meta: helpers_default.createPathMetadata(pathString, parts)
    };
  }, "peg$f528");
  var peg$f529 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      raw: {
        path: content
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
  }, "peg$f529");
  var peg$f530 = /* @__PURE__ */ __name(function(id, fields, boundary) {
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...fields.length > 0 ? {
        fields
      } : {},
      ...boundary ? {
        boundary
      } : {}
    }, location());
  }, "peg$f530");
  var peg$f531 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f531");
  var peg$f532 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f532");
  var peg$f533 = /* @__PURE__ */ __name(function() {
    return "\\";
  }, "peg$f533");
  var peg$f534 = /* @__PURE__ */ __name(function() {
    return '"';
  }, "peg$f534");
  var peg$f535 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f535");
  var peg$f536 = /* @__PURE__ */ __name(function(proto) {
    return proto;
  }, "peg$f536");
  var peg$f537 = /* @__PURE__ */ __name(function(parts) {
    const raw = "//" + parts.map((p) => {
      if (p.type === node_type_default.VariableReference) {
        return "@" + p.identifier;
      }
      return p.content || p;
    }).join("");
    return {
      parts,
      raw
    };
  }, "peg$f537");
  var peg$f538 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f538");
  var peg$f539 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "\\",
      location: location()
    });
  }, "peg$f539");
  var peg$f540 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f540");
  var peg$f541 = /* @__PURE__ */ __name(function(varName) {
    return helpers_default.createVariableReferenceNode("url", {
      identifier: varName,
      location: location()
    });
  }, "peg$f541");
  var peg$f542 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars,
      location: location()
    });
  }, "peg$f542");
  var peg$f543 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f543");
  var peg$f544 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f544");
  var peg$f545 = /* @__PURE__ */ __name(function(chars) {
    return helpers_default.createNode(node_type_default.Text, {
      content: chars.join(""),
      location: location()
    });
  }, "peg$f545");
  var peg$f546 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f546");
  var peg$f547 = /* @__PURE__ */ __name(function() {
    const pos = offset();
    return helpers_default.isRHSContext(input, pos);
  }, "peg$f547");
  var peg$f548 = /* @__PURE__ */ __name(function(command) {
    return {
      type: "command",
      command: command.parts,
      raw: command.raw
    };
  }, "peg$f548");
  var peg$f549 = /* @__PURE__ */ __name(function(code) {
    return {
      type: "code",
      code: code.parts,
      raw: code.raw
    };
  }, "peg$f549");
  var peg$f550 = /* @__PURE__ */ __name(function(leading, caps, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched leading parallel pipeline", {
      leading,
      caps
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const pipeline = leading.withClause.pipeline || [];
    const withClause = {
      pipeline,
      ...caps ? {
        parallel: caps.parallel,
        delayMs: caps.delayMs
      } : {}
    };
    const values = {
      withClause
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    const raw = {
      pipeline: pipeline.map((p) => Array.isArray(p) ? `[${p.map((c) => c.rawIdentifier).join(" || ")}]` : p.rawIdentifier).join(" | ")
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    const meta = {
      isPipeline: true,
      hasLeadingParallel: true,
      stageCount: pipeline.length,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    return helpers_default.createStructuredDirective("run", "runPipeline", values, raw, meta, location(), "pipeline");
  }, "peg$f550");
  var peg$f551 = /* @__PURE__ */ __name(function(command, tail, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched quoted command", {
      command,
      tail
    });
    const commandLocation = location();
    const parts = helpers_default.parseCommandContent(command, commandLocation);
    const commandBases = [];
    const rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: location()
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    const values = {
      command: parts,
      commandBases
    };
    const raw = {
      command,
      commandBases: rawBases
    };
    const meta = {
      isMultiLine: false,
      commandCount: commandBases.length,
      hasScriptRunner: false,
      ...comment ? {
        comment
      } : {}
    };
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", "runCommand", values, raw, meta, location(), "command");
  }, "peg$f551");
  var peg$f552 = /* @__PURE__ */ __name(function(content, tail, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched command", {
      content,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = content.values;
    const raw = content.raw;
    const meta = {
      ...content.meta,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", content.subtype, values, raw, meta, location(), content.type);
  }, "peg$f552");
  var peg$f553 = /* @__PURE__ */ __name(function(stdinExpr, content, tail, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched stdin pipe sugar", {
      stdinExpr,
      content,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = content.values;
    const raw = content.raw;
    const meta = {
      ...content.meta,
      ...comment ? {
        comment
      } : {}
    };
    const withClause = {
      stdin: stdinExpr,
      ...tail || {}
    };
    values.withClause = withClause;
    raw.withClause = withClause;
    meta.withClause = withClause;
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    return helpers_default.createStructuredDirective("run", content.subtype, values, raw, meta, location(), content.type);
  }, "peg$f553");
  var peg$f554 = /* @__PURE__ */ __name(function(codeCore, tail, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched with language code pattern", {
      codeCore,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = codeCore.values;
    const raw = codeCore.raw;
    const meta = {
      ...codeCore.meta,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", "runCode", values, raw, meta, location(), "code");
  }, "peg$f554");
  var peg$f555 = /* @__PURE__ */ __name(function(commandRef, labelsSegment, comment) {
    helpers_default.debug("RunBlockAction matched unified command reference", {
      commandRef
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      const isExecResultMethod = commandRef.commandRef && commandRef.commandRef.objectSource;
      if (isExecResultMethod) {
        values = {
          execInvocation: commandRef
        };
      } else {
        values = {
          identifier: commandRef.commandRef.identifier,
          args: commandRef.commandRef.args || []
        };
      }
      let rawIdentifier = commandRef.commandRef.name;
      if (commandRef.commandRef.identifier && commandRef.commandRef.identifier.length > 0) {
        const varRef = commandRef.commandRef.identifier[0];
        if (varRef.type === node_type_default.VariableReference) {
          rawIdentifier = varRef.identifier;
          if (varRef.fields && varRef.fields.length > 0) {
            rawIdentifier += varRef.fields.map((f) => "." + f.value).join("");
          }
        }
      }
      raw = {
        identifier: rawIdentifier,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0,
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else if (commandRef.type === "VariableReferenceWithTail") {
      values = {
        identifier: [
          commandRef.variable
        ],
        args: []
      };
      raw = {
        identifier: commandRef.variable.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...comment ? {
          comment
        } : {}
      };
    }
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    const subtype = commandRef.type === "ExecInvocation" && commandRef.commandRef && commandRef.commandRef.objectSource ? "runExecInvocation" : "runExec";
    const endingInfo = {
      tail: null,
      parallel: null,
      comment: comment || null
    };
    helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    return helpers_default.createStructuredDirective("run", subtype, values, raw, meta, location(), "exec");
  }, "peg$f555");
  var peg$f556 = /* @__PURE__ */ __name(function(list) {
    const raw = text();
    const deduped = [];
    const seen = /* @__PURE__ */ new Set();
    for (const item of list) {
      if (!seen.has(item.label)) {
        seen.add(item.label);
        deduped.push(item.label);
      }
    }
    return {
      labels: deduped,
      raw: raw.trim()
    };
  }, "peg$f556");
  var peg$f557 = /* @__PURE__ */ __name(function(first, rest) {
    const tokens = [
      first
    ];
    for (const entry of rest) {
      tokens.push(entry[3]);
    }
    return tokens;
  }, "peg$f557");
  var peg$f558 = /* @__PURE__ */ __name(function(label) {
    return {
      label
    };
  }, "peg$f558");
  var peg$f559 = /* @__PURE__ */ __name(function(label) {
    const reserved = [
      "module",
      "static",
      "live",
      "cached",
      "local",
      "foreach",
      "pipeline",
      "with",
      "from",
      "as"
    ];
    return !reserved.includes(label.toLowerCase());
  }, "peg$f559");
  var peg$f560 = /* @__PURE__ */ __name(function(label) {
    return label;
  }, "peg$f560");
  var peg$f561 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f561");
  var peg$f562 = /* @__PURE__ */ __name(function(parts) {
    if (parts.length === 0) {
      return "";
    }
    if (parts.length === 1 && parts[0].type === "Text") {
      return parts[0].content;
    }
    return {
      needsInterpolation: true,
      parts
    };
  }, "peg$f562");
  var peg$f563 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f563");
  var peg$f564 = /* @__PURE__ */ __name(function(quote) {
    return quote.content;
  }, "peg$f564");
  var peg$f565 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Text, {
      content: "@",
      location: location()
    });
  }, "peg$f565");
  var peg$f566 = /* @__PURE__ */ __name(function(content) {
    return helpers_default.createNode("Literal", {
      value: content,
      valueType: "string",
      location: location()
    });
  }, "peg$f566");
  var peg$f567 = /* @__PURE__ */ __name(function(parts) {
    if (parts.length === 0) {
      return helpers_default.createNode("Literal", {
        value: "",
        valueType: "string",
        location: location()
      });
    }
    if (parts.length === 1 && parts[0].type === "Text") {
      return helpers_default.createNode("Literal", {
        value: parts[0].content,
        valueType: "string",
        location: location()
      });
    }
    return {
      content: parts,
      wrapperType: "doubleQuote"
    };
  }, "peg$f567");
  var peg$f568 = /* @__PURE__ */ __name(function(keyword, value) {
    helpers_default.debug("TailModifiers matched", {
      keyword,
      valueType: Array.isArray(value) ? "array" : typeof value,
      valueLength: Array.isArray(value) ? value.length : void 0
    });
    if (keyword === "with") {
      return value;
    } else if (keyword === "||" || keyword === "|") {
      return {
        pipeline: value
      };
    } else if (keyword === "as") {
      return {
        asSection: value
      };
    } else {
      return {
        [keyword]: value
      };
    }
  }, "peg$f568");
  var peg$f569 = /* @__PURE__ */ __name(function(props) {
    const result = {};
    if (props) {
      for (const [key, value] of props) {
        result[key] = value;
      }
    }
    return result;
  }, "peg$f569");
  var peg$f570 = /* @__PURE__ */ __name(function(items) {
    return items;
  }, "peg$f570");
  var peg$f571 = /* @__PURE__ */ __name(function(transformers) {
    return transformers;
  }, "peg$f571");
  var peg$f572 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f572");
  var peg$f573 = /* @__PURE__ */ __name(function(first, rest) {
    helpers_default.debug("PipelineShorthand matched", {
      first: first?.rawIdentifier || first,
      restCount: rest.length,
      rest: rest.map((r) => r?.rawIdentifier || r)
    });
    return [
      first,
      ...rest
    ];
  }, "peg$f573");
  var peg$f574 = /* @__PURE__ */ __name(function(group, rest, caps) {
    helpers_default.debug("LeadingParallelPipeline matched", {
      groupSize: group.length,
      restCount: rest.length,
      hasCaps: !!caps
    });
    const pipeline = [
      group,
      ...rest
    ];
    const withClause = {
      pipeline,
      ...caps ? {
        parallel: caps.parallel,
        delayMs: caps.delayMs
      } : {}
    };
    const placeholder = helpers_default.createNode(node_type_default.Text, {
      content: "",
      location: location()
    });
    return {
      type: "LeadingParallelPipeline",
      placeholder,
      withClause
    };
  }, "peg$f574");
  var peg$f575 = /* @__PURE__ */ __name(function(group) {
    helpers_default.debug("PipelineRest matched (parallel)", {
      count: Array.isArray(group) ? group.length : 1
    });
    return group;
  }, "peg$f575");
  var peg$f576 = /* @__PURE__ */ __name(function(cmd) {
    helpers_default.debug("PipelineRest matched", {
      cmd: cmd?.rawIdentifier || cmd
    });
    return cmd;
  }, "peg$f576");
  var peg$f577 = /* @__PURE__ */ __name(function(leading, first, c) {
    return c;
  }, "peg$f577");
  var peg$f578 = /* @__PURE__ */ __name(function(leading, first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f578");
  var peg$f579 = /* @__PURE__ */ __name(function(args) {
    helpers_default.debug("UnifiedArgumentList matched", {
      args
    });
    return {
      type: "argumentList",
      arguments: args || [],
      isEmpty: !args || args.length === 0,
      argumentCount: args ? args.length : 0,
      location: location()
    };
  }, "peg$f579");
  var peg$f580 = /* @__PURE__ */ __name(function(head, arg) {
    return arg;
  }, "peg$f580");
  var peg$f581 = /* @__PURE__ */ __name(function(head, tail) {
    const args = [
      head,
      ...tail
    ].filter((arg) => arg !== null);
    return args;
  }, "peg$f581");
  var peg$f582 = /* @__PURE__ */ __name(function(regex) {
    return regex;
  }, "peg$f582");
  var peg$f583 = /* @__PURE__ */ __name(function(str) {
    if (typeof str === "string") {
      return helpers_default.createNode(node_type_default.Text, {
        content: str,
        location: location()
      });
    } else if (str.needsInterpolation) {
      return str.parts;
    }
  }, "peg$f583");
  var peg$f584 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f584");
  var peg$f585 = /* @__PURE__ */ __name(function(body, flags) {
    return helpers_default.createNode("RegexLiteral", {
      pattern: body,
      flags: flags || "",
      raw: `/${body}/${flags || ""}`,
      location: location()
    });
  }, "peg$f585");
  var peg$f586 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f586");
  var peg$f587 = /* @__PURE__ */ __name(function(char) {
    return "\\\\" + char;
  }, "peg$f587");
  var peg$f588 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f588");
  var peg$f589 = /* @__PURE__ */ __name(function(flags) {
    return flags;
  }, "peg$f589");
  var peg$f590 = /* @__PURE__ */ __name(function(streamPrefix, id, fields, args, post, tail) {
    helpers_default.debug("FieldAccessExec matched", {
      id,
      fields
    });
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const fullPathRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        fullPathRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    const finalTail = streamPrefix ? tail ? {
      ...tail,
      stream: true
    } : {
      stream: true
    } : tail;
    const exec = helpers_default.createExecInvocation(ref, finalTail || null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f590");
  var peg$f591 = /* @__PURE__ */ __name(function(streamPrefix, id, fields, args, post) {
    helpers_default.debug("FieldAccessExecNoTail matched", {
      id,
      fields
    });
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const fullPathRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        fullPathRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    const exec = helpers_default.createExecInvocation(ref, streamPrefix ? {
      stream: true
    } : null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f591");
  var peg$f592 = /* @__PURE__ */ __name(function(streamPrefix, name, args, post, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: name
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    const finalTail = streamPrefix ? tail ? {
      ...tail,
      stream: true
    } : {
      stream: true
    } : tail;
    const exec = helpers_default.createExecInvocation(ref, finalTail || null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f592");
  var peg$f593 = /* @__PURE__ */ __name(function(streamPrefix, name, args, post) {
    const ref = {
      name,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: name
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    const exec = helpers_default.createExecInvocation(ref, streamPrefix ? {
      stream: true
    } : null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f593");
  var peg$f594 = /* @__PURE__ */ __name(function(streamPrefix, id, fields, args, post) {
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const fullPathRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        fullPathRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    const exec = helpers_default.createExecInvocation(ref, streamPrefix ? {
      stream: true
    } : null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f594");
  var peg$f595 = /* @__PURE__ */ __name(function(streamPrefix, name, args, post) {
    const ref = {
      name,
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: name
        }, location())
      ],
      args: args || [],
      isCommandReference: true
    };
    const exec = helpers_default.createExecInvocation(ref, streamPrefix ? {
      stream: true
    } : null, location());
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f595");
  var peg$f596 = /* @__PURE__ */ __name(function(streamPrefix, id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const variable = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    if (streamPrefix) {
      return {
        type: "VariableReferenceWithTail",
        variable,
        withClause: {
          stream: true
        }
      };
    }
    return variable;
  }, "peg$f596");
  var peg$f597 = /* @__PURE__ */ __name(function(streamPrefix, id, fields, tail) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    const finalTail = streamPrefix ? tail ? {
      ...tail,
      stream: true
    } : {
      stream: true
    } : tail;
    if (finalTail) {
      return {
        type: "VariableReferenceWithTail",
        variable: varRef,
        withClause: finalTail
      };
    }
    return varRef;
  }, "peg$f597");
  var peg$f598 = /* @__PURE__ */ __name(function(id, fields) {
    const normalizedId = helpers_default.normalizePathVar(id);
    return helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
  }, "peg$f598");
  var peg$f599 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedCodeBrackets matched", {
      content
    });
    return {
      // Preserve leading whitespace; only strip trailing whitespace/newlines
      content: content.replace(/\s+$/, ""),
      isMultiLine: content.includes("\n")
    };
  }, "peg$f599");
  var peg$f600 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandBrackets: Trying to match at position", offset());
    return true;
  }, "peg$f600");
  var peg$f601 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandBrackets: Matched opening brace");
    return true;
  }, "peg$f601");
  var peg$f602 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets: Got parts, looking for closing brace");
    return true;
  }, "peg$f602");
  var peg$f603 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets: Matched closing brace, entering action");
    return true;
  }, "peg$f603");
  var peg$f604 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedCommandBrackets matched with UnifiedCommandParts", {
      parts
    });
    const rawCommand = helpers_default.reconstructRawString(parts);
    let commandBases = [];
    let rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: parts[0].location
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    return {
      type: "command",
      subtype: "runCommand",
      values: {
        command: parts,
        commandBases
      },
      raw: {
        command: rawCommand,
        commandBases: rawBases
      },
      meta: {
        isMultiLine: rawCommand.includes("\n"),
        commandCount: commandBases.length,
        hasScriptRunner: false
        // TODO: Detect script runners
      }
    };
  }, "peg$f604");
  var peg$f605 = /* @__PURE__ */ __name(function(workingDir, content) {
    if (!workingDir) {
      return content;
    }
    return {
      ...content,
      values: {
        ...content.values,
        workingDir: workingDir.parts
      },
      raw: {
        ...content.raw,
        workingDir: workingDir.raw
      },
      meta: {
        ...content.meta,
        workingDirMeta: workingDir.meta,
        hasWorkingDir: true
      }
    };
  }, "peg$f605");
  var peg$f606 = /* @__PURE__ */ __name(function() {
    return true;
  }, "peg$f606");
  var peg$f607 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Use cmd { \u2026 } for commands or data { \u2026 } for objects.", "cmd", location());
  }, "peg$f607");
  var peg$f608 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("UnifiedRunContent matched", {
      content
    });
    return content;
  }, "peg$f608");
  var peg$f609 = /* @__PURE__ */ __name(function(lang, ws, rest) {
    helpers_default.debug("UnifiedRunContentInner detected code", {
      lang,
      rest
    });
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: lang,
      location: location()
    });
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: rest.trim(),
      location: location()
    });
    return {
      type: "code",
      subtype: "runCode",
      values: {
        lang: [
          langNode
        ],
        args: [],
        code: [
          codeNode
        ]
      },
      raw: {
        lang,
        args: [],
        code: rest.trim()
      },
      meta: {
        isMultiLine: rest.includes("\n"),
        language: lang,
        hasVariables: false
        // Code blocks don't support variable interpolation
      }
    };
  }, "peg$f609");
  var peg$f610 = /* @__PURE__ */ __name(function(parts) {
    helpers_default.debug("UnifiedRunContentInner detected command", {
      parts
    });
    const rawCommand = helpers_default.reconstructRawString(parts);
    let commandBases = [];
    let rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: parts[0].location
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    return {
      type: "command",
      subtype: "runCommand",
      values: {
        command: parts,
        commandBases
      },
      raw: {
        command: rawCommand,
        commandBases: rawBases
      },
      meta: {
        isMultiLine: rawCommand.includes("\n"),
        commandCount: commandBases.length,
        hasScriptRunner: false
        // TODO: Detect script runners
      }
    };
  }, "peg$f610");
  var peg$f611 = /* @__PURE__ */ __name(function(content) {
    let inQuote = null;
    for (let i = 0; i < content.length; i++) {
      const char = content[i];
      const next = content[i + 1];
      if ((char === '"' || char === "'") && !inQuote) {
        inQuote = char;
      } else if (char === inQuote) {
        inQuote = null;
      } else if (!inQuote) {
        if (char === "&" && next === "&") {
          helpers_default.mlldError(`Shell operator AND (&&) is not allowed in simple mlld shell commands {..} but allowed in /run sh {..} which is more permissive`);
        } else if (char === "|" && next === "|") {
          helpers_default.mlldError(`Shell operator OR (||) is not allowed in simple mlld shell commands {..} but allowed in /run sh {..} which is more permissive.`);
        } else if (char === ";") {
          helpers_default.mlldError(`Shell operator semicolon (;) is not allowed in simple mlld commands {..} but you might have been trying to write javascript, which requires /run js {..} or /run node {..}`);
        } else if (char === ">" && next === ">") {
          helpers_default.mlldError(`>> Comments and shell append operator (>>) are not allowed inside simple mlld commands {..}. If you were trying to write a comment, you'll need to do that outside arguments and brackets. If you wanted to use append in a shell command, you can run this inside /run sh {..} which is more permissive.`);
        } else if (char === ">" || char === "<") {
          helpers_default.mlldError(`Shell redirection operators are not allowed in simple mlld commands. You may have been trying to do something else though. Check syntax references.`);
        } else if (char === "&" && next !== "&" && next !== ">") {
          helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
        } else ;
      } else ;
    }
    return {
      commands: [
        {
          type: "command",
          command: helpers_default.createNode(node_type_default.Text, {
            content: content.trim(),
            location: location()
          }),
          arguments: []
        }
      ],
      commandBases: []
    };
  }, "peg$f611");
  var peg$f612 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("UnifiedCommandParts: Starting to parse at position", offset());
    return true;
  }, "peg$f612");
  var peg$f613 = /* @__PURE__ */ __name(function(tokens) {
    helpers_default.debug("UnifiedCommandParts: Parsed tokens", {
      count: tokens.length
    });
    const flattened = [];
    for (const token of tokens) {
      if (Array.isArray(token)) {
        flattened.push(...token);
      } else {
        flattened.push(token);
      }
    }
    return flattened;
  }, "peg$f613");
  var peg$f614 = /* @__PURE__ */ __name(function(content) {
    const nodes = [];
    let currentText = '"';
    for (const item of content) {
      if (typeof item === "string") {
        currentText += item;
      } else if (item.type === node_type_default.VariableReference || item.type === "FileReference") {
        if (currentText) {
          nodes.push(helpers_default.createNode(node_type_default.Text, {
            content: currentText,
            location: location()
          }));
          currentText = "";
        }
        nodes.push(item);
      }
    }
    currentText += '"';
    nodes.push(helpers_default.createNode(node_type_default.Text, {
      content: currentText,
      location: location()
    }));
    if (nodes.length === 1 && nodes[0].type === node_type_default.Text) {
      return nodes[0];
    }
    return nodes;
  }, "peg$f614");
  var peg$f615 = /* @__PURE__ */ __name(function(content) {
    const text2 = "'" + content.join("") + "'";
    return helpers_default.createNode(node_type_default.Text, {
      content: text2,
      location: location()
    });
  }, "peg$f615");
  var peg$f616 = /* @__PURE__ */ __name(function(varRef) {
    return varRef;
  }, "peg$f616");
  var peg$f617 = /* @__PURE__ */ __name(function(fileRef) {
    return fileRef;
  }, "peg$f617");
  var peg$f618 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f618");
  var peg$f619 = /* @__PURE__ */ __name(function() {
    return "@";
  }, "peg$f619");
  var peg$f620 = /* @__PURE__ */ __name(function() {
    return "<";
  }, "peg$f620");
  var peg$f621 = /* @__PURE__ */ __name(function(chars) {
    return chars;
  }, "peg$f621");
  var peg$f622 = /* @__PURE__ */ __name(function(chars) {
    const content = chars.join("");
    return helpers_default.createNode(node_type_default.Text, {
      content,
      location: location()
    });
  }, "peg$f622");
  var peg$f623 = /* @__PURE__ */ __name(function() {
    const pos = peg$currPos;
    const ahead = input.substring(pos, pos + 3);
    const char = input[pos];
    const prev = pos > 0 ? input[pos - 1] : null;
    if (char === '"' || char === "'") {
      return false;
    }
    if (char === " " || char === "	" || char === "\n" || char === "\r") {
      return false;
    }
    if (char === "@") {
      return false;
    }
    if (char === ")" && input[pos + 1] === "]") {
      return false;
    }
    if (char === String.fromCharCode(125)) {
      return false;
    }
    const isEscaped = prev === "\\";
    if (!isEscaped) {
      if (ahead.startsWith("&&")) {
        helpers_default.mlldError(`Shell operator AND (&&) is not allowed in simple mlld shell commands {..} but allowed in /run sh {..} which is more permissive`);
      }
      if (ahead.startsWith("||")) {
        helpers_default.mlldError(`Shell operator OR (||) is not allowed in simple mlld shell commands {..} but allowed in /run sh {..} which is more permissive.`);
      }
      if (ahead.startsWith(">>")) {
        helpers_default.mlldError(`>> Comments and shell append operator (>>) are not allowed inside simple mlld commands {..}. If you were trying to write a comment, you'll need to do that outside arguments and brackets. If you wanted to use append in a shell command, you can run this inside /run sh {..} which is more permissive.`);
      }
      if (char === ";") {
        helpers_default.mlldError(`Shell operator semicolon (;) is not allowed in mlld commands. Use @run sh [(script)] for shell scripts or separate @run commands.`);
      }
      if (char === ">" && input[pos + 1] !== ">") {
        helpers_default.mlldError(`Shell redirection operators are not allowed in simple mlld commands. You may have been trying to do something else though. Check syntax references.`);
      }
      if (char === "<") {
        helpers_default.mlldError(`Shell redirection operators are not allowed in simple mlld commands. You may have been trying to do something else though. Check syntax references.`);
      }
      if (char === "&" && input[pos + 1] !== "&" && input[pos + 1] !== ">") {
        helpers_default.mlldError(`Background execution (&) is not allowed in mlld. All commands run synchronously.`);
      }
    }
    return true;
  }, "peg$f623");
  var peg$f624 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f624");
  var peg$f625 = /* @__PURE__ */ __name(function(spaces) {
    return helpers_default.createNode(node_type_default.Text, {
      content: spaces.join(""),
      location: location()
    });
  }, "peg$f625");
  var peg$f626 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f626");
  var peg$f627 = /* @__PURE__ */ __name(function(chars) {
    return '"' + chars.join("") + '"';
  }, "peg$f627");
  var peg$f628 = /* @__PURE__ */ __name(function(chars) {
    return "'" + chars.join("") + "'";
  }, "peg$f628");
  var peg$f629 = /* @__PURE__ */ __name(function(chars) {
    return "`" + chars.join("") + "`";
  }, "peg$f629");
  var peg$f630 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f630");
  var peg$f631 = /* @__PURE__ */ __name(function(chars) {
    return "/*" + chars.join("") + "*/";
  }, "peg$f631");
  var peg$f632 = /* @__PURE__ */ __name(function(c) {
    return c;
  }, "peg$f632");
  var peg$f633 = /* @__PURE__ */ __name(function(chars) {
    return "//" + chars.join("");
  }, "peg$f633");
  var peg$f634 = /* @__PURE__ */ __name(function(inner) {
    return "{" + inner + "}";
  }, "peg$f634");
  var peg$f635 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f635");
  var peg$f636 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f636");
  var peg$f637 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f637");
  var peg$f638 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f638");
  var peg$f639 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f639");
  var peg$f640 = /* @__PURE__ */ __name(function(char) {
    return "\\" + char;
  }, "peg$f640");
  var peg$f641 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f641");
  var peg$f642 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    if (input[i] !== "[") return false;
    i += 1;
    while (i < input.length) {
      const ch = input[i];
      if (ch === " " || ch === "	" || ch === "\n" || ch === "\r") {
        i += 1;
        continue;
      }
      if (input[i] === ">" && input[i + 1] === ">") {
        i += 2;
        while (i < input.length && input[i] !== "\n") i += 1;
        continue;
      }
      if (input[i] === "<" && input[i + 1] === "<") {
        i += 2;
        while (i < input.length && input[i] !== "\n") i += 1;
        continue;
      }
      break;
    }
    const rest = input.substring(i);
    if (rest.startsWith("let")) return true;
    if (rest.startsWith("=>")) return true;
    if (/^@[_a-zA-Z]\w*\s*\+=/.test(rest)) return true;
    return false;
  }, "peg$f642");
  var peg$f643 = /* @__PURE__ */ __name(function(block) {
    return block;
  }, "peg$f643");
  var peg$f644 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos);
    const endOfContext = rest.search(/[\n\r]|(?:^|\s)\/\w+|(?:^|\s)>>/);
    const contextToSearch = endOfContext === -1 ? rest : rest.substring(0, endOfContext);
    return /(\s*(&&|\|\||==|!=|<=|>=|<|>|\?|!|[-+*/%]))|(\s*\?\s*[^:]+\s*:)/.test(contextToSearch);
  }, "peg$f644");
  var peg$f645 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f645");
  var peg$f646 = /* @__PURE__ */ __name(function(base, post) {
    return helpers_default.attachPostFields(base, post);
  }, "peg$f646");
  var peg$f647 = /* @__PURE__ */ __name(function(base, post) {
    return helpers_default.attachPostFields(base, post);
  }, "peg$f647");
  var peg$f648 = /* @__PURE__ */ __name(function(base, fields, pipes) {
    helpers_default.debug("AlligatorWithFields matched", {
      source: base.source,
      fieldCount: fields.length,
      pipeCount: pipes ? pipes.length : 0
    });
    const allPipes = [
      ...base.pipes || [],
      ...pipes || []
    ];
    return helpers_default.createFileReferenceNode(base.source, fields, allPipes, location());
  }, "peg$f648");
  var peg$f649 = /* @__PURE__ */ __name(function(template, pipes) {
    helpers_default.debug("TemplateWithPipeline matched", {
      template: template.wrapperType,
      pipelineCount: pipes.length
    });
    const content = template.content || [
      helpers_default.createNode(node_type_default.Text, {
        content: "",
        location: location()
      })
    ];
    const pipeline = pipes.map((pipe) => ({
      identifier: [
        helpers_default.createVariableReferenceNode("varIdentifier", {
          identifier: pipe.transform
        }, location())
      ],
      args: pipe.args || [],
      fields: [],
      rawIdentifier: pipe.transform,
      rawArgs: pipe.args || []
    }));
    return {
      content,
      wrapperType: template.wrapperType,
      withClause: {
        pipeline
      }
    };
  }, "peg$f649");
  var peg$f650 = /* @__PURE__ */ __name(function(base, pipes) {
    helpers_default.debug("AlligatorWithPostPipes matched", {
      innerPipes: base.pipes ? base.pipes.length : 0,
      outerPipes: pipes.length
    });
    const allPipes = [
      ...base.pipes || [],
      ...pipes || []
    ];
    return {
      ...base,
      ...allPipes.length > 0 ? {
        pipes: allPipes
      } : {}
    };
  }, "peg$f650");
  var peg$f651 = /* @__PURE__ */ __name(function(id, fields) {
    return peg$currPos;
  }, "peg$f651");
  var peg$f652 = /* @__PURE__ */ __name(function(id, fields, pipeStart, command) {
    return {
      command,
      pipeStart
    };
  }, "peg$f652");
  var peg$f653 = /* @__PURE__ */ __name(function(id, fields, firstPipe, restPipes) {
    const normalizedId = helpers_default.normalizePathVar(id);
    const varRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: normalizedId,
      ...fields.length > 0 ? {
        fields
      } : {}
    }, location());
    const pipes = [];
    if (firstPipe) {
      const loc = location();
      const startOffset = firstPipe.pipeStart;
      pipes.push({
        type: "CondensedPipe",
        transform: firstPipe.command.fullName,
        hasAt: true,
        args: firstPipe.command.args || [],
        fields: firstPipe.command.fields || [],
        location: {
          source: loc.source,
          start: {
            offset: startOffset,
            line: loc.start.line,
            column: loc.start.column - (loc.start.offset - startOffset)
          },
          end: loc.end
        }
      });
    }
    if (restPipes && restPipes.length > 0) {
      pipes.push(...restPipes);
    }
    if (pipes.length > 0) {
      return {
        ...varRef,
        pipes
      };
    }
    return varRef;
  }, "peg$f653");
  var peg$f654 = /* @__PURE__ */ __name(function() {
    return peg$currPos;
  }, "peg$f654");
  var peg$f655 = /* @__PURE__ */ __name(function(pipeStart, command) {
    const loc = location();
    const startOffset = pipeStart;
    return {
      type: "CondensedPipe",
      transform: command.fullName,
      hasAt: true,
      args: command.args || [],
      fields: command.fields || [],
      location: {
        source: loc.source,
        start: {
          offset: startOffset,
          line: loc.start.line,
          column: loc.start.column - (loc.start.offset - startOffset)
        },
        end: loc.end
      }
    };
  }, "peg$f655");
  var peg$f656 = /* @__PURE__ */ __name(function(name, part) {
    return part;
  }, "peg$f656");
  var peg$f657 = /* @__PURE__ */ __name(function(name, fieldParts, a) {
    return a || [];
  }, "peg$f657");
  var peg$f658 = /* @__PURE__ */ __name(function(name, fieldParts, args) {
    const fields = fieldParts || [];
    const fullName = fields.length > 0 ? `${name}.${fields.join(".")}` : name;
    return {
      name,
      fullName,
      fields,
      args: args || []
    };
  }, "peg$f658");
  var peg$f659 = /* @__PURE__ */ __name(function(pipes) {
    return pipes;
  }, "peg$f659");
  var peg$f660 = /* @__PURE__ */ __name(function(streamPrefix, id, fields, args, post, tail) {
    const lastField = fields[fields.length - 1];
    const methodName = lastField.value;
    const objectFields = fields.slice(0, -1);
    const objectRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      ...objectFields.length > 0 ? {
        fields: objectFields
      } : {}
    }, location());
    const identifierRef = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id,
      fields
    }, location());
    const ref = {
      name: methodName,
      identifier: [
        identifierRef
      ],
      args: args || [],
      isCommandReference: true,
      objectReference: objectRef
    };
    const exec = helpers_default.createExecInvocation(ref, tail || null, location());
    if (streamPrefix) {
      const mergedTail = tail ? {
        ...tail,
        stream: true
      } : {
        stream: true
      };
      const execWithStream = helpers_default.createExecInvocation(ref, mergedTail, location());
      return helpers_default.attachPostFields(execWithStream, post);
    }
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f660");
  var peg$f661 = /* @__PURE__ */ __name(function(streamPrefix, name, args, post, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    const exec = helpers_default.createExecInvocation(ref, tail || null, location());
    if (streamPrefix) {
      const mergedTail = tail ? {
        ...tail,
        stream: true
      } : {
        stream: true
      };
      const execWithStream = helpers_default.createExecInvocation(ref, mergedTail, location());
      return helpers_default.attachPostFields(execWithStream, post);
    }
    return helpers_default.attachPostFields(exec, post);
  }, "peg$f661");
  var peg$f662 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "number",
      location: location()
    });
  }, "peg$f662");
  var peg$f663 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "boolean",
      location: location()
    });
  }, "peg$f663");
  var peg$f664 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("Literal", {
      value,
      valueType: "null",
      location: location()
    });
  }, "peg$f664");
  var peg$f665 = /* @__PURE__ */ __name(function(command) {
    const commandLocation = location();
    const parts = helpers_default.parseCommandContent(command, commandLocation);
    let commandBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: commandLocation
        }));
      }
    }
    return {
      type: "command",
      command: parts,
      commandBases,
      hasRunKeyword: true,
      meta: {
        isMultiLine: false,
        commandCount: commandBases.length,
        hasScriptRunner: false
      }
    };
  }, "peg$f665");
  var peg$f666 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "command",
      command: content.values.command,
      commandBases: content.values.commandBases,
      workingDir: content.values.workingDir,
      workingDirMeta: content.meta?.workingDirMeta,
      hasRunKeyword: true,
      meta: content.meta
    };
  }, "peg$f666");
  var peg$f667 = /* @__PURE__ */ __name(function(invocation) {
    return {
      type: "runExec",
      invocation,
      hasRunKeyword: true
    };
  }, "peg$f667");
  var peg$f668 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "code",
      language: lang,
      code,
      hasRunKeyword: false
    };
  }, "peg$f668");
  var peg$f669 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "nestedDirective",
      directive: "run",
      language: lang,
      code
    };
  }, "peg$f669");
  var peg$f670 = /* @__PURE__ */ __name(function(cmd) {
    return {
      type: "nestedDirective",
      directive: "run",
      command: cmd
    };
  }, "peg$f670");
  var peg$f671 = /* @__PURE__ */ __name(function(content, ending) {
    return helpers_default.createForActionNode("show", content, location(), ending ? ending.tail : null, ending ? ending.comment : null);
  }, "peg$f671");
  var peg$f672 = /* @__PURE__ */ __name(function(chars) {
    return chars.map((c) => c[1]).join("");
  }, "peg$f672");
  var peg$f673 = /* @__PURE__ */ __name(function(lang, content) {
    return {
      type: "code",
      language: lang,
      code: content,
      hasRunKeyword: true
    };
  }, "peg$f673");
  var peg$f674 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "command",
      command: content.values.command,
      commandBases: content.values.commandBases,
      workingDir: content.values.workingDir,
      workingDirMeta: content.meta?.workingDirMeta,
      hasRunKeyword: true,
      meta: content.meta
    };
  }, "peg$f674");
  var peg$f675 = /* @__PURE__ */ __name(function(lang, code) {
    return {
      type: "code",
      language: lang,
      code,
      hasRunKeyword: false
    };
  }, "peg$f675");
  var peg$f676 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "command",
      command: content.values.command,
      commandBases: content.values.commandBases,
      workingDir: content.values.workingDir,
      workingDirMeta: content.meta?.workingDirMeta,
      hasRunKeyword: false,
      meta: content.meta
    };
  }, "peg$f676");
  var peg$f677 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f677");
  var peg$f678 = /* @__PURE__ */ __name(function(inner) {
    return "{" + inner + "}";
  }, "peg$f678");
  var peg$f679 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f679");
  var peg$f680 = /* @__PURE__ */ __name(function(opts, pattern, whenExpr, batchPipe) {
    const hasNoneCondition = Array.isArray(whenExpr.conditions) && whenExpr.conditions.some((entry) => {
      const condition = entry && entry.condition;
      return Array.isArray(condition) && condition.length === 1 && condition[0]?.type === node_type_default.Literal && condition[0]?.valueType === "none";
    });
    let normalizedWhen = whenExpr;
    if (!hasNoneCondition) {
      const loc = whenExpr.location || location();
      const noneLiteral = helpers_default.createNode(node_type_default.Literal, {
        value: "none",
        valueType: "none",
        location: loc
      });
      const skipLiteral = helpers_default.createNode(node_type_default.Literal, {
        value: "skip",
        valueType: "skip",
        location: loc
      });
      const conditions = [
        ...whenExpr.conditions,
        {
          condition: [
            noneLiteral
          ],
          action: [
            skipLiteral
          ]
        }
      ];
      normalizedWhen = helpers_default.createWhenExpression(conditions, whenExpr.withClause || null, loc, whenExpr.meta?.modifier || null);
    }
    helpers_default.debug("ForExpression when-filter matched", {
      pattern,
      hasNoneCondition
    });
    return helpers_default.createForExpression(pattern.variable, pattern.source, [
      normalizedWhen
    ], location(), opts || null, batchPipe || null);
  }, "peg$f680");
  var peg$f681 = /* @__PURE__ */ __name(function(opts, pattern, action, batchPipe) {
    helpers_default.debug("ForExpression matched", {
      pattern,
      action,
      hasBatch: !!batchPipe
    });
    return helpers_default.createForExpression(pattern.variable, pattern.source, action, location(), opts || null, batchPipe || null);
  }, "peg$f681");
  var peg$f682 = /* @__PURE__ */ __name(function(id, source) {
    helpers_default.mlldError("Missing '=>' in for expression. Expected: for @var in @collection => expression", "=>", location());
  }, "peg$f682");
  var peg$f683 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing 'in' in for expression. Expected: for @var in @collection => expression", "in", location());
  }, "peg$f683");
  var peg$f684 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid for expression syntax. Expected: for @var in @collection => expression", "@", location());
  }, "peg$f684");
  var peg$f685 = /* @__PURE__ */ __name(function(expr) {
    return expr;
  }, "peg$f685");
  var peg$f686 = /* @__PURE__ */ __name(function(block) {
    return block.statements;
  }, "peg$f686");
  var peg$f687 = /* @__PURE__ */ __name(function(firstParallel, rest, caps) {
    const pipeline = [
      [
        ...firstParallel
      ],
      ...rest
    ];
    helpers_default.debug("ForBatchPipeline matched (parallel)", {
      stageCount: pipeline.length,
      hasCaps: !!caps
    });
    return {
      pipeline,
      isBatchPipeline: true,
      ...caps ? {
        parallel: caps.parallel,
        delayMs: caps.delayMs
      } : {}
    };
  }, "peg$f687");
  var peg$f688 = /* @__PURE__ */ __name(function(firstStage, rest) {
    const pipeline = [
      firstStage,
      ...rest
    ];
    helpers_default.debug("ForBatchPipeline matched", {
      stageCount: pipeline.length
    });
    return {
      pipeline,
      isBatchPipeline: true
    };
  }, "peg$f688");
  var peg$f689 = /* @__PURE__ */ __name(function(cmdAction, tail) {
    const values = {
      ...cmdAction.values
    };
    const raw = {
      ...cmdAction.raw
    };
    const meta = {
      ...cmdAction.meta
    };
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    return [
      helpers_default.createStructuredDirective("run", "runCommand", values, raw, meta, location(), "command")
    ];
  }, "peg$f689");
  var peg$f690 = /* @__PURE__ */ __name(function(h) {
    return h;
  }, "peg$f690");
  var peg$f691 = /* @__PURE__ */ __name(function(hint) {
    const retryNode = helpers_default.createNode(node_type_default.Literal, {
      value: "retry",
      valueType: "retry",
      location: location()
    });
    if (typeof hint !== "undefined" && hint !== null) {
      return [
        retryNode,
        hint
      ];
    }
    return [
      retryNode
    ];
  }, "peg$f691");
  var peg$f692 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f692");
  var peg$f693 = /* @__PURE__ */ __name(function() {
    return helpers_default.createNode(node_type_default.Literal, {
      value: "skip",
      valueType: "skip",
      location: location()
    });
  }, "peg$f693");
  var peg$f694 = /* @__PURE__ */ __name(function(varRef) {
    if (!varRef || !varRef.withClause) {
      const loc = location();
      peg$currPos = loc.start.offset;
      return peg$FAILED;
    }
    return varRef;
  }, "peg$f694");
  var peg$f695 = /* @__PURE__ */ __name(function(name, value) {
    helpers_default.debug("WhenRHSVarAssignment matched", {
      name,
      value
    });
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: name
    }, location());
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "primitive";
    }
    return helpers_default.createNode(node_type_default.Directive, {
      kind: "var",
      subtype: "assignment",
      values: {
        identifier: [
          idNode
        ],
        value: processedValue
      },
      raw: {
        identifier: "@" + name,
        value: text()
      },
      meta: metaInfo,
      location: location()
    });
  }, "peg$f695");
  var peg$f696 = /* @__PURE__ */ __name(function(ref) {
    return ref.type === "ExecInvocation" || ref.type === "FieldAccessExec" || ref.arguments && ref.arguments.length >= 0;
  }, "peg$f696");
  var peg$f697 = /* @__PURE__ */ __name(function(ref) {
    helpers_default.debug("WhenRHSFunctionCall matched", {
      ref
    });
    return ref;
  }, "peg$f697");
  var peg$f698 = /* @__PURE__ */ __name(function(name, args, value) {
    helpers_default.mlldError(`Executable definitions are not allowed in when RHS contexts.

Instead of:
  /when @condition => @${name}() = ...
  /var @result = when [@condition => @${name}() = ...]

Use:
  /exe @${name}() = when [@condition => ..., * => default]`, "/exe", location());
  }, "peg$f698");
  var peg$f699 = /* @__PURE__ */ __name(function(object) {
    helpers_default.debug("WithClause matched", {
      object
    });
    return object;
  }, "peg$f699");
  var peg$f700 = /* @__PURE__ */ __name(function(props) {
    const result = {};
    if (props) {
      for (const [key, value] of props) {
        result[key] = value;
      }
    }
    return result;
  }, "peg$f700");
  var peg$f701 = /* @__PURE__ */ __name(function(first, prop) {
    return prop;
  }, "peg$f701");
  var peg$f702 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f702");
  var peg$f703 = /* @__PURE__ */ __name(function(pipeline) {
    return [
      "pipeline",
      pipeline
    ];
  }, "peg$f703");
  var peg$f704 = /* @__PURE__ */ __name(function(skipDirs) {
    return [
      "skipDirs",
      skipDirs
    ];
  }, "peg$f704");
  var peg$f705 = /* @__PURE__ */ __name(function(guards) {
    return [
      "guards",
      guards
    ];
  }, "peg$f705");
  var peg$f706 = /* @__PURE__ */ __name(function(stdin) {
    return [
      "stdin",
      stdin
    ];
  }, "peg$f706");
  var peg$f707 = /* @__PURE__ */ __name(function(format) {
    return [
      "format",
      format
    ];
  }, "peg$f707");
  var peg$f708 = /* @__PURE__ */ __name(function(title) {
    return [
      "asSection",
      title
    ];
  }, "peg$f708");
  var peg$f709 = /* @__PURE__ */ __name(function(policy) {
    return [
      "policy",
      policy
    ];
  }, "peg$f709");
  var peg$f710 = /* @__PURE__ */ __name(function(cap) {
    return [
      "parallel",
      Number(cap)
    ];
  }, "peg$f710");
  var peg$f711 = /* @__PURE__ */ __name(function(wait) {
    const delayMs = helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3;
    return [
      "delayMs",
      delayMs
    ];
  }, "peg$f711");
  var peg$f712 = /* @__PURE__ */ __name(function(stream) {
    return [
      "stream",
      stream === "true" || stream === true
    ];
  }, "peg$f712");
  var peg$f713 = /* @__PURE__ */ __name(function(format) {
    return [
      "streamFormat",
      format
    ];
  }, "peg$f713");
  var peg$f714 = /* @__PURE__ */ __name(function(commands) {
    return commands || [];
  }, "peg$f714");
  var peg$f715 = /* @__PURE__ */ __name(function(first, st) {
    return st;
  }, "peg$f715");
  var peg$f716 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f716");
  var peg$f717 = /* @__PURE__ */ __name(function(cmds) {
    return cmds || [];
  }, "peg$f717");
  var peg$f718 = /* @__PURE__ */ __name(function(first, cmd) {
    return cmd;
  }, "peg$f718");
  var peg$f719 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f719");
  var peg$f720 = /* @__PURE__ */ __name(function() {
    return false;
  }, "peg$f720");
  var peg$f721 = /* @__PURE__ */ __name(function(entries) {
    const result = {};
    if (entries) {
      for (const [key, value] of entries) {
        result[key] = value;
      }
    }
    return result;
  }, "peg$f721");
  var peg$f722 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f722");
  var peg$f723 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f723");
  var peg$f724 = /* @__PURE__ */ __name(function(names) {
    return [
      "only",
      names
    ];
  }, "peg$f724");
  var peg$f725 = /* @__PURE__ */ __name(function(names) {
    return [
      "except",
      names
    ];
  }, "peg$f725");
  var peg$f726 = /* @__PURE__ */ __name(function(names) {
    return names || [];
  }, "peg$f726");
  var peg$f727 = /* @__PURE__ */ __name(function(first, name) {
    return name;
  }, "peg$f727");
  var peg$f728 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f728");
  var peg$f729 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f729");
  var peg$f730 = /* @__PURE__ */ __name(function(parts) {
    return parts.join("");
  }, "peg$f730");
  var peg$f731 = /* @__PURE__ */ __name(function() {
    return '"';
  }, "peg$f731");
  var peg$f732 = /* @__PURE__ */ __name(function() {
    return "\\";
  }, "peg$f732");
  var peg$f733 = /* @__PURE__ */ __name(function(char) {
    return char;
  }, "peg$f733");
  var peg$f734 = /* @__PURE__ */ __name(function(ref) {
    helpers_default.debug("PipelineCommand matched unified reference", {
      ref
    });
    if (ref.type === "ExecInvocation") {
      return {
        identifier: ref.commandRef.identifier,
        args: ref.commandRef.args || [],
        fields: [],
        rawIdentifier: ref.commandRef.name,
        rawArgs: ref.commandRef.args ? ref.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : [],
        ...ref.withClause?.stream ? {
          stream: true
        } : {}
      };
    } else if (ref.type === "VariableReferenceWithTail") {
      const variable = ref.variable;
      return {
        identifier: [
          variable
        ],
        args: [],
        fields: variable.fields || [],
        rawIdentifier: variable.identifier,
        rawArgs: [],
        ...ref.withClause?.stream ? {
          stream: true
        } : {}
      };
    } else {
      return {
        identifier: [
          ref
        ],
        args: [],
        fields: ref.fields || [],
        rawIdentifier: ref.identifier,
        rawArgs: []
      };
    }
  }, "peg$f734");
  var peg$f735 = /* @__PURE__ */ __name(function(content) {
    return {
      type: "inlineCommand",
      command: content.values.command,
      commandBases: content.values.commandBases,
      workingDir: content.values.workingDir,
      workingDirMeta: content.meta?.workingDirMeta,
      rawWorkingDir: content.raw.workingDir,
      rawCommand: content.raw.command,
      rawIdentifier: content.raw.commandBases && content.raw.commandBases.length > 0 ? content.raw.commandBases[0] : "cmd-stage",
      meta: content.meta,
      location: location()
    };
  }, "peg$f735");
  var peg$f736 = /* @__PURE__ */ __name(function(obj) {
    return {
      type: "inlineValue",
      value: obj,
      rawIdentifier: "data-literal",
      location: location()
    };
  }, "peg$f736");
  var peg$f737 = /* @__PURE__ */ __name(function(obj) {
    return {
      type: "inlineValue",
      value: obj,
      rawIdentifier: "data-literal",
      location: location()
    };
  }, "peg$f737");
  var peg$f738 = /* @__PURE__ */ __name(function(cap, rate, processor) {
    const wait = rate ? rate[2] : null;
    const rateMs = wait ? helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3 : null;
    const proc = processor;
    return {
      type: "whileStage",
      cap: Number(cap),
      rateMs,
      processor: proc,
      rawIdentifier: proc?.rawIdentifier || "while",
      meta: {
        hasRate: !!rateMs
      },
      location: location()
    };
  }, "peg$f738");
  var peg$f739 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("while() requires a maximum iteration count, e.g., while(10) @processor", "number", location());
  }, "peg$f739");
  var peg$f740 = /* @__PURE__ */ __name(function(cap) {
    helpers_default.mlldError("while expects an executable reference like @processor after the iteration cap.", "@", location());
  }, "peg$f740");
  var peg$f741 = /* @__PURE__ */ __name(function(source) {
    return source;
  }, "peg$f741");
  var peg$f742 = /* @__PURE__ */ __name(function(src) {
    const idNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "log"
    }, location());
    let args = [];
    let rawArgs = [];
    if (src) {
      if (src.type === "literal") {
        args = [
          src.values
        ];
        rawArgs = [
          src.raw?.content || ""
        ];
      } else if (src.type === "variable") {
        const varRef = src.values.identifier && src.values.identifier[0] ? src.values.identifier[0] : null;
        if (varRef) {
          args = [
            varRef
          ];
          rawArgs = [
            "@" + (varRef.identifier || "")
          ];
        }
      } else if (src.type === "exec") {
        args = [
          src.values
        ];
        rawArgs = [
          "@" + (src.raw?.commandName || "")
        ];
      }
    }
    return {
      identifier: [
        idNode
      ],
      args,
      fields: [],
      rawIdentifier: "log",
      rawArgs,
      meta: {
        isBuiltinEffect: true
      }
    };
  }, "peg$f742");
  var peg$f743 = /* @__PURE__ */ __name(function(src) {
    const idNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "show"
    }, location());
    let args = [];
    let rawArgs = [];
    if (src) {
      if (src.type === "literal") {
        args = [
          src.values
        ];
        rawArgs = [
          src.raw?.content || ""
        ];
      } else if (src.type === "variable") {
        const varRef = src.values.identifier && src.values.identifier[0] ? src.values.identifier[0] : null;
        if (varRef) {
          args = [
            varRef
          ];
          rawArgs = [
            "@" + (varRef.identifier || "")
          ];
        }
      } else if (src.type === "exec") {
        args = [
          src.values
        ];
        rawArgs = [
          "@" + (src.raw?.commandName || "")
        ];
      }
    }
    return {
      identifier: [
        idNode
      ],
      args,
      fields: [],
      rawIdentifier: "show",
      rawArgs,
      meta: {
        isBuiltinEffect: true
      }
    };
  }, "peg$f743");
  var peg$f744 = /* @__PURE__ */ __name(function(src, target) {
    const idNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "output"
    }, location());
    let srcArg = null;
    if (src) {
      if (src.type === "literal") {
        srcArg = src.values;
      } else if (src.type === "variable") {
        srcArg = src.values.identifier && src.values.identifier[0] ? src.values.identifier[0] : null;
      } else if (src.type === "exec") {
        srcArg = src.values;
      }
    }
    const args = srcArg ? [
      srcArg,
      target
    ] : [
      target
    ];
    const rawArgs = [];
    return {
      identifier: [
        idNode
      ],
      args,
      fields: [],
      rawIdentifier: "output",
      rawArgs,
      meta: {
        isBuiltinEffect: true,
        hasExplicitSource: !!src
      }
    };
  }, "peg$f744");
  var peg$f745 = /* @__PURE__ */ __name(function(src, target) {
    const idNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "append"
    }, location());
    let srcArg = null;
    if (src) {
      if (src.type === "literal") {
        srcArg = src.values;
      } else if (src.type === "variable") {
        srcArg = src.values.identifier && src.values.identifier[0] ? src.values.identifier[0] : null;
      } else if (src.type === "exec") {
        srcArg = src.values;
      }
    }
    const args = srcArg ? [
      srcArg,
      target
    ] : [
      target
    ];
    return {
      identifier: [
        idNode
      ],
      args,
      fields: [],
      rawIdentifier: "append",
      rawArgs: [],
      meta: {
        isBuiltinEffect: true,
        hasExplicitSource: !!src
      }
    };
  }, "peg$f745");
  var peg$f746 = /* @__PURE__ */ __name(function(target) {
    const idNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: "append"
    }, location());
    return {
      identifier: [
        idNode
      ],
      args: [
        target
      ],
      fields: [],
      rawIdentifier: "append",
      rawArgs: [
        target.raw
      ],
      meta: {
        isBuiltinEffect: true,
        hasExplicitSource: false
      }
    };
  }, "peg$f746");
  var peg$f747 = /* @__PURE__ */ __name(function(parts) {
    const rawPath = helpers_default.reconstructRawString(parts);
    return {
      parts,
      raw: rawPath,
      meta: helpers_default.createPathMetadata(rawPath, parts)
    };
  }, "peg$f747");
  var peg$f748 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("AddPathCore matched path", {
      path
    });
    return {
      type: "addPath",
      values: {
        path: path.values.path || path.values.url
      },
      raw: {
        path: path.raw.path || path.raw.url
      },
      meta: {
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      }
    };
  }, "peg$f748");
  var peg$f749 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("AddTemplateCore matched template", {
      template
    });
    return {
      type: "addTemplate",
      values: {
        content: template.values.content
      },
      raw: {
        content: template.raw.content
      },
      meta: template.meta
    };
  }, "peg$f749");
  var peg$f750 = /* @__PURE__ */ __name(function(varRef) {
    helpers_default.debug("AddVariableCore matched variable", {
      varRef
    });
    return {
      type: "addVariable",
      values: {
        variable: [
          varRef
        ]
      },
      raw: {
        variable: `@${varRef.identifier}`
      },
      meta: {
        hasFieldAccess: !!(varRef.fields && varRef.fields.length > 0)
      }
    };
  }, "peg$f750");
  var peg$f751 = /* @__PURE__ */ __name(function(id, args) {
    helpers_default.debug("AddTemplateInvocationCore matched", {
      id,
      args
    });
    const processedArgs = args || [];
    return {
      type: "addTemplateInvocation",
      values: {
        templateName: [
          helpers_default.createNode(node_type_default.Text, {
            content: id,
            location: location()
          })
        ],
        arguments: processedArgs
      },
      raw: {
        templateName: id,
        arguments: processedArgs.map((arg) => {
          if (arg.type === "string") return `"${arg.value}"`;
          if (arg.type === "variable") return `@${arg.value.identifier}`;
          return arg.value || "";
        })
      },
      meta: {
        argumentCount: processedArgs.length
      }
    };
  }, "peg$f751");
  var peg$f752 = /* @__PURE__ */ __name(function(sectionTitle, path, rename) {
    helpers_default.debug("AddPathSectionCore matched", {
      sectionTitle,
      path,
      rename
    });
    return {
      type: "addPathSection",
      values: {
        sectionTitle,
        path: path.values.path || path.values.url,
        ...rename ? {
          newTitle: rename
        } : {}
      },
      raw: {
        sectionTitle: sectionTitle[0].content,
        path: path.raw.path || path.raw.url,
        ...rename ? {
          newTitle: rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename,
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      }
    };
  }, "peg$f752");
  var peg$f753 = /* @__PURE__ */ __name(function(pathText, sectionText, rename) {
    helpers_default.debug("AddPathSectionCore matched bracketed", {
      pathText,
      sectionText,
      rename
    });
    const rawPath = pathText.trim();
    const pathParts = [
      helpers_default.createNode(node_type_default.Text, {
        content: rawPath,
        location: location()
      })
    ];
    return {
      type: "addPathSection",
      values: {
        sectionTitle: [
          helpers_default.createNode(node_type_default.Text, {
            content: sectionText.trim(),
            location: location()
          })
        ],
        path: pathParts,
        ...rename ? {
          newTitle: rename
        } : {}
      },
      raw: {
        sectionTitle: sectionText.trim(),
        path: rawPath,
        ...rename ? {
          newTitle: rename[0].content
        } : {}
      },
      meta: {
        hasRename: !!rename,
        hasVariables: false,
        isAbsolute: rawPath.startsWith("/"),
        hasExtension: /\.[a-zA-Z0-9]+$/.test(rawPath),
        extension: rawPath.match(/\.([a-zA-Z0-9]+)$/)?.[1] || null
      }
    };
  }, "peg$f753");
  var peg$f754 = /* @__PURE__ */ __name(function(code) {
    helpers_default.debug("CodeCore matched code block", {
      code
    });
    let language = null;
    let codeContent = code.raw;
    const langMatch = code.raw.match(/^\s*\[([a-zA-Z0-9_+#.]+)\s*:\s*([\s\S]*)\]\s*$/);
    if (langMatch) {
      language = langMatch[1];
      codeContent = langMatch[2];
    }
    return {
      type: "code",
      subtype: "codeBlock",
      values: {
        code: code.parts,
        ...language ? {
          language: [
            helpers_default.createNode(node_type_default.Text, {
              content: language,
              location: location()
            })
          ]
        } : {}
      },
      raw: {
        code: codeContent,
        ...language ? {
          language
        } : {}
      },
      meta: {
        hasLanguage: !!language,
        language: language || "text",
        hasVariables: false,
        isMultiLine: codeContent.includes("\n")
      }
    };
  }, "peg$f754");
  var peg$f755 = /* @__PURE__ */ __name(function(language, code) {
    helpers_default.debug("LanguageCodeCore matched", {
      language,
      code
    });
    return {
      type: "code",
      subtype: "languageCode",
      values: {
        language: [
          helpers_default.createNode(node_type_default.Text, {
            content: language,
            location: location()
          })
        ],
        code: code.parts
      },
      raw: {
        language,
        code: code.raw
      },
      meta: {
        hasLanguage: true,
        language,
        hasVariables: false,
        isMultiLine: code.raw.includes("\n")
      }
    };
  }, "peg$f755");
  var peg$f756 = /* @__PURE__ */ __name(function(streamPrefix, language, workingDir, code) {
    helpers_default.debug("RunLanguageCodeCore matched", {
      language,
      code
    });
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: language,
      location: location()
    });
    const codeContent = code.content;
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: codeContent,
      location: location()
    });
    const values = {
      lang: [
        langNode
      ],
      args: [],
      code: [
        codeNode
      ]
    };
    const raw = {
      lang: language,
      args: [],
      code: codeContent
    };
    const meta = {
      isMultiLine: code.isMultiLine || codeContent.includes("\n"),
      language,
      hasVariables: false
      // Code blocks don't support variable interpolation
    };
    if (workingDir) {
      values.workingDir = workingDir.parts;
      raw.workingDir = workingDir.raw;
      meta.workingDirMeta = workingDir.meta;
      meta.hasWorkingDir = true;
    }
    const withClause = streamPrefix ? {
      stream: true
    } : void 0;
    return {
      type: "runCode",
      values: withClause ? {
        ...values,
        withClause
      } : values,
      raw: withClause ? {
        ...raw,
        withClause
      } : raw,
      meta: withClause ? {
        ...meta,
        withClause
      } : meta,
      location: location()
    };
  }, "peg$f756");
  var peg$f757 = /* @__PURE__ */ __name(function(streamPrefix, language, workingDir, argList, code) {
    helpers_default.debug("RunLanguageCodeWithArgs matched", {
      language,
      argList,
      code
    });
    const args = argList.arguments || [];
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: language,
      location: location()
    });
    const codeContent = code.content;
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: codeContent,
      location: location()
    });
    const values = {
      lang: [
        langNode
      ],
      args,
      code: [
        codeNode
      ]
    };
    const raw = {
      lang: language,
      args: args ? args.map((arg) => {
        if (arg.type === node_type_default.VariableReference) {
          return "@" + arg.identifier;
        }
        if (arg.type === node_type_default.Argument && arg.value) {
          if (arg.value.type === node_type_default.Text) return arg.value.content;
          if (arg.value.type === node_type_default.VariableReference) return "@" + arg.value.identifier;
        }
        return arg.identifier || "";
      }) : [],
      code: codeContent
    };
    const meta = {
      isMultiLine: code.isMultiLine || codeContent.includes("\n"),
      language,
      hasVariables: false
      // Code blocks don't support variable interpolation
    };
    if (workingDir) {
      values.workingDir = workingDir.parts;
      raw.workingDir = workingDir.raw;
      meta.workingDirMeta = workingDir.meta;
      meta.hasWorkingDir = true;
    }
    const withClause = streamPrefix ? {
      stream: true
    } : void 0;
    return {
      type: "runCode",
      values: withClause ? {
        ...values,
        withClause
      } : values,
      raw: withClause ? {
        ...raw,
        withClause
      } : raw,
      meta: withClause ? {
        ...meta,
        withClause
      } : meta,
      location: location()
    };
  }, "peg$f757");
  var peg$f758 = /* @__PURE__ */ __name(function(lang) {
    return lang;
  }, "peg$f758");
  var peg$f759 = /* @__PURE__ */ __name(function(language) {
    return language;
  }, "peg$f759");
  var peg$f760 = /* @__PURE__ */ __name(function(path) {
    helpers_default.debug("PathCore matched path", {
      path
    });
    return {
      type: "path",
      subtype: "filesystemPath",
      values: {
        path: path.values.path || path.values.url
      },
      raw: {
        path: path.raw.path || path.raw.url
      },
      meta: path.meta
    };
  }, "peg$f760");
  var peg$f761 = /* @__PURE__ */ __name(function(path, section) {
    helpers_default.debug("SectionPathCore matched", {
      path,
      section
    });
    return {
      type: "path",
      subtype: "sectionPath",
      values: {
        path: path.values.path || path.values.url,
        section: [
          helpers_default.createNode(node_type_default.Text, {
            content: section,
            location: location()
          })
        ]
      },
      raw: {
        path: path.raw.path || path.raw.url,
        section
      },
      meta: {
        ...path.meta,
        hasSection: true
      }
    };
  }, "peg$f761");
  var peg$f762 = /* @__PURE__ */ __name(function(protocol, rest) {
    const fullUrl = `${protocol}:${rest}`;
    helpers_default.debug("URLPathCore matched", {
      fullUrl
    });
    return {
      type: "path",
      subtype: "urlPath",
      values: {
        url: [
          helpers_default.createNode(node_type_default.Text, {
            content: fullUrl,
            location: location()
          })
        ],
        protocol: [
          helpers_default.createNode(node_type_default.Text, {
            content: protocol,
            location: location()
          })
        ]
      },
      raw: {
        url: fullUrl,
        protocol
      },
      meta: {
        isUrl: true,
        protocol
      }
    };
  }, "peg$f762");
  var peg$f763 = /* @__PURE__ */ __name(function(proto) {
    return proto;
  }, "peg$f763");
  var peg$f764 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f764");
  var peg$f765 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("RunExecCore matched unified command reference", {
      commandRef
    });
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      raw = {
        identifier: commandRef.commandRef.name,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0
      };
    }
    return {
      type: "runExec",
      values,
      raw,
      meta
    };
  }, "peg$f765");
  var peg$f766 = /* @__PURE__ */ __name(function(section, path, rename) {
    const result = {
      section,
      path: path.values.path || path.values.url,
      pathSubtype: path.subtype
    };
    if (rename) {
      result.rename = rename;
    }
    result.meta = {
      hasRename: !!rename,
      pathSubtype: path.subtype
    };
    return result;
  }, "peg$f766");
  var peg$f767 = /* @__PURE__ */ __name(function(template) {
    helpers_default.debug("TemplateCore matched template", {
      template
    });
    template.parts.some((part) => part && part.type === node_type_default.VariableReference);
    const isTemplateContent = template.wrapperType === "doubleBracket" || template.wrapperType === "doubleColon" || template.wrapperType === "tripleColon";
    return {
      type: "template",
      subtype: "standardTemplate",
      values: {
        content: template.parts
      },
      raw: {
        content: template.raw
      },
      meta: {
        ...helpers_default.createTemplateMetadata(template.parts, template.wrapperType),
        wrapperType: template.wrapperType,
        isTemplateContent
      }
    };
  }, "peg$f767");
  var peg$f768 = /* @__PURE__ */ __name(function(template, options2) {
    helpers_default.debug("RichTemplateCore matched rich template", {
      template,
      options: options2
    });
    return {
      type: "template",
      subtype: "richTemplate",
      values: {
        content: template.parts,
        ...options2 ? {
          options: options2
        } : {}
      },
      raw: {
        content: template.raw,
        ...options2 ? {
          options: options2.raw
        } : {}
      },
      meta: {
        ...helpers_default.createTemplateMetadata(template.parts, template.wrapperType),
        hasOptions: !!options2
      }
    };
  }, "peg$f768");
  var peg$f769 = /* @__PURE__ */ __name(function(options2) {
    return options2;
  }, "peg$f769");
  var peg$f770 = /* @__PURE__ */ __name(function(first, option) {
    return option;
  }, "peg$f770");
  var peg$f771 = /* @__PURE__ */ __name(function(first, rest) {
    const allOptions = [
      first,
      ...rest
    ];
    const optionsObj = allOptions.reduce((acc, opt) => {
      acc[opt.key] = opt.value;
      return acc;
    }, {});
    return {
      options: optionsObj,
      raw: allOptions.map((opt) => `${opt.key}=${opt.value}`).join(",")
    };
  }, "peg$f771");
  var peg$f772 = /* @__PURE__ */ __name(function(key, value) {
    return {
      key,
      value
    };
  }, "peg$f772");
  var peg$f773 = /* @__PURE__ */ __name(function(labelsSegment, id, meta, params, content, withClause, ending) {
    helpers_default.debug("SlashExe matched with ExeRHSContent", {
      id,
      params,
      content
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const tail = ending?.tail;
    const parallelCaps = ending?.parallel;
    const comment = ending?.comment;
    const identifierNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id
    }, location());
    const processedParams = params || [];
    if (content.type === "WhenExpression") {
      const values2 = {
        identifier: [
          identifierNode
        ],
        params: processedParams,
        content: [
          content
        ]
      };
      const raw2 = {
        identifier: id,
        params: processedParams.map((p) => p.name),
        content: "when: [...]"
        // Simplified representation
      };
      const metaObj2 = {
        parameterCount: processedParams.length,
        isWhenExpression: true,
        ...meta ? {
          riskLevel: meta
        } : {}
      };
      if (meta) {
        values2.metadata = [
          helpers_default.createNode(node_type_default.Text, {
            content: meta,
            location: location()
          })
        ];
        raw2.metadata = meta;
        metaObj2.metadata = {
          type: meta
        };
      }
      const mergedWithClause2 = (() => {
        let combined = content.values?.withClause ? {
          ...content.values.withClause
        } : void 0;
        if (withClause) {
          combined = {
            ...combined || {},
            ...withClause
          };
        }
        if (tail) {
          combined = {
            ...combined || {},
            ...tail
          };
        }
        if (parallelCaps && (combined?.pipeline || tail?.pipeline)) {
          combined = {
            ...combined || {},
            ...parallelCaps
          };
        }
        return combined;
      })();
      if (mergedWithClause2 && Object.keys(mergedWithClause2).length > 0) {
        values2.withClause = mergedWithClause2;
        raw2.withClause = mergedWithClause2;
        metaObj2.withClause = mergedWithClause2;
      }
      const pipelineStages2 = mergedWithClause2?.pipeline || withClause?.pipeline || content.values?.withClause?.pipeline;
      if (pipelineStages2 && !raw2.pipeline) {
        raw2.pipeline = pipelineStages2.map((stage) => Array.isArray(stage) ? `[${stage.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(", ")}]` : `@${stage.rawIdentifier || stage.name || stage}`).join(" | ");
        metaObj2.hasPipeline = true;
      }
      if (comment) {
        metaObj2.comment = comment;
      }
      if (labelInfo) {
        values2.securityLabels = labelInfo.labels;
        raw2.securityLabels = labelInfo.raw;
        metaObj2.securityLabels = labelInfo.labels;
      }
      return helpers_default.createStructuredDirective(directive_kind_default.exe, "exeWhen", values2, raw2, metaObj2, location(), "when");
    }
    if (content.type === "ForExpression") {
      const values2 = {
        identifier: [
          identifierNode
        ],
        params: processedParams,
        content: [
          content
        ]
      };
      const raw2 = {
        identifier: id,
        params: processedParams.map((p) => p.name),
        content: "for ... => ..."
        // Simplified representation
      };
      const metaObj2 = {
        parameterCount: processedParams.length,
        isForExpression: true,
        ...meta ? {
          riskLevel: meta
        } : {}
      };
      if (meta) {
        values2.metadata = [
          helpers_default.createNode(node_type_default.Text, {
            content: meta,
            location: location()
          })
        ];
        raw2.metadata = meta;
        metaObj2.metadata = {
          type: meta
        };
      }
      const mergedWithClause2 = (() => {
        let combined = content.values?.withClause ? {
          ...content.values.withClause
        } : void 0;
        if (withClause) {
          combined = {
            ...combined || {},
            ...withClause
          };
        }
        if (tail) {
          combined = {
            ...combined || {},
            ...tail
          };
        }
        if (parallelCaps && (combined?.pipeline || tail?.pipeline)) {
          combined = {
            ...combined || {},
            ...parallelCaps
          };
        }
        return combined;
      })();
      if (mergedWithClause2 && Object.keys(mergedWithClause2).length > 0) {
        values2.withClause = mergedWithClause2;
        raw2.withClause = mergedWithClause2;
        metaObj2.withClause = mergedWithClause2;
      }
      const pipelineStages2 = mergedWithClause2?.pipeline || withClause?.pipeline || content.values?.withClause?.pipeline;
      if (pipelineStages2 && !raw2.pipeline) {
        raw2.pipeline = pipelineStages2.map((stage) => Array.isArray(stage) ? `[${stage.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(", ")}]` : `@${stage.rawIdentifier || stage.name || stage}`).join(" | ");
        metaObj2.hasPipeline = true;
      }
      if (comment) {
        metaObj2.comment = comment;
      }
      if (labelInfo) {
        values2.securityLabels = labelInfo.labels;
        raw2.securityLabels = labelInfo.raw;
        metaObj2.securityLabels = labelInfo.labels;
      }
      return helpers_default.createStructuredDirective(directive_kind_default.exe, "exeFor", values2, raw2, metaObj2, location(), "for");
    }
    if (content.type === "ExeBlock") {
      const statements = content.values?.statements || [];
      const returnStmt = content.values?.return;
      const values2 = {
        identifier: [
          identifierNode
        ],
        params: processedParams,
        statements,
        ...returnStmt ? {
          return: returnStmt
        } : {}
      };
      const raw2 = {
        identifier: id,
        params: processedParams.map((p) => p.name),
        statements: content.raw?.statements || helpers_default.reconstructRawString(statements),
        hasReturn: Boolean(returnStmt)
      };
      const metaObj2 = {
        parameterCount: processedParams.length,
        statementCount: content.meta?.statementCount ?? statements.length,
        hasReturn: Boolean(returnStmt),
        ...meta ? {
          riskLevel: meta
        } : {}
      };
      if (meta) {
        values2.metadata = [
          helpers_default.createNode(node_type_default.Text, {
            content: meta,
            location: location()
          })
        ];
        raw2.metadata = meta;
        metaObj2.metadata = {
          type: meta
        };
      }
      const mergedWithClause2 = (() => {
        let combined = withClause ? {
          ...withClause
        } : void 0;
        if (tail) {
          combined = {
            ...combined || {},
            ...tail
          };
        }
        if (parallelCaps && (combined?.pipeline || tail?.pipeline)) {
          combined = {
            ...combined || {},
            ...parallelCaps
          };
        }
        return combined;
      })();
      if (mergedWithClause2 && Object.keys(mergedWithClause2).length > 0) {
        values2.withClause = mergedWithClause2;
        raw2.withClause = mergedWithClause2;
        metaObj2.withClause = mergedWithClause2;
      }
      const pipelineStages2 = mergedWithClause2?.pipeline || withClause?.pipeline;
      if (pipelineStages2 && !raw2.pipeline) {
        raw2.pipeline = pipelineStages2.map((stage) => Array.isArray(stage) ? `[${stage.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(", ")}]` : `@${stage.rawIdentifier || stage.name || stage}`).join(" | ");
        metaObj2.hasPipeline = true;
      }
      if (comment) {
        metaObj2.comment = comment;
      }
      if (labelInfo) {
        values2.securityLabels = labelInfo.labels;
        raw2.securityLabels = labelInfo.raw;
        metaObj2.securityLabels = labelInfo.labels;
      }
      return helpers_default.createStructuredDirective(directive_kind_default.exe, "exeBlock", values2, raw2, metaObj2, location(), "block");
    }
    const subtype = content.subtype;
    const source = content.source;
    const values = {
      identifier: [
        identifierNode
      ],
      ...subtype !== "environment" ? {
        params: processedParams
      } : {},
      ...content.values
    };
    const raw = {
      identifier: id,
      ...subtype !== "environment" ? {
        params: processedParams.map((p) => p.name)
      } : {},
      ...content.raw
    };
    const metaObj = {
      ...subtype !== "environment" ? {
        parameterCount: processedParams.length
      } : {},
      ...content.meta,
      ...meta ? {
        riskLevel: meta
      } : {}
    };
    if (meta) {
      values.metadata = [
        helpers_default.createNode(node_type_default.Text, {
          content: meta,
          location: location()
        })
      ];
      raw.metadata = meta;
      metaObj.metadata = {
        type: meta
      };
    }
    const mergedWithClause = (() => {
      let combined = content.values?.withClause ? {
        ...content.values.withClause
      } : void 0;
      if (withClause) {
        combined = {
          ...combined || {},
          ...withClause
        };
      }
      if (tail) {
        combined = {
          ...combined || {},
          ...tail
        };
      }
      if (parallelCaps && (combined?.pipeline || tail?.pipeline)) {
        combined = {
          ...combined || {},
          ...parallelCaps
        };
      }
      return combined;
    })();
    if (mergedWithClause && Object.keys(mergedWithClause).length > 0) {
      values.withClause = mergedWithClause;
      raw.withClause = mergedWithClause;
      metaObj.withClause = mergedWithClause;
    }
    const pipelineStages = mergedWithClause?.pipeline || withClause?.pipeline || content.values?.withClause?.pipeline;
    if (pipelineStages && !raw.pipeline) {
      raw.pipeline = pipelineStages.map((stage) => Array.isArray(stage) ? `[${stage.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(", ")}]` : `@${stage.rawIdentifier || stage.name || stage}`).join(" | ");
      metaObj.hasPipeline = true;
    }
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      metaObj.securityLabels = labelInfo.labels;
    }
    if (comment) {
      metaObj.comment = comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.exe, subtype, values, raw, metaObj, location(), source);
  }, "peg$f773");
  var peg$f774 = /* @__PURE__ */ __name(function(id, content, withClause, ending) {
    if (content.subtype !== "environment") {
      helpers_default.mlldError("Invalid /exe syntax. Variable names must start with '@'. Use: /exe @" + id + " = ...", "@", location());
    }
    helpers_default.debug("SlashExe matched environment declaration (no @)", {
      id,
      content
    });
    const tail = ending?.tail;
    const parallelCaps = ending?.parallel;
    const comment = ending?.comment;
    const identifierNode = helpers_default.createVariableReferenceNode("varIdentifier", {
      identifier: id
    }, location());
    const values = {
      identifier: [
        identifierNode
      ],
      ...content.values
    };
    const raw = {
      identifier: id,
      ...content.raw
    };
    const metaObj = {
      ...content.meta
    };
    const mergedWithClause = (() => {
      let combined = content.values?.withClause ? {
        ...content.values.withClause
      } : void 0;
      if (withClause) {
        combined = {
          ...combined || {},
          ...withClause
        };
      }
      if (tail) {
        combined = {
          ...combined || {},
          ...tail
        };
      }
      if (parallelCaps && (combined?.pipeline || tail?.pipeline)) {
        combined = {
          ...combined || {},
          ...parallelCaps
        };
      }
      return combined;
    })();
    if (mergedWithClause && Object.keys(mergedWithClause).length > 0) {
      values.withClause = mergedWithClause;
      raw.withClause = mergedWithClause;
      metaObj.withClause = mergedWithClause;
    }
    const pipelineStages = mergedWithClause?.pipeline || withClause?.pipeline || content.values?.withClause?.pipeline;
    if (pipelineStages && !raw.pipeline) {
      raw.pipeline = pipelineStages.map((stage) => Array.isArray(stage) ? `[${stage.map((cmd) => `@${cmd.rawIdentifier || cmd.name || cmd}`).join(", ")}]` : `@${stage.rawIdentifier || stage.name || stage}`).join(" | ");
      metaObj.hasPipeline = true;
    }
    if (comment) {
      metaObj.comment = comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.exe, "environment", values, raw, metaObj, location(), "environment");
  }, "peg$f774");
  var peg$f775 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /exe syntax. Variable names must start with '@'. Use: /exe @" + id + " = ...", "@", location());
  }, "peg$f775");
  var peg$f776 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /exe syntax. Expected '=' after parameters. Use: /exe @" + id + "(params) = ...", "=", location());
  }, "peg$f776");
  var peg$f777 = /* @__PURE__ */ __name(function(id) {
    let i = peg$currPos;
    let parenDepth = 1;
    while (i < input.length && parenDepth > 0) {
      if (input[i] === "(") parenDepth++;
      else if (input[i] === ")") parenDepth--;
      else if (input[i] === "\n" && parenDepth > 0) return true;
      i++;
    }
    return parenDepth > 0;
  }, "peg$f777");
  var peg$f778 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed parameters in /exe directive. Expected ')' to close the parameter list.", ")", location());
  }, "peg$f778");
  var peg$f779 = /* @__PURE__ */ __name(function(id, params) {
    helpers_default.mlldError("Missing value in /exe directive. Expected command, code, template, or reference after '='.", "value", location());
  }, "peg$f779");
  var peg$f780 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /exe syntax. Examples:\n  /exe @echo(msg) = cmd {echo @msg}\n  /exe @greet(name) = `Hello @name!`\n  /exe @calc(x) = js {return @x * 2}\n  /exe @alias() = @otherCommand\n  /exe @msg() = "a string value"', "@", location());
  }, "peg$f780");
  var peg$f781 = /* @__PURE__ */ __name(function(field) {
    return field;
  }, "peg$f781");
  var peg$f782 = /* @__PURE__ */ __name(function(params) {
    return params || [];
  }, "peg$f782");
  var peg$f783 = /* @__PURE__ */ __name(function(first, param) {
    return param;
  }, "peg$f783");
  var peg$f784 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f784");
  var peg$f785 = /* @__PURE__ */ __name(function(paramName) {
    return helpers_default.createNode(node_type_default.Parameter, {
      name: paramName,
      location: location()
    });
  }, "peg$f785");
  var peg$f786 = /* @__PURE__ */ __name(function(members, comment) {
    const exports = members.map((member) => {
      const nodeLocation = member.identifier.location || location();
      return helpers_default.createVariableReferenceNode("identifier", {
        identifier: member.identifier.name,
        ...member.alias ? {
          alias: member.alias
        } : {}
      }, nodeLocation);
    });
    const rawExports = members.map((member) => member.alias ? `${member.identifier.raw} as ${member.alias}` : member.identifier.raw).join(", ");
    const meta = {
      exportCount: exports.length,
      isWildcard: false,
      ...comment ? {
        comment
      } : {}
    };
    return helpers_default.createStructuredDirective("export", "exportSelected", {
      exports
    }, {
      exports: rawExports
    }, meta, location());
  }, "peg$f786");
  var peg$f787 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing export list in /export directive. Expected: /export { name, other }", String.fromCharCode(123), location());
  }, "peg$f787");
  var peg$f788 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /export syntax. Expected: /export { name, other }", String.fromCharCode(123), location());
  }, "peg$f788");
  var peg$f789 = /* @__PURE__ */ __name(function(first, member) {
    return member;
  }, "peg$f789");
  var peg$f790 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f790");
  var peg$f791 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f791");
  var peg$f792 = /* @__PURE__ */ __name(function(identifier, aliasName) {
    return {
      name: aliasName,
      location: location()
    };
  }, "peg$f792");
  var peg$f793 = /* @__PURE__ */ __name(function(identifier, alias) {
    return {
      identifier,
      alias: alias ? alias.name : null
    };
  }, "peg$f793");
  var peg$f794 = /* @__PURE__ */ __name(function() {
    return {
      name: "*",
      raw: "*",
      location: location()
    };
  }, "peg$f794");
  var peg$f795 = /* @__PURE__ */ __name(function(prefix, name) {
    const raw = prefix ? `@${name}` : name;
    return {
      name,
      raw,
      location: location()
    };
  }, "peg$f795");
  var peg$f796 = /* @__PURE__ */ __name(function() {
    return {
      type: "test",
      message: "Simple for matched!"
    };
  }, "peg$f796");
  var peg$f797 = /* @__PURE__ */ __name(function(opts, pattern, actionVariant, ending) {
    helpers_default.debug("SlashFor matched", {
      pattern,
      action: actionVariant,
      ending
    });
    const meta = {
      hasVariables: true,
      actionType: actionVariant.actionType
    };
    if (actionVariant.blockMeta) {
      meta.block = actionVariant.blockMeta;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective("for", "for", {
      variable: [
        pattern.variable
      ],
      source: pattern.source,
      action: actionVariant.action,
      forOptions: opts || void 0
    }, {
      variable: helpers_default.reconstructRawString(pattern.variable),
      source: helpers_default.reconstructRawString(pattern.source),
      action: actionVariant.raw
    }, meta, location());
  }, "peg$f797");
  var peg$f798 = /* @__PURE__ */ __name(function(opts, pattern) {
    helpers_default.mlldError("Unterminated block. Expected ']' to close block.", "]", location());
  }, "peg$f798");
  var peg$f799 = /* @__PURE__ */ __name(function(pattern) {
    helpers_default.mlldError("Missing '=>' in /for directive. Expected: /for @var in @collection => action", "=>", location());
  }, "peg$f799");
  var peg$f800 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing 'in' in /for directive. Expected: /for @var in @collection => action", "in", location());
  }, "peg$f800");
  var peg$f801 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /for syntax. Expected: /for @var in @collection => action", "@", location());
  }, "peg$f801");
  var peg$f802 = /* @__PURE__ */ __name(function(name) {
    return {
      name
    };
  }, "peg$f802");
  var peg$f803 = /* @__PURE__ */ __name(function(nameTiming, timing, filter, guardBody, ending) {
    helpers_default.debug("SlashGuard matched (new syntax - timing required)", {
      name: nameTiming?.name,
      timing,
      filter,
      guardBody
    });
    const guardTiming = timing;
    const values = {
      filter: [
        filter.node
      ],
      guard: [
        guardBody.node
      ]
    };
    if (nameTiming?.name) {
      values.name = [
        nameTiming.name
      ];
    }
    const raw = {
      filter: filter.raw
    };
    if (nameTiming?.name) {
      raw.name = `@${nameTiming.name.identifier}`;
    }
    raw.timing = guardTiming;
    if (guardBody.modifier && guardBody.modifier !== "default") {
      raw.modifier = guardBody.modifier;
    }
    const meta = {
      filterKind: filter.node.filterKind,
      filterValue: filter.node.value,
      scope: filter.node.scope,
      modifier: guardBody.modifier,
      ruleCount: guardBody.node.rules.length,
      hasName: Boolean(nameTiming?.name),
      timing: guardTiming,
      ...ending?.comment ? {
        comment: ending.comment
      } : {}
    };
    return helpers_default.createStructuredDirective(directive_kind_default.guard, "guard", values, raw, meta, location(), "guard");
  }, "peg$f803");
  var peg$f804 = /* @__PURE__ */ __name(function(timing, name, filter, guardBody, ending) {
    helpers_default.debug("SlashGuard matched (old syntax with for)", {
      timing,
      name,
      filter,
      guardBody
    });
    const guardTiming = timing ?? "before";
    const values = {
      filter: [
        filter.node
      ],
      guard: [
        guardBody.node
      ]
    };
    if (name) {
      values.name = [
        name
      ];
    }
    const raw = {
      filter: filter.raw
    };
    if (name) {
      raw.name = `@${name.identifier}`;
    }
    raw.timing = guardTiming;
    if (guardBody.modifier && guardBody.modifier !== "default") {
      raw.modifier = guardBody.modifier;
    }
    const meta = {
      filterKind: filter.node.filterKind,
      filterValue: filter.node.value,
      scope: filter.node.scope,
      modifier: guardBody.modifier,
      ruleCount: guardBody.node.rules.length,
      hasName: Boolean(name),
      timing: guardTiming,
      ...ending?.comment ? {
        comment: ending.comment
      } : {}
    };
    return helpers_default.createStructuredDirective(directive_kind_default.guard, "guard", values, raw, meta, location(), "guard");
  }, "peg$f804");
  var peg$f805 = /* @__PURE__ */ __name(function() {
    return peg$FAILED;
  }, "peg$f805");
  var peg$f806 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
  }, "peg$f806");
  var peg$f807 = /* @__PURE__ */ __name(function() {
    return "before";
  }, "peg$f807");
  var peg$f808 = /* @__PURE__ */ __name(function() {
    return "after";
  }, "peg$f808");
  var peg$f809 = /* @__PURE__ */ __name(function() {
    return "always";
  }, "peg$f809");
  var peg$f810 = /* @__PURE__ */ __name(function(filter) {
    return filter;
  }, "peg$f810");
  var peg$f811 = /* @__PURE__ */ __name(function(filter) {
    return filter;
  }, "peg$f811");
  var peg$f812 = /* @__PURE__ */ __name(function(identifier) {
    const raw = `op:${identifier}`;
    const node = helpers_default.createNode("GuardFilter", {
      filterKind: "operation",
      scope: "perOperation",
      value: identifier,
      raw,
      location: location()
    });
    return {
      node,
      raw
    };
  }, "peg$f812");
  var peg$f813 = /* @__PURE__ */ __name(function(label) {
    const node = helpers_default.createNode("GuardFilter", {
      filterKind: "data",
      scope: "perInput",
      value: label,
      raw: label,
      location: location()
    });
    return {
      node,
      raw: label
    };
  }, "peg$f813");
  var peg$f814 = /* @__PURE__ */ __name(function(first, part) {
    return part;
  }, "peg$f814");
  var peg$f815 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ].join(".");
  }, "peg$f815");
  var peg$f816 = /* @__PURE__ */ __name(function(modifier, rules) {
    const modifierText = modifier ? modifier.content : "default";
    const blockNode = helpers_default.createNode("GuardBlock", {
      modifier: modifierText,
      rules,
      location: location()
    });
    return {
      node: blockNode,
      modifier: modifierText
    };
  }, "peg$f816");
  var peg$f817 = /* @__PURE__ */ __name(function(modifier) {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "GuardRuleList",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f817");
  var peg$f818 = /* @__PURE__ */ __name(function(modifier) {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f818");
  var peg$f819 = /* @__PURE__ */ __name(function(modifier) {
    helpers_default.mlldError(`Unterminated guard block. Expected ']' to close the rule list.`, "]", location());
  }, "peg$f819");
  var peg$f820 = /* @__PURE__ */ __name(function(leadingComments, first, entry) {
    return entry;
  }, "peg$f820");
  var peg$f821 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const entries = [
      first,
      ...rest
    ];
    if (leadingComments.length > 0 && entries.length > 0) {
      const firstEntry = entries[0];
      if (firstEntry && typeof firstEntry === "object") {
        const existingMeta = firstEntry.meta || {};
        entries[0] = {
          ...firstEntry,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return entries;
  }, "peg$f821");
  var peg$f822 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f822");
  var peg$f823 = /* @__PURE__ */ __name(function(action) {
    return helpers_default.createNode("GuardRule", {
      isWildcard: true,
      action,
      location: location()
    });
  }, "peg$f823");
  var peg$f824 = /* @__PURE__ */ __name(function(condition, action) {
    return helpers_default.createNode("GuardRule", {
      condition,
      action,
      location: location()
    });
  }, "peg$f824");
  var peg$f825 = /* @__PURE__ */ __name(function(value) {
    return helpers_default.createNode("GuardAction", {
      decision: "allow",
      value: value ? value.nodes : void 0,
      location: location()
    });
  }, "peg$f825");
  var peg$f826 = /* @__PURE__ */ __name(function(message) {
    if (!message) {
      helpers_default.mlldError('Guard deny actions require a quoted reason: deny "reason"', '"reason"', location());
    }
    return helpers_default.createNode("GuardAction", {
      decision: "deny",
      message: message.value,
      rawMessage: message.raw,
      location: location()
    });
  }, "peg$f826");
  var peg$f827 = /* @__PURE__ */ __name(function(message) {
    if (!message) {
      helpers_default.mlldError('Guard retry actions require a hint: retry "hint"', '"hint"', location());
    }
    return helpers_default.createNode("GuardAction", {
      decision: "retry",
      message: message.value,
      rawMessage: message.raw,
      location: location()
    });
  }, "peg$f827");
  var peg$f828 = /* @__PURE__ */ __name(function(value) {
    const nodes = Array.isArray(value) ? value : [
      value
    ];
    return {
      nodes,
      raw: text().trim()
    };
  }, "peg$f828");
  var peg$f829 = /* @__PURE__ */ __name(function(msg) {
    return {
      value: msg,
      raw: text().trim()
    };
  }, "peg$f829");
  var peg$f830 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    while (i < input.length && depth > 0) {
      if (input[i] === "{") depth++;
      else if (input[i] === "}") depth--;
      else if (input[i] === "\n" && depth > 0) return true;
      i++;
    }
    return depth > 0;
  }, "peg$f830");
  var peg$f831 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed import list in /import directive. Expected closing brace for import list.", String.fromCharCode(125), location());
  }, "peg$f831");
  var peg$f832 = /* @__PURE__ */ __name(function() {
    return helpers_default.isMissingFromKeyword(input, peg$currPos);
  }, "peg$f832");
  var peg$f833 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing 'from' keyword in /import directive. Expected: /import { items } from "path"`, "from", location());
  }, "peg$f833");
  var peg$f834 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing path in /import directive. Expected a path after 'from' keyword.", "path", location());
  }, "peg$f834");
  var peg$f835 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f835");
  var peg$f836 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted path in /import directive. Expected closing double quote (").', '"', location());
  }, "peg$f836");
  var peg$f837 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, "'");
  }, "peg$f837");
  var peg$f838 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed quoted path in /import directive. Expected closing single quote.", "'", location());
  }, "peg$f838");
  var peg$f839 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f839");
  var peg$f840 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed path bracket in /import directive. Expected closing bracket for path.", "]", location());
  }, "peg$f840");
  var peg$f841 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Wildcard imports must have an alias. Use: /import { * as @name } from "path"', "as", location());
  }, "peg$f841");
  var peg$f842 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /import directive. Expected import list or path.", String.fromCharCode(123), location());
  }, "peg$f842");
  var peg$f843 = /* @__PURE__ */ __name(function() {
    input[peg$currPos];
    const rest = input.substring(peg$currPos);
    const validStarts = [
      "INPUT",
      "TIME",
      "stdin",
      "payload",
      "state"
    ];
    const isValidSpecial = validStarts.some((s) => rest.toUpperCase().startsWith(s.toUpperCase()));
    const isValidModule = /^[a-zA-Z_][a-zA-Z0-9_-]*\//.test(rest);
    return !isValidSpecial && !isValidModule;
  }, "peg$f843");
  var peg$f844 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid import source. Expected @input, @time, @payload, @state, module reference (@author/module), or configured resolver path", "INPUT", location());
  }, "peg$f844");
  var peg$f845 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f845");
  var peg$f846 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed path bracket in /import shorthand. Expected closing bracket.", "]", location());
  }, "peg$f846");
  var peg$f847 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /import syntax. Expected: /import "path", /import @module, or /import { items } from "path"', '"', location());
  }, "peg$f847");
  var peg$f848 = /* @__PURE__ */ __name(function(typeInfo, labelsSegment, path, invalidAlias) {
    helpers_default.mlldError(`Import aliases must include '@'. Use 'as @${invalidAlias}'`, "@", location());
  }, "peg$f848");
  var peg$f849 = /* @__PURE__ */ __name(function(typeInfo, labelsSegment, fromSeg, path, name, params) {
    return {
      alias: name,
      params
    };
  }, "peg$f849");
  var peg$f850 = /* @__PURE__ */ __name(function(typeInfo, labelsSegment, fromSeg, path, aliasSegment, tail, comment) {
    helpers_default.debug("SlashImportShorthand matched", {
      path,
      alias: aliasSegment?.alias,
      tail,
      importType: typeInfo?.type
    });
    if (aliasSegment?.params && (!typeInfo || typeInfo.type !== "templates")) {
      helpers_default.mlldError("Import parameters are only supported with 'templates' imports", "templates", location());
    }
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    let namespace = aliasSegment?.alias;
    const templateParams = aliasSegment?.params || [];
    if (typeInfo?.type === "templates" && !namespace) {
      helpers_default.mlldError('Templates import requires an alias with parameters. Use: /import templates from "dir" as @name(param1, param2)', "@", location());
    }
    if (!namespace) {
      const pathStr = path.raw?.path || path.raw?.module || "";
      if (pathStr.startsWith("@") && pathStr.includes("/")) {
        const parts = pathStr.split("/");
        namespace = parts[parts.length - 1].split("@")[0];
      } else if (pathStr.includes("/")) {
        const basename = pathStr.split("/").pop() || "";
        namespace = basename.replace(/\.(mlld|mld|md|json)$/, "").replace(/[^a-zA-Z0-9_]/g, "_");
      } else {
        namespace = pathStr.replace(/\.(mlld|mld|md|json)$/, "").replace(/[^a-zA-Z0-9_]/g, "_");
      }
    }
    const values = {
      namespace: [
        helpers_default.createNode(node_type_default.Text, {
          content: namespace,
          location: location()
        })
      ],
      templateParams,
      path: path.values?.path || path.values?.module || (typeof path === "string" ? [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ] : path)
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (typeInfo) {
      values.importType = typeInfo.type;
      if (typeInfo.cachedDuration) {
        values.cachedDuration = typeInfo.cachedDuration;
      }
    }
    if (tail) {
      values.withClause = tail;
    }
    const raw = {
      namespace: aliasSegment?.alias ? `@${namespace}` : namespace,
      templateParams: templateParams.length > 0 ? templateParams.map((p) => p.name) : void 0,
      path: path.raw?.path || path.raw?.module || path
      // Handle string paths like @input
    };
    if (typeInfo) {
      raw.importType = typeInfo.raw;
    }
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    const meta = {
      path: path.meta || {}
    };
    if (typeInfo) {
      meta.importType = typeInfo.type;
    }
    if (templateParams && templateParams.length > 0) {
      meta.templateParams = templateParams.map((p) => p.name);
    }
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (comment) {
      meta.comment = comment;
    }
    return helpers_default.createStructuredDirective("import", "importNamespace", values, raw, meta, location(), "path");
  }, "peg$f850");
  var peg$f851 = /* @__PURE__ */ __name(function(alias, path, tail, comment) {
    helpers_default.debug("SlashImportPolicy matched", {
      alias,
      path,
      tail
    });
    const namespace = [
      helpers_default.createNode(node_type_default.Text, {
        content: alias,
        location: location()
      })
    ];
    const values = {
      namespace,
      path: path.values?.path || path.values?.module || path.values?.url || (typeof path === "string" ? [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ] : path),
      imports: [
        helpers_default.createVariableReferenceNode("import", {
          identifier: "*",
          alias
        }, location())
      ],
      importType: "policy"
    };
    if (tail) {
      values.withClause = tail;
    }
    const raw = {
      imports: `* as @${alias}`,
      path: path.raw?.path || path.raw?.module || path.raw?.url || path,
      importType: "policy"
    };
    const meta = {
      path: path.meta || {
        isSpecial: typeof path === "string",
        pathSubtype: path.subtype
      },
      importType: "policy"
    };
    if (comment) {
      meta.comment = comment;
    }
    return helpers_default.createStructuredDirective("import", "importPolicy", values, raw, meta, location(), "path");
  }, "peg$f851");
  var peg$f852 = /* @__PURE__ */ __name(function(typeInfo, labelsSegment, imports, path, tail, comment) {
    helpers_default.debug("SlashImport matched", {
      imports,
      path,
      tail,
      importType: typeInfo?.type
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const importsRaw = imports.map((item) => {
      if (typeof item === "string") {
        return item;
      } else if (item.original) {
        const originalRaw = item.rawOriginal || item.original;
        return `${originalRaw} as @${item.alias}`;
      } else {
        return item.rawName || item.name;
      }
    }).join(", ");
    let subtype;
    if (imports.length === 1) {
      if (imports[0] === "*") {
        subtype = "importAll";
      } else if (typeof imports[0] === "object" && imports[0].original === "*" && imports[0].alias) {
        subtype = "importNamespace";
      } else {
        subtype = "importSelected";
      }
    } else {
      subtype = "importSelected";
    }
    const values = {
      imports: imports.map((item) => {
        if (typeof item === "string") {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item
          }, location());
        } else if (item.original) {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item.original,
            alias: item.alias
          }, item.location || location());
        } else {
          return helpers_default.createVariableReferenceNode("import", {
            identifier: item.name
          }, item.location || location());
        }
      }),
      path: path.values?.path || path.values?.module || path.values?.url || (typeof path === "string" ? [
        helpers_default.createNode(node_type_default.Text, {
          content: path,
          location: location()
        })
      ] : path)
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (typeInfo) {
      values.importType = typeInfo.type;
      if (typeInfo.cachedDuration) {
        values.cachedDuration = typeInfo.cachedDuration;
      }
    }
    if (tail) {
      values.withClause = tail;
    }
    const raw = {
      imports: importsRaw,
      path: path.raw?.path || path.raw?.module || path.raw?.url || path
      // Handle file, module, and URL paths
    };
    if (typeInfo) {
      raw.importType = typeInfo.raw;
    }
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    const meta = {
      path: path.meta || {
        isSpecial: typeof path === "string",
        pathSubtype: path.subtype
      }
    };
    if (typeInfo) {
      meta.importType = typeInfo.type;
    }
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (comment) {
      meta.comment = comment;
    }
    return helpers_default.createStructuredDirective(
      "import",
      subtype,
      values,
      raw,
      meta,
      location(),
      "path"
      // Source parameter
    );
  }, "peg$f852");
  var peg$f853 = /* @__PURE__ */ __name(function(type) {
    const raw = text();
    return {
      type,
      raw
    };
  }, "peg$f853");
  var peg$f854 = /* @__PURE__ */ __name(function(duration) {
    const raw = text();
    return {
      type: "cached",
      cachedDuration: duration,
      raw
    };
  }, "peg$f854");
  var peg$f855 = /* @__PURE__ */ __name(function() {
    const raw = text();
    return {
      type: "cached",
      raw
    };
  }, "peg$f855");
  var peg$f856 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @payload");
    const matched = text();
    return {
      type: "path",
      subtype: "payloadPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "payload"
      }
    };
  }, "peg$f856");
  var peg$f857 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @state");
    const matched = text();
    return {
      type: "path",
      subtype: "statePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "state"
      }
    };
  }, "peg$f857");
  var peg$f858 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @input (case-insensitive)");
    const matched = text();
    return {
      type: "path",
      subtype: "inputPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "stdin"
        // Keep as 'stdin' internally for compatibility
      }
    };
  }, "peg$f858");
  var peg$f859 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @NOW");
    const matched = text();
    return {
      type: "path",
      subtype: "nowPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "now"
      }
    };
  }, "peg$f859");
  var peg$f860 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @time (case-insensitive)");
    const matched = text();
    return {
      type: "path",
      subtype: "timePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: matched,
            location: location()
          })
        ]
      },
      raw: {
        path: matched
      },
      meta: {
        isSpecial: true,
        source: "time"
      }
    };
  }, "peg$f860");
  var peg$f861 = /* @__PURE__ */ __name(function() {
    helpers_default.debug("ImportPath matched @stdin (deprecated)");
    return {
      type: "path",
      subtype: "inputPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: "@stdin",
            location: location()
          })
        ]
      },
      raw: {
        path: "@stdin"
      },
      meta: {
        isSpecial: true,
        source: "stdin",
        deprecated: true
      }
    };
  }, "peg$f861");
  var peg$f862 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("ImportAlligatorAdapter processing AlligatorExpression", {
      content
    });
    if (content.options && content.options.section) {
      helpers_default.mlldError("Section extraction is not supported in import paths. Use: /import { items } from <path>", ">", location());
    }
    if (content.source.type === "path") {
      return {
        type: "path",
        subtype: "filePath",
        values: {
          path: content.source.segments
        },
        raw: {
          path: content.source.raw
        },
        meta: content.source.meta
      };
    } else if (content.source.type === "url") {
      const rawUrl = content.source.raw;
      const urlNode = helpers_default.createNode(node_type_default.Text, {
        content: rawUrl,
        location: location()
      });
      return {
        type: "path",
        subtype: "urlPath",
        values: {
          url: [
            urlNode
          ]
        },
        raw: {
          url: rawUrl
        },
        meta: {
          ...helpers_default.createPathMetadata(rawUrl, [
            urlNode
          ]),
          isUrl: true,
          protocol: content.source.protocol
        }
      };
    }
    helpers_default.mlldError("Invalid alligator content in import path", ">", location());
  }, "peg$f862");
  var peg$f863 = /* @__PURE__ */ __name(function(quote) {
    helpers_default.debug("QuotedPath matched with interpolation", {
      quote
    });
    const rawPath = helpers_default.reconstructRawString(quote.content);
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: quote.content
      },
      raw: {
        path: rawPath
      },
      meta: helpers_default.createPathMetadata(rawPath, quote.content)
    };
  }, "peg$f863");
  var peg$f864 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("QuotedPath matched single quotes (literal)", {
      content
    });
    return {
      type: "path",
      subtype: "filePath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      raw: {
        path: content
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
  }, "peg$f864");
  var peg$f865 = /* @__PURE__ */ __name(function(id) {
    const extension = id.extension ? `.${id.extension}` : "";
    const rawModule = `@${id.namespace}${id.path.length > 0 ? "/" + id.path.join("/") : ""}/${id.name}${extension}${id.hash ? "@" + id.hash : ""}`;
    return {
      type: "module",
      subtype: "moduleReference",
      values: {
        module: [
          helpers_default.createNode(node_type_default.Text, {
            content: rawModule,
            location: location()
          })
        ]
      },
      raw: {
        module: rawModule
      },
      meta: {
        isModule: true,
        namespace: id.namespace,
        path: id.path,
        name: id.name,
        ...id.extension ? {
          extension: `.${id.extension}`
        } : {},
        ...id.hash ? {
          hash: id.hash
        } : {}
      }
    };
  }, "peg$f865");
  var peg$f866 = /* @__PURE__ */ __name(function(namespace, pathAndName, h) {
    return h;
  }, "peg$f866");
  var peg$f867 = /* @__PURE__ */ __name(function(namespace, pathAndName, hash) {
    return {
      namespace,
      path: pathAndName.path,
      name: pathAndName.name,
      ...pathAndName.extension ? {
        extension: pathAndName.extension
      } : {},
      ...hash ? {
        hash
      } : {}
    };
  }, "peg$f867");
  var peg$f868 = /* @__PURE__ */ __name(function(segment) {
    return segment;
  }, "peg$f868");
  var peg$f869 = /* @__PURE__ */ __name(function(segments, name, extension) {
    return {
      path: segments,
      name,
      ...extension ? {
        extension
      } : {}
    };
  }, "peg$f869");
  var peg$f870 = /* @__PURE__ */ __name(function(base, suffix) {
    return base + (suffix || "");
  }, "peg$f870");
  var peg$f871 = /* @__PURE__ */ __name(function(first, rest) {
    return first + rest.join("");
  }, "peg$f871");
  var peg$f872 = /* @__PURE__ */ __name(function(version) {
    return version;
  }, "peg$f872");
  var peg$f873 = /* @__PURE__ */ __name(function(chars) {
    return chars.length >= 4;
  }, "peg$f873");
  var peg$f874 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f874");
  var peg$f875 = /* @__PURE__ */ __name(function(major, minor, patch, pre) {
    return pre;
  }, "peg$f875");
  var peg$f876 = /* @__PURE__ */ __name(function(major, minor, patch, prerelease, meta) {
    return meta;
  }, "peg$f876");
  var peg$f877 = /* @__PURE__ */ __name(function(major, minor, patch, prerelease, metadata) {
    const base = major.join("") + "." + minor.join("") + "." + patch.join("");
    return base + (prerelease ? "-" + prerelease : "") + (metadata ? "+" + metadata : "");
  }, "peg$f877");
  var peg$f878 = /* @__PURE__ */ __name(function(first, id) {
    return id;
  }, "peg$f878");
  var peg$f879 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ].join(".");
  }, "peg$f879");
  var peg$f880 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f880");
  var peg$f881 = /* @__PURE__ */ __name(function(first, id) {
    return id;
  }, "peg$f881");
  var peg$f882 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ].join(".");
  }, "peg$f882");
  var peg$f883 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f883");
  var peg$f884 = /* @__PURE__ */ __name(function(aliasName) {
    return [
      {
        original: "*",
        alias: aliasName
      }
    ];
  }, "peg$f884");
  var peg$f885 = /* @__PURE__ */ __name(function() {
    return input[peg$currPos] === String.fromCharCode(125);
  }, "peg$f885");
  var peg$f886 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Wildcard imports must have an alias. Use '/import { * as @name }' or the shorthand '/import "path/to/file.mld" as @name'`, "as", location());
  }, "peg$f886");
  var peg$f887 = /* @__PURE__ */ __name(function(first, item) {
    return item;
  }, "peg$f887");
  var peg$f888 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f888");
  var peg$f889 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f889");
  var peg$f890 = /* @__PURE__ */ __name(function(identifier, aliasName) {
    return {
      original: identifier.name,
      alias: aliasName,
      location: location(),
      rawOriginal: identifier.raw
    };
  }, "peg$f890");
  var peg$f891 = /* @__PURE__ */ __name(function(identifier, invalidAlias) {
    helpers_default.mlldError(`Import aliases must include '@'. Use 'as @${invalidAlias}'`, "@", location());
  }, "peg$f891");
  var peg$f892 = /* @__PURE__ */ __name(function(identifier) {
    return {
      name: identifier.name,
      rawName: identifier.raw,
      location: location()
    };
  }, "peg$f892");
  var peg$f893 = /* @__PURE__ */ __name(function(name) {
    return {
      name,
      raw: "@" + name
    };
  }, "peg$f893");
  var peg$f894 = /* @__PURE__ */ __name(function(name) {
    return {
      name,
      raw: name
    };
  }, "peg$f894");
  var peg$f895 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f895");
  var peg$f896 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f896");
  var peg$f897 = /* @__PURE__ */ __name(function(special, path) {
    helpers_default.debug("SpecialVariablePath matched", {
      special,
      path
    });
    const pathParts = [
      special,
      ...path
    ];
    const rawPath = (special.values?.originalForm || "@" + special.values?.identifier) + helpers_default.reconstructRawString(path);
    return {
      type: "path",
      subtype: "specialPath",
      values: {
        path: pathParts
      },
      raw: {
        path: rawPath
      },
      meta: {
        isSpecial: true,
        variable: special.values?.identifier,
        originalForm: special.values?.originalForm
      }
    };
  }, "peg$f897");
  var peg$f898 = /* @__PURE__ */ __name(function(object, ending) {
    const packageKeys = [
      "node",
      "js",
      "python",
      "py",
      "ruby",
      "rb",
      "go",
      "rust"
    ];
    const meta = {
      hasCmd: Boolean(object.cmd),
      hasPackages: packageKeys.some((key) => Array.isArray(object[key]) && object[key].length > 0),
      hasNetwork: object.network === true || object.net === true,
      hasShell: object.sh === true || object.bash === true,
      bareCommands: Array.isArray(object.__commands) ? object.__commands.length : 0,
      ...ending?.comment ? {
        comment: ending.comment
      } : {}
    };
    return helpers_default.createStructuredDirective(directive_kind_default.needs, "needs", {
      needs: object
    }, {
      needs: object
    }, meta, location(), "needs");
  }, "peg$f898");
  var peg$f899 = /* @__PURE__ */ __name(function(tiers, ending) {
    const meta = {
      tierCount: tiers.length,
      ...ending?.comment ? {
        comment: ending.comment
      } : {}
    };
    return helpers_default.createStructuredDirective(directive_kind_default.wants, "wants", {
      wants: tiers
    }, {
      wants: tiers
    }, meta, location(), "wants");
  }, "peg$f899");
  var peg$f900 = /* @__PURE__ */ __name(function(entries) {
    const result = {};
    if (entries) {
      for (const [key, value] of entries) {
        if (key === "__commands") {
          const bucket = result.__commands || (result.__commands = []);
          bucket.push(value);
          continue;
        }
        if (result[key] === void 0) {
          result[key] = value;
        } else if (Array.isArray(result[key]) && Array.isArray(value)) {
          result[key] = result[key].concat(value);
        } else {
          result[key] = value;
        }
      }
    }
    return result;
  }, "peg$f900");
  var peg$f901 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f901");
  var peg$f902 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f902");
  var peg$f903 = /* @__PURE__ */ __name(function(value) {
    return [
      "cmd",
      value
    ];
  }, "peg$f903");
  var peg$f904 = /* @__PURE__ */ __name(function(pkg, value) {
    return [
      pkg,
      value
    ];
  }, "peg$f904");
  var peg$f905 = /* @__PURE__ */ __name(function(key, bool) {
    return [
      key,
      bool ?? true
    ];
  }, "peg$f905");
  var peg$f906 = /* @__PURE__ */ __name(function(name) {
    return [
      "__commands",
      name
    ];
  }, "peg$f906");
  var peg$f907 = /* @__PURE__ */ __name(function(bool) {
    return bool === "true" || bool === true;
  }, "peg$f907");
  var peg$f908 = /* @__PURE__ */ __name(function() {
    return {
      type: "wildcard"
    };
  }, "peg$f908");
  var peg$f909 = /* @__PURE__ */ __name(function(items) {
    return {
      type: "list",
      items: items || []
    };
  }, "peg$f909");
  var peg$f910 = /* @__PURE__ */ __name(function(entries) {
    const result = {};
    if (entries) {
      for (const [key, value] of entries) {
        result[key] = value;
      }
    }
    return {
      type: "map",
      entries: result
    };
  }, "peg$f910");
  var peg$f911 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f911");
  var peg$f912 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f912");
  var peg$f913 = /* @__PURE__ */ __name(function(name, value) {
    return [
      name,
      value
    ];
  }, "peg$f913");
  var peg$f914 = /* @__PURE__ */ __name(function() {
    return {
      type: "wildcard"
    };
  }, "peg$f914");
  var peg$f915 = /* @__PURE__ */ __name(function(items) {
    return {
      type: "list",
      items: items || []
    };
  }, "peg$f915");
  var peg$f916 = /* @__PURE__ */ __name(function(props) {
    const result = {};
    if (props) {
      for (const [key, value] of props) {
        result[key] = value;
      }
    }
    return {
      type: "detail",
      props: result
    };
  }, "peg$f916");
  var peg$f917 = /* @__PURE__ */ __name(function(first, entry) {
    return entry;
  }, "peg$f917");
  var peg$f918 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f918");
  var peg$f919 = /* @__PURE__ */ __name(function(items) {
    return [
      "methods",
      items
    ];
  }, "peg$f919");
  var peg$f920 = /* @__PURE__ */ __name(function(items) {
    return [
      "subcommands",
      items
    ];
  }, "peg$f920");
  var peg$f921 = /* @__PURE__ */ __name(function(items) {
    return [
      "flags",
      items
    ];
  }, "peg$f921");
  var peg$f922 = /* @__PURE__ */ __name(function(items) {
    return items || [];
  }, "peg$f922");
  var peg$f923 = /* @__PURE__ */ __name(function(first, token) {
    return token;
  }, "peg$f923");
  var peg$f924 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f924");
  var peg$f925 = /* @__PURE__ */ __name(function(token) {
    return token;
  }, "peg$f925");
  var peg$f926 = /* @__PURE__ */ __name(function(token) {
    return token;
  }, "peg$f926");
  var peg$f927 = /* @__PURE__ */ __name(function(pkgs) {
    return pkgs || [];
  }, "peg$f927");
  var peg$f928 = /* @__PURE__ */ __name(function(first, token) {
    return token;
  }, "peg$f928");
  var peg$f929 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f929");
  var peg$f930 = /* @__PURE__ */ __name(function(value) {
    return value;
  }, "peg$f930");
  var peg$f931 = /* @__PURE__ */ __name(function(value) {
    return value;
  }, "peg$f931");
  var peg$f932 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f932");
  var peg$f933 = /* @__PURE__ */ __name(function(name) {
    const lowered = String(name).toLowerCase();
    return ![
      "cmd",
      "node",
      "js",
      "python",
      "py",
      "ruby",
      "rb",
      "go",
      "rust",
      "sh",
      "bash",
      "network",
      "net",
      "filesystem",
      "fs",
      "tier",
      "why"
    ].includes(lowered);
  }, "peg$f933");
  var peg$f934 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f934");
  var peg$f935 = /* @__PURE__ */ __name(function(tiers) {
    return tiers || [];
  }, "peg$f935");
  var peg$f936 = /* @__PURE__ */ __name(function(first, tier) {
    return tier;
  }, "peg$f936");
  var peg$f937 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f937");
  var peg$f938 = /* @__PURE__ */ __name(function(entries) {
    const result = {};
    if (entries) {
      for (const [key, value] of entries) {
        if (key === "__commands") {
          const bucket = result.__commands || (result.__commands = []);
          bucket.push(value);
          continue;
        }
        result[key] = value;
      }
    }
    return result;
  }, "peg$f938");
  var peg$f939 = /* @__PURE__ */ __name(function(first, prop) {
    return prop;
  }, "peg$f939");
  var peg$f940 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f940");
  var peg$f941 = /* @__PURE__ */ __name(function(value) {
    return [
      "tier",
      value
    ];
  }, "peg$f941");
  var peg$f942 = /* @__PURE__ */ __name(function(value) {
    return [
      "why",
      value
    ];
  }, "peg$f942");
  var peg$f943 = /* @__PURE__ */ __name(function(prop) {
    return prop;
  }, "peg$f943");
  var peg$f944 = /* @__PURE__ */ __name(function(source, target, f) {
    return f;
  }, "peg$f944");
  var peg$f945 = /* @__PURE__ */ __name(function(source, target, format, ending) {
    helpers_default.debug("SlashAppend syntax matched", {
      source,
      target,
      format,
      ending
    });
    const values = {
      source: source.values,
      target
    };
    const raw = {
      source: source.raw,
      target: target.raw
    };
    const meta = {
      sourceType: source.type,
      targetType: "file",
      hasSource: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("append", "appendFile", values, raw, meta, location());
  }, "peg$f945");
  var peg$f946 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return rest.length === 0 || rest.startsWith("\n");
  }, "peg$f946");
  var peg$f947 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Missing "to" keyword in /append directive. Use /append @var to "path".', "to", location());
  }, "peg$f947");
  var peg$f948 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('/append syntax error. Expected: /append @source to "path".', "@", location());
  }, "peg$f948");
  var peg$f949 = /* @__PURE__ */ __name(function(path, ending) {
    helpers_default.debug("SlashOutput quoted path without source matched", {
      path,
      ending
    });
    const values = {
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: `"${path}"`,
        meta: {
          quoted: true
        }
      }
    };
    const raw = {
      target: `"${path}"`
    };
    const meta = {
      targetType: "file",
      hasSource: false,
      legacy: true
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("output", "outputDocument", values, raw, meta, location());
  }, "peg$f949");
  var peg$f950 = /* @__PURE__ */ __name(function(source, target, f) {
    return f;
  }, "peg$f950");
  var peg$f951 = /* @__PURE__ */ __name(function(source, target, format, ending) {
    helpers_default.debug("SlashOutput enhanced syntax matched", {
      source,
      target,
      format,
      ending
    });
    const values = {
      source: source.values,
      target
    };
    const raw = {
      source: source.raw,
      target: target.raw
    };
    const meta = {
      sourceType: source.type,
      targetType: target.type,
      hasSource: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    let subtype = "outputFile";
    if (target.type === "stream") {
      subtype = "outputStream";
    } else if (target.type === "env") {
      subtype = "outputEnv";
    } else if (target.type === "resolver") {
      subtype = "outputResolver";
    }
    return helpers_default.createStructuredDirective("output", subtype, values, raw, meta, location());
  }, "peg$f951");
  var peg$f952 = /* @__PURE__ */ __name(function(source, path, ending) {
    helpers_default.debug("SlashOutput quoted path with source matched", {
      source,
      path,
      ending
    });
    const values = {
      source: source.values,
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: `"${path}"`,
        meta: {
          quoted: true
        }
      }
    };
    const raw = {
      source: source.raw,
      target: `"${path}"`
    };
    const meta = {
      sourceType: source.type,
      targetType: "file",
      hasSource: true,
      quoted: true
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("output", "outputFile", values, raw, meta, location());
  }, "peg$f952");
  var peg$f953 = /* @__PURE__ */ __name(function(target, f) {
    return f;
  }, "peg$f953");
  var peg$f954 = /* @__PURE__ */ __name(function(target, format, ending) {
    helpers_default.debug("SlashOutput enhanced syntax without source matched", {
      target,
      format,
      ending
    });
    const values = {
      target
    };
    const raw = {
      target: target.raw
    };
    const meta = {
      targetType: target.type,
      hasSource: false,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    let subtype = "outputDocument";
    if (target.type !== "file") {
      subtype = "output" + target.type.charAt(0).toUpperCase() + target.type.slice(1);
    }
    return helpers_default.createStructuredDirective("output", subtype, values, raw, meta, location());
  }, "peg$f954");
  var peg$f955 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return rest.startsWith("stdout") || rest.startsWith("stderr") || rest.startsWith("env") || rest.startsWith("@");
  }, "peg$f955");
  var peg$f956 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Missing 'to' keyword in /output directive. Expected: /output @variable to "path"`, "to", location());
  }, "peg$f956");
  var peg$f957 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing target in /output directive. Expected path, stdout, stderr, or env after 'to'.", "path", location());
  }, "peg$f957");
  var peg$f958 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing target in /output directive. Expected path, stdout, stderr, or env after 'to'.", "path", location());
  }, "peg$f958");
  var peg$f959 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f959");
  var peg$f960 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted path in /output directive. Expected closing double quote (").', '"', location());
  }, "peg$f960");
  var peg$f961 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing format in /output directive. Expected format type after 'as' (e.g., json, xml, csv).", "format", location());
  }, "peg$f961");
  var peg$f962 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f962");
  var peg$f963 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid variable reference in /output directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f963");
  var peg$f964 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /output directive. Expected source or target specification.", "@", location());
  }, "peg$f964");
  var peg$f965 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return rest.length === 0 || /[^A-Z0-9_]/.test(rest[0]);
  }, "peg$f965");
  var peg$f966 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid environment variable name in /output directive. Expected: env:VARIABLE_NAME", "VARIABLE_NAME", location());
  }, "peg$f966");
  var peg$f967 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Invalid /output syntax. Expected: /output @variable to "path", /output "path", or /output @variable to stdout/stderr/env. Note: String literals cannot be used as output sources. To output text content, first assign it to a variable: /var @content = "your text", then use: /output @content to "file.txt"', "@", location());
  }, "peg$f967");
  var peg$f968 = /* @__PURE__ */ __name(function(source, f) {
    return f;
  }, "peg$f968");
  var peg$f969 = /* @__PURE__ */ __name(function(source, format, ending) {
    helpers_default.debug("SlashLog with source matched", {
      source,
      format,
      ending
    });
    const stdoutTarget = {
      type: "stream",
      stream: "stderr",
      raw: "stderr"
    };
    const values = {
      source: source.values,
      target: stdoutTarget
    };
    const raw = {
      source: source.raw,
      target: "stderr"
    };
    const meta = {
      sourceType: source.type,
      targetType: "stream",
      hasSource: true,
      isLogSugar: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("output", "outputStream", values, raw, meta, location());
  }, "peg$f969");
  var peg$f970 = /* @__PURE__ */ __name(function(f) {
    return f;
  }, "peg$f970");
  var peg$f971 = /* @__PURE__ */ __name(function(format, ending) {
    helpers_default.debug("SlashLog without source matched", {
      format,
      ending
    });
    const stdoutTarget = {
      type: "stream",
      stream: "stderr",
      raw: "stderr"
    };
    const values = {
      target: stdoutTarget
    };
    const raw = {
      target: "stderr"
    };
    const meta = {
      targetType: "stream",
      hasSource: false,
      isLogSugar: true,
      ...format ? {
        format,
        explicitFormat: true
      } : {}
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return helpers_default.createStructuredDirective("output", "outputStream", values, raw, meta, location());
  }, "peg$f971");
  var peg$f972 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /log directive. Expected variable or content to log.", "@", location());
  }, "peg$f972");
  var peg$f973 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f973");
  var peg$f974 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid variable reference in /log directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f974");
  var peg$f975 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /log syntax. Expected: /log @variable or /log (for document output). /log is syntactic sugar for /output to stdout.", "@", location());
  }, "peg$f975");
  var peg$f976 = /* @__PURE__ */ __name(function(id, quote, tail, comment) {
    helpers_default.debug("SlashPath matched double quoted string with interpolation", {
      id,
      quote
    });
    const content = quote.content;
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    content.some((part) => part && part.type === node_type_default.VariableReference);
    const values = {
      identifier: [
        idNode
      ],
      path: content
    };
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective("path", "pathAssignment", values, {}, {
      path: helpers_default.createPathMetadata(helpers_default.reconstructRawString(content), content)
    }, location(), "path");
  }, "peg$f976");
  var peg$f977 = /* @__PURE__ */ __name(function(id, content, tail, comment) {
    helpers_default.debug("SlashPath matched single quoted string (literal)", {
      id,
      content,
      tail
    });
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    const pathParts = [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
    const values = {
      identifier: [
        idNode
      ],
      path: pathParts
    };
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective("path", "pathAssignment", values, {}, {
      path: helpers_default.createPathMetadata(content, pathParts)
    }, location(), "path");
  }, "peg$f977");
  var peg$f978 = /* @__PURE__ */ __name(function(id, path, tail, comment) {
    helpers_default.debug("SlashPath matched normal path", {
      id,
      path,
      tail
    });
    let processedPath = path.raw.path || path.raw.url;
    if (processedPath.includes("@.")) {
      processedPath = processedPath.replace(/@\./g, "@PROJECTPATH");
    }
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    const processedPathParts = [
      ...path.values.path || path.values.parts || []
    ];
    for (let i = 0; i < processedPathParts.length; i++) {
      const part = processedPathParts[i];
      if (part.type === node_type_default.VariableReference && part.identifier === ".") {
        const newNode = {
          ...part
        };
        newNode.identifier = "PROJECTPATH";
        processedPathParts[i] = newNode;
      }
    }
    const values = {
      identifier: [
        idNode
      ],
      path: processedPathParts
    };
    if (tail) {
      values.withClause = tail;
    }
    return helpers_default.createStructuredDirective(
      "path",
      "pathAssignment",
      values,
      {},
      {
        path: {
          ...path.meta,
          pathSubtype: path.subtype
          // Preserve the specific path type
        }
      },
      location(),
      "path"
      // Source parameter
    );
  }, "peg$f978");
  var peg$f979 = /* @__PURE__ */ __name(function(parts) {
    return parts;
  }, "peg$f979");
  var peg$f980 = /* @__PURE__ */ __name(function() {
    return text();
  }, "peg$f980");
  var peg$f981 = /* @__PURE__ */ __name(function(name, expr) {
    const nameNode = helpers_default.createNode(node_type_default.Text, {
      content: name,
      location: location()
    });
    const values = {
      name: [
        nameNode
      ],
      expr
    };
    return helpers_default.createStructuredDirective(directive_kind_default.policy, "policy", values, {
      name,
      expr
    }, {}, location(), "policy");
  }, "peg$f981");
  var peg$f982 = /* @__PURE__ */ __name(function(args) {
    return {
      type: "union",
      args: args || [],
      location: location()
    };
  }, "peg$f982");
  var peg$f983 = /* @__PURE__ */ __name(function(first, arg) {
    return arg;
  }, "peg$f983");
  var peg$f984 = /* @__PURE__ */ __name(function(first, rest) {
    return [
      first,
      ...rest
    ];
  }, "peg$f984");
  var peg$f985 = /* @__PURE__ */ __name(function(ref) {
    return {
      type: "ref",
      name: ref,
      location: location()
    };
  }, "peg$f985");
  var peg$f986 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f986");
  var peg$f987 = /* @__PURE__ */ __name(function(leading, caps, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched leading parallel pipeline", {
      leading,
      caps
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const pipeline = leading.withClause.pipeline || [];
    const withClause = {
      pipeline,
      ...caps ? {
        parallel: caps.parallel,
        delayMs: caps.delayMs
      } : {}
    };
    const values = {
      withClause
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    const raw = {
      pipeline: pipeline.map((p) => Array.isArray(p) ? `[${p.map((c) => c.rawIdentifier).join(" || ")}]` : p.rawIdentifier).join(" | ")
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    const meta = {
      isPipeline: true,
      hasLeadingParallel: true,
      stageCount: pipeline.length,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    return helpers_default.createStructuredDirective("run", "runPipeline", values, raw, meta, location(), "pipeline");
  }, "peg$f987");
  var peg$f988 = /* @__PURE__ */ __name(function(command, tail, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched quoted command", {
      command,
      tail
    });
    const commandLocation = location();
    const parts = helpers_default.parseCommandContent(command, commandLocation);
    const commandBases = [];
    const rawBases = [];
    if (parts.length > 0 && parts[0].type === node_type_default.Text) {
      const cmdMatch = parts[0].content.match(/^(\S+)/);
      if (cmdMatch) {
        commandBases.push(helpers_default.createNode(node_type_default.CommandBase, {
          command: cmdMatch[1],
          location: location()
        }));
        rawBases.push(cmdMatch[1]);
      }
    }
    const values = {
      command: parts,
      commandBases
    };
    const raw = {
      command,
      commandBases: rawBases
    };
    const meta = {
      isMultiLine: false,
      commandCount: commandBases.length,
      hasScriptRunner: false,
      ...comment ? {
        comment
      } : {}
    };
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", "runCommand", values, raw, meta, location(), "command");
  }, "peg$f988");
  var peg$f989 = /* @__PURE__ */ __name(function(content, tail, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched command", {
      content,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = content.values;
    const raw = content.raw;
    const meta = {
      ...content.meta,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", content.subtype, values, raw, meta, location(), content.type);
  }, "peg$f989");
  var peg$f990 = /* @__PURE__ */ __name(function(stdinExpr, content, tail, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched stdin pipe sugar", {
      stdinExpr,
      content,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = content.values;
    const raw = content.raw;
    const meta = {
      ...content.meta,
      ...comment ? {
        comment
      } : {}
    };
    const withClause = {
      stdin: stdinExpr,
      ...tail || {}
    };
    values.withClause = withClause;
    raw.withClause = withClause;
    meta.withClause = withClause;
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    return helpers_default.createStructuredDirective("run", content.subtype, values, raw, meta, location(), content.type);
  }, "peg$f990");
  var peg$f991 = /* @__PURE__ */ __name(function(codeCore, tail, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched with language code pattern", {
      codeCore,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = codeCore.values;
    const raw = codeCore.raw;
    const meta = {
      ...codeCore.meta,
      ...comment ? {
        comment
      } : {}
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    if (tail) {
      values.withClause = tail;
      raw.withClause = tail;
      meta.withClause = tail;
    }
    const endingInfo = {
      tail: tail && tail.pipeline ? {
        pipeline: tail.pipeline
      } : null,
      parallel: null,
      comment: comment || null
    };
    if (endingInfo.tail || endingInfo.comment) {
      helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    }
    return helpers_default.createStructuredDirective("run", "runCode", values, raw, meta, location(), "code");
  }, "peg$f991");
  var peg$f992 = /* @__PURE__ */ __name(function(commandRef, labelsSegment, comment) {
    helpers_default.debug("SlashRun matched unified command reference", {
      commandRef
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      const isExecResultMethod = commandRef.commandRef && commandRef.commandRef.objectSource;
      if (isExecResultMethod) {
        values = {
          execInvocation: commandRef
        };
      } else {
        values = {
          identifier: commandRef.commandRef.identifier,
          args: commandRef.commandRef.args || []
        };
      }
      let rawIdentifier = commandRef.commandRef.name;
      if (commandRef.commandRef.identifier && commandRef.commandRef.identifier.length > 0) {
        const varRef = commandRef.commandRef.identifier[0];
        if (varRef.type === node_type_default.VariableReference) {
          rawIdentifier = varRef.identifier;
          if (varRef.fields && varRef.fields.length > 0) {
            rawIdentifier += varRef.fields.map((f) => "." + f.value).join("");
          }
        }
      }
      raw = {
        identifier: rawIdentifier,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0,
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else if (commandRef.type === "VariableReferenceWithTail") {
      values = {
        identifier: [
          commandRef.variable
        ],
        args: []
      };
      raw = {
        identifier: commandRef.variable.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...comment ? {
          comment
        } : {}
      };
      if (commandRef.withClause) {
        values.withClause = commandRef.withClause;
        raw.withClause = commandRef.withClause;
        meta.withClause = commandRef.withClause;
      }
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        ...comment ? {
          comment
        } : {}
      };
    }
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
      raw.securityLabels = labelInfo.raw;
      meta.securityLabels = labelInfo.labels;
    }
    const subtype = commandRef.type === "ExecInvocation" && commandRef.commandRef && commandRef.commandRef.objectSource ? "runExecInvocation" : "runExec";
    const endingInfo = {
      tail: null,
      parallel: null,
      comment: comment || null
    };
    helpers_default.processPipelineEnding(values, raw, meta, endingInfo);
    return helpers_default.createStructuredDirective("run", subtype, values, raw, meta, location(), "exec");
  }, "peg$f992");
  var peg$f993 = /* @__PURE__ */ __name(function() {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f993");
  var peg$f994 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError('Unclosed quoted command in /run directive. Expected closing double quote (").', '"', location());
  }, "peg$f994");
  var peg$f995 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f995");
  var peg$f996 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed command brackets in /run directive. Expected closing brace for command.", String.fromCharCode(125), location());
  }, "peg$f996");
  var peg$f997 = /* @__PURE__ */ __name(function(lang) {
    const validLangs = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLangs.includes(lang.toLowerCase());
  }, "peg$f997");
  var peg$f998 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Invalid code syntax in /run directive. Expected code block or arguments after language identifier: " + lang, String.fromCharCode(123), location());
  }, "peg$f998");
  var peg$f999 = /* @__PURE__ */ __name(function(lang) {
    const validLangs = [
      "js",
      "javascript",
      "node",
      "python",
      "py",
      "bash",
      "sh"
    ];
    return validLangs.includes(lang.toLowerCase());
  }, "peg$f999");
  var peg$f1000 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Missing code block in /run directive. Expected code block after language: " + lang, String.fromCharCode(123), location());
  }, "peg$f1000");
  var peg$f1001 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f1001");
  var peg$f1002 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid exec reference in /run directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f1002");
  var peg$f1003 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /run directive. Expected command, code block, or exec reference.", String.fromCharCode(123), location());
  }, "peg$f1003");
  var peg$f1004 = /* @__PURE__ */ __name(function(lang) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f1004");
  var peg$f1005 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Unclosed code block in /run directive. Expected closing brace for " + lang + " code.", String.fromCharCode(125), location());
  }, "peg$f1005");
  var peg$f1006 = /* @__PURE__ */ __name(function(lang) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f1006");
  var peg$f1007 = /* @__PURE__ */ __name(function(lang) {
    helpers_default.mlldError("Unclosed code block in /run directive. Expected closing brace for " + lang + " code.", String.fromCharCode(125), location());
  }, "peg$f1007");
  var peg$f1008 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /run syntax. Expected: /run cmd {command}, /run language {code}, or /run @exec", String.fromCharCode(123));
  }, "peg$f1008");
  var peg$f1009 = /* @__PURE__ */ __name(function(codeCore) {
    helpers_default.debug("RunDirectiveRef matched language + code in RHS", {
      codeCore
    });
    const values = codeCore.values;
    const raw = codeCore.raw;
    const meta = {
      ...codeCore.meta,
      isRHSRef: true
    };
    return helpers_default.createStructuredDirective("run", "runCode", values, raw, meta, location(), "code");
  }, "peg$f1009");
  var peg$f1010 = /* @__PURE__ */ __name(function(commandRef) {
    helpers_default.debug("RunDirectiveRef matched unified exec reference in RHS", {
      commandRef
    });
    let values, raw, meta;
    if (commandRef.type === "ExecInvocation") {
      values = {
        identifier: commandRef.commandRef.identifier,
        args: commandRef.commandRef.args || []
      };
      let rawIdentifier = commandRef.commandRef.name;
      if (commandRef.commandRef.identifier && commandRef.commandRef.identifier.length > 0) {
        const varRef = commandRef.commandRef.identifier[0];
        if (varRef.type === node_type_default.VariableReference) {
          rawIdentifier = varRef.identifier;
          if (varRef.fields && varRef.fields.length > 0) {
            rawIdentifier += varRef.fields.map((f) => "." + f.value).join("");
          }
        }
      }
      raw = {
        identifier: rawIdentifier,
        args: commandRef.commandRef.args ? commandRef.commandRef.args.map((arg) => arg.type === node_type_default.Text ? arg.content : arg.type === node_type_default.VariableReference ? "@" + arg.identifier : "") : []
      };
      meta = {
        argumentCount: commandRef.commandRef.args ? commandRef.commandRef.args.length : 0,
        isRHSRef: true
      };
    } else {
      values = {
        identifier: [
          commandRef
        ],
        args: []
      };
      raw = {
        identifier: commandRef.identifier,
        args: []
      };
      meta = {
        argumentCount: 0,
        isRHSRef: true
      };
    }
    return helpers_default.createStructuredDirective("run", "runExec", values, raw, meta, location(), "exec");
  }, "peg$f1010");
  var peg$f1011 = /* @__PURE__ */ __name(function(content) {
    helpers_default.debug("RunDirectiveRef matched command in RHS", {
      content
    });
    return helpers_default.createStructuredDirective("run", content.subtype, content.values, content.raw, {
      ...content.meta,
      isRHSRef: true
    }, location());
  }, "peg$f1011");
  var peg$f1012 = /* @__PURE__ */ __name(function(id, fields) {
    helpers_default.mlldError("/show accepts only a single argument. To display multiple values, use a template: /show `@var1 @var2`", "single argument", location());
  }, "peg$f1012");
  var peg$f1013 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("/show accepts only a single argument. To display multiple values, use a template: /show `@var1 @var2`", "single argument", location());
  }, "peg$f1013");
  var peg$f1014 = /* @__PURE__ */ __name(function(labelsSegment, content, tail, ending) {
    helpers_default.debug("SlashShow matched command for display", {
      content,
      tail
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const meta = {
      ...content.meta,
      executionMode: "display",
      executionType: "command",
      isExecutionContent: true
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    helpers_default.processPipelineEnding(content.values, content.raw, meta, ending);
    const withClause = tail || ending?.tail;
    if (withClause) {
      content.values.withClause = withClause;
      content.raw.withClause = withClause;
      meta.withClause = withClause;
    }
    if (labelInfo) {
      content.values.securityLabels = labelInfo.labels;
      content.raw.securityLabels = labelInfo.raw;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showCommand", content.values, content.raw, meta, location(), "command");
  }, "peg$f1014");
  var peg$f1015 = /* @__PURE__ */ __name(function(labelsSegment, lang, content, tail, ending) {
    helpers_default.debug("SlashShow matched code for display", {
      lang,
      content
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const langNode = helpers_default.createNode(node_type_default.Text, {
      content: lang,
      location: location()
    });
    const codeNode = helpers_default.createNode(node_type_default.Text, {
      content: content.content,
      location: location()
    });
    const values = {
      lang: [
        langNode
      ],
      args: [],
      code: [
        codeNode
      ]
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    const raw = {
      lang,
      args: [],
      code: content.content
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    const meta = {
      isMultiLine: content.isMultiLine,
      language: lang,
      hasVariables: false,
      executionMode: "display",
      executionType: "code",
      isExecutionContent: true
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    const withClause = tail || ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showCode", values, raw, meta, location(), "code");
  }, "peg$f1015");
  var peg$f1016 = /* @__PURE__ */ __name(function(labelsSegment, expr, ending) {
    helpers_default.debug("SlashShow matched foreach expression", {
      expr,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const foreachValue = expr.value;
    const values = {
      foreach: foreachValue
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (foreachValue.with) {
      values.withClause = foreachValue.with;
    }
    let rawString = "foreach ";
    if (foreachValue.execInvocation.type === "ExecInvocation") {
      rawString += `@${foreachValue.execInvocation.commandRef.name}(...)`;
    } else {
      rawString += `@${foreachValue.execInvocation.identifier || "unknown"}(...)`;
    }
    const raw = {
      foreach: rawString
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (foreachValue.with) {
      raw.withClause = "with { ... }";
    }
    const meta = {
      isForeach: true,
      hasExecInvocation: true
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showForeach", values, raw, meta, location(), "foreach");
  }, "peg$f1016");
  var peg$f1017 = /* @__PURE__ */ __name(function(labelsSegment, content) {
    return content.type === "doubleBracketSection";
  }, "peg$f1017");
  var peg$f1018 = /* @__PURE__ */ __name(function(labelsSegment, content, rename, ending) {
    helpers_default.debug("SlashShow matched double-bracketed path section", {
      content,
      rename,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const rawPath = content.raw.split(" # ")[0];
    const sectionText = content.section;
    const values = {
      sectionTitle: content.sectionNodes || [
        helpers_default.createNode(node_type_default.Text, {
          content: sectionText,
          location: location()
        })
      ],
      path: content.parts
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (rename) {
      values.newTitle = rename;
    }
    const raw = {
      sectionTitle: sectionText,
      path: rawPath
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (rename) {
      raw.newTitle = rename[0].content;
    }
    const meta = {
      path: helpers_default.createPathMetadata(rawPath, content.parts)
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showPathSection",
      values,
      raw,
      meta,
      location(),
      "section"
      // Added source parameter
    );
  }, "peg$f1018");
  var peg$f1019 = /* @__PURE__ */ __name(function(labelsSegment, content, rename, ending) {
    helpers_default.debug("SlashShow matched load content expression", {
      content,
      rename,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const values = {
      loadContent: content
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (rename) {
      values.newTitle = rename;
    }
    const raw = {
      loadContent: text()
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (rename) {
      raw.newTitle = rename[0].content;
    }
    const meta = {
      hasSection: content.options && content.options.section,
      sourceType: content.source.type
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showLoadContent", values, raw, meta, location(), "load-content");
  }, "peg$f1019");
  var peg$f1020 = /* @__PURE__ */ __name(function(labelsSegment, template, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched template content", {
      template,
      headerLevel,
      underHeader,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      content: template.values.content
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      content: template.raw.content
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      isTemplateContent: true,
      ...template.meta
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    const withClause = ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showTemplate",
      values,
      raw,
      meta,
      location(),
      "template"
      // Added source parameter
    );
  }, "peg$f1020");
  var peg$f1021 = /* @__PURE__ */ __name(function(labelsSegment, varRef, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched variable reference", {
      varRef,
      headerLevel,
      underHeader,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const id = varRef.identifier;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      variable: [
        varRef
      ]
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      variable: `@${id}`
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {};
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    const withClause = ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showVariable",
      values,
      raw,
      meta,
      location(),
      "variable"
      // Added source parameter
    );
  }, "peg$f1021");
  var peg$f1022 = /* @__PURE__ */ __name(function(labelsSegment, invocation, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched unified reference with tail modifiers", {
      invocation,
      headerLevel,
      underHeader,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const isExecInvocation = invocation.type === "ExecInvocation";
    const commandRef = isExecInvocation ? invocation.commandRef : null;
    const hasParentheses = isExecInvocation && commandRef.args !== null && commandRef.args !== void 0;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      invocation
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {};
    if (isExecInvocation) {
      raw.invocation = commandRef.name;
      raw.arguments = commandRef.args ? commandRef.args.map((arg) => {
        if (arg.type === node_type_default.Text) return arg.content;
        if (arg.type === node_type_default.VariableReference) return `@${arg.identifier}`;
        return arg;
      }).join(", ") : "";
    } else {
      const variable = invocation.variable || invocation;
      raw.variable = `@${variable.identifier}${variable.fields ? variable.fields.map((f) => `.${f.value || f.name || f.index}`).join("") : ""}`;
    }
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      hasParentheses,
      argumentCount: isExecInvocation && commandRef.args ? commandRef.args.length : 0
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    const withClause = ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    const subtype = isExecInvocation ? "showInvocation" : "showVariable";
    return helpers_default.createStructuredDirective(directive_kind_default.show, subtype, values, raw, meta, location(), "invocation");
  }, "peg$f1022");
  var peg$f1023 = /* @__PURE__ */ __name(function(labelsSegment, content, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched quoted string", {
      content,
      headerLevel,
      underHeader,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const path = {
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content,
            location: location()
          })
        ]
      },
      meta: helpers_default.createPathMetadata(content, [
        helpers_default.createNode(node_type_default.Text, {
          content,
          location: location()
        })
      ])
    };
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      path: path.values.path
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      path: content
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      path: path.meta
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    const withClause = ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.show, "showPath", values, raw, meta, location(), "path");
  }, "peg$f1023");
  var peg$f1024 = /* @__PURE__ */ __name(function(labelsSegment, path, headerLevel, underHeader, ending) {
    helpers_default.debug("SlashShow matched path", {
      path,
      headerLevel,
      underHeader,
      ending
    });
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const headerLevelValue = headerLevel ? headerLevel : null;
    const underHeaderValue = underHeader ? underHeader : null;
    const values = {
      path: path.values.path || path.values.url
    };
    if (labelInfo) {
      values.securityLabels = labelInfo.labels;
    }
    if (headerLevelValue) {
      values.headerLevel = [
        helpers_default.createNode(node_type_default.Number, {
          value: headerLevelValue.value,
          raw: headerLevelValue.raw,
          location: location()
        })
      ];
    }
    if (underHeaderValue) {
      values.underHeader = [
        helpers_default.createNode(node_type_default.Text, {
          content: underHeaderValue,
          raw: underHeaderValue,
          location: location()
        })
      ];
    }
    const raw = {
      path: path.raw.path || path.raw.url
    };
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    if (headerLevelValue) {
      raw.headerLevel = headerLevelValue.raw;
    }
    if (underHeaderValue) {
      raw.underHeader = underHeaderValue;
    }
    const meta = {
      path: {
        ...path.meta,
        pathSubtype: path.subtype
        // Preserve the specific path type
      }
    };
    if (labelInfo) {
      meta.securityLabels = labelInfo.labels;
    }
    if (ending.comment) {
      meta.comment = ending.comment;
    }
    const withClause = ending?.tail;
    if (withClause) {
      values.withClause = withClause;
      raw.withClause = withClause;
      meta.withClause = withClause;
    }
    return helpers_default.createStructuredDirective(
      directive_kind_default.show,
      "showPath",
      values,
      raw,
      meta,
      location(),
      "path"
      // Added source parameter
    );
  }, "peg$f1024");
  var peg$f1025 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    let depth = 1;
    while (i < input.length - 1 && depth > 0) {
      if (input[i] === "[" && input[i + 1] === "[") {
        depth++;
        i += 2;
      } else if (input[i] === "]" && input[i + 1] === "]") {
        depth--;
        i += 2;
      } else {
        i++;
      }
    }
    return depth > 0;
  }, "peg$f1025");
  var peg$f1026 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed double brackets in /show directive. Expected closing ']]' for path section expression.", "]]", location());
  }, "peg$f1026");
  var peg$f1027 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    while (i < input.length) {
      if (input[i] === ">") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  }, "peg$f1027");
  var peg$f1028 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed alligator bracket in /show directive. Expected closing '>' for content loading.", ">", location());
  }, "peg$f1028");
  var peg$f1029 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f1029");
  var peg$f1030 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid variable reference in /show directive. Variable names must start with a letter or underscore.", "identifier", location());
  }, "peg$f1030");
  var peg$f1031 = /* @__PURE__ */ __name(function() {
    let i = peg$currPos;
    while (i < input.length) {
      if (input[i] === "`" && input[i - 1] !== "\\") return false;
      if (input[i] === "\n") return true;
      i++;
    }
    return true;
  }, "peg$f1031");
  var peg$f1032 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed backtick template in /show directive. Expected closing backtick (`).", "`", location());
  }, "peg$f1032");
  var peg$f1033 = /* @__PURE__ */ __name(function() {
    return helpers_default.isUnclosedTemplate(input, peg$currPos);
  }, "peg$f1033");
  var peg$f1034 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed double-colon template in /show directive. Expected closing '::' delimiter.", "::", location());
  }, "peg$f1034");
  var peg$f1035 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing content in /show directive. Expected template, variable, or path to show.", "@", location());
  }, "peg$f1035");
  var peg$f1036 = /* @__PURE__ */ __name(function() {
    const rest = input.substring(peg$currPos).trim();
    return !rest.startsWith("@") && !rest.startsWith("<");
  }, "peg$f1036");
  var peg$f1037 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid foreach syntax in /show directive. Expected '@command(@arrays)' or '<@array.field # section>' after 'foreach'.", "foreach", location());
  }, "peg$f1037");
  var peg$f1038 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /show syntax. Expected: /show `template`, /show @variable, /show <path>, or /show <path # section>", "`", location());
  }, "peg$f1038");
  var peg$f1039 = /* @__PURE__ */ __name(function(content) {
    return {
      subtype: "showLoadContent",
      values: {
        loadContent: content
      },
      raw: {
        loadContent: content.source.raw
      },
      meta: {
        sourceType: content.source.type
      }
    };
  }, "peg$f1039");
  var peg$f1040 = /* @__PURE__ */ __name(function(quote) {
    return {
      subtype: "showPath",
      values: {
        path: quote.content
      },
      raw: {
        path: helpers_default.reconstructRawString(quote.content)
      },
      meta: {
        path: helpers_default.createPathMetadata(helpers_default.reconstructRawString(quote.content), quote.content)
      }
    };
  }, "peg$f1040");
  var peg$f1041 = /* @__PURE__ */ __name(function(path) {
    return {
      subtype: "showPath",
      values: {
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ]
      },
      raw: {
        path
      },
      meta: {}
    };
  }, "peg$f1041");
  var peg$f1042 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f1042");
  var peg$f1043 = /* @__PURE__ */ __name(function(content) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content,
        location: location()
      })
    ];
  }, "peg$f1043");
  var peg$f1044 = /* @__PURE__ */ __name(function(level) {
    const value = level.length;
    const raw = level.join("");
    return {
      value,
      raw
    };
  }, "peg$f1044");
  var peg$f1045 = /* @__PURE__ */ __name(function(header) {
    return header.trim();
  }, "peg$f1045");
  var peg$f1046 = /* @__PURE__ */ __name(function(title) {
    return title;
  }, "peg$f1046");
  var peg$f1047 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f1047");
  var peg$f1048 = /* @__PURE__ */ __name(function(content) {
    return content;
  }, "peg$f1048");
  var peg$f1049 = /* @__PURE__ */ __name(function(invocation, ending) {
    helpers_default.debug("SlashStream matched invocation", {
      invocation
    });
    const withClause = {
      stream: true,
      ...invocation.withClause || {},
      ...ending?.tail || {}
    };
    const invocationWithStream = invocation && typeof invocation === "object" ? {
      ...invocation,
      withClause
    } : invocation;
    const values = {
      invocation: invocationWithStream,
      withClause
    };
    const raw = {
      invocation: invocationWithStream,
      withClause
    };
    const meta = {
      withClause,
      isStreaming: true
    };
    if (ending) {
      helpers_default.processPipelineEnding(values, raw, meta, ending);
    }
    if (values.withClause && values.withClause.stream !== true) {
      values.withClause.stream = true;
    }
    if (raw.withClause && raw.withClause.stream !== true) {
      raw.withClause.stream = true;
    }
    if (meta.withClause && meta.withClause.stream !== true) {
      meta.withClause.stream = true;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.stream, "showInvocation", values, raw, meta, location(), "stream");
  }, "peg$f1049");
  var peg$f1050 = /* @__PURE__ */ __name(function(labelsSegment, id, value, ending) {
    helpers_default.debug("AtVar matched", {
      id,
      value,
      ending
    });
    let tail = ending.tail;
    const labelInfo = labelsSegment ? labelsSegment[1] : null;
    const comment = ending.comment;
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      if (processedValue.length === 0) {
        processedValue = [
          helpers_default.createNode(node_type_default.Text, {
            content: "",
            location: location()
          })
        ];
      }
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
      if (!value.withClause && tail && tail.pipeline) {
        const wrapper = value.wrapperType;
        const isTemplateWrapper = wrapper === "backtick" || wrapper === "doubleColon" || wrapper === "tripleColon";
        if (isTemplateWrapper) {
          const filteredTail = {
            ...tail
          };
          delete filteredTail.pipeline;
          tail = filteredTail;
        }
      }
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
      metaInfo.isEmptyArray = value.items.length === 0;
    } else if (value && value.type === "load-content") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = value.options && value.options.section ? "section-content" : "file-content";
      metaInfo.sourceType = value.source.type;
    } else if (value && (value.type === "variableReference" || value.type === "VariableReference")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
      if (value.withClause) {
        tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
      }
    } else if (value && value.type === "LeadingParallelPipeline") {
      const placeholder = value.placeholder;
      processedValue = [
        placeholder
      ];
      metaInfo.inferredType = "pipeline";
      tail = tail ? Object.assign({}, value.withClause, tail) : value.withClause;
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isDataValue = true;
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.language = value.language;
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
      metaInfo.hasRunKeyword = value.hasRunKeyword;
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
      metaInfo.isForeach = true;
    } else if (value && (value.type === "BinaryExpression" || value.type === "TernaryExpression" || value.type === "UnaryExpression")) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "expression";
      metaInfo.expressionType = value.type;
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
      metaInfo.primitiveType = value === null ? "null" : typeof value;
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    const values = {
      identifier: [
        idNode
      ],
      value: processedValue
    };
    if (tail) {
      values.withClause = tail;
      metaInfo.withClause = tail;
    }
    if (labelInfo) {
      metaInfo.securityLabels = labelInfo.labels;
      values.securityLabels = labelInfo.labels;
    }
    if (comment) {
      metaInfo.comment = comment;
    }
    const raw = {};
    if (labelInfo) {
      raw.securityLabels = labelInfo.raw;
    }
    return helpers_default.createStructuredDirective(directive_kind_default.var, "var", values, raw, metaInfo, location());
  }, "peg$f1050");
  var peg$f1051 = /* @__PURE__ */ __name(function(id, augId) {
    helpers_default.mlldError(`Augmented assignment is not valid in /var directive. Use let @${augId} += value inside a block.`, "+=", location());
  }, "peg$f1051");
  var peg$f1052 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedArray(input, peg$currPos);
  }, "peg$f1052");
  var peg$f1053 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed array in /var directive. Expected ']' to close the array.", "]", location());
  }, "peg$f1053");
  var peg$f1054 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedObject(input, peg$currPos);
  }, "peg$f1054");
  var peg$f1055 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed object in /var directive. Expected closing brace to close the object.", String.fromCharCode(125), location());
  }, "peg$f1055");
  var peg$f1056 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, '"');
  }, "peg$f1056");
  var peg$f1057 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError('Unclosed string in /var directive. Expected closing double quote (").', '"', location());
  }, "peg$f1057");
  var peg$f1058 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.detectMissingQuoteClose(input, peg$currPos, "'");
  }, "peg$f1058");
  var peg$f1059 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed string in /var directive. Expected closing single quote.", "'", location());
  }, "peg$f1059");
  var peg$f1060 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.isUnclosedTemplate(input, peg$currPos);
  }, "peg$f1060");
  var peg$f1061 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Unclosed template in /var directive. Expected closing '::' delimiter.", "::", location());
  }, "peg$f1061");
  var peg$f1062 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Missing value in /var directive. Expected a value after '=' for variable '@" + id + "'.", "value", location());
  }, "peg$f1062");
  var peg$f1063 = /* @__PURE__ */ __name(function(id) {
    const rest = input.substring(peg$currPos).trim();
    return rest.length > 0 && rest[0] !== "=";
  }, "peg$f1063");
  var peg$f1064 = /* @__PURE__ */ __name(function(id) {
    helpers_default.mlldError("Invalid /var syntax. Expected '=' after variable name '@" + id + "'.", "=", location());
  }, "peg$f1064");
  var peg$f1065 = /* @__PURE__ */ __name(function(id) {
    const varLoc = location();
    helpers_default.mlldError("Missing '@' before variable name in /var directive. Use: /var @" + id + " = value", "@", varLoc);
  }, "peg$f1065");
  var peg$f1066 = /* @__PURE__ */ __name(function() {
    const nextChar = input[peg$currPos];
    return !/[a-zA-Z_]/.test(nextChar);
  }, "peg$f1066");
  var peg$f1067 = /* @__PURE__ */ __name(function() {
    const atLoc = location();
    helpers_default.mlldError("Invalid variable name in /var directive. Variable names must start with a letter or underscore.", "identifier", atLoc);
  }, "peg$f1067");
  var peg$f1068 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /var syntax. Expected: /var @name = value", "@", location());
  }, "peg$f1068");
  var peg$f1069 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f1069");
  var peg$f1070 = /* @__PURE__ */ __name(function(variable) {
    helpers_default.mlldError("The 'any' modifier has been removed from mlld. Use the || operator instead.\n\nOld syntax: /when any [@cond1 @cond2] => action\nNew syntax: /when (@cond1 || @cond2) => action\n\nThe || operator is more familiar and flexible.", "||", location());
  }, "peg$f1070");
  var peg$f1071 = /* @__PURE__ */ __name(function(modifier, block, a) {
    return a;
  }, "peg$f1071");
  var peg$f1072 = /* @__PURE__ */ __name(function(modifier, block, action) {
    helpers_default.debug("WhenBareBlockWithModifierForm matched", {
      modifier,
      conditions: block,
      action
    });
    const values = {
      conditions: block,
      modifier: [
        modifier
      ]
    };
    if (action) {
      values.action = action;
    }
    const raw = {
      conditions: block.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    if (modifier) raw.modifier = modifier.content;
    if (action) {
      raw.action = helpers_default.reconstructRawString(action);
    }
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: modifier ? modifier.content : "default",
      conditionCount: block.length,
      hasVariable: false
    }, location());
  }, "peg$f1072");
  var peg$f1073 = /* @__PURE__ */ __name(function(condition) {
    helpers_default.mlldError("Invalid /when syntax. Expected '=>' after condition. Use: /when @condition => action", "=>", location());
  }, "peg$f1073");
  var peg$f1074 = /* @__PURE__ */ __name(function(condition) {
    helpers_default.mlldError("Missing action in /when directive. Expected a directive after '=>'.", "directive", location());
  }, "peg$f1074");
  var peg$f1075 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f1075");
  var peg$f1076 = /* @__PURE__ */ __name(function(variable) {
    helpers_default.mlldError("The 'all' modifier has been removed from mlld. Use the && operator instead.\n\nOld syntax: /when all [@cond1 @cond2] => action\nNew syntax: /when (@cond1 && @cond2) => action\n\nThe && operator is more familiar and flexible.", "&&", location());
  }, "peg$f1076");
  var peg$f1077 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f1077");
  var peg$f1078 = /* @__PURE__ */ __name(function(variable, modifier) {
    let i = peg$currPos;
    let depth = 1;
    while (i < input.length && depth > 0) {
      if (input[i] === "[") depth++;
      else if (input[i] === "]") depth--;
      else if (input[i] === "\n" && depth > 0) {
        let j = i + 1;
        while (j < input.length && (input[j] === " " || input[j] === "	")) j++;
        if (j < input.length && input[j] === "/") return true;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f1078");
  var peg$f1079 = /* @__PURE__ */ __name(function(variable, modifier) {
    helpers_default.mlldError("Unclosed brackets in /when directive. Expected ']' to close the condition list.", "]", location());
  }, "peg$f1079");
  var peg$f1080 = /* @__PURE__ */ __name(function(id) {
    return id;
  }, "peg$f1080");
  var peg$f1081 = /* @__PURE__ */ __name(function(variable, modifier) {
    return modifier !== "first";
  }, "peg$f1081");
  var peg$f1082 = /* @__PURE__ */ __name(function(variable, modifier) {
    helpers_default.mlldError("Invalid /when modifier: '" + modifier + "'. The only valid modifier is 'first'.\nFor AND/OR logic, use && and || operators instead.\n\nExamples:\n  /when @var first [...] => action\n  /when (@cond1 && @cond2) => action  (instead of 'all')\n  /when (@cond1 || @cond2) => action  (instead of 'any')", "modifier", location());
  }, "peg$f1082");
  var peg$f1083 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Invalid /when syntax. Valid forms:\\n  /when @condition => action          (simple form)\\n  /when @variable [...]              (switch form)\\n  /when @var first [...] => action   (block form with modifier)\\n  /when [...] => action               (bare block form)", "@", location());
  }, "peg$f1083");
  var peg$f1084 = /* @__PURE__ */ __name(function(condition, action, comment) {
    helpers_default.debug("WhenSimpleForm matched", {
      condition,
      action,
      comment
    });
    const meta = {
      hasVariables: condition.some((n) => n.type === node_type_default.VariableReference)
    };
    if (comment) {
      meta.comment = comment;
    }
    return helpers_default.createStructuredDirective("when", "whenSimple", {
      condition,
      action
    }, {
      condition: helpers_default.reconstructRawString(condition),
      action: helpers_default.reconstructRawString(action)
    }, meta, location());
  }, "peg$f1084");
  var peg$f1085 = /* @__PURE__ */ __name(function(expression, conditions) {
    helpers_default.debug("WhenMatchForm matched", {
      expression,
      conditions
    });
    return helpers_default.createStructuredDirective("when", "whenMatch", {
      expression,
      conditions
    }, {
      expression: helpers_default.reconstructRawString(expression),
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    }, {
      conditionCount: conditions.length
    }, location());
  }, "peg$f1085");
  var peg$f1086 = /* @__PURE__ */ __name(function(id) {
    return helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
  }, "peg$f1086");
  var peg$f1087 = /* @__PURE__ */ __name(function(variable, modifier, conditions, a) {
    return a;
  }, "peg$f1087");
  var peg$f1088 = /* @__PURE__ */ __name(function(variable, modifier, conditions, action) {
    helpers_default.debug("WhenBlockForm matched", {
      variable,
      modifier,
      conditions,
      action
    });
    const values = {
      conditions
    };
    if (modifier) {
      values.modifier = [
        modifier
      ];
    }
    if (variable) {
      values.variable = [
        variable
      ];
    }
    if (action) {
      values.action = action;
    }
    const raw = {
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    if (modifier) raw.modifier = modifier.content;
    if (variable) {
      raw.variable = variable;
    }
    if (action) {
      raw.action = helpers_default.reconstructRawString(action);
    }
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: modifier ? modifier.content : "default",
      conditionCount: conditions.length,
      hasVariable: !!variable
    }, location());
  }, "peg$f1088");
  var peg$f1089 = /* @__PURE__ */ __name(function(conditions) {
    helpers_default.debug("WhenBareBlockForm matched", {
      conditions
    });
    const values = {
      conditions
    };
    const raw = {
      conditions: conditions.map((c) => ({
        condition: helpers_default.reconstructRawString(c.condition),
        action: c.action ? helpers_default.reconstructRawString(c.action) : void 0
      }))
    };
    return helpers_default.createStructuredDirective("when", "whenBlock", values, raw, {
      modifier: "default",
      conditionCount: conditions.length,
      hasVariable: false
    }, location());
  }, "peg$f1089");
  var peg$f1090 = /* @__PURE__ */ __name(function(mod) {
    return helpers_default.createNode(node_type_default.Text, {
      content: mod,
      location: location()
    });
  }, "peg$f1090");
  var peg$f1091 = /* @__PURE__ */ __name(function(expr) {
    return [
      expr
    ];
  }, "peg$f1091");
  var peg$f1092 = /* @__PURE__ */ __name(function(condition) {
    return [
      helpers_default.createNode("Negation", {
        condition,
        location: location()
      })
    ];
  }, "peg$f1092");
  var peg$f1093 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f1093");
  var peg$f1094 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f1094");
  var peg$f1095 = /* @__PURE__ */ __name(function() {
    return [
      $1
    ];
  }, "peg$f1095");
  var peg$f1096 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f1096");
  var peg$f1097 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f1097");
  var peg$f1098 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: value,
        location: location()
      })
    ];
  }, "peg$f1098");
  var peg$f1099 = /* @__PURE__ */ __name(function(expr) {
    return [
      expr
    ];
  }, "peg$f1099");
  var peg$f1100 = /* @__PURE__ */ __name(function(condition) {
    return [
      helpers_default.createNode("Negation", {
        condition,
        location: location()
      })
    ];
  }, "peg$f1100");
  var peg$f1101 = /* @__PURE__ */ __name(function(invocation) {
    return [
      invocation
    ];
  }, "peg$f1101");
  var peg$f1102 = /* @__PURE__ */ __name(function(varRef) {
    return [
      varRef
    ];
  }, "peg$f1102");
  var peg$f1103 = /* @__PURE__ */ __name(function() {
    return [
      $1
    ];
  }, "peg$f1103");
  var peg$f1104 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f1104");
  var peg$f1105 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: String(value),
        location: location()
      })
    ];
  }, "peg$f1105");
  var peg$f1106 = /* @__PURE__ */ __name(function(value) {
    return [
      helpers_default.createNode(node_type_default.Text, {
        content: value,
        location: location()
      })
    ];
  }, "peg$f1106");
  var peg$f1107 = /* @__PURE__ */ __name(function(conditions) {
    return conditions;
  }, "peg$f1107");
  var peg$f1108 = /* @__PURE__ */ __name(function() {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "WhenConditionList",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f1108");
  var peg$f1109 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f1109");
  var peg$f1110 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Unclosed brackets in /when directive. Expected ']' to close the condition list.", "]", location());
  }, "peg$f1110");
  var peg$f1111 = /* @__PURE__ */ __name(function(leadingComments, first, entry) {
    return entry;
  }, "peg$f1111");
  var peg$f1112 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const entries = [
      first,
      ...rest
    ];
    if (leadingComments.length > 0 && entries.length > 0) {
      const firstEntry = entries[0];
      if (firstEntry && typeof firstEntry === "object") {
        const existingMeta = firstEntry.meta || {};
        entries[0] = {
          ...firstEntry,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return entries;
  }, "peg$f1112");
  var peg$f1113 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f1113");
  var peg$f1114 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Comma separators are not allowed in /when conditions. Separate conditions with whitespace or semicolons instead of commas.\n\u{1F4A1} Remove the comma and use whitespace or semicolons:\n   /when expr: [value1 => action1, value2 => action2]  \u274C\n   /when expr: [value1 => action1; value2 => action2]  \u2705\n   /when expr: [value1 => action1  value2 => action2]  \u2705\n   /when expr: [\n     value1 => action1\n     value2 => action2\n   ]  \u2705", "whitespace", location());
  }, "peg$f1114");
  var peg$f1115 = /* @__PURE__ */ __name(function(condition, a) {
    return a;
  }, "peg$f1115");
  var peg$f1116 = /* @__PURE__ */ __name(function(condition, action) {
    return {
      condition,
      action
    };
  }, "peg$f1116");
  var peg$f1117 = /* @__PURE__ */ __name(function(actions) {
    return actions;
  }, "peg$f1117");
  var peg$f1118 = /* @__PURE__ */ __name(function() {
    const blockStart = peg$currPos;
    const captured = helpers_default.captureBracketContent(input, blockStart);
    if (!captured) return peg$FAILED;
    helpers_default.reparseBlock({
      parse: peg$parse,
      SyntaxErrorClass: peg$SyntaxError,
      text: captured.content,
      startRule: "WhenActionBlockContent",
      baseLocation: peg$computeLocation(blockStart, blockStart),
      grammarSource: options.grammarSource,
      mode: options.mode
    });
  }, "peg$f1118");
  var peg$f1119 = /* @__PURE__ */ __name(function() {
    let depth = 1;
    let i = peg$currPos;
    let inString = false;
    let quote = null;
    while (i < input.length && depth > 0) {
      const ch = input[i];
      if (inString) {
        if (ch === quote && input[i - 1] !== "\\") {
          inString = false;
          quote = null;
        }
      } else {
        if (ch === '"' || ch === "'") {
          inString = true;
          quote = ch;
        } else if (ch === "[") depth++;
        else if (ch === "]") depth--;
      }
      i++;
    }
    return depth > 0;
  }, "peg$f1119");
  var peg$f1120 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError(`Unterminated block in when action. Expected ']' to close the block.`, "]", location());
  }, "peg$f1120");
  var peg$f1121 = /* @__PURE__ */ __name(function(leadingComments, first, d) {
    return d;
  }, "peg$f1121");
  var peg$f1122 = /* @__PURE__ */ __name(function(leadingComments, first, rest, trailing) {
    const actions = [
      first,
      ...rest
    ].flat();
    if (leadingComments.length > 0 && actions.length > 0) {
      const firstAction = actions[0];
      if (firstAction && typeof firstAction === "object") {
        const existingMeta = firstAction.meta || {};
        actions[0] = {
          ...firstAction,
          meta: {
            ...existingMeta,
            comment: existingMeta.comment || leadingComments[0],
            leadingComments
          }
        };
      }
    }
    return actions;
  }, "peg$f1122");
  var peg$f1123 = /* @__PURE__ */ __name(function() {
    return [];
  }, "peg$f1123");
  var peg$f1124 = /* @__PURE__ */ __name(function(source, target) {
    helpers_default.debug("WhenActionDirective: Enhanced output matched!");
    const values = {
      target
    };
    const raw = {
      target: target.raw
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: target.type,
      enhanced: true
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
      subtype = source.subtype;
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f1124");
  var peg$f1125 = /* @__PURE__ */ __name(function(source) {
    helpers_default.debug("WhenActionDirective: log matched");
    const stdoutTarget = {
      type: "stream",
      stream: "stderr",
      raw: "stderr"
    };
    const values = {
      target: stdoutTarget
    };
    const raw = {
      target: "stderr"
    };
    let subtype = "outputStream";
    const meta = {
      hasSource: false,
      targetType: "stream",
      isLogSugar: true,
      enhanced: true
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f1125");
  var peg$f1126 = /* @__PURE__ */ __name(function(varRef) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showVariable",
        values: {
          variable: [
            varRef
          ]
        },
        raw: {
          variable: "@" + varRef.identifier
        },
        meta: {},
        location: location()
      })
    ];
  }, "peg$f1126");
  var peg$f1127 = /* @__PURE__ */ __name(function(invocation) {
    const isExecInvocation = invocation.type === "ExecInvocation";
    const subtype = isExecInvocation ? "showExecInvocation" : "showVariable";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype,
        values: {
          // CRITICAL: Must wrap in array for consistency with show.peggy
          [isExecInvocation ? "execInvocation" : "variable"]: isExecInvocation ? invocation : [
            invocation
          ]
        },
        raw: {
          [isExecInvocation ? "execInvocation" : "variable"]: rawValue
        },
        meta: {},
        location: location()
      })
    ];
  }, "peg$f1127");
  var peg$f1128 = /* @__PURE__ */ __name(function(template, ending) {
    const values = {
      ...template.values
    };
    const raw = {
      ...template.raw
    };
    const meta = {
      ...template.meta
    };
    helpers_default.processPipelineEnding(values, raw, meta, ending);
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showTemplate",
        source: "template",
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f1128");
  var peg$f1129 = /* @__PURE__ */ __name(function(id, value) {
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {};
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
    } else if (typeof value === "string") {
      processedValue = [
        helpers_default.createNode(node_type_default.Text, {
          content: value,
          location: location()
        })
      ];
      metaInfo.inferredType = "text";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "var",
        subtype: "var",
        values: {
          identifier: [
            idNode
          ],
          value: processedValue
        },
        raw: {
          identifier: id,
          value: helpers_default.reconstructRawString(processedValue)
        },
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f1129");
  var peg$f1130 = /* @__PURE__ */ __name(function(invocation) {
    const isExecInvocation = invocation.type === "ExecInvocation";
    const subtype = isExecInvocation ? "runExecReference" : "runVariable";
    const rawValue = isExecInvocation ? invocation.commandRef.name : `@${invocation.variable.identifier}`;
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype,
        values: {
          [isExecInvocation ? "execRef" : "varRef"]: invocation
        },
        raw: {
          [isExecInvocation ? "execRef" : "varRef"]: rawValue
        },
        meta: {
          hasWithClause: !!invocation.withClause
        },
        location: location()
      })
    ];
  }, "peg$f1130");
  var peg$f1131 = /* @__PURE__ */ __name(function(command) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype: "runCommand",
        values: command.values,
        raw: command.raw,
        meta: command.meta,
        location: location()
      })
    ];
  }, "peg$f1131");
  var peg$f1132 = /* @__PURE__ */ __name(function(source, path) {
    helpers_default.debug("WhenActionDirective: Bracket output matched");
    const values = {
      target: {
        type: "file",
        path: [
          helpers_default.createNode(node_type_default.Text, {
            content: path,
            location: location()
          })
        ],
        raw: path,
        meta: {
          bracketed: true
        }
      }
    };
    const raw = {
      target: `[${path}]`
    };
    let subtype = "outputDocument";
    const meta = {
      hasSource: false,
      targetType: "file",
      legacy: true
    };
    if (source) {
      values.source = source.values;
      raw.source = source.raw;
      meta.hasSource = true;
      meta.sourceType = source.type;
      subtype = source.subtype;
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "output",
        subtype,
        values,
        raw,
        meta,
        location: location()
      })
    ];
  }, "peg$f1132");
  var peg$f1133 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f1133");
  var peg$f1134 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("");
  }, "peg$f1134");
  var peg$f1135 = /* @__PURE__ */ __name(function(chars) {
    return chars.join("").trim();
  }, "peg$f1135");
  var peg$f1136 = /* @__PURE__ */ __name(function(varRef) {
    return {
      type: "variable",
      subtype: "outputVariable",
      values: [
        varRef
      ],
      raw: "@" + varRef.identifier
    };
  }, "peg$f1136");
  var peg$f1137 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "literal",
      subtype: "outputLiteral",
      values: [
        helpers_default.createNode(node_type_default.Text, {
          content: str,
          location: location()
        })
      ],
      raw: '"' + str + '"'
    };
  }, "peg$f1137");
  var peg$f1138 = /* @__PURE__ */ __name(function(stream) {
    return {
      type: "stream",
      stream,
      raw: stream
    };
  }, "peg$f1138");
  var peg$f1139 = /* @__PURE__ */ __name(function(name) {
    return name;
  }, "peg$f1139");
  var peg$f1140 = /* @__PURE__ */ __name(function(varname) {
    return {
      type: "env",
      varname: varname || null,
      raw: varname ? `env:${varname}` : "env"
    };
  }, "peg$f1140");
  var peg$f1141 = /* @__PURE__ */ __name(function(str) {
    return {
      type: "file",
      path: [
        helpers_default.createNode(node_type_default.Text, {
          content: str,
          location: location()
        })
      ],
      raw: `"${str}"`,
      meta: {
        quoted: true
      }
    };
  }, "peg$f1141");
  var peg$f1142 = /* @__PURE__ */ __name(function(template, tail) {
    let meta = {
      ...template.meta,
      implicit: true
    };
    if (tail && tail.pipeline) {
      const templateWithTail = {
        type: "VariableReferenceWithTail",
        variable: {
          type: "TemplateVariable",
          identifier: "__template__",
          content: template.values.content,
          location: location()
        },
        withClause: tail,
        location: location()
      };
      return [
        helpers_default.createNode(node_type_default.Directive, {
          kind: "show",
          subtype: "showVariable",
          values: {
            variable: templateWithTail
          },
          raw: {
            variable: helpers_default.reconstructRawString(template.values.content)
          },
          meta,
          location: location()
        })
      ];
    } else {
      return [
        helpers_default.createNode(node_type_default.Directive, {
          kind: "show",
          subtype: "showTemplate",
          values: template.values,
          raw: template.raw,
          meta,
          location: location()
        })
      ];
    }
  }, "peg$f1142");
  var peg$f1143 = /* @__PURE__ */ __name(function(id, value) {
    helpers_default.mlldError(`Variable assignment \`@${id} = ...\` is not allowed in when actions.

Use \`let\` for local variables scoped to the when block:
  /when [let @${id} = value ...]

Or use \`var\` in actions to set outer-scope variables:
  "match" => var @${id} = "value"

Example:
  /when @mode: [
    let @local = "scoped"      # Local to when block
    "match" => var @${id} = @local  # Sets outer-scope variable
  ]`, "let", location());
  }, "peg$f1143");
  var peg$f1144 = /* @__PURE__ */ __name(function(id, value) {
    const idNode = helpers_default.createVariableReferenceNode("identifier", {
      identifier: id
    }, location());
    let processedValue;
    let metaInfo = {
      implicit: true
    };
    if (value && value.content && value.wrapperType) {
      processedValue = value.content;
      metaInfo.wrapperType = value.wrapperType;
      metaInfo.inferredType = "template";
    } else if (value && value.type === "object") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "object";
    } else if (value && value.type === "array") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "array";
    } else if (value && value.type === "ExecInvocation") {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "variableReference") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "VariableReferenceWithTail") {
      processedValue = [
        value.variable
      ];
      metaInfo.inferredType = "reference";
    } else if (value && value.type === "nestedDirective") {
      processedValue = [
        value.directive
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "code") {
      processedValue = [
        {
          type: "code",
          language: value.language,
          code: value.code
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "command") {
      processedValue = [
        {
          type: "command",
          command: value.command
        }
      ];
      metaInfo.inferredType = "computed";
    } else if (value && value.type === "foreach-command") {
      processedValue = [
        value.value
      ];
      metaInfo.inferredType = "computed";
    } else if (typeof value === "number" || typeof value === "boolean" || value === null) {
      processedValue = [
        value
      ];
      metaInfo.inferredType = "primitive";
    } else if (typeof value === "string") {
      processedValue = [
        helpers_default.createNode(node_type_default.Text, {
          content: value,
          location: location()
        })
      ];
      metaInfo.inferredType = "text";
    } else {
      processedValue = Array.isArray(value) ? value : [
        value
      ];
      metaInfo.inferredType = "unknown";
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "var",
        subtype: "var",
        values: {
          identifier: [
            idNode
          ],
          value: processedValue
        },
        raw: {
          identifier: id,
          value: helpers_default.reconstructRawString(processedValue)
        },
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f1144");
  var peg$f1145 = /* @__PURE__ */ __name(function(name, args, tail) {
    const ref = {
      name,
      identifier: [
        helpers_default.createNode(node_type_default.Text, {
          content: name,
          location: location()
        })
      ],
      args: args || [],
      isCommandReference: true
    };
    const invocation = helpers_default.createExecInvocation(ref, tail || null, location());
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "run",
        subtype: "runExecReference",
        values: {
          execRef: invocation
        },
        raw: {
          execRef: name
        },
        meta: {
          implicit: true,
          hasWithClause: !!tail
        },
        location: location()
      })
    ];
  }, "peg$f1145");
  var peg$f1146 = /* @__PURE__ */ __name(function(template) {
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: "show",
        subtype: "showTemplate",
        source: "template",
        values: template.values,
        raw: template.raw,
        meta: {
          ...template.meta,
          implicit: true
        },
        location: location()
      })
    ];
  }, "peg$f1146");
  var peg$f1147 = /* @__PURE__ */ __name(function(content) {
    return content && (content.type === "code" || content.type === "command" || content.content && content.wrapperType || content.type === "object" || content.type === "array");
  }, "peg$f1147");
  var peg$f1148 = /* @__PURE__ */ __name(function(content) {
    let directive, subtype, values, raw;
    const metaInfo = {
      implicit: true
    };
    if (content.type === "code") {
      directive = "run";
      subtype = "runCode";
      values = {
        language: content.language,
        code: content.code
      };
      raw = {
        language: content.language,
        code: content.code
      };
    } else if (content.type === "command") {
      directive = "run";
      subtype = "runCommand";
      values = {
        command: content.command
      };
      raw = {
        command: helpers_default.reconstructRawString(content.command)
      };
    } else if (content.content && content.wrapperType) {
      directive = "show";
      subtype = "showTemplate";
      values = {
        content: content.content
      };
      raw = {
        content: helpers_default.reconstructRawString(content.content)
      };
      metaInfo.wrapperType = content.wrapperType;
    } else {
      directive = "show";
      subtype = "showValue";
      values = {
        value: [
          content
        ]
      };
      raw = {
        value: helpers_default.reconstructRawString([
          content
        ])
      };
    }
    return [
      helpers_default.createNode(node_type_default.Directive, {
        kind: directive,
        subtype,
        values,
        raw,
        meta: metaInfo,
        location: location()
      })
    ];
  }, "peg$f1148");
  var peg$f1149 = /* @__PURE__ */ __name(function(name, args, value) {
    helpers_default.mlldError(`Implicit executable definitions are not allowed in /when actions.

Instead of:
  /when @condition => @${name}() = ...

Use a separate /exe directive:
  /exe @${name}() = when [@condition => ..., * => default]

This keeps executable definitions at the top level where they belong.`, "/exe", location());
  }, "peg$f1149");
  var peg$f1150 = /* @__PURE__ */ __name(function(hint) {
    const retryNode = helpers_default.createNode(node_type_default.Literal, {
      value: "retry",
      valueType: "retry",
      location: location()
    });
    if (typeof hint !== "undefined" && hint !== null) {
      return [
        retryNode,
        hint
      ];
    }
    return [
      retryNode
    ];
  }, "peg$f1150");
  var peg$f1151 = /* @__PURE__ */ __name(function(cap, rate, processor, ending) {
    const wait = rate ? rate[2] : null;
    const rateMs = wait ? helpers_default.ttlToSeconds(wait.value, wait.unit) * 1e3 : null;
    const values = {
      cap: Number(cap),
      processor: [
        processor
      ]
    };
    if (rateMs !== null) {
      values.rateMs = rateMs;
    }
    if (ending?.tail) {
      values.tail = ending.tail;
    }
    const raw = {
      cap: Number(cap),
      processor: processor.rawIdentifier || helpers_default.reconstructRawString(processor)
    };
    if (rateMs !== null) {
      raw.rateMs = rateMs;
    }
    if (ending?.tail) {
      raw.tail = ending.tail;
    }
    const meta = {
      hasCap: true,
      hasRate: rateMs !== null
    };
    if (ending?.parallel) {
      meta.parallel = ending.parallel;
    }
    if (ending?.comment) {
      meta.comment = ending.comment;
    }
    return helpers_default.createStructuredDirective("while", "while", values, raw, meta, location(), "while");
  }, "peg$f1151");
  var peg$f1152 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("while() requires a maximum iteration count. Expected: while(<cap>[, <rate>]) @processor", "number", location());
  }, "peg$f1152");
  var peg$f1153 = /* @__PURE__ */ __name(function(cap) {
    helpers_default.mlldError("while expects an executable reference like @processor after the iteration cap.", "@", location());
  }, "peg$f1153");
  var peg$f1154 = /* @__PURE__ */ __name(function() {
    helpers_default.mlldError("Missing '(' after while keyword. Expected: while(<cap>[, <rate>]) @processor", "(", location());
  }, "peg$f1154");
  var peg$currPos = options.peg$currPos | 0;
  var peg$savedPos = peg$currPos;
  var peg$posDetailsCache = [
    {
      line: 1,
      column: 1
    }
  ];
  var peg$maxFailPos = peg$currPos;
  var peg$maxFailExpected = options.peg$maxFailExpected || [];
  var peg$silentFails = options.peg$silentFails | 0;
  var peg$result;
  if (options.startRule) {
    if (!(options.startRule in peg$startRuleFunctions)) {
      throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
    }
    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
  }
  function text() {
    return input.substring(peg$savedPos, peg$currPos);
  }
  __name(text, "text");
  function offset() {
    return peg$savedPos;
  }
  __name(offset, "offset");
  function range() {
    return {
      source: peg$source,
      start: peg$savedPos,
      end: peg$currPos
    };
  }
  __name(range, "range");
  function location() {
    return peg$computeLocation(peg$savedPos, peg$currPos);
  }
  __name(location, "location");
  function expected(description, location2) {
    location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);
    throw peg$buildStructuredError([
      peg$otherExpectation(description)
    ], input.substring(peg$savedPos, peg$currPos), location2);
  }
  __name(expected, "expected");
  function error(message, location2) {
    location2 = location2 !== void 0 ? location2 : peg$computeLocation(peg$savedPos, peg$currPos);
    throw peg$buildSimpleError(message, location2);
  }
  __name(error, "error");
  function peg$literalExpectation(text2, ignoreCase) {
    return {
      type: "literal",
      text: text2,
      ignoreCase
    };
  }
  __name(peg$literalExpectation, "peg$literalExpectation");
  function peg$classExpectation(parts, inverted, ignoreCase) {
    return {
      type: "class",
      parts,
      inverted,
      ignoreCase
    };
  }
  __name(peg$classExpectation, "peg$classExpectation");
  function peg$anyExpectation() {
    return {
      type: "any"
    };
  }
  __name(peg$anyExpectation, "peg$anyExpectation");
  function peg$endExpectation() {
    return {
      type: "end"
    };
  }
  __name(peg$endExpectation, "peg$endExpectation");
  function peg$otherExpectation(description) {
    return {
      type: "other",
      description
    };
  }
  __name(peg$otherExpectation, "peg$otherExpectation");
  function peg$computePosDetails(pos) {
    var details = peg$posDetailsCache[pos];
    var p;
    if (details) {
      return details;
    } else {
      if (pos >= peg$posDetailsCache.length) {
        p = peg$posDetailsCache.length - 1;
      } else {
        p = pos;
        while (!peg$posDetailsCache[--p]) {
        }
      }
      details = peg$posDetailsCache[p];
      details = {
        line: details.line,
        column: details.column
      };
      while (p < pos) {
        if (input.charCodeAt(p) === 10) {
          details.line++;
          details.column = 1;
        } else {
          details.column++;
        }
        p++;
      }
      peg$posDetailsCache[pos] = details;
      return details;
    }
  }
  __name(peg$computePosDetails, "peg$computePosDetails");
  function peg$computeLocation(startPos, endPos, offset2) {
    var startPosDetails = peg$computePosDetails(startPos);
    var endPosDetails = peg$computePosDetails(endPos);
    var res = {
      source: peg$source,
      start: {
        offset: startPos,
        line: startPosDetails.line,
        column: startPosDetails.column
      },
      end: {
        offset: endPos,
        line: endPosDetails.line,
        column: endPosDetails.column
      }
    };
    if (offset2 && peg$source && typeof peg$source.offset === "function") {
      res.start = peg$source.offset(res.start);
      res.end = peg$source.offset(res.end);
    }
    return res;
  }
  __name(peg$computeLocation, "peg$computeLocation");
  function peg$fail(expected2) {
    if (peg$currPos < peg$maxFailPos) {
      return;
    }
    if (peg$currPos > peg$maxFailPos) {
      peg$maxFailPos = peg$currPos;
      peg$maxFailExpected = [];
    }
    peg$maxFailExpected.push(expected2);
  }
  __name(peg$fail, "peg$fail");
  function peg$buildSimpleError(message, location2) {
    return new peg$SyntaxError(message, null, null, location2);
  }
  __name(peg$buildSimpleError, "peg$buildSimpleError");
  function peg$buildStructuredError(expected2, found, location2) {
    return new peg$SyntaxError(peg$SyntaxError.buildMessage(expected2, found), expected2, found, location2);
  }
  __name(peg$buildStructuredError, "peg$buildStructuredError");
  function peg$parseStart() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseFrontmatter();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = [];
    s3 = peg$parseLineStartComment();
    if (s3 === peg$FAILED) {
      s3 = peg$parseComment();
      if (s3 === peg$FAILED) {
        s3 = peg$parseMlldRunFence();
        if (s3 === peg$FAILED) {
          s3 = peg$parseCodeFence();
          if (s3 === peg$FAILED) {
            s3 = peg$parseDirective();
            if (s3 === peg$FAILED) {
              s3 = peg$parseStrictBlankLine();
              if (s3 === peg$FAILED) {
                s3 = peg$parseStrictModeTextError();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseTextBlock();
                }
              }
            }
          }
        }
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      s3 = peg$parseLineStartComment();
      if (s3 === peg$FAILED) {
        s3 = peg$parseComment();
        if (s3 === peg$FAILED) {
          s3 = peg$parseMlldRunFence();
          if (s3 === peg$FAILED) {
            s3 = peg$parseCodeFence();
            if (s3 === peg$FAILED) {
              s3 = peg$parseDirective();
              if (s3 === peg$FAILED) {
                s3 = peg$parseStrictBlankLine();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseStrictModeTextError();
                  if (s3 === peg$FAILED) {
                    s3 = peg$parseTextBlock();
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$savedPos = s0;
    s0 = peg$f0(s1, s2);
    return s0;
  }
  __name(peg$parseStart, "peg$parseStart");
  function peg$parseInterDirectiveNewline() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s3 = peg$f1(s1, s2);
      if (s3) {
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f2(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInterDirectiveNewline, "peg$parseInterDirectiveNewline");
  function peg$parseContentEOL() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f3(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseContentEOL, "peg$parseContentEOL");
  function peg$parseDirectiveEOL() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    peg$silentFails++;
    s1 = peg$parseLineTerminator();
    if (s1 === peg$FAILED) {
      s1 = peg$parseEOF();
    }
    peg$silentFails--;
    if (s1 !== peg$FAILED) {
      peg$currPos = s0;
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parse_();
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r0.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r0.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
      }
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = peg$parseLineTerminator();
      if (s4 === peg$FAILED) {
        s4 = peg$parseEOF();
      }
      peg$silentFails--;
      if (s4 !== peg$FAILED) {
        peg$currPos = s3;
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveEOL, "peg$parseDirectiveEOL");
  function peg$parseLineStartComment() {
    var s0, s1, s2, s4;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f4();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCommentMarker();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseCommentContent();
        peg$savedPos = s0;
        s0 = peg$f5(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLineStartComment, "peg$parseLineStartComment");
  function peg$parseComment() {
    var s0, s1, s3;
    s0 = peg$currPos;
    s1 = peg$parseCommentMarker();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCommentContent();
      peg$savedPos = s0;
      s0 = peg$f6(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseComment, "peg$parseComment");
  function peg$parseCommentMarker() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c0) {
      s1 = peg$c0;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e1);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f7();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c1) {
        s1 = peg$c1;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e2);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f8();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommentMarker, "peg$parseCommentMarker");
  function peg$parseCommentContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r1.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e3);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r1.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e3);
        }
      }
    }
    if (input.charCodeAt(peg$currPos) === 10) {
      s2 = peg$c2;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e4);
      }
    }
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f9(s1);
    return s0;
  }
  __name(peg$parseCommentContent, "peg$parseCommentContent");
  function peg$parseInlineComment() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseCommentMarker();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseCommentContent();
      peg$savedPos = s0;
      s0 = peg$f10(s2, s4);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInlineComment, "peg$parseInlineComment");
  function peg$parseBlockComments() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseComment();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f11();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseInlineComment();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f12();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseBlockComments, "peg$parseBlockComments");
  function peg$parseLeadingBlockComment() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseComment();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f13(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseLeadingBlockComment, "peg$parseLeadingBlockComment");
  function peg$parseTextBlock() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseTextPart();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseTextPart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseTextPart();
      }
      peg$savedPos = s0;
      s0 = peg$f14(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTextBlock, "peg$parseTextBlock");
  function peg$parseTextPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f15();
    if (s1) {
      s1 = peg$FAILED;
    } else {
      s1 = void 0;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 === peg$FAILED) {
        s3 = peg$parseBacktickSequence();
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s3 = peg$f16();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f17(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTextPart, "peg$parseTextPart");
  function peg$parseDirective() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f18();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r2.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e7);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r2.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
      }
      s3 = peg$parseSlashVar();
      if (s3 === peg$FAILED) {
        s3 = peg$parseSlashShow();
        if (s3 === peg$FAILED) {
          s3 = peg$parseSlashLog();
          if (s3 === peg$FAILED) {
            s3 = peg$parseSlashExe();
            if (s3 === peg$FAILED) {
              s3 = peg$parseSlashFor();
              if (s3 === peg$FAILED) {
                s3 = peg$parseSlashWhile();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseSlashRun();
                  if (s3 === peg$FAILED) {
                    s3 = peg$parseSlashPath();
                    if (s3 === peg$FAILED) {
                      s3 = peg$parseSlashImport();
                      if (s3 === peg$FAILED) {
                        s3 = peg$parseSlashExport();
                        if (s3 === peg$FAILED) {
                          s3 = peg$parseSlashOutput();
                          if (s3 === peg$FAILED) {
                            s3 = peg$parseSlashAppend();
                            if (s3 === peg$FAILED) {
                              s3 = peg$parseSlashWhen();
                              if (s3 === peg$FAILED) {
                                s3 = peg$parseSlashGuard();
                                if (s3 === peg$FAILED) {
                                  s3 = peg$parseSlashPolicy();
                                  if (s3 === peg$FAILED) {
                                    s3 = peg$parseSlashNeeds();
                                    if (s3 === peg$FAILED) {
                                      s3 = peg$parseSlashWants();
                                      if (s3 === peg$FAILED) {
                                        s3 = peg$parseSlashStream();
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f19(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDirective, "peg$parseDirective");
  function peg$parseStrictBlankLine() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f20();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r0.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r0.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
      }
      s3 = peg$parseLineTerminator();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f21();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$savedPos = peg$currPos;
      s1 = peg$f22();
      if (s1) {
        s1 = void 0;
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = input.charAt(peg$currPos);
        if (peg$r0.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        if (s3 !== peg$FAILED) {
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = input.charAt(peg$currPos);
            if (peg$r0.test(s3)) {
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e0);
              }
            }
          }
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          s3 = peg$currPos;
          peg$silentFails++;
          s4 = peg$parseEOF();
          peg$silentFails--;
          if (s4 !== peg$FAILED) {
            peg$currPos = s3;
            s3 = void 0;
          } else {
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f23();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseStrictBlankLine, "peg$parseStrictBlankLine");
  function peg$parseStrictModeTextError() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f24();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f25();
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        s6 = peg$parseLineTerminator();
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            s6 = peg$parseLineTerminator();
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s6 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s6 !== peg$FAILED) {
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseLineTerminator();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f26();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseStrictModeTextError, "peg$parseStrictModeTextError");
  function peg$parseMlldRunFence() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c4) {
      s1 = peg$c4;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e8);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 8) === peg$c5) {
        s2 = peg$c5;
        peg$currPos += 8;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e9);
        }
      }
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 10) {
          s3 = peg$c2;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e4);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$currPos;
          s6 = peg$currPos;
          peg$silentFails++;
          s7 = peg$currPos;
          if (input.substr(peg$currPos, 3) === peg$c4) {
            s8 = peg$c4;
            peg$currPos += 3;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s8 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s9 = peg$c2;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s9 === peg$FAILED) {
              s9 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s10 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              peg$silentFails--;
              if (s10 === peg$FAILED) {
                s9 = void 0;
              } else {
                peg$currPos = s9;
                s9 = peg$FAILED;
              }
            }
            if (s9 !== peg$FAILED) {
              s8 = [
                s8,
                s9
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          peg$silentFails--;
          if (s7 === peg$FAILED) {
            s6 = void 0;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s7 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s5;
              s5 = peg$f27(s7);
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$currPos;
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$currPos;
            if (input.substr(peg$currPos, 3) === peg$c4) {
              s8 = peg$c4;
              peg$currPos += 3;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e8);
              }
            }
            if (s8 !== peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 10) {
                s9 = peg$c2;
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e4);
                }
              }
              if (s9 === peg$FAILED) {
                s9 = peg$currPos;
                peg$silentFails++;
                if (input.length > peg$currPos) {
                  s10 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e6);
                  }
                }
                peg$silentFails--;
                if (s10 === peg$FAILED) {
                  s9 = void 0;
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
              }
              if (s9 !== peg$FAILED) {
                s8 = [
                  s8,
                  s9
                ];
                s7 = s8;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$savedPos = s5;
                s5 = peg$f27(s7);
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          }
          if (input.substr(peg$currPos, 3) === peg$c4) {
            s5 = peg$c4;
            peg$currPos += 3;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e8);
            }
          }
          if (s5 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s6 = peg$c2;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s6 === peg$FAILED) {
              s6 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f28(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c4) {
        s1 = peg$c4;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e8);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f29(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f30(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseMlldRunFence, "peg$parseMlldRunFence");
  function peg$parseCodeFence() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;
    s0 = peg$currPos;
    s1 = peg$parseBacktickSequence();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeFenceLangID();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      if (input.charCodeAt(peg$currPos) === 10) {
        s3 = peg$c2;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e4);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$currPos;
        s6 = peg$currPos;
        peg$silentFails++;
        s7 = peg$currPos;
        peg$savedPos = peg$currPos;
        s8 = peg$f31(s1, s2);
        if (s8) {
          s8 = void 0;
        } else {
          s8 = peg$FAILED;
        }
        if (s8 !== peg$FAILED) {
          s9 = peg$parseBacktickSequence();
          if (s9 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s10 = peg$f32(s1, s2, s9);
            if (s10) {
              s10 = void 0;
            } else {
              s10 = peg$FAILED;
            }
            if (s10 !== peg$FAILED) {
              s8 = [
                s8,
                s9,
                s10
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
        } else {
          peg$currPos = s7;
          s7 = peg$FAILED;
        }
        peg$silentFails--;
        if (s7 === peg$FAILED) {
          s6 = void 0;
        } else {
          peg$currPos = s6;
          s6 = peg$FAILED;
        }
        if (s6 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s7 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f33(s1, s2, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$currPos;
          s6 = peg$currPos;
          peg$silentFails++;
          s7 = peg$currPos;
          peg$savedPos = peg$currPos;
          s8 = peg$f31(s1, s2);
          if (s8) {
            s8 = void 0;
          } else {
            s8 = peg$FAILED;
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parseBacktickSequence();
            if (s9 !== peg$FAILED) {
              peg$savedPos = peg$currPos;
              s10 = peg$f32(s1, s2, s9);
              if (s10) {
                s10 = void 0;
              } else {
                s10 = peg$FAILED;
              }
              if (s10 !== peg$FAILED) {
                s8 = [
                  s8,
                  s9,
                  s10
                ];
                s7 = s8;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          peg$silentFails--;
          if (s7 === peg$FAILED) {
            s6 = void 0;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s7 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s5;
              s5 = peg$f33(s1, s2, s7);
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        }
        s5 = peg$parseBacktickSequence();
        if (s5 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s6 = peg$f34(s1, s2, s4, s5);
          if (s6) {
            s6 = peg$FAILED;
          } else {
            s6 = void 0;
          }
          if (s6 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 10) {
              s7 = peg$c2;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e4);
              }
            }
            if (s7 === peg$FAILED) {
              s7 = peg$currPos;
              peg$silentFails++;
              if (input.length > peg$currPos) {
                s8 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              peg$silentFails--;
              if (s8 === peg$FAILED) {
                s7 = void 0;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f35(s1, s2, s4, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCodeFence, "peg$parseCodeFence");
  function peg$parseCodeFenceLangID() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r3.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e10);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r3.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e10);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f36(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeFenceLangID, "peg$parseCodeFenceLangID");
  function peg$parseDirectiveContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f37();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e11);
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveContext, "peg$parseDirectiveContext");
  function peg$parseVariableContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f38();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e12);
      }
    }
    return s0;
  }
  __name(peg$parseVariableContext, "peg$parseVariableContext");
  function peg$parseRHSContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f39();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e13);
      }
    }
    return s0;
  }
  __name(peg$parseRHSContext, "peg$parseRHSContext");
  function peg$parsePlainTextContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f40();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e14);
      }
    }
    return s0;
  }
  __name(peg$parsePlainTextContext, "peg$parsePlainTextContext");
  function peg$parseRunCodeBlockContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f41();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e15);
      }
    }
    return s0;
  }
  __name(peg$parseRunCodeBlockContext, "peg$parseRunCodeBlockContext");
  function peg$parseExecRunRHSContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f42();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e16);
      }
    }
    return s0;
  }
  __name(peg$parseExecRunRHSContext, "peg$parseExecRunRHSContext");
  function peg$parsePathStartingWithVariableContext() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f43();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e17);
      }
    }
    return s0;
  }
  __name(peg$parsePathStartingWithVariableContext, "peg$parsePathStartingWithVariableContext");
  function peg$parseDirectiveBoundary() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f44();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e18);
      }
    }
    return s0;
  }
  __name(peg$parseDirectiveBoundary, "peg$parseDirectiveBoundary");
  function peg$parseWhenConditionAdapter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f45(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenConditionAdapter, "peg$parseWhenConditionAdapter");
  function peg$parseArrayFilterAdapter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedArrayOperation();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f46(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseArrayFilterAdapter, "peg$parseArrayFilterAdapter");
  function peg$parseBooleanExpressionAdapter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f47(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseBooleanExpressionAdapter, "peg$parseBooleanExpressionAdapter");
  function peg$parseComparisonAdapter() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f48(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f49(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseComparisonAdapter, "peg$parseComparisonAdapter");
  function peg$parseDocumentStart() {
    var s0;
    peg$savedPos = peg$currPos;
    s0 = peg$f50();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDocumentStart, "peg$parseDocumentStart");
  function peg$parseFrontmatter() {
    var s0, s1, s2, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDocumentStart();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c6) {
        s2 = peg$c6;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e20);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parseHWS();
        s4 = peg$parseLineTerminator();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseFrontmatterContent();
          if (input.substr(peg$currPos, 3) === peg$c6) {
            s6 = peg$c6;
            peg$currPos += 3;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e20);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parseHWS();
            peg$parseLineTerminator();
            peg$savedPos = s0;
            s0 = peg$f51(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e19);
      }
    }
    return s0;
  }
  __name(peg$parseFrontmatter, "peg$parseFrontmatter");
  function peg$parseFrontmatterContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    s4 = peg$parseFrontmatterEnd();
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseFrontmatterLine();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f52(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = peg$parseFrontmatterEnd();
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseFrontmatterLine();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f52(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f53(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseFrontmatterContent, "peg$parseFrontmatterContent");
  function peg$parseFrontmatterLine() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r1.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e3);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r1.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e3);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f54(s1);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFrontmatterLine, "peg$parseFrontmatterLine");
  function peg$parseFrontmatterEnd() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c6) {
      s1 = peg$c6;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e20);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseHWS();
      s3 = peg$parseLineTerminator();
      if (s3 !== peg$FAILED) {
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFrontmatterEnd, "peg$parseFrontmatterEnd");
  function peg$parseStringLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f55(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c8;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseEscapedStringContent();
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c8;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f56(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e21);
      }
    }
    return s0;
  }
  __name(peg$parseStringLiteral, "peg$parseStringLiteral");
  function peg$parseNumberLiteral() {
    var s0, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 45) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e25);
      }
    }
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r4.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e26);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r4.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e26);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c10;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r4.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e26);
          }
        }
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = input.charAt(peg$currPos);
            if (peg$r4.test(s6)) {
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e26);
              }
            }
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          s4 = [
            s4,
            s5
          ];
          s3 = s4;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f57(s2, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e24);
      }
    }
    return s0;
  }
  __name(peg$parseNumberLiteral, "peg$parseNumberLiteral");
  function peg$parseBooleanLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c11) {
      s1 = peg$c11;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e29);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f58();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c12) {
        s1 = peg$c12;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e30);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f59();
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e28);
      }
    }
    return s0;
  }
  __name(peg$parseBooleanLiteral, "peg$parseBooleanLiteral");
  function peg$parseNullLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c13) {
      s1 = peg$c13;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e32);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f60();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e31);
      }
    }
    return s0;
  }
  __name(peg$parseNullLiteral, "peg$parseNullLiteral");
  function peg$parseWildcardLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f61();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e33);
      }
    }
    return s0;
  }
  __name(peg$parseWildcardLiteral, "peg$parseWildcardLiteral");
  function peg$parseNoneLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c15) {
      s1 = peg$c15;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e36);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f62();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e35);
      }
    }
    return s0;
  }
  __name(peg$parseNoneLiteral, "peg$parseNoneLiteral");
  function peg$parseDeniedLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c16) {
      s1 = peg$c16;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e39);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f63();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e38);
      }
    }
    return s0;
  }
  __name(peg$parseDeniedLiteral, "peg$parseDeniedLiteral");
  function peg$parseDoneLiteral() {
    var s0, s1, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c17) {
      s1 = peg$c17;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e41);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s3 = peg$c18;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseUnifiedExpression();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s7 = peg$c19;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f64(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c17) {
        s1 = peg$c17;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e41);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseVarRHSContent();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f65(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c17) {
          s1 = peg$c17;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e41);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f66();
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e40);
      }
    }
    return s0;
  }
  __name(peg$parseDoneLiteral, "peg$parseDoneLiteral");
  function peg$parseContinueLiteral() {
    var s0, s1, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c20) {
      s1 = peg$c20;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e45);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s3 = peg$c18;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseUnifiedExpression();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s7 = peg$c19;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f67(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 8) === peg$c20) {
        s1 = peg$c20;
        peg$currPos += 8;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e45);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseVarRHSContent();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f68(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 8) === peg$c20) {
          s1 = peg$c20;
          peg$currPos += 8;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e45);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f69();
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e44);
      }
    }
    return s0;
  }
  __name(peg$parseContinueLiteral, "peg$parseContinueLiteral");
  function peg$parseRetryLiteral() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c21) {
      s1 = peg$c21;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e47);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f70();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e46);
      }
    }
    return s0;
  }
  __name(peg$parseRetryLiteral, "peg$parseRetryLiteral");
  function peg$parseTimeDurationLiteral() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseNumberLiteral();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTimeUnit();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f71(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e48);
      }
    }
    return s0;
  }
  __name(peg$parseTimeDurationLiteral, "peg$parseTimeDurationLiteral");
  function peg$parseTimeUnit() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c22) {
      s1 = peg$c22;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e50);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f72();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 115) {
        s1 = peg$c23;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e51);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f73();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 109) {
          s1 = peg$c24;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e52);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f74();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 104) {
            s1 = peg$c25;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e53);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f75();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 100) {
              s1 = peg$c26;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e54);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f76();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 119) {
                s1 = peg$c27;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e55);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f77();
              }
              s0 = s1;
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 121) {
                  s1 = peg$c28;
                  peg$currPos++;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e56);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s1 = peg$f78();
                }
                s0 = s1;
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e49);
      }
    }
    return s0;
  }
  __name(peg$parseTimeUnit, "peg$parseTimeUnit");
  function peg$parseMultilineTemplateLiteral() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c29) {
      s1 = peg$c29;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseMultilineTemplateChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseMultilineTemplateChar();
      }
      if (input.substr(peg$currPos, 2) === peg$c30) {
        s3 = peg$c30;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e59);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f79(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e57);
      }
    }
    return s0;
  }
  __name(peg$parseMultilineTemplateLiteral, "peg$parseMultilineTemplateLiteral");
  function peg$parseMultilineTemplateChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c30) {
          s2 = peg$c30;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e59);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f80(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseMultilineTemplateChar, "peg$parseMultilineTemplateChar");
  function peg$parseEscapeSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c31) {
      s1 = peg$c31;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e61);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f81();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 92) {
        s1 = peg$c32;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e62);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = input.charAt(peg$currPos);
        if (peg$r6.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e63);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f82(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e60);
      }
    }
    return s0;
  }
  __name(peg$parseEscapeSequence, "peg$parseEscapeSequence");
  function peg$parseStringEscapeSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c32;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = input.charAt(peg$currPos);
      if (peg$r7.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e65);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f83(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e64);
      }
    }
    return s0;
  }
  __name(peg$parseStringEscapeSequence, "peg$parseStringEscapeSequence");
  function peg$parseBaseTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseBaseChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseBaseChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f84(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e66);
      }
    }
    return s0;
  }
  __name(peg$parseBaseTextSegment, "peg$parseBaseTextSegment");
  function peg$parseBaseChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r8.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e67);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f85(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseBaseChar, "peg$parseBaseChar");
  function peg$parseTemplateTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTemplateChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseTemplateChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f86(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e68);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateTextSegment, "peg$parseTemplateTextSegment");
  function peg$parseTemplateChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c33) {
          s2 = peg$c33;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e69);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 2) === peg$c34) {
            s3 = peg$c34;
            peg$currPos += 2;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e70);
            }
          }
          peg$silentFails--;
          if (s3 === peg$FAILED) {
            s2 = void 0;
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c3) {
              s4 = peg$c3;
              peg$currPos += 2;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e5);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 60) {
                s5 = peg$c35;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e6);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f87(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseTemplateChar, "peg$parseTemplateChar");
  function peg$parseCommandTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCommandChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCommandChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f88(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e72);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTextSegment, "peg$parseCommandTextSegment");
  function peg$parseCommandChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r9.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e73);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f89(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCommandChar, "peg$parseCommandChar");
  function peg$parsePathTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parsePathChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parsePathChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f90(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e74);
      }
    }
    return s0;
  }
  __name(peg$parsePathTextSegment, "peg$parsePathTextSegment");
  function peg$parsePathChar() {
    var s0, s1, s2, s3;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$savedPos = peg$currPos;
      s1 = peg$f91();
      if (s1) {
        s1 = void 0;
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        s3 = input.charAt(peg$currPos);
        if (peg$r10.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e75);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s3 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f92(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parsePathChar, "peg$parsePathChar");
  function peg$parseSectionTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseSectionChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseSectionChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f93(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e76);
      }
    }
    return s0;
  }
  __name(peg$parseSectionTextSegment, "peg$parseSectionTextSegment");
  function peg$parseSectionChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r11.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e77);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f94(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSectionChar, "peg$parseSectionChar");
  function peg$parseEscapedStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f95(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e78);
    }
    return s0;
  }
  __name(peg$parseEscapedStringContent, "peg$parseEscapedStringContent");
  function peg$parseEscapedStringChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s2 = peg$c8;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f96(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseEscapedStringChar, "peg$parseEscapedStringChar");
  function peg$parseEscapedSingleStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedSingleStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedSingleStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f97(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e79);
    }
    return s0;
  }
  __name(peg$parseEscapedSingleStringContent, "peg$parseEscapedSingleStringContent");
  function peg$parseEscapedSingleStringChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s2 = peg$c7;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f98(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedSingleStringChar, "peg$parseEscapedSingleStringChar");
  function peg$parseEscapedBacktickStringContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedBacktickStringChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseEscapedBacktickStringChar();
    }
    peg$savedPos = s0;
    s1 = peg$f99(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e80);
    }
    return s0;
  }
  __name(peg$parseEscapedBacktickStringContent, "peg$parseEscapedBacktickStringContent");
  function peg$parseEscapedBacktickStringChar() {
    var s0, s1, s2;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 96) {
        s2 = peg$c36;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f100(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedBacktickStringChar, "peg$parseEscapedBacktickStringChar");
  function peg$parseDoubleQuotedText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseDoubleQuotedChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseDoubleQuotedChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f101(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleQuotedText, "peg$parseDoubleQuotedText");
  function peg$parseDoubleQuotedChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r12.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e82);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f102(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseDoubleQuotedChar, "peg$parseDoubleQuotedChar");
  function peg$parsePathSeparator() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f103();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e83);
      }
    }
    return s0;
  }
  __name(peg$parsePathSeparator, "peg$parsePathSeparator");
  function peg$parseDotSeparator() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c10;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f104();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e85);
      }
    }
    return s0;
  }
  __name(peg$parseDotSeparator, "peg$parseDotSeparator");
  function peg$parseSectionMarker() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 35) {
      s1 = peg$c38;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e87);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f105();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e86);
      }
    }
    return s0;
  }
  __name(peg$parseSectionMarker, "peg$parseSectionMarker");
  function peg$parseBaseIdentifier() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = input.charAt(peg$currPos);
    if (peg$r13.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e89);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r5.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e37);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f106(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e88);
      }
    }
    return s0;
  }
  __name(peg$parseBaseIdentifier, "peg$parseBaseIdentifier");
  function peg$parseSpecialPathChar() {
    var s0;
    peg$silentFails++;
    s0 = input.charAt(peg$currPos);
    if (peg$r14.test(s0)) {
      peg$currPos++;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e91);
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e90);
      }
    }
    return s0;
  }
  __name(peg$parseSpecialPathChar, "peg$parseSpecialPathChar");
  function peg$parsePathSeparatorToken() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f107();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e92);
      }
    }
    return s0;
  }
  __name(peg$parsePathSeparatorToken, "peg$parsePathSeparatorToken");
  function peg$parseDotSeparatorToken() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c10;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f108();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e93);
      }
    }
    return s0;
  }
  __name(peg$parseDotSeparatorToken, "peg$parseDotSeparatorToken");
  function peg$parseSectionMarkerToken() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r2.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e7);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r2.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e7);
        }
      }
    }
    if (input.charCodeAt(peg$currPos) === 35) {
      s2 = peg$c38;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e87);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f109();
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e94);
      }
    }
    return s0;
  }
  __name(peg$parseSectionMarkerToken, "peg$parseSectionMarkerToken");
  function peg$parseBacktickSequence() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    if (input.charCodeAt(peg$currPos) === 96) {
      s2 = peg$c36;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e81);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        if (input.charCodeAt(peg$currPos) === 96) {
          s2 = peg$c36;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f110(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f111(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e95);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickSequence, "peg$parseBacktickSequence");
  function peg$parseReservedDirective() {
    var s0;
    peg$silentFails++;
    if (input.substr(peg$currPos, 4) === peg$c39) {
      s0 = peg$c39;
      peg$currPos += 4;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e97);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 5) === peg$c40) {
        s0 = peg$c40;
        peg$currPos += 5;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e98);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 7) === peg$c41) {
          s0 = peg$c41;
          peg$currPos += 7;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e99);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c42) {
            s0 = peg$c42;
            peg$currPos += 4;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e100);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c43) {
              s0 = peg$c43;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e101);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 5) === peg$c44) {
                s0 = peg$c44;
                peg$currPos += 5;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e102);
                }
              }
              if (s0 === peg$FAILED) {
                if (input.substr(peg$currPos, 7) === peg$c45) {
                  s0 = peg$c45;
                  peg$currPos += 7;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e103);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input.substr(peg$currPos, 5) === peg$c46) {
                    s0 = peg$c46;
                    peg$currPos += 5;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e104);
                    }
                  }
                  if (s0 === peg$FAILED) {
                    if (input.substr(peg$currPos, 7) === peg$c47) {
                      s0 = peg$c47;
                      peg$currPos += 7;
                    } else {
                      s0 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e105);
                      }
                    }
                    if (s0 === peg$FAILED) {
                      if (input.substr(peg$currPos, 7) === peg$c48) {
                        s0 = peg$c48;
                        peg$currPos += 7;
                      } else {
                        s0 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e106);
                        }
                      }
                      if (s0 === peg$FAILED) {
                        if (input.substr(peg$currPos, 4) === peg$c49) {
                          s0 = peg$c49;
                          peg$currPos += 4;
                        } else {
                          s0 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e107);
                          }
                        }
                        if (s0 === peg$FAILED) {
                          if (input.substr(peg$currPos, 4) === peg$c50) {
                            s0 = peg$c50;
                            peg$currPos += 4;
                          } else {
                            s0 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e108);
                            }
                          }
                          if (s0 === peg$FAILED) {
                            if (input.substr(peg$currPos, 6) === peg$c51) {
                              s0 = peg$c51;
                              peg$currPos += 6;
                            } else {
                              s0 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e109);
                              }
                            }
                            if (s0 === peg$FAILED) {
                              if (input.substr(peg$currPos, 7) === peg$c52) {
                                s0 = peg$c52;
                                peg$currPos += 7;
                              } else {
                                s0 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e110);
                                }
                              }
                              if (s0 === peg$FAILED) {
                                if (input.substr(peg$currPos, 7) === peg$c53) {
                                  s0 = peg$c53;
                                  peg$currPos += 7;
                                } else {
                                  s0 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e111);
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e96);
      }
    }
    return s0;
  }
  __name(peg$parseReservedDirective, "peg$parseReservedDirective");
  function peg$parseStreamKeyword() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c54) {
      s1 = peg$c54;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e113);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s1 = [
          s1,
          s2
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e112);
      }
    }
    return s0;
  }
  __name(peg$parseStreamKeyword, "peg$parseStreamKeyword");
  function peg$parseUnifiedExpression() {
    var s0, s1, s3, s5, s7, s9;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedNullish();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 63) {
        s3 = peg$c55;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e114);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseUnifiedExpression();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s7 = peg$c56;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e115);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$parse_();
            s9 = peg$parseUnifiedExpression();
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f112(s1, s5, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedNullish();
    }
    return s0;
  }
  __name(peg$parseUnifiedExpression, "peg$parseUnifiedExpression");
  function peg$parseUnifiedNullish() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedLogicalOr();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c57) {
        s5 = peg$c57;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e116);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedLogicalOr();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f113(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c57) {
          s5 = peg$c57;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e116);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedLogicalOr();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f113(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f114(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedNullish, "peg$parseUnifiedNullish");
  function peg$parseUnifiedLogicalOr() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedLogicalAnd();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c58) {
        s5 = peg$c58;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedLogicalAnd();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f115(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c58) {
          s5 = peg$c58;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedLogicalAnd();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f115(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f116(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedLogicalOr, "peg$parseUnifiedLogicalOr");
  function peg$parseUnifiedLogicalAnd() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedComparison();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c59) {
        s5 = peg$c59;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedComparison();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f117(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c59) {
          s5 = peg$c59;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedComparison();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f117(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f118(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedLogicalAnd, "peg$parseUnifiedLogicalAnd");
  function peg$parseUnifiedComparison() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedAdditive();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = peg$parseUnifiedComparisonOp();
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedAdditive();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f119(s1, s5, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = peg$parseUnifiedComparisonOp();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedAdditive();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f119(s1, s5, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f120(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedComparison, "peg$parseUnifiedComparison");
  function peg$parseUnifiedComparisonOp() {
    var s0, s1, s2, s3;
    if (input.substr(peg$currPos, 2) === peg$c60) {
      s0 = peg$c60;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e119);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c61) {
        s0 = peg$c61;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e120);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c62) {
          s0 = peg$c62;
          peg$currPos += 2;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e121);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c63) {
            s0 = peg$c63;
            peg$currPos += 2;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e122);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c64) {
              s0 = peg$c64;
              peg$currPos += 2;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e123);
              }
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 60) {
                s1 = peg$c35;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 61) {
                  s3 = peg$c65;
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e124);
                  }
                }
                peg$silentFails--;
                if (s3 === peg$FAILED) {
                  s2 = void 0;
                } else {
                  peg$currPos = s2;
                  s2 = peg$FAILED;
                }
                if (s2 !== peg$FAILED) {
                  s1 = [
                    s1,
                    s2
                  ];
                  s0 = s1;
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 62) {
                  s1 = peg$c66;
                  peg$currPos++;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e125);
                  }
                }
                if (s1 !== peg$FAILED) {
                  s2 = peg$currPos;
                  peg$silentFails++;
                  if (input.charCodeAt(peg$currPos) === 61) {
                    s3 = peg$c65;
                    peg$currPos++;
                  } else {
                    s3 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e124);
                    }
                  }
                  peg$silentFails--;
                  if (s3 === peg$FAILED) {
                    s2 = void 0;
                  } else {
                    peg$currPos = s2;
                    s2 = peg$FAILED;
                  }
                  if (s2 !== peg$FAILED) {
                    s1 = [
                      s1,
                      s2
                    ];
                    s0 = s1;
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedComparisonOp, "peg$parseUnifiedComparisonOp");
  function peg$parseUnifiedAdditive() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedMultiplicative();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = input.charAt(peg$currPos);
      if (peg$r15.test(s5)) {
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e126);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedMultiplicative();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f121(s1, s5, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = input.charAt(peg$currPos);
        if (peg$r15.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e126);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedMultiplicative();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f121(s1, s5, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f122(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedAdditive, "peg$parseUnifiedAdditive");
  function peg$parseUnifiedMultiplicative() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedPrimary();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      s5 = input.charAt(peg$currPos);
      if (peg$r16.test(s5)) {
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e127);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedPrimary();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f123(s1, s5, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        s5 = input.charAt(peg$currPos);
        if (peg$r16.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e127);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedPrimary();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f123(s1, s5, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f124(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedMultiplicative, "peg$parseUnifiedMultiplicative");
  function peg$parseUnifiedPrimary() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c19;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e43);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f125(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedUnaryExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedAtomicExpression();
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedPrimary, "peg$parseUnifiedPrimary");
  function peg$parseUnifiedUnaryExpression() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c67;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e128);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedPrimary();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f126(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedUnaryExpression, "peg$parseUnifiedUnaryExpression");
  function peg$parseUnifiedAtomicExpression() {
    var s0, s1;
    s0 = peg$parseWhenExpression();
    if (s0 === peg$FAILED) {
      s0 = peg$parseForeachCommandExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedArrayOperation();
        if (s0 === peg$FAILED) {
          s0 = peg$parseExecResultMethodCall();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedReferenceNoTail();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExpressionString();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseNumberLiteral();
                if (s1 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s1 = peg$f127(s1);
                }
                s0 = s1;
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseBooleanLiteral();
                  if (s1 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s1 = peg$f128(s1);
                  }
                  s0 = s1;
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseNullLiteral();
                    if (s1 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s1 = peg$f129(s1);
                    }
                    s0 = s1;
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseWildcardLiteral();
                      if (s1 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s1 = peg$f130(s1);
                      }
                      s0 = s1;
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseNoneLiteral();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseDeniedLiteral();
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAtomicExpression, "peg$parseUnifiedAtomicExpression");
  function peg$parseExecResultMethodCall() {
    var s0, s1, s3, s4, s5, s6, s8, s10, s11, s12, s13, s15, s16, s17;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s5 = peg$c18;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseCommandArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 46) {
              s10 = peg$c10;
              peg$currPos++;
            } else {
              s10 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
            if (s10 !== peg$FAILED) {
              s11 = peg$parseBaseIdentifier();
              if (s11 !== peg$FAILED) {
                if (input.charCodeAt(peg$currPos) === 40) {
                  s12 = peg$c18;
                  peg$currPos++;
                } else {
                  s12 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e42);
                  }
                }
                if (s12 !== peg$FAILED) {
                  s13 = peg$parseCommandArgumentList();
                  if (s13 === peg$FAILED) {
                    s13 = null;
                  }
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 41) {
                    s15 = peg$c19;
                    peg$currPos++;
                  } else {
                    s15 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e43);
                    }
                  }
                  if (s15 !== peg$FAILED) {
                    s16 = [];
                    s17 = peg$parsePostFieldAccess();
                    while (s17 !== peg$FAILED) {
                      s16.push(s17);
                      s17 = peg$parsePostFieldAccess();
                    }
                    s17 = peg$parseTailModifiers();
                    if (s17 === peg$FAILED) {
                      s17 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f131(s1, s4, s6, s11, s13, s16, s17);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecResultMethodCall, "peg$parseExecResultMethodCall");
  function peg$parseUnifiedArrayOperation() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c69) {
        s2 = peg$c69;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e130);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseUnifiedExpression();
        if (s3 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 93) {
            s4 = peg$c70;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f132(s1, s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedReferenceNoTail();
      if (s1 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 91) {
          s2 = peg$c71;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s2 !== peg$FAILED) {
          s3 = peg$parseNumberLiteral();
          if (s3 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 58) {
              s4 = peg$c56;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e115);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseNumberLiteral();
              if (s5 === peg$FAILED) {
                s5 = null;
              }
              if (input.charCodeAt(peg$currPos) === 93) {
                s6 = peg$c70;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f133(s1, s3, s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 40) {
          s1 = peg$c18;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parse_();
          s3 = peg$parseUnifiedExpression();
          if (s3 !== peg$FAILED) {
            s4 = peg$parse_();
            peg$savedPos = peg$currPos;
            s5 = peg$f134(s3);
            if (s5) {
              s5 = void 0;
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f135(s3);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedArrayOperation, "peg$parseUnifiedArrayOperation");
  function peg$parseUnifiedQuoteOrTemplate() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedTemplate();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f136(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedQuote();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f137(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e133);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedQuoteOrTemplate, "peg$parseUnifiedQuoteOrTemplate");
  function peg$parseUnifiedQuote() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedDoubleQuote();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedSingleQuote();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedBacktick();
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e134);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedQuote, "peg$parseUnifiedQuote");
  function peg$parseUnifiedDoubleQuote() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseConditionalStringFragment();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedInterpolationContent();
          if (s3 === peg$FAILED) {
            s3 = peg$parseUnifiedAtLiteral();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedDoubleQuotedText();
            }
          }
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseConditionalStringFragment();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedSpecialVariable();
          if (s3 === peg$FAILED) {
            s3 = peg$parseUnifiedInterpolationContent();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedAtLiteral();
              if (s3 === peg$FAILED) {
                s3 = peg$parseUnifiedDoubleQuotedText();
              }
            }
          }
        }
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f138(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e135);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleQuote, "peg$parseUnifiedDoubleQuote");
  function peg$parseUnifiedSingleQuote() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f139(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e136);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedSingleQuote, "peg$parseUnifiedSingleQuote");
  function peg$parseUnifiedBacktick() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 96) {
      s1 = peg$c36;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e81);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedBacktickInterpolation();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedBacktickInterpolation();
      }
      if (input.charCodeAt(peg$currPos) === 96) {
        s3 = peg$c36;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f140(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e137);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBacktick, "peg$parseUnifiedBacktick");
  function peg$parseUnifiedInterpolationContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseExecResultMethodCall();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFieldAccessExec();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedExecInvocation();
        if (s0 === peg$FAILED) {
          s0 = peg$parseFileReferenceInterpolation();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedTemplateVariableReference();
            if (s0 === peg$FAILED) {
              s0 = peg$parseUnifiedReferenceNoTail();
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e138);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedInterpolationContent, "peg$parseUnifiedInterpolationContent");
  function peg$parseConditionalTemplateSnippet() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseConditionalVariableReference();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 96) {
        s2 = peg$c36;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseUnifiedBacktickInterpolation();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseUnifiedBacktickInterpolation();
        }
        if (input.charCodeAt(peg$currPos) === 96) {
          s4 = peg$c36;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f141(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e139);
      }
    }
    return s0;
  }
  __name(peg$parseConditionalTemplateSnippet, "peg$parseConditionalTemplateSnippet");
  function peg$parseConditionalStringFragment() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseConditionalVariableReference();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 34) {
        s2 = peg$c8;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseConditionalStringFragmentContent();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseConditionalStringFragmentContent();
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s4 = peg$c8;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f142(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e140);
      }
    }
    return s0;
  }
  __name(peg$parseConditionalStringFragment, "peg$parseConditionalStringFragment");
  function peg$parseConditionalStringFragmentContent() {
    var s0;
    s0 = peg$parseConditionalStringFragment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedSpecialVariable();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedInterpolationContent();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedAtLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedDoubleQuotedText();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseConditionalStringFragmentContent, "peg$parseConditionalStringFragmentContent");
  function peg$parseUnifiedBacktickInterpolation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$parseTemplateSlashForBlockBacktick();
    if (s0 === peg$FAILED) {
      s0 = peg$parseTemplateInlineShow();
      if (s0 === peg$FAILED) {
        s0 = peg$parseConditionalTemplateSnippet();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedInterpolationContent();
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 64) {
              s1 = peg$c68;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = peg$currPos;
              peg$silentFails++;
              s3 = peg$parseBaseIdentifier();
              peg$silentFails--;
              if (s3 === peg$FAILED) {
                s2 = void 0;
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
              if (s2 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s3 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e6);
                  }
                }
                if (s3 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f143(s3);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$parseAngleBracketLiteral();
              if (s0 === peg$FAILED) {
                s0 = peg$parseUnifiedBacktickTextSegment();
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e141);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBacktickInterpolation, "peg$parseUnifiedBacktickInterpolation");
  function peg$parseUnifiedExecInvocation() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s4 !== peg$FAILED) {
          peg$currPos = s3;
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseUnifiedArgumentList();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f144(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedExecInvocation, "peg$parseUnifiedExecInvocation");
  function peg$parseUnifiedBacktickTextSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedBacktickChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedBacktickChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f145(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedBacktickTextSegment, "peg$parseUnifiedBacktickTextSegment");
  function peg$parseUnifiedBacktickChar() {
    var s0, s1, s2, s3, s4;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r17.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e142);
          }
        }
        if (s2 === peg$FAILED) {
          s2 = peg$currPos;
          s3 = peg$parseLineStartPredicate();
          if (s3 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c49) {
              s4 = peg$c49;
              peg$currPos += 4;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e107);
              }
            }
            if (s4 !== peg$FAILED) {
              s3 = [
                s3,
                s4
              ];
              s2 = s3;
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
          if (s2 === peg$FAILED) {
            s2 = peg$currPos;
            s3 = peg$parseLineStartPredicate();
            if (s3 !== peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c72) {
                s4 = peg$c72;
                peg$currPos += 4;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e143);
                }
              }
              if (s4 !== peg$FAILED) {
                s3 = [
                  s3,
                  s4
                ];
                s2 = s3;
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
            if (s2 === peg$FAILED) {
              s2 = peg$currPos;
              s3 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 60) {
                s4 = peg$c35;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              peg$silentFails--;
              if (s4 !== peg$FAILED) {
                peg$currPos = s3;
                s3 = void 0;
              } else {
                s3 = peg$FAILED;
              }
              if (s3 !== peg$FAILED) {
                s4 = peg$parseFileReferenceInterpolation();
                if (s4 !== peg$FAILED) {
                  s3 = [
                    s3,
                    s4
                  ];
                  s2 = s3;
                } else {
                  peg$currPos = s2;
                  s2 = peg$FAILED;
                }
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
              if (s2 === peg$FAILED) {
                s2 = peg$currPos;
                s3 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 60) {
                  s4 = peg$c35;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e71);
                  }
                }
                peg$silentFails--;
                if (s4 !== peg$FAILED) {
                  peg$currPos = s3;
                  s3 = void 0;
                } else {
                  s3 = peg$FAILED;
                }
                if (s3 !== peg$FAILED) {
                  s4 = peg$parseAngleBracketLiteral();
                  if (s4 !== peg$FAILED) {
                    s3 = [
                      s3,
                      s4
                    ];
                    s2 = s3;
                  } else {
                    peg$currPos = s2;
                    s2 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s2;
                  s2 = peg$FAILED;
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f146(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBacktickChar, "peg$parseUnifiedBacktickChar");
  function peg$parseUnifiedAtLiteral() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 64) {
        s3 = peg$c68;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = peg$parseBaseIdentifier();
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f147();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e144);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAtLiteral, "peg$parseUnifiedAtLiteral");
  function peg$parseUnifiedDoubleQuotedText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedDoubleQuotedChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedDoubleQuotedChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f148(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedDoubleQuotedText, "peg$parseUnifiedDoubleQuotedText");
  function peg$parseUnifiedDoubleQuotedChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r12.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e82);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f149(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleQuotedChar, "peg$parseUnifiedDoubleQuotedChar");
  function peg$parseTemplateSlashForBlockBacktick() {
    var s0, s1, s2, s4, s6, s7, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f150();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c49) {
        s2 = peg$c49;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e107);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseForIterationPattern();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = [];
          s7 = peg$parseTemplateSlashForBlockBacktick();
          if (s7 === peg$FAILED) {
            s7 = peg$parseTemplateInlineShow();
            if (s7 === peg$FAILED) {
              s7 = peg$parseUnifiedInterpolationContent();
              if (s7 === peg$FAILED) {
                s7 = peg$parseUnifiedBacktickTextSegment();
              }
            }
          }
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parseTemplateSlashForBlockBacktick();
            if (s7 === peg$FAILED) {
              s7 = peg$parseTemplateInlineShow();
              if (s7 === peg$FAILED) {
                s7 = peg$parseUnifiedInterpolationContent();
                if (s7 === peg$FAILED) {
                  s7 = peg$parseUnifiedBacktickTextSegment();
                }
              }
            }
          }
          s7 = peg$parse_();
          peg$savedPos = peg$currPos;
          s8 = peg$f151(s4, s6);
          if (s8) {
            s8 = void 0;
          } else {
            s8 = peg$FAILED;
          }
          if (s8 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c72) {
              s9 = peg$c72;
              peg$currPos += 4;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e143);
              }
            }
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f152(s4, s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e145);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateSlashForBlockBacktick, "peg$parseTemplateSlashForBlockBacktick");
  function peg$parseUnifiedTemplate() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedTripleColon();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedDoubleColon();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedDoubleBracket();
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e146);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedTemplate, "peg$parseUnifiedTemplate");
  function peg$parseUnifiedTripleColon() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c73) {
      s1 = peg$c73;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e148);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTemplateBodyMtt();
      if (input.substr(peg$currPos, 3) === peg$c73) {
        s3 = peg$c73;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e148);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f153(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e147);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedTripleColon, "peg$parseUnifiedTripleColon");
  function peg$parseUnifiedDoubleColon() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseTemplateSlashForBlockDouble();
        if (s4 === peg$FAILED) {
          s4 = peg$parseTemplateInlineShow();
          if (s4 === peg$FAILED) {
            s4 = peg$parseUnifiedAtInterpolation();
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseTemplateSlashForBlockDouble();
          if (s4 === peg$FAILED) {
            s4 = peg$parseTemplateInlineShow();
            if (s4 === peg$FAILED) {
              s4 = peg$parseUnifiedAtInterpolation();
            }
          }
        }
        if (input.substr(peg$currPos, 2) === peg$c3) {
          s4 = peg$c3;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f154(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e149);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleColon, "peg$parseUnifiedDoubleColon");
  function peg$parseUnifiedDoubleBracket() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c29) {
      s1 = peg$c29;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseTemplateInlineShow();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedBraceInterpolation();
        if (s3 === peg$FAILED) {
          s3 = peg$parseFileReferenceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseUnifiedBracketTextSegment();
          }
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseTemplateInlineShow();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedBraceInterpolation();
          if (s3 === peg$FAILED) {
            s3 = peg$parseFileReferenceInterpolation();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedBracketTextSegment();
            }
          }
        }
      }
      if (input.substr(peg$currPos, 2) === peg$c30) {
        s3 = peg$c30;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e59);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f155(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e150);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleBracket, "peg$parseUnifiedDoubleBracket");
  function peg$parseUnifiedBraceInterpolation() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedInterpolationVar();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e151);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBraceInterpolation, "peg$parseUnifiedBraceInterpolation");
  function peg$parseUnifiedAtInterpolation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$parseConditionalTemplateSnippet();
    if (s0 === peg$FAILED) {
      s0 = peg$parseExecResultMethodCall();
      if (s0 === peg$FAILED) {
        s0 = peg$parseFieldAccessExec();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedExecInvocation();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedAngleBracketContent();
            if (s0 === peg$FAILED) {
              s0 = peg$parseUnifiedTemplateVariableReference();
              if (s0 === peg$FAILED) {
                s0 = peg$parseUnifiedReferenceNoTail();
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  if (input.substr(peg$currPos, 2) === peg$c31) {
                    s1 = peg$c31;
                    peg$currPos += 2;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e61);
                    }
                  }
                  if (s1 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s1 = peg$f156();
                  }
                  s0 = s1;
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    if (input.substr(peg$currPos, 2) === peg$c74) {
                      s1 = peg$c74;
                      peg$currPos += 2;
                    } else {
                      s1 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e153);
                      }
                    }
                    if (s1 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s1 = peg$f157();
                    }
                    s0 = s1;
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      if (input.charCodeAt(peg$currPos) === 64) {
                        s1 = peg$c68;
                        peg$currPos++;
                      } else {
                        s1 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e129);
                        }
                      }
                      if (s1 !== peg$FAILED) {
                        s2 = peg$currPos;
                        peg$silentFails++;
                        s3 = peg$parseBaseIdentifier();
                        peg$silentFails--;
                        if (s3 === peg$FAILED) {
                          s2 = void 0;
                        } else {
                          peg$currPos = s2;
                          s2 = peg$FAILED;
                        }
                        if (s2 !== peg$FAILED) {
                          if (input.length > peg$currPos) {
                            s3 = input.charAt(peg$currPos);
                            peg$currPos++;
                          } else {
                            s3 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e6);
                            }
                          }
                          if (s3 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f158(s3);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseUnifiedDoubleColonTextSegment();
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e152);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAtInterpolation, "peg$parseUnifiedAtInterpolation");
  function peg$parseLineStartPredicate() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f159();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e154);
      }
    }
    return s0;
  }
  __name(peg$parseLineStartPredicate, "peg$parseLineStartPredicate");
  function peg$parseUnifiedTemplateTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedTemplateChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedTemplateChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f160(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e68);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedTemplateTextSegment, "peg$parseUnifiedTemplateTextSegment");
  function peg$parseUnifiedTemplateChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 3) === peg$c73) {
          s2 = peg$c73;
          peg$currPos += 3;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e148);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c33) {
            s2 = peg$c33;
            peg$currPos += 2;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e69);
            }
          }
          if (s2 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c34) {
              s2 = peg$c34;
              peg$currPos += 2;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e70);
              }
            }
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f161(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedTemplateChar, "peg$parseUnifiedTemplateChar");
  function peg$parseUnifiedDoubleColonTextSegment() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s4 = peg$c3;
      peg$currPos += 2;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s4 === peg$FAILED) {
      s4 = peg$currPos;
      s5 = peg$parseLineStartPredicate();
      if (s5 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c49) {
          s6 = peg$c49;
          peg$currPos += 4;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e107);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      if (s4 === peg$FAILED) {
        s4 = peg$currPos;
        s5 = peg$parseLineStartPredicate();
        if (s5 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c72) {
            s6 = peg$c72;
            peg$currPos += 4;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e143);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c74) {
            s4 = peg$c74;
            peg$currPos += 2;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e153);
            }
          }
          if (s4 === peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c68;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s4 === peg$FAILED) {
              s4 = peg$currPos;
              s5 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 60) {
                s6 = peg$c35;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              peg$silentFails--;
              if (s6 !== peg$FAILED) {
                peg$currPos = s5;
                s5 = void 0;
              } else {
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$parseFileReferenceInterpolation();
                if (s6 !== peg$FAILED) {
                  s5 = [
                    s5,
                    s6
                  ];
                  s4 = s5;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 === peg$FAILED) {
                s4 = peg$currPos;
                s5 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 60) {
                  s6 = peg$c35;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e71);
                  }
                }
                peg$silentFails--;
                if (s6 !== peg$FAILED) {
                  peg$currPos = s5;
                  s5 = void 0;
                } else {
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  s6 = peg$parseAngleBracketLiteral();
                  if (s6 !== peg$FAILED) {
                    s5 = [
                      s5,
                      s6
                    ];
                    s4 = s5;
                  } else {
                    peg$currPos = s4;
                    s4 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f162(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c3) {
          s4 = peg$c3;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        if (s4 === peg$FAILED) {
          s4 = peg$currPos;
          s5 = peg$parseLineStartPredicate();
          if (s5 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c49) {
              s6 = peg$c49;
              peg$currPos += 4;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e107);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 === peg$FAILED) {
            s4 = peg$currPos;
            s5 = peg$parseLineStartPredicate();
            if (s5 !== peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c72) {
                s6 = peg$c72;
                peg$currPos += 4;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e143);
                }
              }
              if (s6 !== peg$FAILED) {
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c74) {
                s4 = peg$c74;
                peg$currPos += 2;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e153);
                }
              }
              if (s4 === peg$FAILED) {
                if (input.charCodeAt(peg$currPos) === 64) {
                  s4 = peg$c68;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s4 === peg$FAILED) {
                  s4 = peg$currPos;
                  s5 = peg$currPos;
                  peg$silentFails++;
                  if (input.charCodeAt(peg$currPos) === 60) {
                    s6 = peg$c35;
                    peg$currPos++;
                  } else {
                    s6 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e71);
                    }
                  }
                  peg$silentFails--;
                  if (s6 !== peg$FAILED) {
                    peg$currPos = s5;
                    s5 = void 0;
                  } else {
                    s5 = peg$FAILED;
                  }
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parseFileReferenceInterpolation();
                    if (s6 !== peg$FAILED) {
                      s5 = [
                        s5,
                        s6
                      ];
                      s4 = s5;
                    } else {
                      peg$currPos = s4;
                      s4 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s4;
                    s4 = peg$FAILED;
                  }
                  if (s4 === peg$FAILED) {
                    s4 = peg$currPos;
                    s5 = peg$currPos;
                    peg$silentFails++;
                    if (input.charCodeAt(peg$currPos) === 60) {
                      s6 = peg$c35;
                      peg$currPos++;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e71);
                      }
                    }
                    peg$silentFails--;
                    if (s6 !== peg$FAILED) {
                      peg$currPos = s5;
                      s5 = void 0;
                    } else {
                      s5 = peg$FAILED;
                    }
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parseAngleBracketLiteral();
                      if (s6 !== peg$FAILED) {
                        s5 = [
                          s5,
                          s6
                        ];
                        s4 = s5;
                      } else {
                        peg$currPos = s4;
                        s4 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s4;
                      s4 = peg$FAILED;
                    }
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f162(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f163(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e155);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleColonTextSegment, "peg$parseUnifiedDoubleColonTextSegment");
  function peg$parseUnifiedBracketTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedBracketChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedBracketChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f164(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e156);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBracketTextSegment, "peg$parseUnifiedBracketTextSegment");
  function peg$parseUnifiedBracketChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c30) {
          s2 = peg$c30;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e59);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c33) {
            s2 = peg$c33;
            peg$currPos += 2;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e69);
            }
          }
          if (s2 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c34) {
              s2 = peg$c34;
              peg$currPos += 2;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e70);
              }
            }
            if (s2 === peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 60) {
                s2 = peg$c35;
                peg$currPos++;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f165(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedBracketChar, "peg$parseUnifiedBracketChar");
  function peg$parseTemplateSlashForBlockDouble() {
    var s0, s1, s2, s4, s6, s7, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f166();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c49) {
        s2 = peg$c49;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e107);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseForIterationPattern();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = [];
          s7 = peg$parseTemplateSlashForBlockDouble();
          if (s7 === peg$FAILED) {
            s7 = peg$parseTemplateInlineShow();
            if (s7 === peg$FAILED) {
              s7 = peg$parseUnifiedAtInterpolation();
              if (s7 === peg$FAILED) {
                s7 = peg$parseFileReferenceInterpolation();
                if (s7 === peg$FAILED) {
                  s7 = peg$parseUnifiedDoubleColonTextSegment();
                }
              }
            }
          }
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parseTemplateSlashForBlockDouble();
            if (s7 === peg$FAILED) {
              s7 = peg$parseTemplateInlineShow();
              if (s7 === peg$FAILED) {
                s7 = peg$parseUnifiedAtInterpolation();
                if (s7 === peg$FAILED) {
                  s7 = peg$parseFileReferenceInterpolation();
                  if (s7 === peg$FAILED) {
                    s7 = peg$parseUnifiedDoubleColonTextSegment();
                  }
                }
              }
            }
          }
          s7 = peg$parse_();
          peg$savedPos = peg$currPos;
          s8 = peg$f167(s4, s6);
          if (s8) {
            s8 = void 0;
          } else {
            s8 = peg$FAILED;
          }
          if (s8 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c72) {
              s9 = peg$c72;
              peg$currPos += 4;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e143);
              }
            }
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f168(s4, s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e157);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateSlashForBlockDouble, "peg$parseTemplateSlashForBlockDouble");
  function peg$parseTemplateInlineShow() {
    var s0, s1, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c40) {
      s1 = peg$c40;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e98);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedCommandBrackets();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseTailModifiers();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f169(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c40) {
        s1 = peg$c40;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e98);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseRunCodeLanguage();
        if (s3 !== peg$FAILED) {
          s4 = peg$parse_();
          s5 = peg$parseUnifiedCodeBrackets();
          if (s5 !== peg$FAILED) {
            s6 = peg$parseTailModifiers();
            if (s6 === peg$FAILED) {
              s6 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f170(s3, s5, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c40) {
          s1 = peg$c40;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e98);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseTemplateCore();
          if (s3 !== peg$FAILED) {
            s4 = peg$parseTailModifiers();
            if (s4 === peg$FAILED) {
              s4 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f171(s3, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 5) === peg$c40) {
            s1 = peg$c40;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e98);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$parseAlligatorExpression();
            if (s3 !== peg$FAILED) {
              s4 = peg$parseTailModifiers();
              if (s4 === peg$FAILED) {
                s4 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f172(s3, s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 5) === peg$c40) {
              s1 = peg$c40;
              peg$currPos += 5;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e98);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$parse_();
              s3 = peg$parseUnifiedReferenceWithTail();
              if (s3 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f173(s3);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e158);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateInlineShow, "peg$parseTemplateInlineShow");
  function peg$parseTemplateBodyAtt() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTemplateSlashForBlockDouble();
    if (s2 === peg$FAILED) {
      s2 = peg$parseTemplateInlineShow();
      if (s2 === peg$FAILED) {
        s2 = peg$parseUnifiedAtInterpolation();
        if (s2 === peg$FAILED) {
          s2 = peg$parseFileReferenceInterpolation();
          if (s2 === peg$FAILED) {
            s2 = peg$parseUnifiedAttTextSegment();
          }
        }
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseTemplateSlashForBlockDouble();
      if (s2 === peg$FAILED) {
        s2 = peg$parseTemplateInlineShow();
        if (s2 === peg$FAILED) {
          s2 = peg$parseUnifiedAtInterpolation();
          if (s2 === peg$FAILED) {
            s2 = peg$parseFileReferenceInterpolation();
            if (s2 === peg$FAILED) {
              s2 = peg$parseUnifiedAttTextSegment();
            }
          }
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f174(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e159);
    }
    return s0;
  }
  __name(peg$parseTemplateBodyAtt, "peg$parseTemplateBodyAtt");
  function peg$parseUnifiedAttTextSegment() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    s4 = peg$currPos;
    s5 = peg$parseLineStartPredicate();
    if (s5 !== peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c49) {
        s6 = peg$c49;
        peg$currPos += 4;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e107);
        }
      }
      if (s6 !== peg$FAILED) {
        s5 = [
          s5,
          s6
        ];
        s4 = s5;
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 === peg$FAILED) {
      s4 = peg$currPos;
      s5 = peg$parseLineStartPredicate();
      if (s5 !== peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c72) {
          s6 = peg$c72;
          peg$currPos += 4;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e143);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      if (s4 === peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c74) {
          s4 = peg$c74;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e153);
          }
        }
        if (s4 === peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 64) {
            s4 = peg$c68;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s4 === peg$FAILED) {
            s4 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 60) {
              s6 = peg$c35;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e71);
              }
            }
            peg$silentFails--;
            if (s6 !== peg$FAILED) {
              peg$currPos = s5;
              s5 = void 0;
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseFileReferenceInterpolation();
              if (s6 !== peg$FAILED) {
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 === peg$FAILED) {
              s4 = peg$currPos;
              s5 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 60) {
                s6 = peg$c35;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              peg$silentFails--;
              if (s6 !== peg$FAILED) {
                peg$currPos = s5;
                s5 = void 0;
              } else {
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$parseAngleBracketLiteral();
                if (s6 !== peg$FAILED) {
                  s5 = [
                    s5,
                    s6
                  ];
                  s4 = s5;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f175(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = peg$currPos;
        s5 = peg$parseLineStartPredicate();
        if (s5 !== peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c49) {
            s6 = peg$c49;
            peg$currPos += 4;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e107);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = peg$currPos;
          s5 = peg$parseLineStartPredicate();
          if (s5 !== peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c72) {
              s6 = peg$c72;
              peg$currPos += 4;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e143);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c74) {
              s4 = peg$c74;
              peg$currPos += 2;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e153);
              }
            }
            if (s4 === peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c68;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s4 === peg$FAILED) {
                s4 = peg$currPos;
                s5 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 60) {
                  s6 = peg$c35;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e71);
                  }
                }
                peg$silentFails--;
                if (s6 !== peg$FAILED) {
                  peg$currPos = s5;
                  s5 = void 0;
                } else {
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  s6 = peg$parseFileReferenceInterpolation();
                  if (s6 !== peg$FAILED) {
                    s5 = [
                      s5,
                      s6
                    ];
                    s4 = s5;
                  } else {
                    peg$currPos = s4;
                    s4 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
                if (s4 === peg$FAILED) {
                  s4 = peg$currPos;
                  s5 = peg$currPos;
                  peg$silentFails++;
                  if (input.charCodeAt(peg$currPos) === 60) {
                    s6 = peg$c35;
                    peg$currPos++;
                  } else {
                    s6 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e71);
                    }
                  }
                  peg$silentFails--;
                  if (s6 !== peg$FAILED) {
                    peg$currPos = s5;
                    s5 = void 0;
                  } else {
                    s5 = peg$FAILED;
                  }
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parseAngleBracketLiteral();
                    if (s6 !== peg$FAILED) {
                      s5 = [
                        s5,
                        s6
                      ];
                      s4 = s5;
                    } else {
                      peg$currPos = s4;
                      s4 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s4;
                    s4 = peg$FAILED;
                  }
                }
              }
            }
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f175(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f176(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e160);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAttTextSegment, "peg$parseUnifiedAttTextSegment");
  function peg$parseTemplateBodyMtt() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTemplateInlineShow();
    if (s2 === peg$FAILED) {
      s2 = peg$parseUnifiedBraceInterpolation();
      if (s2 === peg$FAILED) {
        s2 = peg$parseFileReferenceInterpolation();
        if (s2 === peg$FAILED) {
          s2 = peg$parseUnifiedTemplateTextSegment();
        }
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseTemplateInlineShow();
      if (s2 === peg$FAILED) {
        s2 = peg$parseUnifiedBraceInterpolation();
        if (s2 === peg$FAILED) {
          s2 = peg$parseFileReferenceInterpolation();
          if (s2 === peg$FAILED) {
            s2 = peg$parseUnifiedTemplateTextSegment();
          }
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f177(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e161);
    }
    return s0;
  }
  __name(peg$parseTemplateBodyMtt, "peg$parseTemplateBodyMtt");
  function peg$parseUnifiedVariable() {
    var s0;
    s0 = peg$parseUnifiedSpecialVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedAtVar();
    }
    return s0;
  }
  __name(peg$parseUnifiedVariable, "peg$parseUnifiedVariable");
  function peg$parseUnifiedSpecialVariable() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedSpecialVariableName();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        peg$savedPos = s0;
        s0 = peg$f178(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e162);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedSpecialVariable, "peg$parseUnifiedSpecialVariable");
  function peg$parseUnifiedSpecialVariableName() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c75) {
      s1 = peg$c75;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e163);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f179();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c76) {
        s1 = peg$c76;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e164);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f180();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c77) {
          s1 = peg$c77;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e165);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f181();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 5) === peg$c78) {
            s1 = peg$c78;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e166);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f182();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 8) === peg$c79) {
              s1 = peg$c79;
              peg$currPos += 8;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e167);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f183();
            }
            s0 = s1;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedSpecialVariableName, "peg$parseUnifiedSpecialVariableName");
  function peg$parseUnifiedAtVar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseVariableContext();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseUnifiedFrontmatterAccess();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f184(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseVariableContext();
        if (s2 !== peg$FAILED) {
          s3 = peg$parseBaseIdentifier();
          if (s3 !== peg$FAILED) {
            s4 = [];
            s5 = peg$parseAnyFieldAccess();
            while (s5 !== peg$FAILED) {
              s4.push(s5);
              s5 = peg$parseAnyFieldAccess();
            }
            peg$savedPos = s0;
            s0 = peg$f185(s3, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 64) {
          s1 = peg$c68;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parseBaseIdentifier();
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 91) {
              s4 = peg$c71;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e132);
              }
            }
            peg$silentFails--;
            if (s4 !== peg$FAILED) {
              peg$currPos = s3;
              s3 = void 0;
            } else {
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              s4 = [];
              s5 = peg$parseAnyFieldAccess();
              if (s5 !== peg$FAILED) {
                while (s5 !== peg$FAILED) {
                  s4.push(s5);
                  s5 = peg$parseAnyFieldAccess();
                }
              } else {
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f186(s2, s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAtVar, "peg$parseUnifiedAtVar");
  function peg$parseUnifiedInterpolationVar() {
    var s0;
    s0 = peg$parseUnifiedInterpolationSpecialVar();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedInterpolationSimpleVar();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedInterpolationDataVar();
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedInterpolationVar, "peg$parseUnifiedInterpolationVar");
  function peg$parseUnifiedInterpolationSpecialVar() {
    var s0, s1, s3, s4, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c33) {
      s1 = peg$c33;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e69);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedSpecialVariableName();
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$parseAnyFieldAccess();
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$parseAnyFieldAccess();
        }
        s5 = peg$parseUnifiedVarFormat();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c34) {
          s7 = peg$c34;
          peg$currPos += 2;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e70);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f187(s3, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedInterpolationSpecialVar, "peg$parseUnifiedInterpolationSpecialVar");
  function peg$parseUnifiedInterpolationSimpleVar() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c33) {
      s1 = peg$c33;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e69);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseUnifiedVarFormat();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c34) {
          s6 = peg$c34;
          peg$currPos += 2;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e70);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f188(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedInterpolationSimpleVar, "peg$parseUnifiedInterpolationSimpleVar");
  function peg$parseUnifiedInterpolationDataVar() {
    var s0, s1, s3, s4, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c33) {
      s1 = peg$c33;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e69);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$parseAnyFieldAccess();
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$parseAnyFieldAccess();
        }
        s5 = peg$parseUnifiedVarFormat();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c34) {
          s7 = peg$c34;
          peg$currPos += 2;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e70);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f189(s3, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedInterpolationDataVar, "peg$parseUnifiedInterpolationDataVar");
  function peg$parseUnifiedVarFormat() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c0) {
      s1 = peg$c0;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e1);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f190(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedVarFormat, "peg$parseUnifiedVarFormat");
  function peg$parseUnifiedFrontmatterAccess() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 11) === peg$c80) {
      s1 = peg$c80;
      peg$currPos += 11;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e168);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c81) {
        s1 = peg$c81;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e169);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 46) {
        s2 = peg$c10;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseBaseIdentifier();
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f191(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedFrontmatterAccess, "peg$parseUnifiedFrontmatterAccess");
  function peg$parseUnifiedVariableReferenceWithTail() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$parse_();
          s6 = peg$parseTailModifiers();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f192(s2, s4, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e170);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedVariableReferenceWithTail, "peg$parseUnifiedVariableReferenceWithTail");
  function peg$parseUnifiedVariableNoTail() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$parseTailModifiers();
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f193(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e171);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedVariableNoTail, "peg$parseUnifiedVariableNoTail");
  function peg$parseUnifiedVariableWithPipes() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedVariableNoTail();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTemplatePipeChain();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f194(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e172);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedVariableWithPipes, "peg$parseUnifiedVariableWithPipes");
  function peg$parseUnifiedTemplateVariableReference() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseBoundaryAwareFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseBoundaryAwareFieldAccess();
        }
        s4 = peg$parseVariableBoundary();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parseTemplatePipeChain();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f195(s2, s3, s4, s5);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e173);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedTemplateVariableReference, "peg$parseUnifiedTemplateVariableReference");
  function peg$parseVariableBoundary() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c82) {
      s1 = peg$c82;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e175);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f196();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 92) {
        s1 = peg$c32;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e62);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 92) {
          s3 = peg$c32;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e62);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f197();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e174);
      }
    }
    return s0;
  }
  __name(peg$parseVariableBoundary, "peg$parseVariableBoundary");
  function peg$parseBoundaryAwareFieldAccess() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = peg$parseVariableBoundary();
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseAnyFieldAccess();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f198(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e176);
      }
    }
    return s0;
  }
  __name(peg$parseBoundaryAwareFieldAccess, "peg$parseBoundaryAwareFieldAccess");
  function peg$parse_() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r18.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e178);
      }
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = input.charAt(peg$currPos);
      if (peg$r18.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e178);
        }
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e177);
    }
    return s0;
  }
  __name(peg$parse_, "peg$parse_");
  function peg$parse__() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r19.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e180);
      }
    }
    if (s1 !== peg$FAILED) {
      while (s1 !== peg$FAILED) {
        s0.push(s1);
        s1 = input.charAt(peg$currPos);
        if (peg$r19.test(s1)) {
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e180);
          }
        }
      }
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e179);
      }
    }
    return s0;
  }
  __name(peg$parse__, "peg$parse__");
  function peg$parseHWS() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r20.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e182);
      }
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = input.charAt(peg$currPos);
      if (peg$r20.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e182);
        }
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e181);
    }
    return s0;
  }
  __name(peg$parseHWS, "peg$parseHWS");
  function peg$parseLineTerminator() {
    var s0;
    if (input.charCodeAt(peg$currPos) === 10) {
      s0 = peg$c2;
      peg$currPos++;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e4);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c83) {
        s0 = peg$c83;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e183);
        }
      }
      if (s0 === peg$FAILED) {
        s0 = input.charAt(peg$currPos);
        if (peg$r21.test(s0)) {
          peg$currPos++;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e184);
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseLineTerminator, "peg$parseLineTerminator");
  function peg$parseEOF() {
    var s0, s1;
    s0 = peg$currPos;
    peg$silentFails++;
    if (input.length > peg$currPos) {
      s1 = input.charAt(peg$currPos);
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e6);
      }
    }
    peg$silentFails--;
    if (s1 === peg$FAILED) {
      s0 = void 0;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEOF, "peg$parseEOF");
  function peg$parseTextUntilNewline() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r22.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e185);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r22.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e185);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f199(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTextUntilNewline, "peg$parseTextUntilNewline");
  function peg$parseEndOfLine() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r0.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e0);
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
    }
    s2 = peg$parseLineTerminator();
    if (s2 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s3 = peg$f200(s1, s2);
      if (s3) {
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f201(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r0.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e0);
        }
      }
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r0.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
      }
      s2 = peg$parseLineTerminator();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f202(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = input.charAt(peg$currPos);
        if (peg$r0.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e0);
          }
        }
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r0.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e0);
            }
          }
        }
        peg$savedPos = peg$currPos;
        s2 = peg$f203(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f204(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseEndOfLine, "peg$parseEndOfLine");
  function peg$parseAlligatorExpression() {
    var s0, s1, s2, s3, s4, s5, s6, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 60) {
      s1 = peg$c35;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e71);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 33) {
        s3 = peg$c67;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e128);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseAlligatorSource();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseAlligatorAstPatterns();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$parseAlligatorOptions();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 62) {
            s8 = peg$c66;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e125);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parseSpacedOrCondensedPipeChain();
            if (s9 === peg$FAILED) {
              s9 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f205(s4, s5, s6, s9);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e186);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorExpression, "peg$parseAlligatorExpression");
  function peg$parseAlligatorAstPatterns() {
    var s0, s2, s4, s5, s6, s7, s8, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 123) {
      s2 = peg$c84;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAlligatorAstPattern();
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = peg$currPos;
        s7 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s8 = peg$c85;
          peg$currPos++;
        } else {
          s8 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s8 !== peg$FAILED) {
          s9 = peg$parse_();
          s10 = peg$parseAlligatorAstPattern();
          if (s10 !== peg$FAILED) {
            s7 = [
              s7,
              s8,
              s9,
              s10
            ];
            s6 = s7;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
        } else {
          peg$currPos = s6;
          s6 = peg$FAILED;
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = peg$currPos;
          s7 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 44) {
            s8 = peg$c85;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e189);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parse_();
            s10 = peg$parseAlligatorAstPattern();
            if (s10 !== peg$FAILED) {
              s7 = [
                s7,
                s8,
                s9,
                s10
              ];
              s6 = s7;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
        }
        s6 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s7 = peg$c86;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f206(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e187);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorAstPatterns, "peg$parseAlligatorAstPatterns");
  function peg$parseAlligatorAstPattern() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseAlligatorAstPatternInner();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c19;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e43);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f207(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseAlligatorAstPatternInner();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f208(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e191);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorAstPattern, "peg$parseAlligatorAstPattern");
  function peg$parseAlligatorAstPatternInner() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c57) {
      s1 = peg$c57;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e116);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f209();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseAstTypeKeyword();
      if (s1 !== peg$FAILED) {
        if (input.substr(peg$currPos, 2) === peg$c57) {
          s2 = peg$c57;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e116);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f210(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 42) {
          s1 = peg$c14;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e34);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parseAstTypeKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = peg$parseAlligatorPatternContinue();
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f211(s2);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 42) {
            s1 = peg$c14;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e34);
            }
          }
          if (s1 !== peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 64) {
              s2 = peg$c68;
              peg$currPos++;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s2 !== peg$FAILED) {
              s3 = peg$parseBaseIdentifier();
              if (s3 !== peg$FAILED) {
                s4 = [];
                s5 = peg$parseAnyFieldAccess();
                while (s5 !== peg$FAILED) {
                  s4.push(s5);
                  s5 = peg$parseAnyFieldAccess();
                }
                peg$savedPos = s0;
                s0 = peg$f212(s3, s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 42) {
              s1 = peg$c14;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e34);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = peg$currPos;
              peg$silentFails++;
              s3 = peg$parseAlligatorPatternContinue();
              peg$silentFails--;
              if (s3 === peg$FAILED) {
                s2 = void 0;
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
              if (s2 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f213();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 64) {
                s1 = peg$c68;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$parseBaseIdentifier();
                if (s2 !== peg$FAILED) {
                  s3 = [];
                  s4 = peg$parseAnyFieldAccess();
                  while (s4 !== peg$FAILED) {
                    s3.push(s4);
                    s4 = peg$parseAnyFieldAccess();
                  }
                  if (input.substr(peg$currPos, 2) === peg$c57) {
                    s4 = peg$c57;
                    peg$currPos += 2;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e116);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f214(s2, s3);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseAlligatorAstIdentifierPattern();
                if (s1 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s1 = peg$f215(s1);
                }
                s0 = s1;
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e192);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorAstPatternInner, "peg$parseAlligatorAstPatternInner");
  function peg$parseAlligatorPatternContinue() {
    var s0;
    s0 = input.charAt(peg$currPos);
    if (peg$r23.test(s0)) {
      peg$currPos++;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e193);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPatternContinue, "peg$parseAlligatorPatternContinue");
  function peg$parseAstTypeKeyword() {
    var s0;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c87) {
      s0 = peg$c87;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e195);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c88) {
        s0 = peg$c88;
        peg$currPos += 3;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e196);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 5) === peg$c89) {
          s0 = peg$c89;
          peg$currPos += 5;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e197);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 9) === peg$c90) {
            s0 = peg$c90;
            peg$currPos += 9;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e198);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c91) {
              s0 = peg$c91;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e199);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 4) === peg$c92) {
                s0 = peg$c92;
                peg$currPos += 4;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e200);
                }
              }
              if (s0 === peg$FAILED) {
                if (input.substr(peg$currPos, 6) === peg$c93) {
                  s0 = peg$c93;
                  peg$currPos += 6;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e201);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input.substr(peg$currPos, 5) === peg$c94) {
                    s0 = peg$c94;
                    peg$currPos += 5;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e202);
                    }
                  }
                  if (s0 === peg$FAILED) {
                    if (input.substr(peg$currPos, 6) === peg$c95) {
                      s0 = peg$c95;
                      peg$currPos += 6;
                    } else {
                      s0 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e203);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e194);
      }
    }
    return s0;
  }
  __name(peg$parseAstTypeKeyword, "peg$parseAstTypeKeyword");
  function peg$parseAlligatorAstIdentifierPattern() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = peg$parseAlligatorPatternPart();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s6 = peg$c10;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s6 !== peg$FAILED) {
        s7 = peg$parseAlligatorPatternPart();
        if (s7 !== peg$FAILED) {
          s6 = [
            s6,
            s7
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c10;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = peg$parseAlligatorPatternPart();
          if (s7 !== peg$FAILED) {
            s6 = [
              s6,
              s7
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f216();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e204);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorAstIdentifierPattern, "peg$parseAlligatorAstIdentifierPattern");
  function peg$parseAlligatorPatternPart() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = input.charAt(peg$currPos);
    if (peg$r24.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e206);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = [];
      s4 = input.charAt(peg$currPos);
      if (peg$r25.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e207);
        }
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = input.charAt(peg$currPos);
        if (peg$r25.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e207);
          }
        }
      }
      s2 = [
        s2,
        s3
      ];
      s1 = s2;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s0 = input.substring(s0, peg$currPos);
    } else {
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e205);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPatternPart, "peg$parseAlligatorPatternPart");
  function peg$parseAlligatorSource() {
    var s0;
    s0 = peg$parseAlligatorURL();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorPath();
    }
    return s0;
  }
  __name(peg$parseAlligatorSource, "peg$parseAlligatorSource");
  function peg$parseAlligatorURL() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c96) {
      s1 = peg$c96;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e209);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c97) {
        s1 = peg$c97;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e210);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c98) {
        s2 = peg$c98;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e211);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseURLHost();
        if (s3 !== peg$FAILED) {
          s4 = peg$parseURLPath();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f217(s1, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e208);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorURL, "peg$parseAlligatorURL");
  function peg$parseAlligatorPath() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorQuotedPath();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorUnquotedPath();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e212);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPath, "peg$parseAlligatorPath");
  function peg$parseAlligatorQuotedPath() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseQuotedPathChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseQuotedPathChar();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f218(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e213);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorQuotedPath, "peg$parseAlligatorQuotedPath");
  function peg$parseAlligatorUnquotedPath() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorPathParts();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f219(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e214);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorUnquotedPath, "peg$parseAlligatorUnquotedPath");
  function peg$parseQuotedPathChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 34) {
      s2 = peg$c8;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f220(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseQuotedPathChar, "peg$parseQuotedPathChar");
  function peg$parseAlligatorPathParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAlligatorVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseAlligatorPathSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAlligatorVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parseAlligatorPathSegment();
          if (s2 === peg$FAILED) {
            s2 = peg$parsePathSeparator();
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f221(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e215);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPathParts, "peg$parseAlligatorPathParts");
  function peg$parseAlligatorVariable() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseBoundaryAwareFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseBoundaryAwareFieldAccess();
        }
        s4 = peg$parseVariableBoundary();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f222(s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e216);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorVariable, "peg$parseAlligatorVariable");
  function peg$parseAlligatorPathSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAlligatorPathChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAlligatorPathChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f223(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e217);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorPathSegment, "peg$parseAlligatorPathSegment");
  function peg$parseAlligatorPathChar() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 62) {
      s2 = peg$c66;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e125);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 35) {
        s3 = peg$c38;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c68;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 4) === peg$c99) {
            s5 = peg$c99;
            peg$currPos += 4;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e218);
            }
          }
          peg$silentFails--;
          if (s5 === peg$FAILED) {
            s4 = void 0;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 123) {
              s6 = peg$c84;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e188);
              }
            }
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$currPos;
              peg$silentFails++;
              s7 = peg$parsePathSeparator();
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$currPos;
                peg$silentFails++;
                s8 = peg$currPos;
                s9 = [];
                s10 = input.charAt(peg$currPos);
                if (peg$r2.test(s10)) {
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e7);
                  }
                }
                if (s10 !== peg$FAILED) {
                  while (s10 !== peg$FAILED) {
                    s9.push(s10);
                    s10 = input.charAt(peg$currPos);
                    if (peg$r2.test(s10)) {
                      peg$currPos++;
                    } else {
                      s10 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e7);
                      }
                    }
                  }
                } else {
                  s9 = peg$FAILED;
                }
                if (s9 !== peg$FAILED) {
                  if (input.charCodeAt(peg$currPos) === 35) {
                    s10 = peg$c38;
                    peg$currPos++;
                  } else {
                    s10 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e87);
                    }
                  }
                  if (s10 !== peg$FAILED) {
                    s9 = [
                      s9,
                      s10
                    ];
                    s8 = s9;
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  s8 = peg$currPos;
                  peg$silentFails++;
                  s9 = peg$currPos;
                  s10 = [];
                  s11 = input.charAt(peg$currPos);
                  if (peg$r2.test(s11)) {
                    peg$currPos++;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e7);
                    }
                  }
                  if (s11 !== peg$FAILED) {
                    while (s11 !== peg$FAILED) {
                      s10.push(s11);
                      s11 = input.charAt(peg$currPos);
                      if (peg$r2.test(s11)) {
                        peg$currPos++;
                      } else {
                        s11 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e7);
                        }
                      }
                    }
                  } else {
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    if (input.substr(peg$currPos, 2) === peg$c100) {
                      s11 = peg$c100;
                      peg$currPos += 2;
                    } else {
                      s11 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e219);
                      }
                    }
                    if (s11 !== peg$FAILED) {
                      s10 = [
                        s10,
                        s11
                      ];
                      s9 = s10;
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s9;
                    s9 = peg$FAILED;
                  }
                  peg$silentFails--;
                  if (s9 === peg$FAILED) {
                    s8 = void 0;
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                  if (s8 !== peg$FAILED) {
                    if (input.length > peg$currPos) {
                      s9 = input.charAt(peg$currPos);
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e6);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f224(s9);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAlligatorPathChar, "peg$parseAlligatorPathChar");
  function peg$parseAlligatorOptions() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseSectionClause();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      s3 = peg$parseAsTransform();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f225(s1, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseSectionClause();
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        s3 = peg$parseAsRename();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f226(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseSectionClause();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f227(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parse_();
          s2 = peg$parseAsTransform();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f228(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorOptions, "peg$parseAlligatorOptions");
  function peg$parseSectionClause() {
    var s0, s1, s2, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r2.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e7);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r2.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 35) {
        s2 = peg$c38;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseAlligatorSectionIdentifier();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f229(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionClause, "peg$parseSectionClause");
  function peg$parseAlligatorSectionIdentifier() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    if (input.charCodeAt(peg$currPos) === 35) {
      s3 = peg$c38;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e87);
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      if (input.charCodeAt(peg$currPos) === 35) {
        s3 = peg$c38;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
    }
    s1 = input.substring(s1, peg$currPos);
    if (input.substr(peg$currPos, 2) === peg$c57) {
      s2 = peg$c57;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e116);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f230(s1);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f231(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$parseAlligatorSectionChar();
        if (s2 !== peg$FAILED) {
          while (s2 !== peg$FAILED) {
            s1.push(s2);
            s2 = peg$parseAlligatorSectionChar();
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f232(s1);
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e220);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorSectionIdentifier, "peg$parseAlligatorSectionIdentifier");
  function peg$parseAlligatorSectionChar() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 62) {
      s2 = peg$c66;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e125);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.substr(peg$currPos, 3) === peg$c101) {
        s3 = peg$c101;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e221);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s3 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f233(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAlligatorSectionChar, "peg$parseAlligatorSectionChar");
  function peg$parseAsRename() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s2 = peg$c100;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAsSectionRenameString();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f234(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e222);
      }
    }
    return s0;
  }
  __name(peg$parseAsRename, "peg$parseAsRename");
  function peg$parseAsSectionRenameString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleColonTemplatePart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleColonTemplatePart();
      }
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f235(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c8;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseRenameStringPart();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseRenameStringPart();
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c8;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f236(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 96) {
          s1 = peg$c36;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$parseRenameBacktickPart();
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$parseRenameBacktickPart();
          }
          if (input.charCodeAt(peg$currPos) === 96) {
            s3 = peg$c36;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e81);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f237(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e223);
      }
    }
    return s0;
  }
  __name(peg$parseAsSectionRenameString, "peg$parseAsSectionRenameString");
  function peg$parseRenameStringPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$parseFileReferenceInterpolation();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = input.charAt(peg$currPos);
      if (peg$r26.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e224);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f238(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$currPos;
          s3 = peg$currPos;
          peg$silentFails++;
          s4 = input.charAt(peg$currPos);
          if (peg$r26.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e224);
            }
          }
          peg$silentFails--;
          if (s4 === peg$FAILED) {
            s3 = void 0;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s4 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s4 !== peg$FAILED) {
              peg$savedPos = s2;
              s2 = peg$f238(s4);
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f239(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseRenameStringPart, "peg$parseRenameStringPart");
  function peg$parseRenameBacktickPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$parseFileReferenceInterpolation();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseBoundaryAwareFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseBoundaryAwareFieldAccess();
          }
          s4 = peg$parseVariableBoundary();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f240(s2, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = input.charAt(peg$currPos);
        if (peg$r27.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e225);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f241(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          while (s2 !== peg$FAILED) {
            s1.push(s2);
            s2 = peg$currPos;
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = input.charAt(peg$currPos);
            if (peg$r27.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e225);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s4 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s2;
                s2 = peg$f241(s4);
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f242(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseRenameBacktickPart, "peg$parseRenameBacktickPart");
  function peg$parseAsTransform() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s2 = peg$c100;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseAlligatorTransformTemplate();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f243(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e226);
      }
    }
    return s0;
  }
  __name(peg$parseAsTransform, "peg$parseAsTransform");
  function peg$parseAlligatorTransformTemplate() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleColonTemplatePart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleColonTemplatePart();
      }
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f244(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 96) {
        s1 = peg$c36;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseBacktickTransformPart();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseBacktickTransformPart();
        }
        if (input.charCodeAt(peg$currPos) === 96) {
          s3 = peg$c36;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f245(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e227);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorTransformTemplate, "peg$parseAlligatorTransformTemplate");
  function peg$parseBacktickTransformPart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c102) {
      s1 = peg$c102;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e228);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTransformFieldChain();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f246(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseBoundaryAwareFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseBoundaryAwareFieldAccess();
          }
          s4 = peg$parseVariableBoundary();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f247(s2, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = input.charAt(peg$currPos);
        if (peg$r27.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e225);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f248(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          while (s2 !== peg$FAILED) {
            s1.push(s2);
            s2 = peg$currPos;
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = input.charAt(peg$currPos);
            if (peg$r27.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e225);
              }
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s4 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s2;
                s2 = peg$f248(s4);
              } else {
                peg$currPos = s2;
                s2 = peg$FAILED;
              }
            } else {
              peg$currPos = s2;
              s2 = peg$FAILED;
            }
          }
        } else {
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f249(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTransformPart, "peg$parseBacktickTransformPart");
  function peg$parseDoubleColonTemplatePart() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c102) {
      s1 = peg$c102;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e228);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTransformFieldChain();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f250(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseBoundaryAwareFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseBoundaryAwareFieldAccess();
          }
          s4 = peg$parseVariableBoundary();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f251(s2, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedDoubleColonTextSegment();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f252(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseDoubleColonTemplatePart, "peg$parseDoubleColonTemplatePart");
  function peg$parseTransformFieldChain() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c10;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTransformField();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s5 = peg$c10;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseTransformField();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f253(s2, s6);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 46) {
            s5 = peg$c10;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parseTransformField();
            if (s6 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f253(s2, s6);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        peg$savedPos = s0;
        s0 = peg$f254(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTransformFieldChain, "peg$parseTransformFieldChain");
  function peg$parseTransformField() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f255(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTransformField, "peg$parseTransformField");
  function peg$parseURLHost() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r28.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e229);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r28.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e229);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f256(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLHost, "peg$parseURLHost");
  function peg$parseURLPath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r29.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e230);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r29.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e230);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f257(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseURLPath, "peg$parseURLPath");
  function peg$parseArrayLiteral() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c70;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f258();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseArrayItems();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c70;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f259(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e231);
      }
    }
    return s0;
  }
  __name(peg$parseArrayLiteral, "peg$parseArrayLiteral");
  function peg$parseArrayItems() {
    var s0, s1, s2, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseArrayValue();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseArrayValue();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f260(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseArrayValue();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f260(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      s3 = peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      peg$savedPos = s0;
      s0 = peg$f261(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e232);
      }
    }
    return s0;
  }
  __name(peg$parseArrayItems, "peg$parseArrayItems");
  function peg$parseConditionalArrayElement() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseConditionalVariableReference();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f262(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseConditionalArrayElement, "peg$parseConditionalArrayElement");
  function peg$parseArrayValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorExpression();
    if (s0 === peg$FAILED) {
      s0 = peg$parseArrayLiteral();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseExecInvocationPattern();
          if (s0 === peg$FAILED) {
            s0 = peg$parseConditionalArrayElement();
            if (s0 === peg$FAILED) {
              s0 = peg$parseVariableWithTail();
              if (s0 === peg$FAILED) {
                s0 = peg$parseUnifiedAtVar();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseUnifiedQuoteOrTemplate();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseCodeExecution();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseNestedDirective();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseDataString();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseNumberLiteral();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseBooleanLiteral();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parseNullLiteral();
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e233);
      }
    }
    return s0;
  }
  __name(peg$parseArrayValue, "peg$parseArrayValue");
  function peg$parseCommandReference() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedArgumentList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f263(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e234);
      }
    }
    return s0;
  }
  __name(peg$parseCommandReference, "peg$parseCommandReference");
  function peg$parseCommandArgumentList() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedArgumentListItems();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e235);
      }
    }
    return s0;
  }
  __name(peg$parseCommandArgumentList, "peg$parseCommandArgumentList");
  function peg$parseNestedExecInvocation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseUnifiedArgumentList();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f264(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e236);
      }
    }
    return s0;
  }
  __name(peg$parseNestedExecInvocation, "peg$parseNestedExecInvocation");
  function peg$parseCommandTemplateArgument() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseCommandTemplateContent();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseCommandTemplateContent();
      }
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f265(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e237);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTemplateArgument, "peg$parseCommandTemplateArgument");
  function peg$parseBacktickTemplateArgument() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBacktickTemplate();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f266(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e238);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplateArgument, "peg$parseBacktickTemplateArgument");
  function peg$parseBacktickTemplate() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 96) {
      s1 = peg$c36;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e81);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedBacktickInterpolation();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedBacktickInterpolation();
      }
      if (input.charCodeAt(peg$currPos) === 96) {
        s3 = peg$c36;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f267(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e239);
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplate, "peg$parseBacktickTemplate");
  function peg$parseCommandTemplateContent() {
    var s0, s1, s2;
    s0 = peg$parseUnifiedInterpolationVar();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseCommandTemplateChar();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseCommandTemplateChar();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f268(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseCommandTemplateContent, "peg$parseCommandTemplateContent");
  function peg$parseCommandTemplateChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c34) {
      s2 = peg$c34;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e70);
      }
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s2 = peg$c3;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f269(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCommandTemplateChar, "peg$parseCommandTemplateChar");
  function peg$parseEscapedArgument() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseEscapedArgChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseEscapedArgChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f270(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e240);
      }
    }
    return s0;
  }
  __name(peg$parseEscapedArgument, "peg$parseEscapedArgument");
  function peg$parseEscapedArgChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c32;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f271(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r30.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e241);
        }
      }
      if (s2 === peg$FAILED) {
        s2 = peg$currPos;
        s3 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s4 = peg$c85;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s3 = [
            s3,
            s4,
            s5
          ];
          s2 = s3;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 === peg$FAILED) {
          s2 = peg$currPos;
          s3 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s4 = peg$c19;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s4 !== peg$FAILED) {
            s3 = [
              s3,
              s4
            ];
            s2 = s3;
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f272(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseEscapedArgChar, "peg$parseEscapedArgChar");
  function peg$parseRawArgument() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseRawArgChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseRawArgChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f273(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e242);
      }
    }
    return s0;
  }
  __name(peg$parseRawArgument, "peg$parseRawArgument");
  function peg$parseRawArgChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = input.charAt(peg$currPos);
    if (peg$r31.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e243);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f274(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRawArgChar, "peg$parseRawArgChar");
  function peg$parseConditionalVariableReference() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        if (input.charCodeAt(peg$currPos) === 63) {
          s4 = peg$c55;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e114);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f275(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseConditionalVariableReference, "peg$parseConditionalVariableReference");
  function peg$parseLiteralContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedStringContent();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f276(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseEscapedSingleStringContent();
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f277(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e244);
      }
    }
    return s0;
  }
  __name(peg$parseLiteralContent, "peg$parseLiteralContent");
  function peg$parseSemanticSectionContent() {
    var s0, s1, s2, s4, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parsePathParts();
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 35) {
        s4 = peg$c38;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseSectionIdentifier();
        if (s6 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 93) {
            s7 = peg$c70;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f278(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e245);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticSectionContent, "peg$parseSemanticSectionContent");
  function peg$parsePathParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedSpecialVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseUnifiedVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedSpecialVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseUnifiedVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathTextSegment();
          if (s2 === peg$FAILED) {
            s2 = peg$parsePathSeparator();
          }
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f279(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e246);
    }
    return s0;
  }
  __name(peg$parsePathParts, "peg$parsePathParts");
  function peg$parseSectionName() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 93) {
      s5 = peg$c70;
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e131);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f280(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e247);
      }
    }
    return s0;
  }
  __name(peg$parseSectionName, "peg$parseSectionName");
  function peg$parseSemanticCommandBracketContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedSpecialVariable();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedVariableNoTail();
        if (s3 === peg$FAILED) {
          s3 = peg$parseQuotedCommandString();
          if (s3 === peg$FAILED) {
            s3 = peg$parseCommandTextContent();
          }
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedSpecialVariable();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedVariableNoTail();
          if (s3 === peg$FAILED) {
            s3 = peg$parseQuotedCommandString();
            if (s3 === peg$FAILED) {
              s3 = peg$parseCommandTextContent();
            }
          }
        }
      }
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c70;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f281(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e248);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticCommandBracketContent, "peg$parseSemanticCommandBracketContent");
  function peg$parseCommandBracketContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseSemanticCommandBracketContent();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e249);
      }
    }
    return s0;
  }
  __name(peg$parseCommandBracketContent, "peg$parseCommandBracketContent");
  function peg$parseQuotedCommandString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseDoubleQuotedCommandContent();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f282(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseSingleQuotedCommandContent();
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f283(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e250);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedCommandString, "peg$parseQuotedCommandString");
  function peg$parseDoubleQuotedCommandContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedSpecialVariable();
    if (s2 === peg$FAILED) {
      s2 = peg$parseUnifiedVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseDoubleQuotedText();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedSpecialVariable();
      if (s2 === peg$FAILED) {
        s2 = peg$parseUnifiedVariable();
        if (s2 === peg$FAILED) {
          s2 = peg$parseDoubleQuotedText();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f284(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleQuotedCommandContent, "peg$parseDoubleQuotedCommandContent");
  function peg$parseSingleQuotedCommandContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 39) {
      s4 = peg$c7;
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f285(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s4 = peg$c7;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f285(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f286(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseSingleQuotedCommandContent, "peg$parseSingleQuotedCommandContent");
  function peg$parseBacktickExecInvocation() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s4 !== peg$FAILED) {
          peg$currPos = s3;
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseUnifiedArgumentList();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f287(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseBacktickExecInvocation, "peg$parseBacktickExecInvocation");
  function peg$parseBacktickTextSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseBacktickTemplateChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseBacktickTemplateChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f288(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseBacktickTextSegment, "peg$parseBacktickTextSegment");
  function peg$parseBacktickTemplateChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        s2 = input.charAt(peg$currPos);
        if (peg$r32.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e251);
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f289(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseBacktickTemplateChar, "peg$parseBacktickTemplateChar");
  function peg$parseDoubleColonTextSegment() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s4 = peg$c3;
      peg$currPos += 2;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s4 === peg$FAILED) {
      s4 = input.charAt(peg$currPos);
      if (peg$r33.test(s4)) {
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e252);
        }
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f290(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c3) {
          s4 = peg$c3;
          peg$currPos += 2;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e5);
          }
        }
        if (s4 === peg$FAILED) {
          s4 = input.charAt(peg$currPos);
          if (peg$r33.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e252);
            }
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f290(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f291(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDoubleColonTextSegment, "peg$parseDoubleColonTextSegment");
  function peg$parseCommandTextContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCommandBracketChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseCommandBracketChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f292(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e253);
      }
    }
    return s0;
  }
  __name(peg$parseCommandTextContent, "peg$parseCommandTextContent");
  function peg$parseCommandBracketChar() {
    var s0, s1, s2, s3;
    s0 = peg$parseEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 64) {
        s2 = peg$c68;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f293();
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s3 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f294(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCommandBracketChar, "peg$parseCommandBracketChar");
  function peg$parseDoubleColonContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c3) {
      s1 = peg$c3;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e5);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleColonInterpolation();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleColonInterpolation();
      }
      if (input.substr(peg$currPos, 2) === peg$c3) {
        s3 = peg$c3;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e5);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f295(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e254);
      }
    }
    return s0;
  }
  __name(peg$parseDoubleColonContent, "peg$parseDoubleColonContent");
  function peg$parseDoubleColonInterpolation() {
    var s0, s1, s2, s3;
    s0 = peg$parseExecResultMethodCall();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFieldAccessExec();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedExecInvocation();
        if (s0 === peg$FAILED) {
          s0 = peg$parseFileReferenceInterpolation();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedTemplateVariableReference();
            if (s0 === peg$FAILED) {
              s0 = peg$parseUnifiedReferenceNoTail();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 64) {
                  s1 = peg$c68;
                  peg$currPos++;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s1 !== peg$FAILED) {
                  s2 = peg$currPos;
                  peg$silentFails++;
                  s3 = peg$parseBaseIdentifier();
                  peg$silentFails--;
                  if (s3 === peg$FAILED) {
                    s2 = void 0;
                  } else {
                    peg$currPos = s2;
                    s2 = peg$FAILED;
                  }
                  if (s2 !== peg$FAILED) {
                    if (input.length > peg$currPos) {
                      s3 = input.charAt(peg$currPos);
                      peg$currPos++;
                    } else {
                      s3 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e6);
                      }
                    }
                    if (s3 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f296(s3);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$parseDoubleColonTextSegment();
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseDoubleColonInterpolation, "peg$parseDoubleColonInterpolation");
  function peg$parseTripleColonContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c73) {
      s1 = peg$c73;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e148);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedInterpolationVar();
      if (s3 === peg$FAILED) {
        s3 = peg$parseTripleColonTextSegment();
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedInterpolationVar();
        if (s3 === peg$FAILED) {
          s3 = peg$parseTripleColonTextSegment();
        }
      }
      if (input.substr(peg$currPos, 3) === peg$c73) {
        s3 = peg$c73;
        peg$currPos += 3;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e148);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f297(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedInterpolationVar();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f298(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e255);
      }
    }
    return s0;
  }
  __name(peg$parseTripleColonContent, "peg$parseTripleColonContent");
  function peg$parseTripleColonTextSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTripleColonChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseTripleColonChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f299(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTripleColonTextSegment, "peg$parseTripleColonTextSegment");
  function peg$parseTripleColonChar() {
    var s0, s1, s2;
    s0 = peg$parseStringEscapeSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEscapeSequence();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 3) === peg$c73) {
          s2 = peg$c73;
          peg$currPos += 3;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e148);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c33) {
            s2 = peg$c33;
            peg$currPos += 2;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e69);
            }
          }
          if (s2 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c34) {
              s2 = peg$c34;
              peg$currPos += 2;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e70);
              }
            }
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f300(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseTripleColonChar, "peg$parseTripleColonChar");
  function peg$parseUnquotedPath() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnquotedPathPart();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnquotedPathPart();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f301(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e256);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPath, "peg$parseUnquotedPath");
  function peg$parseUnquotedPathPart() {
    var s0;
    s0 = peg$parsePathSeparator();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedVariableNoTail();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnquotedPathText();
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPathPart, "peg$parseUnquotedPathPart");
  function peg$parseUnquotedPathText() {
    var s0, s1, s2, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    s5 = input.charAt(peg$currPos);
    if (peg$r34.test(s5)) {
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e258);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        s5 = input.charAt(peg$currPos);
        if (peg$r34.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e258);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f302(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e257);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedPathText, "peg$parseUnquotedPathText");
  function peg$parseUnquotedCommand() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedAtVar();
    if (s2 === peg$FAILED) {
      s2 = peg$parseBaseTextSegment();
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedAtVar();
        if (s2 === peg$FAILED) {
          s2 = peg$parseBaseTextSegment();
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f303(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e259);
      }
    }
    return s0;
  }
  __name(peg$parseUnquotedCommand, "peg$parseUnquotedCommand");
  function peg$parseSemanticCodeContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = peg$parseCodeLiteralContent();
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 93) {
        s3 = peg$c70;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f304(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e260);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticCodeContent, "peg$parseSemanticCodeContent");
  function peg$parseDirectCodeContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$parseSemanticCodeContent();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r35.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e262);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r35.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e262);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s1 = input.substring(s1, peg$currPos);
      } else {
        s1 = s2;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f305(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e261);
      }
    }
    return s0;
  }
  __name(peg$parseDirectCodeContent, "peg$parseDirectCodeContent");
  function peg$parseCodeLiteralContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCodeLiteralPart();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseCodeLiteralPart();
    }
    peg$savedPos = s0;
    s1 = peg$f306(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e263);
    }
    return s0;
  }
  __name(peg$parseCodeLiteralContent, "peg$parseCodeLiteralContent");
  function peg$parseCodeLiteralPart() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeLiteralContent();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 93) {
          s3 = peg$c70;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f307(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 93) {
        s2 = peg$c70;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f308(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCodeLiteralPart, "peg$parseCodeLiteralPart");
  function peg$parseInterpolatedTemplateContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDoubleColonContent();
    if (s0 === peg$FAILED) {
      s0 = peg$parseTripleColonContent();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e264);
      }
    }
    return s0;
  }
  __name(peg$parseInterpolatedTemplateContent, "peg$parseInterpolatedTemplateContent");
  function peg$parseCommandStyleInterpolation() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedDoubleQuote();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f309(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedSingleQuote();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f310(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$parseCommandBracketContent();
        if (s0 === peg$FAILED) {
          s0 = peg$parseInterpolatedTemplateContent();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e265);
      }
    }
    return s0;
  }
  __name(peg$parseCommandStyleInterpolation, "peg$parseCommandStyleInterpolation");
  function peg$parseSemanticTextContent() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c29) {
      s1 = peg$c29;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e58);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f311();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r36.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e267);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r36.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e267);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 93) {
          s3 = peg$c70;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = peg$currPos;
          s4 = peg$f312(s2);
          if (s4) {
            s4 = void 0;
          } else {
            s4 = peg$FAILED;
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f313(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f314();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c42) {
            s1 = peg$c42;
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e100);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f315();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 34) {
              s1 = peg$c8;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f316();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 39) {
                s1 = peg$c7;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e22);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f317();
              }
              s0 = s1;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e266);
      }
    }
    return s0;
  }
  __name(peg$parseSemanticTextContent, "peg$parseSemanticTextContent");
  function peg$parseWrappedTemplateContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedQuoteOrTemplate();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f318(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e268);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedTemplateContent, "peg$parseWrappedTemplateContent");
  function peg$parseWrappedCommandContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseCommandContentInterpolation();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f319(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e269);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedCommandContent, "peg$parseWrappedCommandContent");
  function peg$parseCommandContentInterpolation() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedDoubleQuote();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f320(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedSingleQuote();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f321(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$parseCommandBracketContent();
        if (s0 === peg$FAILED) {
          s0 = peg$parseInterpolatedTemplateContent();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e270);
      }
    }
    return s0;
  }
  __name(peg$parseCommandContentInterpolation, "peg$parseCommandContentInterpolation");
  function peg$parseWrappedCodeContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectCodeContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f322(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e271);
      }
    }
    return s0;
  }
  __name(peg$parseWrappedCodeContent, "peg$parseWrappedCodeContent");
  function peg$parseDataObjectLiteral() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseDataObjectEntries();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c86;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f323(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e272);
      }
    }
    return s0;
  }
  __name(peg$parseDataObjectLiteral, "peg$parseDataObjectLiteral");
  function peg$parseDataObjectEntries() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseDataObjectEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseDataObjectEntry();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f324(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseDataObjectEntry();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f324(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      s3 = peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      peg$savedPos = s0;
      s0 = peg$f325(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataObjectEntries, "peg$parseDataObjectEntries");
  function peg$parseDataObjectEntry() {
    var s0;
    s0 = peg$parseDataSpreadProperty();
    if (s0 === peg$FAILED) {
      s0 = peg$parseDataObjectPair();
    }
    return s0;
  }
  __name(peg$parseDataObjectEntry, "peg$parseDataObjectEntry");
  function peg$parseDataSpreadProperty() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c103) {
      s1 = peg$c103;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e274);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedVariableNoTail();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f326(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e273);
      }
    }
    return s0;
  }
  __name(peg$parseDataSpreadProperty, "peg$parseDataSpreadProperty");
  function peg$parseDataObjectPair() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parsePropertyKey();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 63) {
        s2 = peg$c55;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e114);
        }
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s4 = peg$c56;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseDataPropertyValue();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f327(s1, s2, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataObjectPair, "peg$parseDataObjectPair");
  function peg$parseDataPropertyValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseRunCommandValue();
    if (s0 === peg$FAILED) {
      s0 = peg$parseCodeExecutionValue();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseArrayLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAlligatorExpression();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecResultMethodCall();
              if (s0 === peg$FAILED) {
                s0 = peg$parseFieldAccessExecPattern();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseExecInvocationPattern();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseVariableWithTail();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseNestedDirective();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseDataTemplateValue();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseDataStringValue();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parsePrimitiveValue();
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e275);
      }
    }
    return s0;
  }
  __name(peg$parseDataPropertyValue, "peg$parseDataPropertyValue");
  function peg$parseDataTemplateValue() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseInterpolatedTemplateContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f328(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 96) {
        s1 = peg$c36;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseUnifiedBacktickInterpolation();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseUnifiedBacktickInterpolation();
        }
        if (input.charCodeAt(peg$currPos) === 96) {
          s3 = peg$c36;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f329(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e276);
      }
    }
    return s0;
  }
  __name(peg$parseDataTemplateValue, "peg$parseDataTemplateValue");
  function peg$parseDataStringValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDataString();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e277);
      }
    }
    return s0;
  }
  __name(peg$parseDataStringValue, "peg$parseDataStringValue");
  function peg$parseDataArrayContent() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseDataArrayValue();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseDataArrayValue();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f330(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$currPos;
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 44) {
            s5 = peg$c85;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e189);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            s7 = peg$parseDataArrayValue();
            if (s7 !== peg$FAILED) {
              peg$savedPos = s3;
              s3 = peg$f330(s1, s7);
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f331(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDataArrayValue();
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s3 = peg$c85;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f332(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDataArrayContent, "peg$parseDataArrayContent");
  function peg$parseDataArrayValue() {
    var s0;
    s0 = peg$parseRunCommandValue();
    if (s0 === peg$FAILED) {
      s0 = peg$parseCodeExecutionValue();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseArrayLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAlligatorExpression();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecResultMethodCall();
              if (s0 === peg$FAILED) {
                s0 = peg$parseFieldAccessExecPattern();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseExecInvocationPattern();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseVariableWithTail();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseNestedDirective();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseDataTemplateValue();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseDataStringValue();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parsePrimitiveValue();
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseDataArrayValue, "peg$parseDataArrayValue");
  function peg$parseStandardDirectiveEnding() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTailModifiers();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parsePipelineParallelSpec();
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    s3 = peg$parseInlineComment();
    if (s3 === peg$FAILED) {
      s3 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f333(s1, s2, s3);
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e278);
    }
    return s0;
  }
  __name(peg$parseStandardDirectiveEnding, "peg$parseStandardDirectiveEnding");
  function peg$parseSecuredDirectiveEnding() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTailModifiers();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parseInlineComment();
    if (s2 === peg$FAILED) {
      s2 = null;
    }
    peg$savedPos = s0;
    s0 = peg$f334(s1, s2);
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e279);
    }
    return s0;
  }
  __name(peg$parseSecuredDirectiveEnding, "peg$parseSecuredDirectiveEnding");
  function peg$parseCommentedDirectiveEnding() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseInlineComment();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$savedPos = s0;
    s1 = peg$f335(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e280);
    }
    return s0;
  }
  __name(peg$parseCommentedDirectiveEnding, "peg$parseCommentedDirectiveEnding");
  function peg$parsePipelineParallelSpec() {
    var s0, s2, s4, s6, s8, s10;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 40) {
      s2 = peg$c18;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseNumberLiteral();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s6 = peg$c85;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseTimeDurationLiteral();
          if (s8 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s10 = peg$c19;
              peg$currPos++;
            } else {
              s10 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s10 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f336(s4, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s2 = peg$c18;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseNumberLiteral();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c19;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f337(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parsePipelineParallelSpec, "peg$parsePipelineParallelSpec");
  function peg$parseEffectAction() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseEffectShowAction();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEffectLogAction();
      if (s0 === peg$FAILED) {
        s0 = peg$parseEffectOutputAction();
        if (s0 === peg$FAILED) {
          s0 = peg$parseEffectAppendAction();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e281);
      }
    }
    return s0;
  }
  __name(peg$parseEffectAction, "peg$parseEffectAction");
  function peg$parseEffectShowAction() {
    var s0, s1, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c104) {
      s1 = peg$c104;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenRHSShowContent();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseStandardDirectiveEnding();
        peg$savedPos = s0;
        s0 = peg$f338(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEffectShowAction, "peg$parseEffectShowAction");
  function peg$parseEffectLogAction() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c105) {
      s1 = peg$c105;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e283);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseEffectSourceContent();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f339(s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEffectLogAction, "peg$parseEffectLogAction");
  function peg$parseEffectOutputAction() {
    var s0, s1, s3, s5, s7, s8, s10, s12;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c106) {
      s1 = peg$c106;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e284);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseEffectSourceContent();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c107) {
        s5 = peg$c107;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e285);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseOutputTarget();
        if (s7 !== peg$FAILED) {
          s8 = peg$currPos;
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c100) {
            s10 = peg$c100;
            peg$currPos += 2;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e219);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$parse_();
            s12 = peg$parseOutputFormat();
            if (s12 !== peg$FAILED) {
              peg$savedPos = s8;
              s8 = peg$f340(s3, s7, s12);
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
          } else {
            peg$currPos = s8;
            s8 = peg$FAILED;
          }
          if (s8 === peg$FAILED) {
            s8 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f341(s3, s7, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEffectOutputAction, "peg$parseEffectOutputAction");
  function peg$parseEffectAppendAction() {
    var s0, s1, s3, s5, s7, s8, s9, s10;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c108) {
      s1 = peg$c108;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e286);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseEffectSourceContent();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c107) {
          s5 = peg$c107;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e285);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseOutputTargetFile();
          if (s7 !== peg$FAILED) {
            s8 = peg$currPos;
            s9 = peg$parse_();
            s10 = peg$parseOutputFormat();
            if (s10 !== peg$FAILED) {
              peg$savedPos = s8;
              s8 = peg$f342(s3, s7, s10);
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            s9 = peg$parseStandardDirectiveEnding();
            peg$savedPos = s0;
            s0 = peg$f343(s3, s7, s8, s9);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseEffectAppendAction, "peg$parseEffectAppendAction");
  function peg$parseEffectSourceContent() {
    var s0;
    s0 = peg$parseUnifiedQuoteOrTemplate();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedReference();
        if (s0 === peg$FAILED) {
          s0 = peg$parseDataObjectLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parsePrimitiveValue();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseEffectSourceContent, "peg$parseEffectSourceContent");
  function peg$parseWhenRHSShowContent() {
    var s0;
    s0 = peg$parseUnifiedQuoteOrTemplate();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedReference();
      if (s0 === peg$FAILED) {
        s0 = peg$parseDataObjectLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parsePrimitiveValue();
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenRHSShowContent, "peg$parseWhenRHSShowContent");
  function peg$parseExeRHSContent() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$parseExeProsePattern();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseLeadingParallelPipeline();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f344(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenExpression();
        if (s0 === peg$FAILED) {
          s0 = peg$parseForExpressionExe();
          if (s0 === peg$FAILED) {
            s0 = peg$parseExeForeachPattern();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExeRunCommandWithStdin();
              if (s0 === peg$FAILED) {
                s0 = peg$parseExeRunCommandPipeStdin();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseExeStreamCommandPattern();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseExeRunCommandPattern();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseExeCodePattern();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseExeEnvironmentDeclaration();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseExeDataPattern();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseExeCommandPattern();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parseExeTemplateFromFilePattern();
                              if (s0 === peg$FAILED) {
                                s0 = peg$parseExeTemplatePattern();
                                if (s0 === peg$FAILED) {
                                  s0 = peg$parseExeSectionPattern();
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$parseExeStatementBlock();
                                    if (s0 === peg$FAILED) {
                                      s0 = peg$parseExeResolverPattern();
                                      if (s0 === peg$FAILED) {
                                        s0 = peg$parseExeUnifiedReference();
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e287);
      }
    }
    return s0;
  }
  __name(peg$parseExeRHSContent, "peg$parseExeRHSContent");
  function peg$parseExeUnifiedReference() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f345(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e288);
      }
    }
    return s0;
  }
  __name(peg$parseExeUnifiedReference, "peg$parseExeUnifiedReference");
  function peg$parseExeRunCommandWithStdin() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s1 = peg$c109;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCmdCommandBrackets();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedCommandBrackets();
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseWithClause();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f346(s3, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e289);
      }
    }
    return s0;
  }
  __name(peg$parseExeRunCommandWithStdin, "peg$parseExeRunCommandWithStdin");
  function peg$parseExeRunCommandPipeStdin() {
    var s0, s1, s3, s5, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s1 = peg$c109;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePipeStdinExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 124) {
          s5 = peg$c110;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e292);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseCmdCommandBrackets();
          if (s7 === peg$FAILED) {
            s7 = peg$parseUnifiedCommandBrackets();
          }
          if (s7 !== peg$FAILED) {
            s8 = peg$parseTailModifiers();
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f347(s3, s7, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e291);
      }
    }
    return s0;
  }
  __name(peg$parseExeRunCommandPipeStdin, "peg$parseExeRunCommandPipeStdin");
  function peg$parseExeStreamCommandPattern() {
    var s0, s1, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c54) {
      s1 = peg$c54;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e113);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCmdCommandBrackets();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedCommandBrackets();
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseTailModifiers();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f348(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e293);
      }
    }
    return s0;
  }
  __name(peg$parseExeStreamCommandPattern, "peg$parseExeStreamCommandPattern");
  function peg$parseExeRunCommandPattern() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s1 = peg$c109;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseCmdCommandBrackets();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedCommandBrackets();
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f349(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e294);
      }
    }
    return s0;
  }
  __name(peg$parseExeRunCommandPattern, "peg$parseExeRunCommandPattern");
  function peg$parseExeCodePattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseRunLanguageCodeCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f350(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e295);
      }
    }
    return s0;
  }
  __name(peg$parseExeCodePattern, "peg$parseExeCodePattern");
  function peg$parseExeCommandPattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseCmdCommandBrackets();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f351(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$parseInvalidBareCommandBrackets();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e296);
      }
    }
    return s0;
  }
  __name(peg$parseExeCommandPattern, "peg$parseExeCommandPattern");
  function peg$parseExeDataPattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDataObjectLiteral();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f352(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e297);
      }
    }
    return s0;
  }
  __name(peg$parseExeDataPattern, "peg$parseExeDataPattern");
  function peg$parseExeTemplatePattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f353(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e298);
      }
    }
    return s0;
  }
  __name(peg$parseExeTemplatePattern, "peg$parseExeTemplatePattern");
  function peg$parseExeTemplateFromFilePattern() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c111) {
      s1 = peg$c111;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e300);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseQuotedStringPath();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f354(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e299);
      }
    }
    return s0;
  }
  __name(peg$parseExeTemplateFromFilePattern, "peg$parseExeTemplateFromFilePattern");
  function peg$parseExeProsePattern() {
    var s0, s1, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c112) {
      s1 = peg$c112;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e302);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedVariableNoTail();
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        s5 = peg$parseProseInlineContent();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f355(s3, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 6) === peg$c112) {
        s1 = peg$c112;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e302);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseUnifiedVariableNoTail();
        if (s3 !== peg$FAILED) {
          s4 = peg$parse_();
          if (input.substr(peg$currPos, 8) === peg$c111) {
            s5 = peg$c111;
            peg$currPos += 8;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e300);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            s7 = peg$parseQuotedStringPath();
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f356(s3, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 6) === peg$c112) {
          s1 = peg$c112;
          peg$currPos += 6;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e302);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseUnifiedVariableNoTail();
          if (s3 !== peg$FAILED) {
            s4 = peg$parse_();
            s5 = peg$parseQuotedStringPath();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f357(s3, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 5) === peg$c113) {
            s1 = peg$c113;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e303);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$currPos;
            peg$silentFails++;
            s4 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 58) {
              s5 = peg$c56;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e115);
              }
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_();
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            peg$silentFails--;
            if (s4 === peg$FAILED) {
              s3 = void 0;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f358();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e301);
      }
    }
    return s0;
  }
  __name(peg$parseExeProsePattern, "peg$parseExeProsePattern");
  function peg$parseProseInlineContent() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseProseContentParts();
      if (input.charCodeAt(peg$currPos) === 125) {
        s3 = peg$c86;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f359(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e304);
      }
    }
    return s0;
  }
  __name(peg$parseProseInlineContent, "peg$parseProseInlineContent");
  function peg$parseProseContentParts() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = peg$parseProseAtInterpolation();
    if (s1 === peg$FAILED) {
      s1 = peg$parseProseTextSegment();
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = peg$parseProseAtInterpolation();
      if (s1 === peg$FAILED) {
        s1 = peg$parseProseTextSegment();
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e305);
    }
    return s0;
  }
  __name(peg$parseProseContentParts, "peg$parseProseContentParts");
  function peg$parseProseAtInterpolation() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$parseConditionalTemplateSnippet();
    if (s0 === peg$FAILED) {
      s0 = peg$parseExecResultMethodCall();
      if (s0 === peg$FAILED) {
        s0 = peg$parseFieldAccessExec();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedExecInvocation();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedTemplateVariableReference();
            if (s0 === peg$FAILED) {
              s0 = peg$parseUnifiedReferenceNoTail();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.substr(peg$currPos, 2) === peg$c31) {
                  s1 = peg$c31;
                  peg$currPos += 2;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e61);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s1 = peg$f360();
                }
                s0 = s1;
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  if (input.substr(peg$currPos, 2) === peg$c74) {
                    s1 = peg$c74;
                    peg$currPos += 2;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e153);
                    }
                  }
                  if (s1 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s1 = peg$f361();
                  }
                  s0 = s1;
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    if (input.charCodeAt(peg$currPos) === 64) {
                      s1 = peg$c68;
                      peg$currPos++;
                    } else {
                      s1 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e129);
                      }
                    }
                    if (s1 !== peg$FAILED) {
                      s2 = peg$currPos;
                      peg$silentFails++;
                      s3 = peg$parseBaseIdentifier();
                      peg$silentFails--;
                      if (s3 === peg$FAILED) {
                        s2 = void 0;
                      } else {
                        peg$currPos = s2;
                        s2 = peg$FAILED;
                      }
                      if (s2 !== peg$FAILED) {
                        if (input.length > peg$currPos) {
                          s3 = input.charAt(peg$currPos);
                          peg$currPos++;
                        } else {
                          s3 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e6);
                          }
                        }
                        if (s3 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f362(s3);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e306);
      }
    }
    return s0;
  }
  __name(peg$parseProseAtInterpolation, "peg$parseProseAtInterpolation");
  function peg$parseProseTextSegment() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 125) {
      s4 = peg$c86;
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e190);
      }
    }
    if (s4 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c74) {
        s4 = peg$c74;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e153);
        }
      }
      if (s4 === peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c68;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f363(s4);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$currPos;
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 125) {
          s4 = peg$c86;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s4 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c74) {
            s4 = peg$c74;
            peg$currPos += 2;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e153);
            }
          }
          if (s4 === peg$FAILED) {
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c68;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s4 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f363(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f364(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e307);
      }
    }
    return s0;
  }
  __name(peg$parseProseTextSegment, "peg$parseProseTextSegment");
  function peg$parseExeSectionPattern() {
    var s0, s1, s3, s5, s7, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedVariableNoTail();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 35) {
          s5 = peg$c38;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e87);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseSectionIdentifier();
          if (s7 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 93) {
              s9 = peg$c70;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e131);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = peg$parseExecAsNewTitle();
              if (s10 === peg$FAILED) {
                s10 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f365(s3, s7, s10);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e308);
      }
    }
    return s0;
  }
  __name(peg$parseExeSectionPattern, "peg$parseExeSectionPattern");
  function peg$parseExeResolverPattern() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseResolverPathPattern();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseExecResolverPayload();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f366(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e309);
      }
    }
    return s0;
  }
  __name(peg$parseExeResolverPattern, "peg$parseExeResolverPattern");
  function peg$parseExeForeachPattern() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseForeachCommandExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f367(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e310);
      }
    }
    return s0;
  }
  __name(peg$parseExeForeachPattern, "peg$parseExeForeachPattern");
  function peg$parseExeEnvironmentDeclaration() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseEnvironmentVarList();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s5 = peg$c86;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f368(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e311);
      }
    }
    return s0;
  }
  __name(peg$parseExeEnvironmentDeclaration, "peg$parseExeEnvironmentDeclaration");
  function peg$parseExeStatementBlock() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseExeBlockBody();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f369(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        peg$savedPos = s0;
        s0 = peg$f370();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          peg$savedPos = peg$currPos;
          s3 = peg$f371();
          if (s3) {
            s3 = void 0;
          } else {
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f372();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e312);
      }
    }
    return s0;
  }
  __name(peg$parseExeStatementBlock, "peg$parseExeStatementBlock");
  function peg$parseExeBlockBody() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$parseExeBlockStatementList();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = peg$parseBlockStatementSeparator();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseExeReturnStatement();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f373(s1, s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = peg$currPos;
        s3 = peg$parse_();
        s4 = peg$parseExeReturnStatement();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f374(s1, s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = peg$parseBlockStatementSeparator();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseExeReturnStatement();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f375(s1, s2);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$currPos;
        s5 = peg$parseBlockStatementSeparator();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseExeBlockStatement();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f376(s1, s2, s3);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f377(s1, s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseExeBlockStatementList();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f378(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = [];
        s2 = peg$parseLeadingBlockComment();
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseLeadingBlockComment();
        }
        s2 = peg$parse_();
        s3 = peg$parseExeReturnStatement();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f379(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseExeBlockBody, "peg$parseExeBlockBody");
  function peg$parseExeBlockStatementList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseExeBlockStatement();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseBlockStatementSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseExeBlockStatement();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f380(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseBlockStatementSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseExeBlockStatement();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f380(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f381(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f382();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseExeBlockStatementList, "peg$parseExeBlockStatementList");
  function peg$parseExeBlockStatement() {
    var s0;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenExpressionAny();
        if (s0 === peg$FAILED) {
          s0 = peg$parseForNestedDirective();
          if (s0 === peg$FAILED) {
            s0 = peg$parseExeBlockAction();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseExeBlockStatement, "peg$parseExeBlockStatement");
  function peg$parseExeBlockAction() {
    var s0;
    s0 = peg$parseRunBlockAction();
    if (s0 === peg$FAILED) {
      s0 = peg$parseEffectAction();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenRHSVarAssignment();
        if (s0 === peg$FAILED) {
          s0 = peg$parseWhenRHSCommandAction();
          if (s0 === peg$FAILED) {
            s0 = peg$parseWhenRHSFunctionCall();
            if (s0 === peg$FAILED) {
              s0 = peg$parseWhenRHSSkipAction();
              if (s0 === peg$FAILED) {
                s0 = peg$parseWhenRHSRetryAction();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseWhenRHSVariableReference();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseDoneLiteral();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseContinueLiteral();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseExeForeachPattern();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseExeDataPattern();
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseExeBlockAction, "peg$parseExeBlockAction");
  function peg$parseExeReturnStatement() {
    var s0, s1, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenRHSAction();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      s4 = [];
      s5 = peg$parseBlockComments();
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f383(s3, s4);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e313);
      }
    }
    return s0;
  }
  __name(peg$parseExeReturnStatement, "peg$parseExeReturnStatement");
  function peg$parseResolverPathPattern() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = [];
    s4 = input.charAt(peg$currPos);
    if (peg$r37.test(s4)) {
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e315);
      }
    }
    if (s4 !== peg$FAILED) {
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = input.charAt(peg$currPos);
        if (peg$r37.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e315);
          }
        }
      }
    } else {
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c37;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e84);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r38.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e316);
          }
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = input.charAt(peg$currPos);
          if (peg$r38.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e316);
            }
          }
        }
        s3 = [
          s3,
          s4,
          s5
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f384(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseResolverPathPattern, "peg$parseResolverPathPattern");
  function peg$parsePipeStdinExpression() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c19;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e43);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f385(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$parseVariableForPipeline();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedExpression();
      }
    }
    return s0;
  }
  __name(peg$parsePipeStdinExpression, "peg$parsePipeStdinExpression");
  function peg$parseExecResolverPayload() {
    var s0, s2, s4, s6;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 123) {
      s2 = peg$c84;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseUnifiedVariableNoTail();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s6 = peg$c86;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f386(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecResolverPayload, "peg$parseExecResolverPayload");
  function peg$parseExecAsNewTitle() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s2 = peg$c100;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseLiteralContent();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f387(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c100) {
        s2 = peg$c100;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e219);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseUnifiedVariableNoTail();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f388(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseExecAsNewTitle, "peg$parseExecAsNewTitle");
  function peg$parseWhenExpression() {
    var s0, s1, s3, s5, s6, s7, s8, s9, s10, s11, s12;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c115) {
      s1 = peg$c115;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e318);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseWhenExprModifier();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        s6 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s7 = peg$c71;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s7 !== peg$FAILED) {
          s8 = peg$parse_();
          s9 = peg$parseWhenBoundExpressionConditionList();
          if (s9 !== peg$FAILED) {
            s10 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 93) {
              s11 = peg$c70;
              peg$currPos++;
            } else {
              s11 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e131);
              }
            }
            if (s11 !== peg$FAILED) {
              s12 = peg$parseTailModifiers();
              if (s12 === peg$FAILED) {
                s12 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f389(s3, s5, s9, s12);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c115) {
        s1 = peg$c115;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e318);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseUnifiedExpression();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseWhenExprModifier();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s7 = peg$c71;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
          if (s7 !== peg$FAILED) {
            s8 = peg$parse_();
            peg$savedPos = s0;
            s0 = peg$f390(s3, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c115) {
          s1 = peg$c115;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e318);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseWhenExprModifier();
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s5 = peg$c71;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            s7 = peg$parseWhenExpressionConditionList();
            if (s7 !== peg$FAILED) {
              s8 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s9 = peg$c70;
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s9 !== peg$FAILED) {
                s10 = peg$parseTailModifiers();
                if (s10 === peg$FAILED) {
                  s10 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f391(s3, s7, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c115) {
            s1 = peg$c115;
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e318);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$parseWhenExprModifier();
            if (s3 === peg$FAILED) {
              s3 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s5 = peg$c71;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e132);
              }
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_();
              peg$savedPos = s0;
              s0 = peg$f392(s3);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 4) === peg$c115) {
              s1 = peg$c115;
              peg$currPos += 4;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e318);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$parse_();
              s3 = peg$parseUnifiedExpression();
              if (s3 !== peg$FAILED) {
                peg$parse_();
                s5 = peg$parseWhenExprModifier();
                if (s5 === peg$FAILED) {
                  s5 = null;
                }
                s6 = peg$parse_();
                s7 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 91) {
                  s8 = peg$c71;
                  peg$currPos++;
                } else {
                  s8 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e132);
                  }
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f393();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.substr(peg$currPos, 4) === peg$c115) {
                s1 = peg$c115;
                peg$currPos += 4;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e318);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$parse_();
                s3 = peg$parseWhenExprModifier();
                if (s3 === peg$FAILED) {
                  s3 = null;
                }
                peg$parse_();
                s5 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 91) {
                  s6 = peg$c71;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e132);
                  }
                }
                peg$silentFails--;
                if (s6 === peg$FAILED) {
                  s5 = void 0;
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f394();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.substr(peg$currPos, 4) === peg$c115) {
                  s1 = peg$c115;
                  peg$currPos += 4;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e318);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$parse_();
                  s3 = peg$parseWhenExprModifier();
                  if (s3 === peg$FAILED) {
                    s3 = null;
                  }
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 91) {
                    s5 = peg$c71;
                    peg$currPos++;
                  } else {
                    s5 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e132);
                    }
                  }
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parse_();
                    peg$savedPos = peg$currPos;
                    s7 = peg$f395();
                    if (s7) {
                      s7 = void 0;
                    } else {
                      s7 = peg$FAILED;
                    }
                    if (s7 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f396();
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e317);
      }
    }
    return s0;
  }
  __name(peg$parseWhenExpression, "peg$parseWhenExpression");
  function peg$parseWhenBoundExpressionConditionList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseWhenBoundExpressionEntry();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseWhenConditionSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseWhenBoundExpressionEntry();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f397(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseWhenConditionSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseWhenBoundExpressionEntry();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f397(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f398(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f399();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenBoundExpressionConditionList, "peg$parseWhenBoundExpressionConditionList");
  function peg$parseWhenBoundExpressionEntry() {
    var s0;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenBoundExpressionConditionPair();
      }
    }
    return s0;
  }
  __name(peg$parseWhenBoundExpressionEntry, "peg$parseWhenBoundExpressionEntry");
  function peg$parseWhenBoundExpressionConditionPair() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseWhenBoundPatternOr();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s3 = peg$c114;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseWhenExpressionAction();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f400(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBoundExpressionConditionPair, "peg$parseWhenBoundExpressionConditionPair");
  function peg$parseWhenBoundPatternOr() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseWhenBoundPatternAnd();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c58) {
        s5 = peg$c58;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseWhenBoundPatternAnd();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f401(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c58) {
          s5 = peg$c58;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e117);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseWhenBoundPatternAnd();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f401(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f402(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBoundPatternOr, "peg$parseWhenBoundPatternOr");
  function peg$parseWhenBoundPatternAnd() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseWhenBoundPatternAtom();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c59) {
        s5 = peg$c59;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e118);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseWhenBoundPatternAtom();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f403(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c59) {
          s5 = peg$c59;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e118);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseWhenBoundPatternAtom();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f403(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f404(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBoundPatternAnd, "peg$parseWhenBoundPatternAnd");
  function peg$parseWhenBoundPatternAtom() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenBoundPatternOr();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s5 = peg$c19;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e43);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f405(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseWildcardLiteral();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f406(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedComparisonOp();
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseUnifiedExpression();
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f407(s1, s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseUnifiedExpression();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f408(s1);
          }
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenBoundPatternAtom, "peg$parseWhenBoundPatternAtom");
  function peg$parseWhenExprModifier() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c116) {
      s1 = peg$c116;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e319);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f409(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenExprModifier, "peg$parseWhenExprModifier");
  function peg$parseWhenExpressionConditionList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseWhenExpressionEntry();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseWhenConditionSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseWhenExpressionEntry();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f410(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseWhenConditionSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseWhenExpressionEntry();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f410(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f411(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f412();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenExpressionConditionList, "peg$parseWhenExpressionConditionList");
  function peg$parseWhenExpressionEntry() {
    var s0;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenExpressionConditionPair();
      }
    }
    return s0;
  }
  __name(peg$parseWhenExpressionEntry, "peg$parseWhenExpressionEntry");
  function peg$parseWhenExpressionConditionPair() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s3 = peg$c114;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseWhenExpressionAction();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f413(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenExpressionConditionPair, "peg$parseWhenExpressionConditionPair");
  function peg$parseWhenExpressionAction() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseExeStatementBlock();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f414(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenRHSAction();
    }
    return s0;
  }
  __name(peg$parseWhenExpressionAction, "peg$parseWhenExpressionAction");
  function peg$parseWhenExpressionInline() {
    var s0, s1, s3, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c115) {
      s1 = peg$c115;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e318);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenConditionExpression();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c114) {
          s5 = peg$c114;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e314);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseWhenExpressionAction();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f415(s3, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenExpressionInline, "peg$parseWhenExpressionInline");
  function peg$parseWhenExpressionAny() {
    var s0;
    s0 = peg$parseWhenExpressionInline();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenExpression();
    }
    return s0;
  }
  __name(peg$parseWhenExpressionAny, "peg$parseWhenExpressionAny");
  function peg$parseForExpressionExe() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c117) {
      s1 = peg$c117;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e321);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseForParallelSpec();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      s3 = peg$parse_();
      s4 = peg$parseForIterationPattern();
      if (s4 !== peg$FAILED) {
        s5 = peg$parse_();
        s6 = peg$parseWhenExpressionAny();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseForBatchPipeline();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f416(s2, s4, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c117) {
        s1 = peg$c117;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e321);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseForParallelSpec();
        if (s2 === peg$FAILED) {
          s2 = null;
        }
        s3 = peg$parse_();
        s4 = peg$parseForIterationPattern();
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s6 = peg$parseForExpressionExeBody();
          if (s6 !== peg$FAILED) {
            s7 = peg$parseForBatchPipeline();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f417(s2, s4, s6, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c117) {
          s1 = peg$c117;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e321);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c68;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              if (input.substr(peg$currPos, 2) === peg$c118) {
                s6 = peg$c118;
                peg$currPos += 2;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e322);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parse_();
                s8 = peg$parseVarRHSContent();
                if (s8 !== peg$FAILED) {
                  peg$parse_();
                  s10 = peg$currPos;
                  peg$silentFails++;
                  if (input.substr(peg$currPos, 2) === peg$c114) {
                    s11 = peg$c114;
                    peg$currPos += 2;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e314);
                    }
                  }
                  if (s11 === peg$FAILED) {
                    if (input.charCodeAt(peg$currPos) === 91) {
                      s11 = peg$c71;
                      peg$currPos++;
                    } else {
                      s11 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e132);
                      }
                    }
                  }
                  peg$silentFails--;
                  if (s11 === peg$FAILED) {
                    s10 = void 0;
                  } else {
                    peg$currPos = s10;
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f418(s4, s8);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 3) === peg$c117) {
            s1 = peg$c117;
            peg$currPos += 3;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e321);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s3 = peg$c68;
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$parseBaseIdentifier();
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                s6 = peg$currPos;
                peg$silentFails++;
                if (input.substr(peg$currPos, 2) === peg$c118) {
                  s7 = peg$c118;
                  peg$currPos += 2;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e322);
                  }
                }
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f419(s4);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 3) === peg$c117) {
              s1 = peg$c117;
              peg$currPos += 3;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e321);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = peg$parse_();
              s3 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 4) === peg$c119) {
                s4 = peg$c119;
                peg$currPos += 4;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e323);
                }
              }
              peg$silentFails--;
              if (s4 === peg$FAILED) {
                s3 = void 0;
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
              if (s3 !== peg$FAILED) {
                s4 = peg$parse_();
                s5 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 64) {
                  s6 = peg$c68;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                peg$silentFails--;
                if (s6 === peg$FAILED) {
                  s5 = void 0;
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f420();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e320);
      }
    }
    return s0;
  }
  __name(peg$parseForExpressionExe, "peg$parseForExpressionExe");
  function peg$parseForExpressionExeBody() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseForExpressionAction();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f421(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseForBlockAction();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f422(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseForExpressionExeBody, "peg$parseForExpressionExeBody");
  function peg$parseFieldAccess() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDotSeparator();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = "";
      peg$savedPos = s2;
      s3 = peg$f423();
      s2 = s3;
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f424(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFieldAccess, "peg$parseFieldAccess");
  function peg$parseNumericFieldAccess() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDotSeparator();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = "";
      peg$savedPos = s2;
      s3 = peg$f425();
      s2 = s3;
      s3 = peg$parseNumberLiteral();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f426(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNumericFieldAccess, "peg$parseNumericFieldAccess");
  function peg$parseArrayAccess() {
    var s0;
    s0 = peg$parseSliceOperation();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFilterOperation();
      if (s0 === peg$FAILED) {
        s0 = peg$parseExistingArrayIndex();
      }
    }
    return s0;
  }
  __name(peg$parseArrayAccess, "peg$parseArrayAccess");
  function peg$parseSliceOperation() {
    var s0, s1, s3, s5, s7, s9;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseSliceIndex();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s5 = peg$c56;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseSliceIndex();
        if (s7 === peg$FAILED) {
          s7 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s9 = peg$c70;
          peg$currPos++;
        } else {
          s9 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s9 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f427(s3, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSliceOperation, "peg$parseSliceOperation");
  function peg$parseSliceIndex() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 45) {
      s1 = peg$c9;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e25);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parseNumberLiteral();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f428(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseBaseIdentifier();
        if (s2 !== peg$FAILED) {
          s3 = [];
          s4 = peg$parseAnyFieldAccess();
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f429(s2, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSliceIndex, "peg$parseSliceIndex");
  function peg$parseFilterOperation() {
    var s0, s1, s3, s5, s7;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 63) {
        s3 = peg$c55;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e114);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseFilterCondition();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s7 = peg$c70;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f430(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFilterOperation, "peg$parseFilterOperation");
  function peg$parseFilterCondition() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseFilterField();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 126) {
        s3 = peg$c120;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e324);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseStringLiteral();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f431(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseFilterField();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseFilterComparisonOp();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseFilterValue();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f432(s1, s3, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseFilterField();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f433(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseFilterCondition, "peg$parseFilterCondition");
  function peg$parseFilterField() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c10;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f434(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s4 = peg$c10;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f434(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f435(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseFilterField, "peg$parseFilterField");
  function peg$parseFilterComparisonOp() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 61) {
      s1 = peg$c65;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e124);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 61) {
        s3 = peg$c65;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e124);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f436();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c60) {
        s1 = peg$c60;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e119);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f437();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 2) === peg$c61) {
          s1 = peg$c61;
          peg$currPos += 2;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e120);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f438();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 2) === peg$c63) {
            s1 = peg$c63;
            peg$currPos += 2;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e122);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f439();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 2) === peg$c64) {
              s1 = peg$c64;
              peg$currPos += 2;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e123);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f440();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 60) {
                s1 = peg$c35;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e71);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 61) {
                  s3 = peg$c65;
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e124);
                  }
                }
                peg$silentFails--;
                if (s3 === peg$FAILED) {
                  s2 = void 0;
                } else {
                  peg$currPos = s2;
                  s2 = peg$FAILED;
                }
                if (s2 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f441();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.charCodeAt(peg$currPos) === 62) {
                  s1 = peg$c66;
                  peg$currPos++;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e125);
                  }
                }
                if (s1 !== peg$FAILED) {
                  s2 = peg$currPos;
                  peg$silentFails++;
                  if (input.charCodeAt(peg$currPos) === 61) {
                    s3 = peg$c65;
                    peg$currPos++;
                  } else {
                    s3 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e124);
                    }
                  }
                  peg$silentFails--;
                  if (s3 === peg$FAILED) {
                    s2 = void 0;
                  } else {
                    peg$currPos = s2;
                    s2 = peg$FAILED;
                  }
                  if (s2 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f442();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseFilterComparisonOp, "peg$parseFilterComparisonOp");
  function peg$parseFilterValue() {
    var s0;
    s0 = peg$parseStringLiteral();
    if (s0 === peg$FAILED) {
      s0 = peg$parseTimeDurationLiteral();
      if (s0 === peg$FAILED) {
        s0 = peg$parseNumberLiteral();
        if (s0 === peg$FAILED) {
          s0 = peg$parseBooleanLiteral();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedAtVar();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseFilterValue, "peg$parseFilterValue");
  function peg$parseExistingArrayIndex() {
    var s0, s1, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNumberLiteral();
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f443(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseStringLiteral();
        if (s3 !== peg$FAILED) {
          s4 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c70;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f444(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c68;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = [];
              s6 = peg$parseAnyFieldAccess();
              while (s6 !== peg$FAILED) {
                s5.push(s6);
                s6 = peg$parseAnyFieldAccess();
              }
              s6 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s7 = peg$c70;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f445(s4, s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 91) {
            s1 = peg$c71;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$parseBaseIdentifier();
            if (s3 !== peg$FAILED) {
              s4 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s5 = peg$c70;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f446(s3);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseExistingArrayIndex, "peg$parseExistingArrayIndex");
  function peg$parseAnyFieldAccess() {
    var s0;
    s0 = peg$parseFieldAccess();
    if (s0 === peg$FAILED) {
      s0 = peg$parseNumericFieldAccess();
      if (s0 === peg$FAILED) {
        s0 = peg$parseArrayAccess();
      }
    }
    return s0;
  }
  __name(peg$parseAnyFieldAccess, "peg$parseAnyFieldAccess");
  function peg$parseMethodCallAccess() {
    var s0, s1, s2, s3, s4, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseDotSeparator();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = "";
      peg$savedPos = s2;
      s3 = peg$f447();
      s2 = s3;
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseCommandArgumentList();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s7 = peg$c19;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f448(s2, s3, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseMethodCallAccess, "peg$parseMethodCallAccess");
  function peg$parsePostFieldAccess() {
    var s0;
    s0 = peg$parseMethodCallAccess();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAnyFieldAccess();
    }
    return s0;
  }
  __name(peg$parsePostFieldAccess, "peg$parsePostFieldAccess");
  function peg$parseFileReferenceInterpolation() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 60) {
      s1 = peg$c35;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e71);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f449();
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseFileReferenceContent();
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 62) {
            s6 = peg$c66;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e125);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseFileFieldChain();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            s8 = peg$parseTemplatePipeChain();
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f450(s4, s7, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 60) {
        s1 = peg$c35;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e71);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 62) {
          s3 = peg$c66;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e125);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseFileFieldChain();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$parseTemplatePipeChain();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f451(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e325);
      }
    }
    return s0;
  }
  __name(peg$parseFileReferenceInterpolation, "peg$parseFileReferenceInterpolation");
  function peg$parseFileReferenceContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseAlligatorUnquotedPath();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAlligatorQuotedPath();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e326);
      }
    }
    return s0;
  }
  __name(peg$parseFileReferenceContent, "peg$parseFileReferenceContent");
  function peg$parseTemplatePipe() {
    var s0, s1, s2, s3, s4, s5, s6, s8, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = "";
    peg$savedPos = s1;
    s2 = peg$f452();
    s1 = s2;
    if (input.charCodeAt(peg$currPos) === 124) {
      s2 = peg$c110;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e292);
      }
    }
    if (s2 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 64) {
        s3 = peg$c68;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          s5 = [];
          s6 = peg$currPos;
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 46) {
            s8 = peg$c10;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$parse_();
            s10 = peg$parseBaseIdentifier();
            if (s10 !== peg$FAILED) {
              peg$savedPos = s6;
              s6 = peg$f453(s1, s4, s10);
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$currPos;
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 46) {
              s8 = peg$c10;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              s10 = peg$parseBaseIdentifier();
              if (s10 !== peg$FAILED) {
                peg$savedPos = s6;
                s6 = peg$f453(s1, s4, s10);
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f454(s1, s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e327);
      }
    }
    return s0;
  }
  __name(peg$parseTemplatePipe, "peg$parseTemplatePipe");
  function peg$parseSpacedOrCondensedFilePipe() {
    var s0, s2, s3, s5, s6, s7, s8, s10, s12;
    s0 = peg$currPos;
    peg$parseHWS();
    s2 = peg$currPos;
    s3 = "";
    peg$savedPos = s2;
    s3 = peg$f455();
    s2 = s3;
    if (input.charCodeAt(peg$currPos) === 124) {
      s3 = peg$c110;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e292);
      }
    }
    if (s3 !== peg$FAILED) {
      peg$parseHWS();
      if (input.charCodeAt(peg$currPos) === 64) {
        s5 = peg$c68;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parseBaseIdentifier();
        if (s6 !== peg$FAILED) {
          s7 = [];
          s8 = peg$currPos;
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 46) {
            s10 = peg$c10;
            peg$currPos++;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$parse_();
            s12 = peg$parseBaseIdentifier();
            if (s12 !== peg$FAILED) {
              peg$savedPos = s8;
              s8 = peg$f456(s2, s6, s12);
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
          } else {
            peg$currPos = s8;
            s8 = peg$FAILED;
          }
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$currPos;
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 46) {
              s10 = peg$c10;
              peg$currPos++;
            } else {
              s10 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
            if (s10 !== peg$FAILED) {
              peg$parse_();
              s12 = peg$parseBaseIdentifier();
              if (s12 !== peg$FAILED) {
                peg$savedPos = s8;
                s8 = peg$f456(s2, s6, s12);
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f457(s2, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSpacedOrCondensedFilePipe, "peg$parseSpacedOrCondensedFilePipe");
  function peg$parseTemplatePipeChain() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseTemplatePipe();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseTemplatePipe();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f458(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e328);
      }
    }
    return s0;
  }
  __name(peg$parseTemplatePipeChain, "peg$parseTemplatePipeChain");
  function peg$parseFileFieldChain() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseAnyFieldAccess();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseAnyFieldAccess();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f459(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e329);
      }
    }
    return s0;
  }
  __name(peg$parseFileFieldChain, "peg$parseFileFieldChain");
  function peg$parseUnifiedAngleBracketContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseFileReferenceInterpolation();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAngleBracketLiteral();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e330);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedAngleBracketContent, "peg$parseUnifiedAngleBracketContent");
  function peg$parseAngleBracketLiteral() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 60) {
      s1 = peg$c35;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e71);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f460();
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 62) {
          s6 = peg$c66;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e125);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f461(s6);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 62) {
            s6 = peg$c66;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e125);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f461(s6);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        if (input.charCodeAt(peg$currPos) === 62) {
          s4 = peg$c66;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e125);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f462(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e331);
      }
    }
    return s0;
  }
  __name(peg$parseAngleBracketLiteral, "peg$parseAngleBracketLiteral");
  function peg$parseForeachCommandExpression() {
    var s0, s1, s3, s4, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 7) === peg$c121) {
      s1 = peg$c121;
      peg$currPos += 7;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e332);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedReferenceWithTail();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseForeachBatchPipeline();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parseForeachWithClause();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f463(s3, s4, s5);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachCommandExpression, "peg$parseForeachCommandExpression");
  function peg$parseForeachBatchPipeline() {
    var s0, s2, s4, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s2 = peg$c114;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c58) {
        s4 = peg$c58;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseParallelSequence();
        if (s6 !== peg$FAILED) {
          s7 = [];
          s8 = peg$parsePipelineRest();
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$parsePipelineRest();
          }
          s8 = peg$parsePipelineParallelSpec();
          if (s8 === peg$FAILED) {
            s8 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f464(s6, s7, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s2 = peg$c114;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 124) {
          s4 = peg$c110;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e292);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parsePipelineStageFirst();
          if (s6 !== peg$FAILED) {
            s7 = [];
            s8 = peg$parsePipelineRest();
            while (s8 !== peg$FAILED) {
              s7.push(s8);
              s8 = peg$parsePipelineRest();
            }
            peg$savedPos = s0;
            s0 = peg$f465(s6, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e333);
      }
    }
    return s0;
  }
  __name(peg$parseForeachBatchPipeline, "peg$parseForeachBatchPipeline");
  function peg$parseForeachArrayArgumentList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedVariableNoTail();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedVariableNoTail();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f466(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedVariableNoTail();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f466(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f467(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachArrayArgumentList, "peg$parseForeachArrayArgumentList");
  function peg$parseForeachWithClause() {
    var s0, s2, s4, s6, s8;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 4) === peg$c122) {
      s2 = peg$c122;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e334);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 123) {
        s4 = peg$c84;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e188);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseForeachWithOptions();
        if (s6 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s8 = peg$c86;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f468(s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachWithClause, "peg$parseForeachWithClause");
  function peg$parseForeachWithOptions() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseForeachWithOption();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseForeachWithOption();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f469(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseForeachWithOption();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f469(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f470(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachWithOptions, "peg$parseForeachWithOptions");
  function peg$parseForeachWithOption() {
    var s0;
    s0 = peg$parseForeachSeparatorOption();
    if (s0 === peg$FAILED) {
      s0 = peg$parseForeachTemplateOption();
    }
    return s0;
  }
  __name(peg$parseForeachWithOption, "peg$parseForeachWithOption");
  function peg$parseForeachSeparatorOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 9) === peg$c123) {
      s1 = peg$c123;
      peg$currPos += 9;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e335);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f471(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachSeparatorOption, "peg$parseForeachSeparatorOption");
  function peg$parseForeachTemplateOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c111) {
      s1 = peg$c111;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e300);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f472(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForeachTemplateOption, "peg$parseForeachTemplateOption");
  function peg$parseForIterationPattern() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedVariableNoTail();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c118) {
        s3 = peg$c118;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e322);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseVarRHSContent();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f473(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e336);
      }
    }
    return s0;
  }
  __name(peg$parseForIterationPattern, "peg$parseForIterationPattern");
  function peg$parseForParallelSpec() {
    var s0, s2, s4, s6, s8, s10, s12;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 8) === peg$c124) {
      s2 = peg$c124;
      peg$currPos += 8;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e337);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s4 = peg$c18;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseNumberLiteral();
        if (s6 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 44) {
            s8 = peg$c85;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e189);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$parse_();
            s10 = peg$parseTimeDurationLiteral();
            if (s10 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 41) {
                s12 = peg$c19;
                peg$currPos++;
              } else {
                s12 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e43);
                }
              }
              if (s12 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f474(s6, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 8) === peg$c124) {
        s2 = peg$c124;
        peg$currPos += 8;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e337);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseNumberLiteral();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s8 = peg$c19;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f475(s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        peg$parse_();
        if (input.substr(peg$currPos, 8) === peg$c124) {
          s2 = peg$c124;
          peg$currPos += 8;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e337);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 40) {
            s4 = peg$c18;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s4 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s6 = peg$c19;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f476();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          peg$parse_();
          if (input.substr(peg$currPos, 8) === peg$c124) {
            s2 = peg$c124;
            peg$currPos += 8;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e337);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f477();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 40) {
              s2 = peg$c18;
              peg$currPos++;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e42);
              }
            }
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$parseNumberLiteral();
              if (s4 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 44) {
                  s6 = peg$c85;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e189);
                  }
                }
                if (s6 !== peg$FAILED) {
                  peg$parse_();
                  s8 = peg$parseTimeDurationLiteral();
                  if (s8 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 41) {
                      s10 = peg$c19;
                      peg$currPos++;
                    } else {
                      s10 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e43);
                      }
                    }
                    if (s10 !== peg$FAILED) {
                      peg$parse_();
                      if (input.substr(peg$currPos, 8) === peg$c124) {
                        s12 = peg$c124;
                        peg$currPos += 8;
                      } else {
                        s12 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e337);
                        }
                      }
                      if (s12 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f478(s4, s8);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              peg$parse_();
              s2 = peg$parseNumberLiteral();
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.substr(peg$currPos, 8) === peg$c124) {
                  s4 = peg$c124;
                  peg$currPos += 8;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e337);
                  }
                }
                if (s4 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f479(s2);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseForParallelSpec, "peg$parseForParallelSpec");
  function peg$parseForSingleAction() {
    var s0, s1, s3, s4;
    peg$silentFails++;
    s0 = peg$parseForNestedDirective();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseEffectAction();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f480(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c88) {
          s1 = peg$c88;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e196);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseVarRHSContent();
          if (s3 !== peg$FAILED) {
            s4 = peg$parseStandardDirectiveEnding();
            peg$savedPos = s0;
            s0 = peg$f481(s1, s3, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$parseRunBlockAction();
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseWhenRHSAction();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f482(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseUnifiedReferenceWithTail();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f483(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e338);
      }
    }
    return s0;
  }
  __name(peg$parseForSingleAction, "peg$parseForSingleAction");
  function peg$parseForNestedDirective() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c117) {
      s1 = peg$c117;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e321);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseForParallelSpec();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$parse_();
      s4 = peg$parseForIterationPattern();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseForActionVariant();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f484(s2, s4, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForNestedDirective, "peg$parseForNestedDirective");
  function peg$parseBlockStatementSeparator() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 44) {
      s2 = peg$c85;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e189);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      peg$savedPos = s0;
      s0 = peg$f485();
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parse_();
      s2 = [];
      s3 = peg$parseBlockComments();
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseBlockComments();
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 59) {
          s2 = peg$c125;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e339);
          }
        }
        if (s2 !== peg$FAILED) {
          s3 = peg$parse_();
          s1 = [
            s1,
            s2,
            s3
          ];
          s0 = s1;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$parse_();
        }
      }
    }
    return s0;
  }
  __name(peg$parseBlockStatementSeparator, "peg$parseBlockStatementSeparator");
  function peg$parseForBlockStatementList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseForBlockStatement();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseBlockStatementSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseForBlockStatement();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f486(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseBlockStatementSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseForBlockStatement();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f486(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f487(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f488();
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e340);
      }
    }
    return s0;
  }
  __name(peg$parseForBlockStatementList, "peg$parseForBlockStatementList");
  function peg$parseForBlockStatement() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenExpressionAny();
        if (s0 === peg$FAILED) {
          s0 = peg$parseForNestedDirective();
          if (s0 === peg$FAILED) {
            s0 = peg$parseForSingleAction();
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e341);
      }
    }
    return s0;
  }
  __name(peg$parseForBlockStatement, "peg$parseForBlockStatement");
  function peg$parseForBlockReturnStatement() {
    var s0, s1, s3, s4, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenRHSAction();
      if (s3 !== peg$FAILED) {
        s4 = [];
        s5 = peg$parseBlockComments();
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = peg$parseBlockComments();
        }
        peg$savedPos = s0;
        s0 = peg$f489(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e342);
      }
    }
    return s0;
  }
  __name(peg$parseForBlockReturnStatement, "peg$parseForBlockReturnStatement");
  function peg$parseForBlockBody() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseForBlockStatementList();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = peg$parseBlockStatementSeparator();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseForBlockReturnStatement();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f490(s1, s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = peg$currPos;
        s3 = peg$parse_();
        s4 = peg$parseForBlockReturnStatement();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f491(s1, s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = peg$parseBlockStatementSeparator();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseForBlockReturnStatement();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f492(s1, s2);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$currPos;
        s5 = peg$parseBlockStatementSeparator();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseForBlockStatement();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f493(s1, s2, s3);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f494(s1, s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseForBlockStatementList();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f495(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e343);
      }
    }
    return s0;
  }
  __name(peg$parseForBlockBody, "peg$parseForBlockBody");
  function peg$parseForBlockAction() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseForBlockBody();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f496(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        peg$savedPos = s0;
        s0 = peg$f497();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          peg$savedPos = peg$currPos;
          s3 = peg$f498();
          if (s3) {
            s3 = void 0;
          } else {
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f499();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e344);
      }
    }
    return s0;
  }
  __name(peg$parseForBlockAction, "peg$parseForBlockAction");
  function peg$parseForActionVariant() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseForSingleAction();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f500(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s1 = peg$c114;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseForBlockAction();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f501(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseForBlockAction();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f502(s1);
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e345);
      }
    }
    return s0;
  }
  __name(peg$parseForActionVariant, "peg$parseForActionVariant");
  function peg$parseForExpressionAction() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseForBlockAction();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f503(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseWhenExpressionAny();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f504(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseWhenRHSAction();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f505(s1);
        }
        s0 = s1;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e346);
      }
    }
    return s0;
  }
  __name(peg$parseForExpressionAction, "peg$parseForExpressionAction");
  function peg$parseLetAssignment() {
    var s0, s1, s2, s3, s4, s6, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c126) {
      s1 = peg$c126;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e348);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parse__();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 64) {
          s3 = peg$c68;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s6 = peg$c65;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s6 !== peg$FAILED) {
              peg$parse_();
              s8 = peg$parseVarRHSContent();
              if (s8 !== peg$FAILED) {
                s9 = peg$parseSecuredDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f506(s4, s8, s9);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e347);
      }
    }
    return s0;
  }
  __name(peg$parseLetAssignment, "peg$parseLetAssignment");
  function peg$parseAugmentedAssignment() {
    var s0, s1, s2, s3, s5, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c126) {
      s2 = peg$c126;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e348);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse__();
      if (s3 !== peg$FAILED) {
        s2 = [
          s2,
          s3
        ];
        s1 = s2;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parseComplexAugmentedLHS();
    if (s2 !== peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c127) {
        s3 = peg$c127;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e350);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseVarRHSContent();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseSecuredDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f507(s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c126) {
        s2 = peg$c126;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e348);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse__();
        if (s3 !== peg$FAILED) {
          s2 = [
            s2,
            s3
          ];
          s1 = s2;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 === peg$FAILED) {
        s1 = null;
      }
      if (input.charCodeAt(peg$currPos) === 64) {
        s2 = peg$c68;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseBaseIdentifier();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c127) {
            s5 = peg$c127;
            peg$currPos += 2;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e350);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            s7 = peg$parseVarRHSContent();
            if (s7 !== peg$FAILED) {
              s8 = peg$parseSecuredDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f508(s3, s7, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e349);
      }
    }
    return s0;
  }
  __name(peg$parseAugmentedAssignment, "peg$parseAugmentedAssignment");
  function peg$parseComplexAugmentedLHS() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = input.charAt(peg$currPos);
        if (peg$r39.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e351);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = [];
          s6 = peg$currPos;
          s7 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 2) === peg$c127) {
            s8 = peg$c127;
            peg$currPos += 2;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e350);
            }
          }
          if (s8 === peg$FAILED) {
            if (input.substr(peg$currPos, 2) === peg$c114) {
              s8 = peg$c114;
              peg$currPos += 2;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e314);
              }
            }
          }
          peg$silentFails--;
          if (s8 === peg$FAILED) {
            s7 = void 0;
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          if (s7 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s8 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s8 !== peg$FAILED) {
              s7 = [
                s7,
                s8
              ];
              s6 = s7;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$currPos;
            s7 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c127) {
              s8 = peg$c127;
              peg$currPos += 2;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e350);
              }
            }
            if (s8 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c114) {
                s8 = peg$c114;
                peg$currPos += 2;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e314);
                }
              }
            }
            peg$silentFails--;
            if (s8 === peg$FAILED) {
              s7 = void 0;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s8 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s8 !== peg$FAILED) {
                s7 = [
                  s7,
                  s8
                ];
                s6 = s7;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
          }
          s6 = peg$currPos;
          peg$silentFails++;
          if (input.substr(peg$currPos, 2) === peg$c127) {
            s7 = peg$c127;
            peg$currPos += 2;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e350);
            }
          }
          peg$silentFails--;
          if (s7 !== peg$FAILED) {
            peg$currPos = s6;
            s6 = void 0;
          } else {
            s6 = peg$FAILED;
          }
          if (s6 !== peg$FAILED) {
            s1 = [
              s1,
              s2,
              s3,
              s4,
              s5,
              s6
            ];
            s0 = s1;
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseComplexAugmentedLHS, "peg$parseComplexAugmentedLHS");
  function peg$parseLocalAssignment() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e352);
      }
    }
    return s0;
  }
  __name(peg$parseLocalAssignment, "peg$parseLocalAssignment");
  function peg$parseCommaSpace() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 44) {
      s2 = peg$c85;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e189);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s1 = [
        s1,
        s2,
        s3
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e353);
      }
    }
    return s0;
  }
  __name(peg$parseCommaSpace, "peg$parseCommaSpace");
  function peg$parseSemicolonSpace() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 59) {
      s2 = peg$c125;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e339);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s1 = [
        s1,
        s2,
        s3
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e354);
      }
    }
    return s0;
  }
  __name(peg$parseSemicolonSpace, "peg$parseSemicolonSpace");
  function peg$parseEnvironmentVarList() {
    var s0, s1, s2, s3, s5, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseEnvironmentVarReference();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseEnvironmentVarReference();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f509(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseEnvironmentVarReference();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f509(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f510(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e355);
      }
    }
    return s0;
  }
  __name(peg$parseEnvironmentVarList, "peg$parseEnvironmentVarList");
  function peg$parseEnvironmentVarReference() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f511(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e356);
      }
    }
    return s0;
  }
  __name(peg$parseEnvironmentVarReference, "peg$parseEnvironmentVarReference");
  function peg$parseOutputSource() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputExecInvocation();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputVariable();
      if (s0 === peg$FAILED) {
        s0 = peg$parseOutputCommand();
        if (s0 === peg$FAILED) {
          s0 = peg$parseOutputLiteral();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e357);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSource, "peg$parseOutputSource");
  function peg$parseOutputSourceVariable() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputVariable();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e358);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSourceVariable, "peg$parseOutputSourceVariable");
  function peg$parseOutputSourceVarAndExec() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputExecInvocation();
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e359);
      }
    }
    return s0;
  }
  __name(peg$parseOutputSourceVarAndExec, "peg$parseOutputSourceVarAndExec");
  function peg$parseOutputExecInvocation() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedReferenceWithTail();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f512(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputExecInvocation, "peg$parseOutputExecInvocation");
  function peg$parseOutputVariable() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 124) {
        s3 = peg$c110;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e292);
        }
      }
      if (s3 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c122) {
          s3 = peg$c122;
          peg$currPos += 4;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e334);
          }
        }
        if (s3 === peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c128) {
            s3 = peg$c128;
            peg$currPos += 5;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e360);
            }
          }
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f513(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputVariable, "peg$parseOutputVariable");
  function peg$parseOutputCommand() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c129) {
      s1 = peg$c129;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e361);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedReferenceNoTail();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f514(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputCommand, "peg$parseOutputCommand");
  function peg$parseOutputLiteral() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedQuoteOrTemplate();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f515(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseOutputLiteral, "peg$parseOutputLiteral");
  function peg$parseOutputTarget() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseOutputTargetStream();
    if (s0 === peg$FAILED) {
      s0 = peg$parseOutputTargetEnv();
      if (s0 === peg$FAILED) {
        s0 = peg$parseOutputTargetResolver();
        if (s0 === peg$FAILED) {
          s0 = peg$parseOutputTargetFile();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e362);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTarget, "peg$parseOutputTarget");
  function peg$parseOutputTargetStream() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c130) {
      s1 = peg$c130;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e364);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c131) {
        s1 = peg$c131;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e365);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f516(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e363);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetStream, "peg$parseOutputTargetStream");
  function peg$parseOutputTargetEnv() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c132) {
      s1 = peg$c132;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e367);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f517(s4);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f518(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e366);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetEnv, "peg$parseOutputTargetEnv");
  function peg$parseOutputTargetResolver() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseResolverPath();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f519(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e368);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetResolver, "peg$parseOutputTargetResolver");
  function peg$parseResolverPath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r40.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e369);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r40.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e369);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f520(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseResolverPath, "peg$parseResolverPath");
  function peg$parseOutputTargetFile() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseOutputFilePath();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f521(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e370);
      }
    }
    return s0;
  }
  __name(peg$parseOutputTargetFile, "peg$parseOutputTargetFile");
  function peg$parseOutputFilePath() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f522(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r41.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e372);
        }
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r41.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e372);
            }
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f523(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e371);
      }
    }
    return s0;
  }
  __name(peg$parseOutputFilePath, "peg$parseOutputFilePath");
  function peg$parseOutputFormat() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s1 = peg$c100;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseBaseIdentifier();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f524(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e373);
      }
    }
    return s0;
  }
  __name(peg$parseOutputFormat, "peg$parseOutputFormat");
  function peg$parsePathSegments() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePathSegment();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c37;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e84);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePathSegment();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f525(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 47) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e84);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePathSegment();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f525(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f526(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePathSegments, "peg$parsePathSegments");
  function peg$parsePathSegment() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r42.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e374);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r42.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e374);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f527(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathSegment, "peg$parsePathSegment");
  function peg$parsePathExpression() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseQuotedStringPath();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e375);
      }
    }
    return s0;
  }
  __name(peg$parsePathExpression, "peg$parsePathExpression");
  function peg$parseQuotedStringPath() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseQuotedStringPathPart();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseQuotedStringPathPart();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f528(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r43.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e377);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r43.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e377);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f529(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e376);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPath, "peg$parseQuotedStringPath");
  function peg$parseQuotedStringPathPart() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseQuotedStringPathVariable();
    if (s0 === peg$FAILED) {
      s0 = peg$parseQuotedStringPathEscapedAt();
      if (s0 === peg$FAILED) {
        s0 = peg$parseQuotedStringPathTextSegment();
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e378);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPathPart, "peg$parseQuotedStringPathPart");
  function peg$parseQuotedStringPathVariable() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseBoundaryAwareFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseBoundaryAwareFieldAccess();
        }
        s4 = peg$parseVariableBoundary();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f530(s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e379);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPathVariable, "peg$parseQuotedStringPathVariable");
  function peg$parseQuotedStringPathEscapedAt() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c31) {
      s1 = peg$c31;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e61);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c74) {
        s1 = peg$c74;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e153);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f531();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e380);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPathEscapedAt, "peg$parseQuotedStringPathEscapedAt");
  function peg$parseQuotedStringPathTextSegment() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseQuotedStringPathChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseQuotedStringPathChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f532(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e381);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPathTextSegment, "peg$parseQuotedStringPathTextSegment");
  function peg$parseQuotedStringPathChar() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c82) {
      s1 = peg$c82;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e175);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f533();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c133) {
        s1 = peg$c133;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e383);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f534();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        peg$silentFails++;
        if (input.substr(peg$currPos, 2) === peg$c74) {
          s2 = peg$c74;
          peg$currPos += 2;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e153);
          }
        }
        if (s2 === peg$FAILED) {
          s2 = input.charAt(peg$currPos);
          if (peg$r44.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e384);
            }
          }
        }
        peg$silentFails--;
        if (s2 === peg$FAILED) {
          s1 = void 0;
        } else {
          peg$currPos = s1;
          s1 = peg$FAILED;
        }
        if (s1 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s2 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f535(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e382);
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringPathChar, "peg$parseQuotedStringPathChar");
  function peg$parseURLProtocolType() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c97) {
      s3 = peg$c97;
      peg$currPos += 4;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e210);
      }
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 115) {
        s4 = peg$c23;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e51);
        }
      }
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c134) {
        s2 = peg$c134;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e386);
        }
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f536(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e385);
      }
    }
    return s0;
  }
  __name(peg$parseURLProtocolType, "peg$parseURLProtocolType");
  function peg$parseURLRest() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c135) {
      s1 = peg$c135;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e388);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseURLParts();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f537(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e387);
      }
    }
    return s0;
  }
  __name(peg$parseURLRest, "peg$parseURLRest");
  function peg$parseURLParts() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseURLEscapedBackslash();
    if (s2 === peg$FAILED) {
      s2 = peg$parseURLEscapedAt();
      if (s2 === peg$FAILED) {
        s2 = peg$parseURLVariableRef();
        if (s2 === peg$FAILED) {
          s2 = peg$parseURLSegment();
        }
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseURLEscapedBackslash();
        if (s2 === peg$FAILED) {
          s2 = peg$parseURLEscapedAt();
          if (s2 === peg$FAILED) {
            s2 = peg$parseURLVariableRef();
            if (s2 === peg$FAILED) {
              s2 = peg$parseURLSegment();
            }
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f538(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e389);
      }
    }
    return s0;
  }
  __name(peg$parseURLParts, "peg$parseURLParts");
  function peg$parseURLEscapedBackslash() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c82) {
      s1 = peg$c82;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e175);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f539();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e390);
      }
    }
    return s0;
  }
  __name(peg$parseURLEscapedBackslash, "peg$parseURLEscapedBackslash");
  function peg$parseURLEscapedAt() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c31) {
      s1 = peg$c31;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e61);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c74) {
        s1 = peg$c74;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e153);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f540();
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e391);
      }
    }
    return s0;
  }
  __name(peg$parseURLEscapedAt, "peg$parseURLEscapedAt");
  function peg$parseURLVariableRef() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f541(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e392);
      }
    }
    return s0;
  }
  __name(peg$parseURLVariableRef, "peg$parseURLVariableRef");
  function peg$parseURLSegment() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r45.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e394);
      }
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r45.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e394);
          }
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f542(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e393);
      }
    }
    return s0;
  }
  __name(peg$parseURLSegment, "peg$parseURLSegment");
  function peg$parseSectionIdentifier() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$parseUnifiedVariableNoTail();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c8;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c8;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 34) {
            s6 = peg$c8;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e23);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c8;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f543(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 39) {
          s1 = peg$c7;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$currPos;
          s3 = [];
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c7;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e22);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = peg$currPos;
            s5 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 39) {
              s6 = peg$c7;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e22);
              }
            }
            peg$silentFails--;
            if (s6 === peg$FAILED) {
              s5 = void 0;
            } else {
              peg$currPos = s5;
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s6 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s6 !== peg$FAILED) {
                s5 = [
                  s5,
                  s6
                ];
                s4 = s5;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          }
          s2 = input.substring(s2, peg$currPos);
          if (input.charCodeAt(peg$currPos) === 39) {
            s3 = peg$c7;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e22);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f544(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = [];
          s2 = peg$parseSectionNameChar();
          if (s2 !== peg$FAILED) {
            while (s2 !== peg$FAILED) {
              s1.push(s2);
              s2 = peg$parseSectionNameChar();
            }
          } else {
            s1 = peg$FAILED;
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f545(s1);
          }
          s0 = s1;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e395);
      }
    }
    return s0;
  }
  __name(peg$parseSectionIdentifier, "peg$parseSectionIdentifier");
  function peg$parseSectionNameChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = input.charAt(peg$currPos);
    if (peg$r46.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e396);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f546(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionNameChar, "peg$parseSectionNameChar");
  function peg$parseIsInRHS() {
    var s0;
    peg$silentFails++;
    peg$savedPos = peg$currPos;
    s0 = peg$f547();
    if (s0) {
      s0 = void 0;
    } else {
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e397);
      }
    }
    return s0;
  }
  __name(peg$parseIsInRHS, "peg$parseIsInRHS");
  function peg$parseRunRHS() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCommandContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f548(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseWrappedCodeContent();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f549(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseRunRHS, "peg$parseRunRHS");
  function peg$parseRunBlockAction() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseRunKeyword();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse__();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseLeadingParallelPipeline();
        if (s3 !== peg$FAILED) {
          s4 = peg$parsePipelineParallelSpec();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$currPos;
          s6 = peg$parseHWS();
          s7 = peg$parseDataLabelList();
          if (s7 !== peg$FAILED) {
            s6 = [
              s6,
              s7
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$parseInlineComment();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f550(s3, s4, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseRunKeyword();
      if (s1 !== peg$FAILED) {
        s2 = peg$parse__();
        if (s2 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 34) {
            s3 = peg$c8;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e23);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$currPos;
            s5 = [];
            s6 = input.charAt(peg$currPos);
            if (peg$r47.test(s6)) {
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e399);
              }
            }
            while (s6 !== peg$FAILED) {
              s5.push(s6);
              s6 = input.charAt(peg$currPos);
              if (peg$r47.test(s6)) {
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e399);
                }
              }
            }
            s4 = input.substring(s4, peg$currPos);
            if (input.charCodeAt(peg$currPos) === 34) {
              s5 = peg$c8;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseTailModifiers();
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$currPos;
              s8 = peg$parseHWS();
              s9 = peg$parseDataLabelList();
              if (s9 !== peg$FAILED) {
                s8 = [
                  s8,
                  s9
                ];
                s7 = s8;
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              s8 = peg$parseInlineComment();
              if (s8 === peg$FAILED) {
                s8 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f551(s4, s6, s7, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseRunKeyword();
        if (s1 !== peg$FAILED) {
          s2 = peg$parse__();
          if (s2 !== peg$FAILED) {
            s3 = peg$parseCmdCommandBrackets();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedCommandBrackets();
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$parseTailModifiers();
              if (s4 === peg$FAILED) {
                s4 = null;
              }
              s5 = peg$currPos;
              s6 = peg$parseHWS();
              s7 = peg$parseDataLabelList();
              if (s7 !== peg$FAILED) {
                s6 = [
                  s6,
                  s7
                ];
                s5 = s6;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              if (s5 === peg$FAILED) {
                s5 = null;
              }
              s6 = peg$parseInlineComment();
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f552(s3, s4, s5, s6);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseRunKeyword();
          if (s1 !== peg$FAILED) {
            s2 = peg$parse__();
            if (s2 !== peg$FAILED) {
              s3 = peg$parsePipeStdinExpression();
              if (s3 !== peg$FAILED) {
                s4 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 124) {
                  s5 = peg$c110;
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e292);
                  }
                }
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  s7 = peg$parseCmdCommandBrackets();
                  if (s7 === peg$FAILED) {
                    s7 = peg$parseUnifiedCommandBrackets();
                  }
                  if (s7 !== peg$FAILED) {
                    s8 = peg$parseTailModifiers();
                    if (s8 === peg$FAILED) {
                      s8 = null;
                    }
                    s9 = peg$currPos;
                    s10 = peg$parseHWS();
                    s11 = peg$parseDataLabelList();
                    if (s11 !== peg$FAILED) {
                      s10 = [
                        s10,
                        s11
                      ];
                      s9 = s10;
                    } else {
                      peg$currPos = s9;
                      s9 = peg$FAILED;
                    }
                    if (s9 === peg$FAILED) {
                      s9 = null;
                    }
                    s10 = peg$parseInlineComment();
                    if (s10 === peg$FAILED) {
                      s10 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f553(s3, s7, s8, s9, s10);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseRunKeyword();
            if (s1 !== peg$FAILED) {
              s2 = peg$parse__();
              if (s2 !== peg$FAILED) {
                s3 = peg$parseRunLanguageCodeWithArgs();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseRunLanguageCodeCore();
                }
                if (s3 !== peg$FAILED) {
                  s4 = peg$parseTailModifiers();
                  if (s4 === peg$FAILED) {
                    s4 = null;
                  }
                  s5 = peg$currPos;
                  s6 = peg$parseHWS();
                  s7 = peg$parseDataLabelList();
                  if (s7 !== peg$FAILED) {
                    s6 = [
                      s6,
                      s7
                    ];
                    s5 = s6;
                  } else {
                    peg$currPos = s5;
                    s5 = peg$FAILED;
                  }
                  if (s5 === peg$FAILED) {
                    s5 = null;
                  }
                  s6 = peg$parseInlineComment();
                  if (s6 === peg$FAILED) {
                    s6 = null;
                  }
                  peg$savedPos = s0;
                  s0 = peg$f554(s3, s4, s5, s6);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseRunKeyword();
              if (s1 !== peg$FAILED) {
                s2 = peg$parse__();
                if (s2 !== peg$FAILED) {
                  s3 = peg$parseUnifiedReferenceWithTail();
                  if (s3 !== peg$FAILED) {
                    s4 = peg$currPos;
                    s5 = peg$parseHWS();
                    s6 = peg$parseDataLabelList();
                    if (s6 !== peg$FAILED) {
                      s5 = [
                        s5,
                        s6
                      ];
                      s4 = s5;
                    } else {
                      peg$currPos = s4;
                      s4 = peg$FAILED;
                    }
                    if (s4 === peg$FAILED) {
                      s4 = null;
                    }
                    s5 = peg$parseInlineComment();
                    if (s5 === peg$FAILED) {
                      s5 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f555(s3, s4, s5);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e398);
      }
    }
    return s0;
  }
  __name(peg$parseRunBlockAction, "peg$parseRunBlockAction");
  function peg$parseDataLabelList() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseDataLabelSequence();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f556(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDataLabelList, "peg$parseDataLabelList");
  function peg$parseDataLabelSequence() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseDataLabelToken();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseHWS();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parseHWS();
        s7 = peg$parseDataLabelToken();
        if (s7 !== peg$FAILED) {
          s4 = [
            s4,
            s5,
            s6,
            s7
          ];
          s3 = s4;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseHWS();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseHWS();
          s7 = peg$parseDataLabelToken();
          if (s7 !== peg$FAILED) {
            s4 = [
              s4,
              s5,
              s6,
              s7
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f557(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataLabelSequence, "peg$parseDataLabelSequence");
  function peg$parseDataLabelToken() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseDataLabelIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f558(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseDataLabelToken, "peg$parseDataLabelToken");
  function peg$parseDataLabelIdentifier() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f559(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f560(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseDataLabelIdentifier, "peg$parseDataLabelIdentifier");
  function peg$parseDataString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f561(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c8;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseConditionalStringFragment();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedSpecialVariable();
          if (s3 === peg$FAILED) {
            s3 = peg$parseFileReferenceInterpolation();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedVariableWithPipes();
              if (s3 === peg$FAILED) {
                s3 = peg$parseDataStringAtLiteral();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseDoubleQuotedText();
                }
              }
            }
          }
        }
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseConditionalStringFragment();
          if (s3 === peg$FAILED) {
            s3 = peg$parseUnifiedSpecialVariable();
            if (s3 === peg$FAILED) {
              s3 = peg$parseFileReferenceInterpolation();
              if (s3 === peg$FAILED) {
                s3 = peg$parseUnifiedVariableWithPipes();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseDataStringAtLiteral();
                  if (s3 === peg$FAILED) {
                    s3 = peg$parseDoubleQuotedText();
                  }
                }
              }
            }
          }
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c8;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f562(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e400);
      }
    }
    return s0;
  }
  __name(peg$parseDataString, "peg$parseDataString");
  function peg$parseTemplateString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f563(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedDoubleQuote();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f564(s1);
      }
      s0 = s1;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e401);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateString, "peg$parseTemplateString");
  function peg$parseDataStringAtLiteral() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 64) {
        s3 = peg$c68;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        s4 = peg$parseBaseIdentifier();
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f565();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e402);
      }
    }
    return s0;
  }
  __name(peg$parseDataStringAtLiteral, "peg$parseDataStringAtLiteral");
  function peg$parseExpressionString() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f566(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 34) {
        s1 = peg$c8;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseConditionalStringFragment();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedSpecialVariable();
          if (s3 === peg$FAILED) {
            s3 = peg$parseFileReferenceInterpolation();
            if (s3 === peg$FAILED) {
              s3 = peg$parseUnifiedVariableWithPipes();
              if (s3 === peg$FAILED) {
                s3 = peg$parseDataStringAtLiteral();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseDoubleQuotedText();
                }
              }
            }
          }
        }
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseConditionalStringFragment();
          if (s3 === peg$FAILED) {
            s3 = peg$parseUnifiedSpecialVariable();
            if (s3 === peg$FAILED) {
              s3 = peg$parseFileReferenceInterpolation();
              if (s3 === peg$FAILED) {
                s3 = peg$parseUnifiedVariableWithPipes();
                if (s3 === peg$FAILED) {
                  s3 = peg$parseDataStringAtLiteral();
                  if (s3 === peg$FAILED) {
                    s3 = peg$parseDoubleQuotedText();
                  }
                }
              }
            }
          }
        }
        if (input.charCodeAt(peg$currPos) === 34) {
          s3 = peg$c8;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f567(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e403);
      }
    }
    return s0;
  }
  __name(peg$parseExpressionString, "peg$parseExpressionString");
  function peg$parseTailModifiers() {
    var s0, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseTailKeyword();
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseTailValue();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f568(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e404);
      }
    }
    return s0;
  }
  __name(peg$parseTailModifiers, "peg$parseTailModifiers");
  function peg$parseTailKeyword() {
    var s0;
    if (input.substr(peg$currPos, 8) === peg$c79) {
      s0 = peg$c79;
      peg$currPos += 8;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e167);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 124) {
        s0 = peg$c110;
        peg$currPos++;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e292);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c122) {
          s0 = peg$c122;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e334);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c100) {
            s0 = peg$c100;
            peg$currPos += 2;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e219);
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseTailKeyword, "peg$parseTailKeyword");
  function peg$parseTailValue() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWithProperties();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s5 = peg$c86;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f569(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parsePipelineStageList();
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s5 = peg$c70;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f570(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parsePipelineShorthand();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f571(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseAsSectionRenameString();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f572(s1);
          }
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseTailValue, "peg$parseTailValue");
  function peg$parsePipelineShorthand() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parsePipelineStageFirst();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parsePipelineRest();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parsePipelineRest();
      }
      peg$savedPos = s0;
      s0 = peg$f573(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineShorthand, "peg$parsePipelineShorthand");
  function peg$parseLeadingParallelPipeline() {
    var s0, s1, s3, s4, s5, s6, s7, s8;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c58) {
      s1 = peg$c58;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$currPos;
      peg$silentFails++;
      s4 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s5 = peg$c68;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parseBaseIdentifier();
        if (s6 !== peg$FAILED) {
          s7 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 40) {
            s8 = peg$c18;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s8 !== peg$FAILED) {
            s5 = [
              s5,
              s6,
              s7,
              s8
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      peg$silentFails--;
      if (s4 !== peg$FAILED) {
        peg$currPos = s3;
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseParallelSequence();
        if (s4 !== peg$FAILED) {
          s5 = [];
          s6 = peg$parsePipelineRest();
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parsePipelineRest();
          }
          s6 = peg$parsePipelineParallelSpec();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f574(s4, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLeadingParallelPipeline, "peg$parseLeadingParallelPipeline");
  function peg$parsePipelineStageFirst() {
    var s0;
    s0 = peg$parseParallelSequence();
    if (s0 === peg$FAILED) {
      s0 = peg$parsePipelineStageEntry();
    }
    return s0;
  }
  __name(peg$parsePipelineStageFirst, "peg$parsePipelineStageFirst");
  function peg$parsePipelineRest() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 124) {
      s2 = peg$c110;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e292);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseParallelSequence();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f575(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 124) {
        s2 = peg$c110;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e292);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parsePipelineStageEntry();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f576(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parsePipelineRest, "peg$parsePipelineRest");
  function peg$parseParallelSequence() {
    var s0, s1, s2, s3, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c58) {
      s2 = peg$c58;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e117);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      s2 = [
        s2,
        s3
      ];
      s1 = s2;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    s2 = peg$parsePipelineStageEntry();
    if (s2 !== peg$FAILED) {
      s3 = [];
      s4 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c58) {
        s6 = peg$c58;
        peg$currPos += 2;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s6 !== peg$FAILED) {
        peg$parse_();
        s8 = peg$parsePipelineStageEntry();
        if (s8 !== peg$FAILED) {
          peg$savedPos = s4;
          s4 = peg$f577(s1, s2, s8);
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      if (s4 !== peg$FAILED) {
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c58) {
            s6 = peg$c58;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e117);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parsePipelineStageEntry();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f577(s1, s2, s8);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f578(s1, s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseParallelSequence, "peg$parseParallelSequence");
  function peg$parseUnifiedArgumentList() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 40) {
      s1 = peg$c18;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedArgumentListItems();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s5 = peg$c19;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e43);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f579(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedArgumentList, "peg$parseUnifiedArgumentList");
  function peg$parseUnifiedArgumentListItems() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedArgument();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseUnifiedArgument();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f580(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseUnifiedArgument();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f580(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f581(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedArgumentListItems, "peg$parseUnifiedArgumentListItems");
  function peg$parseUnifiedArgument() {
    var s0, s1;
    peg$silentFails++;
    s0 = peg$parseWhenExpression();
    if (s0 === peg$FAILED) {
      s0 = peg$parseForeachCommandExpression();
      if (s0 === peg$FAILED) {
        s0 = peg$parseExecResultMethodCall();
        if (s0 === peg$FAILED) {
          s0 = peg$parseFieldAccessExecPattern();
          if (s0 === peg$FAILED) {
            s0 = peg$parseExecInvocationPattern();
            if (s0 === peg$FAILED) {
              s0 = peg$parseCodeExecution();
              if (s0 === peg$FAILED) {
                s0 = peg$parseCommandTemplateArgument();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseBacktickTemplateArgument();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseNestedExecInvocation();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseDataObjectLiteral();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseArrayLiteral();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseAlligatorExpression();
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseRegexLiteral();
                            if (s1 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s1 = peg$f582(s1);
                            }
                            s0 = s1;
                            if (s0 === peg$FAILED) {
                              s0 = peg$currPos;
                              s1 = peg$parseDataString();
                              if (s1 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s1 = peg$f583(s1);
                              }
                              s0 = s1;
                              if (s0 === peg$FAILED) {
                                s0 = peg$currPos;
                                s1 = peg$parseVariableNoTail();
                                if (s1 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s1 = peg$f584(s1);
                                }
                                s0 = s1;
                                if (s0 === peg$FAILED) {
                                  s0 = peg$parsePrimitiveValue();
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$parseEscapedArgument();
                                    if (s0 === peg$FAILED) {
                                      s0 = peg$parseRawArgument();
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e405);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedArgument, "peg$parseUnifiedArgument");
  function peg$parseRegexLiteral() {
    var s0, s1, s2, s3, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseRegexBody();
      if (input.charCodeAt(peg$currPos) === 47) {
        s3 = peg$c37;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e84);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseRegexFlags();
        peg$savedPos = s0;
        s0 = peg$f585(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e406);
      }
    }
    return s0;
  }
  __name(peg$parseRegexLiteral, "peg$parseRegexLiteral");
  function peg$parseRegexBody() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseRegexBodyChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseRegexBodyChar();
    }
    peg$savedPos = s0;
    s1 = peg$f586(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseRegexBody, "peg$parseRegexBody");
  function peg$parseRegexBodyChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c82) {
      s1 = peg$c82;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e175);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f587(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      s2 = input.charAt(peg$currPos);
      if (peg$r48.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e407);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f588(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseRegexBodyChar, "peg$parseRegexBodyChar");
  function peg$parseRegexFlags() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r49.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e408);
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      s3 = input.charAt(peg$currPos);
      if (peg$r49.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e408);
        }
      }
    }
    s1 = input.substring(s1, peg$currPos);
    peg$savedPos = s0;
    s1 = peg$f589(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseRegexFlags, "peg$parseRegexFlags");
  function peg$parseUnifiedReference() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseExecResultMethodCall();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFieldAccessExec();
      if (s0 === peg$FAILED) {
        s0 = peg$parseSimpleExec();
        if (s0 === peg$FAILED) {
          s0 = peg$parseVariableWithTail();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e409);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReference, "peg$parseUnifiedReference");
  function peg$parseUnifiedReferenceWithTail() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseUnifiedReference();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e410);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReferenceWithTail, "peg$parseUnifiedReferenceWithTail");
  function peg$parseUnifiedReferenceNoTail() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseExecResultMethodCall();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFieldAccessExecNoTail();
      if (s0 === peg$FAILED) {
        s0 = peg$parseSimpleExecNoTail();
        if (s0 === peg$FAILED) {
          s0 = peg$parseVariableNoTail();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e411);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReferenceNoTail, "peg$parseUnifiedReferenceNoTail");
  function peg$parseUnifiedReferenceForPipeline() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseExecResultMethodCall();
    if (s0 === peg$FAILED) {
      s0 = peg$parseFieldAccessExecForPipeline();
      if (s0 === peg$FAILED) {
        s0 = peg$parseSimpleExecForPipeline();
        if (s0 === peg$FAILED) {
          s0 = peg$parseVariableForPipeline();
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e412);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedReferenceForPipeline, "peg$parseUnifiedReferenceForPipeline");
  function peg$parseFieldAccessExec() {
    var s0, s1, s3, s4, s5, s6, s7, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = peg$parseAnyFieldAccess();
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parseAnyFieldAccess();
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s6 = peg$c18;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseCommandArgumentList();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s9 = peg$c19;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = [];
              s11 = peg$parsePostFieldAccess();
              while (s11 !== peg$FAILED) {
                s10.push(s11);
                s11 = peg$parsePostFieldAccess();
              }
              s11 = peg$parseTailModifiers();
              if (s11 === peg$FAILED) {
                s11 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f590(s1, s4, s5, s7, s10, s11);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e413);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExec, "peg$parseFieldAccessExec");
  function peg$parseFieldAccessExecNoTail() {
    var s0, s1, s3, s4, s5, s6, s7, s9, s10, s11, s12;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = peg$parseAnyFieldAccess();
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parseAnyFieldAccess();
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s6 = peg$c18;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseCommandArgumentList();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s9 = peg$c19;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = [];
              s11 = peg$parsePostFieldAccess();
              while (s11 !== peg$FAILED) {
                s10.push(s11);
                s11 = peg$parsePostFieldAccess();
              }
              s11 = peg$currPos;
              peg$silentFails++;
              s12 = peg$parseTailModifiers();
              peg$silentFails--;
              if (s12 === peg$FAILED) {
                s11 = void 0;
              } else {
                peg$currPos = s11;
                s11 = peg$FAILED;
              }
              if (s11 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f591(s1, s4, s5, s7, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e414);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExecNoTail, "peg$parseFieldAccessExecNoTail");
  function peg$parseSimpleExec() {
    var s0, s1, s3, s4, s5, s6, s8, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s5 = peg$c18;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseCommandArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = [];
            s10 = peg$parsePostFieldAccess();
            while (s10 !== peg$FAILED) {
              s9.push(s10);
              s10 = peg$parsePostFieldAccess();
            }
            s10 = peg$parseTailModifiers();
            if (s10 === peg$FAILED) {
              s10 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f592(s1, s4, s6, s9, s10);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e415);
      }
    }
    return s0;
  }
  __name(peg$parseSimpleExec, "peg$parseSimpleExec");
  function peg$parseSimpleExecNoTail() {
    var s0, s1, s3, s4, s5, s6, s8, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s5 = peg$c18;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseCommandArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = [];
            s10 = peg$parsePostFieldAccess();
            while (s10 !== peg$FAILED) {
              s9.push(s10);
              s10 = peg$parsePostFieldAccess();
            }
            s10 = peg$currPos;
            peg$silentFails++;
            s11 = peg$parseTailModifiers();
            peg$silentFails--;
            if (s11 === peg$FAILED) {
              s10 = void 0;
            } else {
              peg$currPos = s10;
              s10 = peg$FAILED;
            }
            if (s10 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f593(s1, s4, s6, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e416);
      }
    }
    return s0;
  }
  __name(peg$parseSimpleExecNoTail, "peg$parseSimpleExecNoTail");
  function peg$parseFieldAccessExecForPipeline() {
    var s0, s1, s3, s4, s5, s6, s7, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = peg$parseAnyFieldAccess();
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parseAnyFieldAccess();
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s6 = peg$c18;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseCommandArgumentList();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s9 = peg$c19;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = [];
              s11 = peg$parsePostFieldAccess();
              while (s11 !== peg$FAILED) {
                s10.push(s11);
                s11 = peg$parsePostFieldAccess();
              }
              peg$savedPos = s0;
              s0 = peg$f594(s1, s4, s5, s7, s10);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e417);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExecForPipeline, "peg$parseFieldAccessExecForPipeline");
  function peg$parseSimpleExecForPipeline() {
    var s0, s1, s3, s4, s5, s6, s8, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s5 = peg$c18;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseCommandArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = [];
            s10 = peg$parsePostFieldAccess();
            while (s10 !== peg$FAILED) {
              s9.push(s10);
              s10 = peg$parsePostFieldAccess();
            }
            peg$savedPos = s0;
            s0 = peg$f595(s1, s4, s6, s9);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e418);
      }
    }
    return s0;
  }
  __name(peg$parseSimpleExecForPipeline, "peg$parseSimpleExecForPipeline");
  function peg$parseVariableForPipeline() {
    var s0, s1, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s6 = peg$c18;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          s6 = [];
          s7 = peg$parseAnyFieldAccess();
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parseAnyFieldAccess();
          }
          peg$savedPos = s0;
          s0 = peg$f596(s1, s4, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e419);
      }
    }
    return s0;
  }
  __name(peg$parseVariableForPipeline, "peg$parseVariableForPipeline");
  function peg$parseVariableWithTail() {
    var s0, s1, s3, s4, s5, s6, s7;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s6 = peg$c18;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          s6 = [];
          s7 = peg$parseAnyFieldAccess();
          while (s7 !== peg$FAILED) {
            s6.push(s7);
            s7 = peg$parseAnyFieldAccess();
          }
          s7 = peg$parseTailModifiers();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f597(s1, s4, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e420);
      }
    }
    return s0;
  }
  __name(peg$parseVariableWithTail, "peg$parseVariableWithTail");
  function peg$parseVariableNoTail() {
    var s0, s1, s2, s3, s4, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        peg$silentFails--;
        if (s4 === peg$FAILED) {
          s3 = void 0;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s4 = [];
          s5 = peg$parseAnyFieldAccess();
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = peg$parseAnyFieldAccess();
          }
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$parseTailModifiers();
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f598(s2, s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e171);
      }
    }
    return s0;
  }
  __name(peg$parseVariableNoTail, "peg$parseVariableNoTail");
  function peg$parseUnifiedCodeBrackets() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = peg$parseUnifiedCodeContent();
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 125) {
        s3 = peg$c86;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f599(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e421);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCodeBrackets, "peg$parseUnifiedCodeBrackets");
  function peg$parseUnifiedCommandBrackets() {
    var s0, s1, s2, s3, s5, s6, s8, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f600();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 123) {
        s2 = peg$c84;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e188);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s3 = peg$f601();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseUnifiedCommandParts();
          if (s5 !== peg$FAILED) {
            peg$savedPos = peg$currPos;
            s6 = peg$f602(s5);
            if (s6) {
              s6 = void 0;
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 125) {
                s8 = peg$c86;
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e190);
                }
              }
              if (s8 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s9 = peg$f603(s5);
                if (s9) {
                  s9 = void 0;
                } else {
                  s9 = peg$FAILED;
                }
                if (s9 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f604(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e422);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandBrackets, "peg$parseUnifiedCommandBrackets");
  function peg$parseCmdCommandBrackets() {
    var s0, s1, s2, s4;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c136) {
      s1 = peg$c136;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e424);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWorkingDirPath();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$parse_();
      s4 = peg$parseUnifiedCommandBrackets();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f605(s2, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e423);
      }
    }
    return s0;
  }
  __name(peg$parseCmdCommandBrackets, "peg$parseCmdCommandBrackets");
  function peg$parseInvalidBareCommandBrackets() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      peg$savedPos = peg$currPos;
      s3 = peg$f606();
      if (s3) {
        s3 = void 0;
      } else {
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f607();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInvalidBareCommandBrackets, "peg$parseInvalidBareCommandBrackets");
  function peg$parseUnifiedRunContent() {
    var s0, s1, s3, s5;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c137) {
      s1 = peg$c137;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e426);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedRunContentInner();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c138) {
          s5 = peg$c138;
          peg$currPos += 2;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e427);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f608(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e425);
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedRunContent, "peg$parseUnifiedRunContent");
  function peg$parseUnifiedRunContentInner() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseRunCodeLanguage();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      s3 = peg$currPos;
      peg$parseUnifiedCodeContent();
      s3 = input.substring(s3, peg$currPos);
      peg$savedPos = s0;
      s0 = peg$f609(s1, s2, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedCommandParts();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f610(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseUnifiedRunContentInner, "peg$parseUnifiedRunContentInner");
  function peg$parseShellCommandLineContent() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = input.charAt(peg$currPos);
    if (peg$r50.test(s3)) {
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e428);
      }
    }
    while (s3 !== peg$FAILED) {
      s2.push(s3);
      s3 = input.charAt(peg$currPos);
      if (peg$r50.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e428);
        }
      }
    }
    s1 = input.substring(s1, peg$currPos);
    peg$savedPos = s0;
    s1 = peg$f611(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseShellCommandLineContent, "peg$parseShellCommandLineContent");
  function peg$parseUnifiedCommandParts() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f612();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedCommandToken();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedCommandToken();
      }
      peg$savedPos = s0;
      s0 = peg$f613(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandParts, "peg$parseUnifiedCommandParts");
  function peg$parseUnifiedCommandToken() {
    var s0;
    s0 = peg$parseConditionalTemplateSnippet();
    if (s0 === peg$FAILED) {
      s0 = peg$parseUnifiedVariableNoTail();
      if (s0 === peg$FAILED) {
        s0 = peg$parseUnifiedCommandQuotedString();
        if (s0 === peg$FAILED) {
          s0 = peg$parseUnifiedCommandWord();
          if (s0 === peg$FAILED) {
            s0 = peg$parseUnifiedCommandSpace();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandToken, "peg$parseUnifiedCommandToken");
  function peg$parseUnifiedCommandQuotedString() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseUnifiedDoubleQuotedContent();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseUnifiedDoubleQuotedContent();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f614(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseUnifiedCommandSingleQuotedContent();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseUnifiedCommandSingleQuotedContent();
        }
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f615(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandQuotedString, "peg$parseUnifiedCommandQuotedString");
  function peg$parseUnifiedDoubleQuotedContent() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedVariableNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f616(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseFileReferenceInterpolation();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f617(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$currPos;
        s2 = [];
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s5 = peg$c8;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 64) {
            s6 = peg$c68;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 60) {
              s7 = peg$c35;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e71);
              }
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s7 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s7 !== peg$FAILED) {
                s4 = [
                  s4,
                  s5,
                  s6,
                  s7
                ];
                s3 = s4;
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$currPos;
            s4 = peg$currPos;
            peg$silentFails++;
            if (input.charCodeAt(peg$currPos) === 34) {
              s5 = peg$c8;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s4 = void 0;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 64) {
                s6 = peg$c68;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              peg$silentFails--;
              if (s6 === peg$FAILED) {
                s5 = void 0;
              } else {
                peg$currPos = s5;
                s5 = peg$FAILED;
              }
              if (s5 !== peg$FAILED) {
                s6 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 60) {
                  s7 = peg$c35;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e71);
                  }
                }
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s7 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e6);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s4 = [
                      s4,
                      s5,
                      s6,
                      s7
                    ];
                    s3 = s4;
                  } else {
                    peg$currPos = s3;
                    s3 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          }
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          s1 = input.substring(s1, peg$currPos);
        } else {
          s1 = s2;
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f618(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s1 = peg$c68;
            peg$currPos++;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f619();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 60) {
              s1 = peg$c35;
              peg$currPos++;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e71);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f620();
            }
            s0 = s1;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedDoubleQuotedContent, "peg$parseUnifiedDoubleQuotedContent");
  function peg$parseUnifiedCommandSingleQuotedContent() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = [];
    s3 = peg$currPos;
    s4 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 39) {
      s5 = peg$c7;
      peg$currPos++;
    } else {
      s5 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    peg$silentFails--;
    if (s5 === peg$FAILED) {
      s4 = void 0;
    } else {
      peg$currPos = s4;
      s4 = peg$FAILED;
    }
    if (s4 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s5 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s5 !== peg$FAILED) {
        s4 = [
          s4,
          s5
        ];
        s3 = s4;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s5 = peg$c7;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        peg$silentFails--;
        if (s5 === peg$FAILED) {
          s4 = void 0;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s5 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
    } else {
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f621(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandSingleQuotedContent, "peg$parseUnifiedCommandSingleQuotedContent");
  function peg$parseUnifiedCommandWord() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedCommandWordChar();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseUnifiedCommandWordChar();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f622(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandWord, "peg$parseUnifiedCommandWord");
  function peg$parseUnifiedCommandWordChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f623();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f624(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnifiedCommandWordChar, "peg$parseUnifiedCommandWordChar");
  function peg$parseUnifiedCommandSpace() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r51.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e429);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r51.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e429);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f625(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCommandSpace, "peg$parseUnifiedCommandSpace");
  function peg$parseUnifiedCodeContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedCodeChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedCodeChar();
    }
    peg$savedPos = s0;
    s1 = peg$f626(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnifiedCodeContent, "peg$parseUnifiedCodeContent");
  function peg$parseUnifiedCodeChar() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseDoubleQuoteChar();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseDoubleQuoteChar();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f627(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parseSingleQuoteChar();
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseSingleQuoteChar();
        }
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f628(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 96) {
          s1 = peg$c36;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e81);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$parseBacktickChar();
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$parseBacktickChar();
          }
          if (input.charCodeAt(peg$currPos) === 96) {
            s3 = peg$c36;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e81);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f629(s2);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 2) === peg$c139) {
            s1 = peg$c139;
            peg$currPos += 2;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e430);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = [];
            s3 = peg$currPos;
            s4 = peg$currPos;
            peg$silentFails++;
            if (input.substr(peg$currPos, 2) === peg$c140) {
              s5 = peg$c140;
              peg$currPos += 2;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e431);
              }
            }
            peg$silentFails--;
            if (s5 === peg$FAILED) {
              s4 = void 0;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 !== peg$FAILED) {
              if (input.length > peg$currPos) {
                s5 = input.charAt(peg$currPos);
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e6);
                }
              }
              if (s5 !== peg$FAILED) {
                peg$savedPos = s3;
                s3 = peg$f630(s5);
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            while (s3 !== peg$FAILED) {
              s2.push(s3);
              s3 = peg$currPos;
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 2) === peg$c140) {
                s5 = peg$c140;
                peg$currPos += 2;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e431);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e6);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s3;
                  s3 = peg$f630(s5);
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            }
            if (input.substr(peg$currPos, 2) === peg$c140) {
              s3 = peg$c140;
              peg$currPos += 2;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e431);
              }
            }
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f631(s2);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 2) === peg$c135) {
              s1 = peg$c135;
              peg$currPos += 2;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e388);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = [];
              s3 = peg$currPos;
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 10) {
                s5 = peg$c2;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e4);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                if (input.length > peg$currPos) {
                  s5 = input.charAt(peg$currPos);
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e6);
                  }
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s3;
                  s3 = peg$f632(s5);
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
              while (s3 !== peg$FAILED) {
                s2.push(s3);
                s3 = peg$currPos;
                s4 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 10) {
                  s5 = peg$c2;
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e4);
                  }
                }
                peg$silentFails--;
                if (s5 === peg$FAILED) {
                  s4 = void 0;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
                if (s4 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s5 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s5 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e6);
                    }
                  }
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = s3;
                    s3 = peg$f632(s5);
                  } else {
                    peg$currPos = s3;
                    s3 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
              }
              peg$savedPos = s0;
              s0 = peg$f633(s2);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 123) {
                s1 = peg$c84;
                peg$currPos++;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e188);
                }
              }
              if (s1 !== peg$FAILED) {
                s2 = peg$parseUnifiedCodeContent();
                if (s2 !== peg$FAILED) {
                  if (input.charCodeAt(peg$currPos) === 125) {
                    s3 = peg$c86;
                    peg$currPos++;
                  } else {
                    s3 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e190);
                    }
                  }
                  if (s3 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f634(s2);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 125) {
                  s2 = peg$c86;
                  peg$currPos++;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e190);
                  }
                }
                peg$silentFails--;
                if (s2 === peg$FAILED) {
                  s1 = void 0;
                } else {
                  peg$currPos = s1;
                  s1 = peg$FAILED;
                }
                if (s1 !== peg$FAILED) {
                  if (input.length > peg$currPos) {
                    s2 = input.charAt(peg$currPos);
                    peg$currPos++;
                  } else {
                    s2 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e6);
                    }
                  }
                  if (s2 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f635(s2);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseUnifiedCodeChar, "peg$parseUnifiedCodeChar");
  function peg$parseDoubleQuoteChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c32;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f636(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s2 = peg$c8;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f637(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseDoubleQuoteChar, "peg$parseDoubleQuoteChar");
  function peg$parseSingleQuoteChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c32;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f638(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 39) {
        s2 = peg$c7;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f639(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSingleQuoteChar, "peg$parseSingleQuoteChar");
  function peg$parseBacktickChar() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 92) {
      s1 = peg$c32;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e62);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s2 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f640(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 96) {
        s2 = peg$c36;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e81);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f641(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseBacktickChar, "peg$parseBacktickChar");
  function peg$parseVarRHSContent() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseLeadingParallelPipeline();
    if (s0 === peg$FAILED) {
      s0 = peg$parseExpressionWithOperator();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenExpression();
        if (s0 === peg$FAILED) {
          s0 = peg$parseForExpression();
          if (s0 === peg$FAILED) {
            s0 = peg$parseForeachCommandExpression();
            if (s0 === peg$FAILED) {
              s0 = peg$parseExecResultMethodCall();
              if (s0 === peg$FAILED) {
                s0 = peg$parseExecInvocationWithFields();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseFieldAccessExecPattern();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseExecInvocationPattern();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseCodeExecution();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseTemplateWithPipeline();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseVarBlock();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseArrayLiteral();
                            if (s0 === peg$FAILED) {
                              s0 = peg$parseDataObjectLiteral();
                              if (s0 === peg$FAILED) {
                                s0 = peg$parseUnifiedQuoteOrTemplate();
                                if (s0 === peg$FAILED) {
                                  s0 = peg$parseAlligatorWithFields();
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$parseAlligatorWithPostPipes();
                                    if (s0 === peg$FAILED) {
                                      s0 = peg$parseAlligatorExpression();
                                      if (s0 === peg$FAILED) {
                                        s0 = peg$parseVariableWithSpacedPipes();
                                        if (s0 === peg$FAILED) {
                                          s0 = peg$parseUnifiedVariableReferenceWithTail();
                                          if (s0 === peg$FAILED) {
                                            s0 = peg$parseNestedDirective();
                                            if (s0 === peg$FAILED) {
                                              s0 = peg$parseInlineShowDirective();
                                              if (s0 === peg$FAILED) {
                                                s0 = peg$parsePrimitiveValue();
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e432);
      }
    }
    return s0;
  }
  __name(peg$parseVarRHSContent, "peg$parseVarRHSContent");
  function peg$parseVarBlock() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f642();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseExeStatementBlock();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f643(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e433);
      }
    }
    return s0;
  }
  __name(peg$parseVarBlock, "peg$parseVarBlock");
  function peg$parseExpressionWithOperator() {
    var s0, s1, s2;
    s0 = peg$currPos;
    peg$savedPos = peg$currPos;
    s1 = peg$f644();
    if (s1) {
      s1 = void 0;
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedExpression();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f645(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExpressionWithOperator, "peg$parseExpressionWithOperator");
  function peg$parseExecInvocationWithFields() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseFieldAccessExecPattern();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parsePostFieldAccess();
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parsePostFieldAccess();
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f646(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseExecInvocationPattern();
      if (s1 !== peg$FAILED) {
        s2 = [];
        s3 = peg$parsePostFieldAccess();
        if (s3 !== peg$FAILED) {
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$parsePostFieldAccess();
          }
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f647(s1, s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e434);
      }
    }
    return s0;
  }
  __name(peg$parseExecInvocationWithFields, "peg$parseExecInvocationWithFields");
  function peg$parseAlligatorWithFields() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorExpression();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseAnyFieldAccess();
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseAnyFieldAccess();
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseSpacedOrCondensedPipeChain();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f648(s1, s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e435);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorWithFields, "peg$parseAlligatorWithFields");
  function peg$parseTemplateWithPipeline() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedQuoteOrTemplate();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseSpacedOrCondensedPipeChain();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f649(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e436);
      }
    }
    return s0;
  }
  __name(peg$parseTemplateWithPipeline, "peg$parseTemplateWithPipeline");
  function peg$parseAlligatorWithPostPipes() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorExpression();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseSpacedOrCondensedPipeChain();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f650(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e437);
      }
    }
    return s0;
  }
  __name(peg$parseAlligatorWithPostPipes, "peg$parseAlligatorWithPostPipes");
  function peg$parseVariableWithSpacedPipes() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$parseAnyFieldAccess();
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$parseAnyFieldAccess();
        }
        s4 = peg$currPos;
        s5 = peg$parse_();
        s6 = peg$currPos;
        s7 = "";
        peg$savedPos = s6;
        s7 = peg$f651(s2, s3);
        s6 = s7;
        if (input.charCodeAt(peg$currPos) === 124) {
          s7 = peg$c110;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e292);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$parse_();
          s9 = peg$parsePipeCommand();
          if (s9 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f652(s2, s3, s6, s9);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = [];
        s6 = peg$parseSpacedOrCondensedPipe();
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = peg$parseSpacedOrCondensedPipe();
        }
        peg$savedPos = s0;
        s0 = peg$f653(s2, s3, s4, s5);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e438);
      }
    }
    return s0;
  }
  __name(peg$parseVariableWithSpacedPipes, "peg$parseVariableWithSpacedPipes");
  function peg$parseSpacedOrCondensedPipe() {
    var s0, s2, s3, s5;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$currPos;
    s3 = "";
    peg$savedPos = s2;
    s3 = peg$f654();
    s2 = s3;
    if (input.charCodeAt(peg$currPos) === 124) {
      s3 = peg$c110;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e292);
      }
    }
    if (s3 !== peg$FAILED) {
      peg$parse_();
      s5 = peg$parsePipeCommand();
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f655(s2, s5);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSpacedOrCondensedPipe, "peg$parseSpacedOrCondensedPipe");
  function peg$parsePipeCommand() {
    var s0, s1, s2, s3, s4, s6, s8, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c10;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseBaseIdentifier();
          if (s8 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f656(s2, s8);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 46) {
            s6 = peg$c10;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseBaseIdentifier();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f656(s2, s8);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s4 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s6 = peg$c18;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseCommandArgumentList();
          if (s8 === peg$FAILED) {
            s8 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s10 = peg$c19;
            peg$currPos++;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f657(s2, s3, s8);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f658(s2, s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e439);
      }
    }
    return s0;
  }
  __name(peg$parsePipeCommand, "peg$parsePipeCommand");
  function peg$parseSpacedOrCondensedPipeChain() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseSpacedOrCondensedPipe();
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = peg$parseSpacedOrCondensedPipe();
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f659(s1);
    }
    s0 = s1;
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e440);
      }
    }
    return s0;
  }
  __name(peg$parseSpacedOrCondensedPipeChain, "peg$parseSpacedOrCondensedPipeChain");
  function peg$parseFieldAccessExecPattern() {
    var s0, s1, s3, s4, s5, s6, s7, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        s5 = [];
        s6 = peg$parseAnyFieldAccess();
        if (s6 !== peg$FAILED) {
          while (s6 !== peg$FAILED) {
            s5.push(s6);
            s6 = peg$parseAnyFieldAccess();
          }
        } else {
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 40) {
            s6 = peg$c18;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseCommandArgumentList();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s9 = peg$c19;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = [];
              s11 = peg$parsePostFieldAccess();
              while (s11 !== peg$FAILED) {
                s10.push(s11);
                s11 = peg$parsePostFieldAccess();
              }
              s11 = peg$parseTailModifiers();
              if (s11 === peg$FAILED) {
                s11 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f660(s1, s4, s5, s7, s10, s11);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e413);
      }
    }
    return s0;
  }
  __name(peg$parseFieldAccessExecPattern, "peg$parseFieldAccessExecPattern");
  function peg$parseExecInvocationPattern() {
    var s0, s1, s3, s4, s5, s6, s8, s9, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 64) {
      s3 = peg$c68;
      peg$currPos++;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = peg$parseBaseIdentifier();
      if (s4 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s5 = peg$c18;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseCommandArgumentList();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = [];
            s10 = peg$parsePostFieldAccess();
            while (s10 !== peg$FAILED) {
              s9.push(s10);
              s10 = peg$parsePostFieldAccess();
            }
            s10 = peg$parseTailModifiers();
            if (s10 === peg$FAILED) {
              s10 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f661(s1, s4, s6, s9, s10);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e441);
      }
    }
    return s0;
  }
  __name(peg$parseExecInvocationPattern, "peg$parseExecInvocationPattern");
  function peg$parsePrimitiveValue() {
    var s0, s1;
    s0 = peg$parseExpressionString();
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseNumberLiteral();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f662(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseBooleanLiteral();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f663(s1);
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseNullLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f664(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$parseDoneLiteral();
            if (s0 === peg$FAILED) {
              s0 = peg$parseContinueLiteral();
              if (s0 === peg$FAILED) {
                s0 = peg$parseRetryLiteral();
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parsePrimitiveValue, "peg$parsePrimitiveValue");
  function peg$parseObjectPropertyValue() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseDataPropertyValue();
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e442);
      }
    }
    return s0;
  }
  __name(peg$parseObjectPropertyValue, "peg$parseObjectPropertyValue");
  function peg$parseRunCommandValue() {
    var s0, s1, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s1 = peg$c109;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$currPos;
        s5 = [];
        s6 = input.charAt(peg$currPos);
        if (peg$r47.test(s6)) {
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e399);
          }
        }
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = input.charAt(peg$currPos);
          if (peg$r47.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e399);
            }
          }
        }
        s4 = input.substring(s4, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 34) {
          s5 = peg$c8;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f665(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c109) {
        s1 = peg$c109;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e290);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseCmdCommandBrackets();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedCommandBrackets();
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f666(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c109) {
          s1 = peg$c109;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e290);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c68;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseUnifiedReferenceWithTail();
            if (s4 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f667(s4);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseRunCommandValue, "peg$parseRunCommandValue");
  function peg$parseCodeExecutionValue() {
    var s0, s1, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseVarCodeLanguage();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 123) {
        s3 = peg$c84;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e188);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseCodeBlockContent();
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 125) {
          s7 = peg$c86;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f668(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseCodeExecutionValue, "peg$parseCodeExecutionValue");
  function peg$parsePropertyKey() {
    var s0;
    s0 = peg$parseBaseIdentifier();
    if (s0 === peg$FAILED) {
      s0 = peg$parseDataString();
    }
    return s0;
  }
  __name(peg$parsePropertyKey, "peg$parsePropertyKey");
  function peg$parseNestedDirective() {
    var s0, s2, s4, s6, s8, s10;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s2 = peg$c109;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseVarCodeLanguage();
      if (s4 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s6 = peg$c84;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseCodeBlockContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s10 = peg$c86;
            peg$currPos++;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
          if (s10 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f669(s4, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        peg$currPos++;
      } else {
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (input.substr(peg$currPos, 3) === peg$c109) {
        s2 = peg$c109;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e290);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s4 = peg$c71;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseCommandContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s8 = peg$c70;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f670(s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseNestedDirective, "peg$parseNestedDirective");
  function peg$parseInlineShowDirective() {
    var s0, s1, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c104) {
      s1 = peg$c104;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnifiedQuoteOrTemplate();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedReferenceWithTail();
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseStandardDirectiveEnding();
        peg$savedPos = s0;
        s0 = peg$f671(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseInlineShowDirective, "peg$parseInlineShowDirective");
  function peg$parseCommandContent() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$currPos;
    peg$silentFails++;
    if (input.charCodeAt(peg$currPos) === 93) {
      s4 = peg$c70;
      peg$currPos++;
    } else {
      s4 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e131);
      }
    }
    peg$silentFails--;
    if (s4 === peg$FAILED) {
      s3 = void 0;
    } else {
      peg$currPos = s3;
      s3 = peg$FAILED;
    }
    if (s3 !== peg$FAILED) {
      if (input.length > peg$currPos) {
        s4 = input.charAt(peg$currPos);
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e6);
        }
      }
      if (s4 !== peg$FAILED) {
        s3 = [
          s3,
          s4
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 93) {
        s4 = peg$c70;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      peg$silentFails--;
      if (s4 === peg$FAILED) {
        s3 = void 0;
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s4 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s4 !== peg$FAILED) {
          s3 = [
            s3,
            s4
          ];
          s2 = s3;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    peg$savedPos = s0;
    s1 = peg$f672(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseCommandContent, "peg$parseCommandContent");
  function peg$parseCodeExecution() {
    var s0, s1, s3, s5, s7, s9;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s1 = peg$c109;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseVarCodeLanguage();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s5 = peg$c84;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseCodeBlockContent();
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s9 = peg$c86;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
          if (s9 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f673(s3, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c109) {
        s1 = peg$c109;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e290);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseCmdCommandBrackets();
        if (s3 === peg$FAILED) {
          s3 = peg$parseUnifiedCommandBrackets();
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f674(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseVarCodeLanguage();
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 123) {
            s3 = peg$c84;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e188);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            s5 = peg$parseCodeBlockContent();
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 125) {
              s7 = peg$c86;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e190);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f675(s1, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseCmdCommandBrackets();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f676(s1);
          }
          s0 = s1;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e443);
      }
    }
    return s0;
  }
  __name(peg$parseCodeExecution, "peg$parseCodeExecution");
  function peg$parseVarCodeLanguage() {
    var s0;
    peg$silentFails++;
    if (input.substr(peg$currPos, 2) === peg$c141) {
      s0 = peg$c141;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e445);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 10) === peg$c142) {
        s0 = peg$c142;
        peg$currPos += 10;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e446);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c143) {
          s0 = peg$c143;
          peg$currPos += 4;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e447);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 6) === peg$c144) {
            s0 = peg$c144;
            peg$currPos += 6;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e448);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c145) {
              s0 = peg$c145;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e449);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c146) {
                s0 = peg$c146;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e450);
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e444);
      }
    }
    return s0;
  }
  __name(peg$parseVarCodeLanguage, "peg$parseVarCodeLanguage");
  function peg$parseCodeBlockContent() {
    var s0, s1, s2;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseCodeChar();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseCodeChar();
    }
    peg$savedPos = s0;
    s1 = peg$f677(s1);
    s0 = s1;
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e451);
    }
    return s0;
  }
  __name(peg$parseCodeBlockContent, "peg$parseCodeBlockContent");
  function peg$parseCodeChar() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseCodeBlockContent();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 125) {
          s3 = peg$c86;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e190);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f678(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 125) {
        s2 = peg$c86;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      peg$silentFails--;
      if (s2 === peg$FAILED) {
        s1 = void 0;
      } else {
        peg$currPos = s1;
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s2 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f679(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCodeChar, "peg$parseCodeChar");
  function peg$parseForExpression() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c117) {
      s1 = peg$c117;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e321);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseForParallelSpec();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      s3 = peg$parse_();
      s4 = peg$parseForIterationPattern();
      if (s4 !== peg$FAILED) {
        s5 = peg$parse_();
        s6 = peg$parseWhenExpressionAny();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseForBatchPipeline();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f680(s2, s4, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c117) {
        s1 = peg$c117;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e321);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseForParallelSpec();
        if (s2 === peg$FAILED) {
          s2 = null;
        }
        s3 = peg$parse_();
        s4 = peg$parseForIterationPattern();
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s6 = peg$parseForExpressionBody();
          if (s6 !== peg$FAILED) {
            s7 = peg$parseForBatchPipeline();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f681(s2, s4, s6, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 3) === peg$c117) {
          s1 = peg$c117;
          peg$currPos += 3;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e321);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s3 = peg$c68;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              if (input.substr(peg$currPos, 2) === peg$c118) {
                s6 = peg$c118;
                peg$currPos += 2;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e322);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parse_();
                s8 = peg$parseVarRHSContent();
                if (s8 !== peg$FAILED) {
                  peg$parse_();
                  s10 = peg$currPos;
                  peg$silentFails++;
                  if (input.substr(peg$currPos, 2) === peg$c114) {
                    s11 = peg$c114;
                    peg$currPos += 2;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e314);
                    }
                  }
                  if (s11 === peg$FAILED) {
                    if (input.charCodeAt(peg$currPos) === 91) {
                      s11 = peg$c71;
                      peg$currPos++;
                    } else {
                      s11 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e132);
                      }
                    }
                  }
                  peg$silentFails--;
                  if (s11 === peg$FAILED) {
                    s10 = void 0;
                  } else {
                    peg$currPos = s10;
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f682(s4, s8);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 3) === peg$c117) {
            s1 = peg$c117;
            peg$currPos += 3;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e321);
            }
          }
          if (s1 !== peg$FAILED) {
            s2 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s3 = peg$c68;
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s3 !== peg$FAILED) {
              s4 = peg$parseBaseIdentifier();
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                s6 = peg$currPos;
                peg$silentFails++;
                if (input.substr(peg$currPos, 2) === peg$c118) {
                  s7 = peg$c118;
                  peg$currPos += 2;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e322);
                  }
                }
                peg$silentFails--;
                if (s7 === peg$FAILED) {
                  s6 = void 0;
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
                if (s6 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f683(s4);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 3) === peg$c117) {
              s1 = peg$c117;
              peg$currPos += 3;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e321);
              }
            }
            if (s1 !== peg$FAILED) {
              s2 = peg$parse_();
              s3 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 4) === peg$c119) {
                s4 = peg$c119;
                peg$currPos += 4;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e323);
                }
              }
              peg$silentFails--;
              if (s4 === peg$FAILED) {
                s3 = void 0;
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
              if (s3 !== peg$FAILED) {
                s4 = peg$parse_();
                s5 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 64) {
                  s6 = peg$c68;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                peg$silentFails--;
                if (s6 === peg$FAILED) {
                  s5 = void 0;
                } else {
                  peg$currPos = s5;
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f684();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e452);
      }
    }
    return s0;
  }
  __name(peg$parseForExpression, "peg$parseForExpression");
  function peg$parseForExpressionBody() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s1 = peg$c114;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseVarRHSContent();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f685(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseForBlockAction();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f686(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseForExpressionBody, "peg$parseForExpressionBody");
  function peg$parseForBatchPipeline() {
    var s0, s2, s4, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c114) {
      s2 = peg$c114;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e314);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c58) {
        s4 = peg$c58;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e117);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseParallelSequence();
        if (s6 !== peg$FAILED) {
          s7 = [];
          s8 = peg$parsePipelineRest();
          while (s8 !== peg$FAILED) {
            s7.push(s8);
            s8 = peg$parsePipelineRest();
          }
          s8 = peg$parsePipelineParallelSpec();
          if (s8 === peg$FAILED) {
            s8 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f687(s6, s7, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s2 = peg$c114;
        peg$currPos += 2;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 124) {
          s4 = peg$c110;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e292);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parsePipelineStageFirst();
          if (s6 !== peg$FAILED) {
            s7 = [];
            s8 = peg$parsePipelineRest();
            while (s8 !== peg$FAILED) {
              s7.push(s8);
              s8 = peg$parsePipelineRest();
            }
            peg$savedPos = s0;
            s0 = peg$f688(s6, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e453);
      }
    }
    return s0;
  }
  __name(peg$parseForBatchPipeline, "peg$parseForBatchPipeline");
  function peg$parseWhenRHSAction() {
    var s0;
    peg$silentFails++;
    s0 = peg$parseWhenRHSExeDefinitionError();
    if (s0 === peg$FAILED) {
      s0 = peg$parseLetAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseAugmentedAssignment();
        if (s0 === peg$FAILED) {
          s0 = peg$parseEffectAction();
          if (s0 === peg$FAILED) {
            s0 = peg$parseWhenRHSVarAssignment();
            if (s0 === peg$FAILED) {
              s0 = peg$parseWhenRHSCommandAction();
              if (s0 === peg$FAILED) {
                s0 = peg$parseWhenRHSFunctionCall();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseDoneLiteral();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseContinueLiteral();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseWhenRHSSkipAction();
                      if (s0 === peg$FAILED) {
                        s0 = peg$parseWhenRHSVariableReference();
                        if (s0 === peg$FAILED) {
                          s0 = peg$parseWhenRHSRetryAction();
                          if (s0 === peg$FAILED) {
                            s0 = peg$parseVarRHSContent();
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e454);
      }
    }
    return s0;
  }
  __name(peg$parseWhenRHSAction, "peg$parseWhenRHSAction");
  function peg$parseWhenRHSCommandAction() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseCmdCommandBrackets();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTailModifiers();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f689(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenRHSCommandAction, "peg$parseWhenRHSCommandAction");
  function peg$parseWhenRHSRetryAction() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c21) {
      s1 = peg$c21;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e47);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = peg$currPos;
      s4 = peg$parse_();
      s5 = [];
      s6 = input.charAt(peg$currPos);
      if (peg$r52.test(s6)) {
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e455);
        }
      }
      if (s6 !== peg$FAILED) {
        while (s6 !== peg$FAILED) {
          s5.push(s6);
          s6 = input.charAt(peg$currPos);
          if (peg$r52.test(s6)) {
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e455);
            }
          }
        }
      } else {
        s5 = peg$FAILED;
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 42) {
          s7 = peg$c14;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e34);
          }
        }
        if (s7 === peg$FAILED) {
          if (input.substr(peg$currPos, 4) === peg$c15) {
            s7 = peg$c15;
            peg$currPos += 4;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e36);
            }
          }
          if (s7 === peg$FAILED) {
            s7 = input.charAt(peg$currPos);
            if (peg$r53.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e456);
              }
            }
          }
        }
        if (s7 !== peg$FAILED) {
          s8 = [];
          s9 = input.charAt(peg$currPos);
          if (peg$r54.test(s9)) {
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e457);
            }
          }
          while (s9 !== peg$FAILED) {
            s8.push(s9);
            s9 = input.charAt(peg$currPos);
            if (peg$r54.test(s9)) {
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e457);
              }
            }
          }
          if (input.substr(peg$currPos, 2) === peg$c114) {
            s9 = peg$c114;
            peg$currPos += 2;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e314);
            }
          }
          if (s9 !== peg$FAILED) {
            s4 = [
              s4,
              s5,
              s6,
              s7,
              s8,
              s9
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = [];
        s5 = input.charAt(peg$currPos);
        if (peg$r2.test(s5)) {
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e7);
          }
        }
        if (s5 !== peg$FAILED) {
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = input.charAt(peg$currPos);
            if (peg$r2.test(s5)) {
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e7);
              }
            }
          }
        } else {
          s4 = peg$FAILED;
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseSingleLineVarRHSContent();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f690(s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f691(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenRHSRetryAction, "peg$parseWhenRHSRetryAction");
  function peg$parseSingleLineVarRHSContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$currPos;
    peg$silentFails++;
    s2 = input.charAt(peg$currPos);
    if (peg$r52.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e455);
      }
    }
    peg$silentFails--;
    if (s2 === peg$FAILED) {
      s1 = void 0;
    } else {
      peg$currPos = s1;
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseVarRHSContent();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f692(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSingleLineVarRHSContent, "peg$parseSingleLineVarRHSContent");
  function peg$parseWhenRHSSkipAction() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c147) {
      s1 = peg$c147;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e458);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f693();
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenRHSSkipAction, "peg$parseWhenRHSSkipAction");
  function peg$parseWhenRHSVariableReference() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedVariableReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f694(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenRHSVariableReference, "peg$parseWhenRHSVariableReference");
  function peg$parseWhenRHSVarAssignment() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 61) {
          s4 = peg$c65;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e124);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseVarRHSContent();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f695(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenRHSVarAssignment, "peg$parseWhenRHSVarAssignment");
  function peg$parseWhenRHSFunctionCall() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReference();
    if (s1 !== peg$FAILED) {
      peg$savedPos = peg$currPos;
      s2 = peg$f696(s1);
      if (s2) {
        s2 = void 0;
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f697(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenRHSFunctionCall, "peg$parseWhenRHSFunctionCall");
  function peg$parseWhenRHSExeDefinitionError() {
    var s0, s1, s2, s3, s4, s5, s7, s9;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c18;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          if (input.charCodeAt(peg$currPos) === 41) {
            s5 = peg$c19;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s7 = peg$c65;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$parse_();
              s9 = peg$parseVarRHSContent();
              if (s9 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f698(s2, s4, s9);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenRHSExeDefinitionError, "peg$parseWhenRHSExeDefinitionError");
  function peg$parseWithClause() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 4) === peg$c122) {
      s2 = peg$c122;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e334);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseWithObject();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f699(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithClause, "peg$parseWithClause");
  function peg$parseWithObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWithProperties();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c86;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f700(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithObject, "peg$parseWithObject");
  function peg$parseWithProperties() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseWithProperty();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseWithProperty();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f701(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseWithProperty();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f701(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f702(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWithProperties, "peg$parseWithProperties");
  function peg$parseWithProperty() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 8) === peg$c79) {
      s1 = peg$c79;
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e167);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parsePipelineArray();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f703(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 8) === peg$c148) {
        s1 = peg$c148;
        peg$currPos += 8;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e459);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseArrayLiteral();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f704(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 6) === peg$c149) {
          s1 = peg$c149;
          peg$currPos += 6;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e460);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s3 = peg$c56;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e115);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            s5 = peg$parseGuardOverrides();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f705(s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 5) === peg$c150) {
            s1 = peg$c150;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e461);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 58) {
              s3 = peg$c56;
              peg$currPos++;
            } else {
              s3 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e115);
              }
            }
            if (s3 !== peg$FAILED) {
              peg$parse_();
              s5 = peg$parseUnifiedExpression();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f706(s5);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 6) === peg$c151) {
              s1 = peg$c151;
              peg$currPos += 6;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e462);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 58) {
                s3 = peg$c56;
                peg$currPos++;
              } else {
                s3 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e115);
                }
              }
              if (s3 !== peg$FAILED) {
                peg$parse_();
                s5 = peg$parseDataString();
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f707(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.substr(peg$currPos, 9) === peg$c152) {
                s1 = peg$c152;
                peg$currPos += 9;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e463);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 58) {
                  s3 = peg$c56;
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e115);
                  }
                }
                if (s3 !== peg$FAILED) {
                  peg$parse_();
                  s5 = peg$parseAsSectionRenameString();
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f708(s5);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.substr(peg$currPos, 6) === peg$c153) {
                  s1 = peg$c153;
                  peg$currPos += 6;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e464);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 58) {
                    s3 = peg$c56;
                    peg$currPos++;
                  } else {
                    s3 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e115);
                    }
                  }
                  if (s3 !== peg$FAILED) {
                    peg$parse_();
                    s5 = peg$parseDataObjectLiteral();
                    if (s5 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f709(s5);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  if (input.substr(peg$currPos, 8) === peg$c124) {
                    s1 = peg$c124;
                    peg$currPos += 8;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e337);
                    }
                  }
                  if (s1 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 58) {
                      s3 = peg$c56;
                      peg$currPos++;
                    } else {
                      s3 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e115);
                      }
                    }
                    if (s3 !== peg$FAILED) {
                      peg$parse_();
                      s5 = peg$parseNumberLiteral();
                      if (s5 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f710(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    if (input.substr(peg$currPos, 5) === peg$c154) {
                      s1 = peg$c154;
                      peg$currPos += 5;
                    } else {
                      s1 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e465);
                      }
                    }
                    if (s1 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 58) {
                        s3 = peg$c56;
                        peg$currPos++;
                      } else {
                        s3 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e115);
                        }
                      }
                      if (s3 !== peg$FAILED) {
                        peg$parse_();
                        s5 = peg$parseTimeDurationLiteral();
                        if (s5 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f711(s5);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      if (input.substr(peg$currPos, 6) === peg$c54) {
                        s1 = peg$c54;
                        peg$currPos += 6;
                      } else {
                        s1 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e113);
                        }
                      }
                      if (s1 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 58) {
                          s3 = peg$c56;
                          peg$currPos++;
                        } else {
                          s3 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e115);
                          }
                        }
                        if (s3 !== peg$FAILED) {
                          peg$parse_();
                          s5 = peg$parseBooleanLiteral();
                          if (s5 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f712(s5);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        if (input.substr(peg$currPos, 12) === peg$c155) {
                          s1 = peg$c155;
                          peg$currPos += 12;
                        } else {
                          s1 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e466);
                          }
                        }
                        if (s1 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 58) {
                            s3 = peg$c56;
                            peg$currPos++;
                          } else {
                            s3 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e115);
                            }
                          }
                          if (s3 !== peg$FAILED) {
                            peg$parse_();
                            s5 = peg$parseUnifiedExpression();
                            if (s5 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f713(s5);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseWithProperty, "peg$parseWithProperty");
  function peg$parsePipelineArray() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parsePipelineStageList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f714(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineArray, "peg$parsePipelineArray");
  function peg$parsePipelineStageList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePipelineStage();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePipelineStage();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f715(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePipelineStage();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f715(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f716(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineStageList, "peg$parsePipelineStageList");
  function peg$parsePipelineStage() {
    var s0;
    s0 = peg$parseParallelGroupArray();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhilePipelineStage();
      if (s0 === peg$FAILED) {
        s0 = peg$parsePipelineStageEntry();
      }
    }
    return s0;
  }
  __name(peg$parsePipelineStage, "peg$parsePipelineStage");
  function peg$parseParallelGroupArray() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseGroupCommandList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f717(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseParallelGroupArray, "peg$parseParallelGroupArray");
  function peg$parseGroupCommandList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parsePipelineStageEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parsePipelineStageEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f718(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePipelineStageEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f718(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f719(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGroupCommandList, "peg$parseGroupCommandList");
  function peg$parseGuardOverrides() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c12) {
      s1 = peg$c12;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e30);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f720();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$parseGuardOverrideObject();
    }
    return s0;
  }
  __name(peg$parseGuardOverrides, "peg$parseGuardOverrides");
  function peg$parseGuardOverrideObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseGuardOverrideEntries();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c86;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f721(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideObject, "peg$parseGuardOverrideObject");
  function peg$parseGuardOverrideEntries() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseGuardOverrideEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseGuardOverrideEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f722(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseGuardOverrideEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f722(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f723(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideEntries, "peg$parseGuardOverrideEntries");
  function peg$parseGuardOverrideEntry() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c156) {
      s1 = peg$c156;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e467);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseGuardOverrideNameList();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f724(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 6) === peg$c157) {
        s1 = peg$c157;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e468);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseGuardOverrideNameList();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f725(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseGuardOverrideEntry, "peg$parseGuardOverrideEntry");
  function peg$parseGuardOverrideNameList() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseGuardOverrideNames();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f726(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideNameList, "peg$parseGuardOverrideNameList");
  function peg$parseGuardOverrideNames() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseGuardOverrideName();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseGuardOverrideName();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f727(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseGuardOverrideName();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f727(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f728(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideNames, "peg$parseGuardOverrideNames");
  function peg$parseGuardOverrideName() {
    var s0;
    s0 = peg$parseGuardOverrideSingleQuoted();
    if (s0 === peg$FAILED) {
      s0 = peg$parseGuardOverrideDoubleQuoted();
    }
    return s0;
  }
  __name(peg$parseGuardOverrideName, "peg$parseGuardOverrideName");
  function peg$parseGuardOverrideSingleQuoted() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 39) {
      s1 = peg$c7;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e22);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseEscapedSingleStringContent();
      if (input.charCodeAt(peg$currPos) === 39) {
        s3 = peg$c7;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f729(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideSingleQuoted, "peg$parseGuardOverrideSingleQuoted");
  function peg$parseGuardOverrideDoubleQuoted() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parseGuardOverrideDoubleChars();
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$parseGuardOverrideDoubleChars();
      }
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f730(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOverrideDoubleQuoted, "peg$parseGuardOverrideDoubleQuoted");
  function peg$parseGuardOverrideDoubleChars() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c133) {
      s1 = peg$c133;
      peg$currPos += 2;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e383);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f731();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c82) {
        s1 = peg$c82;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e175);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f732();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = input.charAt(peg$currPos);
        if (peg$r47.test(s1)) {
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e399);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f733(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseGuardOverrideDoubleChars, "peg$parseGuardOverrideDoubleChars");
  function peg$parsePipelineStageEntry() {
    var s0;
    s0 = peg$parsePipelineInlineValueStage();
    if (s0 === peg$FAILED) {
      s0 = peg$parsePipelineInlineCommandStage();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhilePipelineStage();
        if (s0 === peg$FAILED) {
          s0 = peg$parsePipelineCommand();
        }
      }
    }
    return s0;
  }
  __name(peg$parsePipelineStageEntry, "peg$parsePipelineStageEntry");
  function peg$parsePipelineCommand() {
    var s0, s1;
    s0 = peg$parsePipelineBuiltinOutput();
    if (s0 === peg$FAILED) {
      s0 = peg$parsePipelineBuiltinAppend();
      if (s0 === peg$FAILED) {
        s0 = peg$parsePipelineBuiltinShow();
        if (s0 === peg$FAILED) {
          s0 = peg$parsePipelineBuiltinLog();
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseUnifiedReferenceForPipeline();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f734(s1);
            }
            s0 = s1;
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parsePipelineCommand, "peg$parsePipelineCommand");
  function peg$parsePipelineInlineCommandStage() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseCmdCommandBrackets();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f735(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePipelineInlineCommandStage, "peg$parsePipelineInlineCommandStage");
  function peg$parsePipelineInlineValueStage() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c158) {
      s1 = peg$c158;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e469);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseDataObjectLiteral();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f736(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDataObjectLiteral();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f737(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parsePipelineInlineValueStage, "peg$parsePipelineInlineValueStage");
  function peg$parseWhilePipelineStage() {
    var s0, s1, s3, s5, s7, s8, s9, s10, s11;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c159) {
      s1 = peg$c159;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e471);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s3 = peg$c18;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseNumberLiteral();
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 44) {
            s8 = peg$c85;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e189);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parse_();
            s10 = peg$parseTimeDurationLiteral();
            if (s10 !== peg$FAILED) {
              s8 = [
                s8,
                s9,
                s10
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          s8 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s9 = peg$c19;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s9 !== peg$FAILED) {
            s10 = peg$parse_();
            s11 = peg$parseUnifiedReferenceForPipeline();
            if (s11 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f738(s5, s7, s11);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c159) {
        s1 = peg$c159;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e471);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c18;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s5 = peg$c19;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f739();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c159) {
          s1 = peg$c159;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e471);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 40) {
            s3 = peg$c18;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            s5 = peg$parseNumberLiteral();
            if (s5 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 41) {
                s7 = peg$c19;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e43);
                }
              }
              if (s7 !== peg$FAILED) {
                s8 = peg$parse_();
                s9 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 64) {
                  s10 = peg$c68;
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                peg$silentFails--;
                if (s10 === peg$FAILED) {
                  s9 = void 0;
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
                if (s9 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f740(s5);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e470);
      }
    }
    return s0;
  }
  __name(peg$parseWhilePipelineStage, "peg$parseWhilePipelineStage");
  function peg$parseInlineEffectWhitespace() {
    var s0, s1;
    peg$silentFails++;
    s0 = [];
    s1 = input.charAt(peg$currPos);
    if (peg$r55.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e473);
      }
    }
    while (s1 !== peg$FAILED) {
      s0.push(s1);
      s1 = input.charAt(peg$currPos);
      if (peg$r55.test(s1)) {
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e473);
        }
      }
    }
    peg$silentFails--;
    s1 = peg$FAILED;
    if (peg$silentFails === 0) {
      peg$fail(peg$e472);
    }
    return s0;
  }
  __name(peg$parseInlineEffectWhitespace, "peg$parseInlineEffectWhitespace");
  function peg$parsePipelineEffectInlineSource() {
    var s0, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    peg$parseInlineEffectWhitespace();
    s2 = peg$currPos;
    peg$silentFails++;
    s3 = peg$parseLineTerminator();
    peg$silentFails--;
    if (s3 === peg$FAILED) {
      s2 = void 0;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parseOutputSource();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f741(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      if (peg$silentFails === 0) {
        peg$fail(peg$e474);
      }
    }
    return s0;
  }
  __name(peg$parsePipelineEffectInlineSource, "peg$parsePipelineEffectInlineSource");
  function peg$parsePipelineBuiltinLog() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c105) {
      s1 = peg$c105;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e283);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r23.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e193);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parsePipelineEffectInlineSource();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f742(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineBuiltinLog, "peg$parsePipelineBuiltinLog");
  function peg$parsePipelineBuiltinShow() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c104) {
      s1 = peg$c104;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r23.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e193);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parsePipelineEffectInlineSource();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f743(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineBuiltinShow, "peg$parsePipelineBuiltinShow");
  function peg$parsePipelineBuiltinOutput() {
    var s0, s1, s2, s3, s4, s6, s8;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c106) {
      s1 = peg$c106;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e284);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r23.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e193);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseOutputSource();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c107) {
          s6 = peg$c107;
          peg$currPos += 2;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e285);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseOutputTarget();
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f744(s4, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePipelineBuiltinOutput, "peg$parsePipelineBuiltinOutput");
  function peg$parsePipelineBuiltinAppend() {
    var s0, s1, s2, s3, s4, s6, s8;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c108) {
      s1 = peg$c108;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e286);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r23.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e193);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseOutputSource();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c107) {
          s6 = peg$c107;
          peg$currPos += 2;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e285);
          }
        }
        if (s6 !== peg$FAILED) {
          peg$parse_();
          s8 = peg$parseOutputTargetFile();
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f745(s4, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 6) === peg$c108) {
        s1 = peg$c108;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e286);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        s3 = input.charAt(peg$currPos);
        if (peg$r23.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e193);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          s3 = peg$parse_();
          s4 = peg$parseOutputTargetFile();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f746(s4);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parsePipelineBuiltinAppend, "peg$parsePipelineBuiltinAppend");
  function peg$parseWorkingDirPath() {
    var s0, s1, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 58) {
      s1 = peg$c56;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e115);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseUnquotedPath();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f747(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e475);
      }
    }
    return s0;
  }
  __name(peg$parseWorkingDirPath, "peg$parseWorkingDirPath");
  function peg$parseAddPathCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f748(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseAddPathCore, "peg$parseAddPathCore");
  function peg$parseAddTemplateCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f749(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseAddTemplateCore, "peg$parseAddTemplateCore");
  function peg$parseAddVariableCore() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseUnifiedAtVar();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f750(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAddVariableCore, "peg$parseAddVariableCore");
  function peg$parseAddTemplateInvocationCore() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseUnifiedArgumentListItems();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s8 = peg$c19;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s8 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f751(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAddTemplateInvocationCore, "peg$parseAddTemplateInvocationCore");
  function peg$parseAddPathSectionCore() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseQuotedContent();
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      if (input.substr(peg$currPos, 4) === peg$c160) {
        s3 = peg$c160;
        peg$currPos += 4;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e476);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        s5 = peg$parsePathExpression();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseAsNewTitle();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f752(s1, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r56.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e477);
          }
        }
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = input.charAt(peg$currPos);
            if (peg$r56.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e477);
              }
            }
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          s2 = input.substring(s2, peg$currPos);
        } else {
          s2 = s3;
        }
        if (s2 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 35) {
            s3 = peg$c38;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e87);
            }
          }
          if (s3 !== peg$FAILED) {
            s4 = peg$parse_();
            s5 = peg$currPos;
            s6 = [];
            s7 = input.charAt(peg$currPos);
            if (peg$r36.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e267);
              }
            }
            if (s7 !== peg$FAILED) {
              while (s7 !== peg$FAILED) {
                s6.push(s7);
                s7 = input.charAt(peg$currPos);
                if (peg$r36.test(s7)) {
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e267);
                  }
                }
              }
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s5 = input.substring(s5, peg$currPos);
            } else {
              s5 = s6;
            }
            if (s5 !== peg$FAILED) {
              if (input.charCodeAt(peg$currPos) === 93) {
                s6 = peg$c70;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parseAsNewTitle();
                if (s7 === peg$FAILED) {
                  s7 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f753(s2, s5, s7);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseAddPathSectionCore, "peg$parseAddPathSectionCore");
  function peg$parseAddCore() {
    var s0;
    s0 = peg$parseAddPathSectionCore();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAddTemplateInvocationCore();
      if (s0 === peg$FAILED) {
        s0 = peg$parseAddTemplateCore();
        if (s0 === peg$FAILED) {
          s0 = peg$parseAddVariableCore();
          if (s0 === peg$FAILED) {
            s0 = peg$parseAddPathCore();
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseAddCore, "peg$parseAddCore");
  function peg$parseCodeCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedCodeContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f754(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeCore, "peg$parseCodeCore");
  function peg$parseLanguageCodeCore() {
    var s0, s1, s3;
    s0 = peg$currPos;
    s1 = peg$parseCodeLanguage();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWrappedCodeContent();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f755(s1, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLanguageCodeCore, "peg$parseLanguageCodeCore");
  function peg$parseRunLanguageCodeCore() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    s3 = peg$parseRunCodeLanguage();
    if (s3 !== peg$FAILED) {
      s4 = peg$parseWorkingDirPath();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      peg$parse_();
      s6 = peg$parseUnifiedCodeBrackets();
      if (s6 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f756(s1, s3, s4, s6);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunLanguageCodeCore, "peg$parseRunLanguageCodeCore");
  function peg$parseRunLanguageCodeWithArgs() {
    var s0, s1, s3, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$parseStreamKeyword();
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    peg$parse_();
    s3 = peg$parseRunCodeLanguage();
    if (s3 !== peg$FAILED) {
      s4 = peg$parseWorkingDirPath();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      peg$parse_();
      s6 = peg$parseUnifiedArgumentList();
      if (s6 !== peg$FAILED) {
        peg$parse_();
        s8 = peg$parseUnifiedCodeBrackets();
        if (s8 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f757(s1, s3, s4, s6, s8);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunLanguageCodeWithArgs, "peg$parseRunLanguageCodeWithArgs");
  function peg$parseCodeLanguage() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    s3 = peg$parseBaseIdentifier();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s6 = peg$c10;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s6 !== peg$FAILED) {
        s7 = peg$parseBaseIdentifier();
        if (s7 !== peg$FAILED) {
          s6 = [
            s6,
            s7
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s6 = peg$c10;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s6 !== peg$FAILED) {
          s7 = peg$parseBaseIdentifier();
          if (s7 !== peg$FAILED) {
            s6 = [
              s6,
              s7
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f758(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseCodeLanguage, "peg$parseCodeLanguage");
  function peg$parseRunCodeLanguage() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 10) === peg$c142) {
      s1 = peg$c142;
      peg$currPos += 10;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e446);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c141) {
        s1 = peg$c141;
        peg$currPos += 2;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e445);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c143) {
          s1 = peg$c143;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e447);
          }
        }
        if (s1 === peg$FAILED) {
          if (input.substr(peg$currPos, 6) === peg$c161) {
            s1 = peg$c161;
            peg$currPos += 6;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e478);
            }
          }
          if (s1 === peg$FAILED) {
            if (input.substr(peg$currPos, 6) === peg$c144) {
              s1 = peg$c144;
              peg$currPos += 6;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e448);
              }
            }
            if (s1 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c162) {
                s1 = peg$c162;
                peg$currPos += 2;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e479);
                }
              }
              if (s1 === peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c145) {
                  s1 = peg$c145;
                  peg$currPos += 4;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e449);
                  }
                }
                if (s1 === peg$FAILED) {
                  if (input.substr(peg$currPos, 2) === peg$c146) {
                    s1 = peg$c146;
                    peg$currPos += 2;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e450);
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f759(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRunCodeLanguage, "peg$parseRunCodeLanguage");
  function peg$parsePathCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f760(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathCore, "peg$parsePathCore");
  function peg$parseSectionPathCore() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parsePathExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 35) {
        s3 = peg$c38;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f761(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSectionPathCore, "peg$parseSectionPathCore");
  function peg$parseURLPathCore() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseURLProtocol();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 58) {
        s2 = peg$c56;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseURLContent();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f762(s1, s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseURLPathCore, "peg$parseURLPathCore");
  function peg$parseURLProtocol() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c97) {
      s3 = peg$c97;
      peg$currPos += 4;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e210);
      }
    }
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 115) {
        s4 = peg$c23;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e51);
        }
      }
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      s3 = [
        s3,
        s4
      ];
      s2 = s3;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c134) {
        s2 = peg$c134;
        peg$currPos += 4;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e386);
        }
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f763(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLProtocol, "peg$parseURLProtocol");
  function peg$parseURLContent() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$currPos;
    s2 = peg$currPos;
    if (input.substr(peg$currPos, 2) === peg$c135) {
      s3 = peg$c135;
      peg$currPos += 2;
    } else {
      s3 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e388);
      }
    }
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = input.charAt(peg$currPos);
      if (peg$r57.test(s5)) {
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e480);
        }
      }
      if (s5 !== peg$FAILED) {
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          s5 = input.charAt(peg$currPos);
          if (peg$r57.test(s5)) {
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e480);
            }
          }
        }
      } else {
        s4 = peg$FAILED;
      }
      if (s4 !== peg$FAILED) {
        s3 = [
          s3,
          s4
        ];
        s2 = s3;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s1 = input.substring(s1, peg$currPos);
    } else {
      s1 = s2;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f764(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseURLContent, "peg$parseURLContent");
  function peg$parseRunExecCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f765(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseRunExecCore, "peg$parseRunExecCore");
  function peg$parseSectionExtractionCore() {
    var s0, s1, s3, s5, s6;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseLiteralContent();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 4) === peg$c160) {
        s3 = peg$c160;
        peg$currPos += 4;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e476);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parsePathExpression();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseAsNewTitle();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f766(s1, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e481);
      }
    }
    return s0;
  }
  __name(peg$parseSectionExtractionCore, "peg$parseSectionExtractionCore");
  function peg$parseTemplateCore() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWrappedTemplateContent();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f767(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseTemplateCore, "peg$parseTemplateCore");
  function peg$parseRichTemplateCore() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseWrappedTemplateContent();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseTemplateOptions();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f768(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRichTemplateCore, "peg$parseRichTemplateCore");
  function peg$parseTemplateOptions() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 58) {
      s1 = peg$c56;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e115);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTemplateOptionsList();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f769(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOptions, "peg$parseTemplateOptions");
  function peg$parseTemplateOptionsList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseTemplateOption();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseTemplateOption();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f770(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseTemplateOption();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f770(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f771(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOptionsList, "peg$parseTemplateOptionsList");
  function peg$parseTemplateOption() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 61) {
        s3 = peg$c65;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e124);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseStringLiteral();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f772(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseTemplateOption, "peg$parseTemplateOption");
  function peg$parseExeKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c163) {
      s2 = peg$c163;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e482);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExeKeyword, "peg$parseExeKeyword");
  function peg$parseSlashExe() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseExeKeyword();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = peg$parseHWS();
        s5 = peg$parseDataLabelList();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseHWS();
          s7 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 64) {
            s8 = peg$c68;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          peg$silentFails--;
          if (s8 !== peg$FAILED) {
            peg$currPos = s7;
            s7 = void 0;
          } else {
            s7 = peg$FAILED;
          }
          if (s7 !== peg$FAILED) {
            s4 = [
              s4,
              s5,
              s6,
              s7
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s5 = peg$c68;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseBaseIdentifier();
          if (s6 !== peg$FAILED) {
            s7 = peg$parseExecMetadata();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            s8 = peg$parseExecParameters();
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            s9 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s10 = peg$c65;
              peg$currPos++;
            } else {
              s10 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s10 !== peg$FAILED) {
              s11 = peg$parse_();
              s12 = peg$parseExeRHSContent();
              if (s12 !== peg$FAILED) {
                s13 = peg$parseWithClause();
                if (s13 === peg$FAILED) {
                  s13 = null;
                }
                s14 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f773(s3, s6, s7, s8, s12, s13, s14);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseExeKeyword();
        if (s2 !== peg$FAILED) {
          s3 = peg$parse_();
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s6 = peg$c65;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              s8 = peg$parseExeRHSContent();
              if (s8 !== peg$FAILED) {
                s9 = peg$parseWithClause();
                if (s9 === peg$FAILED) {
                  s9 = null;
                }
                s10 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f774(s4, s8, s9, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseExeKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$parse_();
            s4 = peg$parseBaseIdentifier();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s6 = peg$c65;
                peg$currPos++;
              } else {
                s6 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e124);
                }
              }
              if (s6 !== peg$FAILED) {
                s7 = peg$parse_();
                s8 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 123) {
                  s9 = peg$c84;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e188);
                  }
                }
                peg$silentFails--;
                if (s9 === peg$FAILED) {
                  s8 = void 0;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                if (s8 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f775(s4);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseExeKeyword();
            if (s2 !== peg$FAILED) {
              s3 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c68;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 40) {
                    s7 = peg$c18;
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e42);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s8 = [];
                    s9 = input.charAt(peg$currPos);
                    if (peg$r58.test(s9)) {
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e483);
                      }
                    }
                    while (s9 !== peg$FAILED) {
                      s8.push(s9);
                      s9 = input.charAt(peg$currPos);
                      if (peg$r58.test(s9)) {
                        peg$currPos++;
                      } else {
                        s9 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e483);
                        }
                      }
                    }
                    if (input.charCodeAt(peg$currPos) === 41) {
                      s9 = peg$c19;
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e43);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      s10 = peg$parse_();
                      s11 = peg$currPos;
                      peg$silentFails++;
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s12 = peg$c65;
                        peg$currPos++;
                      } else {
                        s12 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e124);
                        }
                      }
                      peg$silentFails--;
                      if (s12 === peg$FAILED) {
                        s11 = void 0;
                      } else {
                        peg$currPos = s11;
                        s11 = peg$FAILED;
                      }
                      if (s11 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f776(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseExeKeyword();
              if (s2 !== peg$FAILED) {
                s3 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s4 = peg$c68;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parseBaseIdentifier();
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 40) {
                      s7 = peg$c18;
                      peg$currPos++;
                    } else {
                      s7 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e42);
                      }
                    }
                    if (s7 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s8 = peg$f777(s5);
                      if (s8) {
                        s8 = void 0;
                      } else {
                        s8 = peg$FAILED;
                      }
                      if (s8 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f778(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseExeKeyword();
                if (s2 !== peg$FAILED) {
                  s3 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 64) {
                    s4 = peg$c68;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e129);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parseBaseIdentifier();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parseExecParameters();
                      if (s6 === peg$FAILED) {
                        s6 = null;
                      }
                      s7 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s8 = peg$c65;
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e124);
                        }
                      }
                      if (s8 !== peg$FAILED) {
                        s9 = peg$parse_();
                        s10 = peg$currPos;
                        peg$silentFails++;
                        if (input.length > peg$currPos) {
                          s11 = input.charAt(peg$currPos);
                          peg$currPos++;
                        } else {
                          s11 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e6);
                          }
                        }
                        peg$silentFails--;
                        if (s11 === peg$FAILED) {
                          s10 = void 0;
                        } else {
                          peg$currPos = s10;
                          s10 = peg$FAILED;
                        }
                        if (s10 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f779(s5, s6);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseExeKeyword();
                  if (s2 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f780();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashExe, "peg$parseSlashExe");
  function peg$parseExecMetadata() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c10;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 9) === peg$c164) {
        s2 = peg$c164;
        peg$currPos += 9;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e484);
        }
      }
      if (s2 === peg$FAILED) {
        if (input.substr(peg$currPos, 8) === peg$c165) {
          s2 = peg$c165;
          peg$currPos += 8;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e485);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 8) === peg$c166) {
            s2 = peg$c166;
            peg$currPos += 8;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e486);
            }
          }
          if (s2 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c167) {
              s2 = peg$c167;
              peg$currPos += 4;
            } else {
              s2 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e487);
              }
            }
            if (s2 === peg$FAILED) {
              if (input.substr(peg$currPos, 5) === peg$c168) {
                s2 = peg$c168;
                peg$currPos += 5;
              } else {
                s2 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e488);
                }
              }
              if (s2 === peg$FAILED) {
                if (input.substr(peg$currPos, 4) === peg$c169) {
                  s2 = peg$c169;
                  peg$currPos += 4;
                } else {
                  s2 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e489);
                  }
                }
              }
            }
          }
        }
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f781(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecMetadata, "peg$parseExecMetadata");
  function peg$parseExecParameters() {
    var s0, s2, s4, s6;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 40) {
      s2 = peg$c18;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e42);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseExecParameterList();
      if (s4 === peg$FAILED) {
        s4 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 41) {
        s6 = peg$c19;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e43);
        }
      }
      if (s6 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f782(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameters, "peg$parseExecParameters");
  function peg$parseExecParameterList() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    s1 = peg$parseExecParameter();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 44) {
        s5 = peg$c85;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e189);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseExecParameter();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f783(s1, s7);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 44) {
          s5 = peg$c85;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e189);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          s7 = peg$parseExecParameter();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f783(s1, s7);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f784(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameterList, "peg$parseExecParameterList");
  function peg$parseExecParameter() {
    var s0, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      peg$currPos++;
    } else {
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    s2 = peg$parseBaseIdentifier();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f785(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExecParameter, "peg$parseExecParameter");
  function peg$parseExportKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c170) {
      s2 = peg$c170;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e490);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExportKeyword, "peg$parseExportKeyword");
  function peg$parseSlashExport() {
    var s0, s1, s2, s4, s5, s6, s8, s9;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseExportKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s4 = peg$c84;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s6 = peg$parseExportMemberList();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 125) {
              s8 = peg$c86;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e190);
              }
            }
            if (s8 !== peg$FAILED) {
              s9 = peg$parseInlineComment();
              if (s9 === peg$FAILED) {
                s9 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f786(s6, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseExportKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$currPos;
          peg$silentFails++;
          s5 = peg$parseLineTerminator();
          if (s5 === peg$FAILED) {
            s5 = peg$parseEOF();
          }
          peg$silentFails--;
          if (s5 !== peg$FAILED) {
            peg$currPos = s4;
            s4 = void 0;
          } else {
            s4 = peg$FAILED;
          }
          if (s4 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f787();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseExportKeyword();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f788();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashExport, "peg$parseSlashExport");
  function peg$parseExportMemberList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseExportMember();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseExportMember();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f789(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseExportMember();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f789(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f790(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parse_();
      peg$savedPos = s0;
      s1 = peg$f791();
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseExportMemberList, "peg$parseExportMemberList");
  function peg$parseExportMember() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parseExportIdentifier();
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c100) {
        s4 = peg$c100;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e219);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseBaseIdentifier();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f792(s1, s6);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f793(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseExportMember, "peg$parseExportMember");
  function peg$parseExportIdentifier() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f794();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 64) {
        s1 = peg$c68;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s1 === peg$FAILED) {
        s1 = null;
      }
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f795(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseExportIdentifier, "peg$parseExportIdentifier");
  function peg$parseSlashForSimple() {
    var s0, s1, s2, s4, s6, s8, s10;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseForKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 5) === peg$c171) {
          s4 = peg$c171;
          peg$currPos += 5;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e492);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c118) {
            s6 = peg$c118;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e322);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s8 = peg$c71;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e132);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 93) {
                s10 = peg$c70;
                peg$currPos++;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e131);
                }
              }
              if (s10 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f796();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e491);
      }
    }
    return s0;
  }
  __name(peg$parseSlashForSimple, "peg$parseSlashForSimple");
  function peg$parseForKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c117) {
      s2 = peg$c117;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e321);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseForKeyword, "peg$parseForKeyword");
  function peg$parseSlashFor() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseForKeyword();
      if (s2 !== peg$FAILED) {
        s3 = peg$parseForParallelSpec();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$parse_();
        s5 = peg$parseForIterationPattern();
        if (s5 !== peg$FAILED) {
          s6 = peg$parse_();
          s7 = peg$parseForActionVariant();
          if (s7 !== peg$FAILED) {
            s8 = peg$parseStandardDirectiveEnding();
            peg$savedPos = s0;
            s0 = peg$f797(s3, s5, s7, s8);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseForKeyword();
        if (s2 !== peg$FAILED) {
          s3 = peg$parseForParallelSpec();
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          s4 = peg$parse_();
          s5 = peg$parseForIterationPattern();
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 91) {
              s7 = peg$c71;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e132);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f798(s3, s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseForKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$parse_();
            s4 = peg$parseForIterationPattern();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              s6 = peg$currPos;
              peg$silentFails++;
              if (input.substr(peg$currPos, 2) === peg$c114) {
                s7 = peg$c114;
                peg$currPos += 2;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e314);
                }
              }
              peg$silentFails--;
              if (s7 === peg$FAILED) {
                s6 = void 0;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f799(s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseForKeyword();
            if (s2 !== peg$FAILED) {
              s3 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c68;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  s7 = peg$currPos;
                  peg$silentFails++;
                  if (input.substr(peg$currPos, 2) === peg$c118) {
                    s8 = peg$c118;
                    peg$currPos += 2;
                  } else {
                    s8 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e322);
                    }
                  }
                  peg$silentFails--;
                  if (s8 === peg$FAILED) {
                    s7 = void 0;
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                  if (s7 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f800(s5);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseForKeyword();
              if (s2 !== peg$FAILED) {
                s3 = peg$parse_();
                s4 = peg$currPos;
                peg$silentFails++;
                if (input.charCodeAt(peg$currPos) === 64) {
                  s5 = peg$c68;
                  peg$currPos++;
                } else {
                  s5 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                peg$silentFails--;
                if (s5 === peg$FAILED) {
                  s4 = void 0;
                } else {
                  peg$currPos = s4;
                  s4 = peg$FAILED;
                }
                if (s4 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f801();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e493);
      }
    }
    return s0;
  }
  __name(peg$parseSlashFor, "peg$parseSlashFor");
  function peg$parseGuardKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 5) === peg$c172) {
      s2 = peg$c172;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e494);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardKeyword, "peg$parseGuardKeyword");
  function peg$parseSlashGuard() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s14, s15;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseGuardKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$currPos;
        s5 = peg$parseGuardDirectiveName();
        if (s5 !== peg$FAILED) {
          s6 = peg$parse__();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f802(s5);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parseGuardTiming();
        if (s5 !== peg$FAILED) {
          s6 = peg$parse__();
          if (s6 !== peg$FAILED) {
            s7 = peg$parseGuardFilterClause();
            if (s7 !== peg$FAILED) {
              s8 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s9 = peg$c65;
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e124);
                }
              }
              if (s9 !== peg$FAILED) {
                s10 = peg$parse_();
                s11 = peg$parseGuardWhenClause();
                if (s11 !== peg$FAILED) {
                  s12 = peg$parseCommentedDirectiveEnding();
                  peg$savedPos = s0;
                  s0 = peg$f803(s4, s5, s7, s11, s12);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseGuardKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseGuardTiming();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$parse_();
          s6 = peg$parseGuardDirectiveName();
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = peg$parse_();
          if (input.substr(peg$currPos, 3) === peg$c117) {
            s8 = peg$c117;
            peg$currPos += 3;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e321);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parse__();
            if (s9 !== peg$FAILED) {
              s10 = peg$parseGuardFilterClause();
              if (s10 !== peg$FAILED) {
                s11 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 61) {
                  s12 = peg$c65;
                  peg$currPos++;
                } else {
                  s12 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e124);
                  }
                }
                if (s12 !== peg$FAILED) {
                  peg$parse_();
                  s14 = peg$parseGuardWhenClause();
                  if (s14 !== peg$FAILED) {
                    s15 = peg$parseCommentedDirectiveEnding();
                    peg$savedPos = s0;
                    s0 = peg$f804(s4, s6, s10, s14, s15);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseGuardKeyword();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f805();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashGuard, "peg$parseSlashGuard");
  function peg$parseGuardDirectiveName() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f806(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardDirectiveName, "peg$parseGuardDirectiveName");
  function peg$parseGuardTiming() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c173) {
      s1 = peg$c173;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e495);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f807();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 5) === peg$c174) {
        s1 = peg$c174;
        peg$currPos += 5;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e496);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        s3 = input.charAt(peg$currPos);
        if (peg$r5.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e37);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f808();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 6) === peg$c175) {
          s1 = peg$c175;
          peg$currPos += 6;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e497);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$currPos;
          peg$silentFails++;
          s3 = input.charAt(peg$currPos);
          if (peg$r5.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e37);
            }
          }
          peg$silentFails--;
          if (s3 === peg$FAILED) {
            s2 = void 0;
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f809();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseGuardTiming, "peg$parseGuardTiming");
  function peg$parseGuardFilterClause() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseGuardOperationFilter();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f810(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseGuardDataFilter();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f811(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseGuardFilterClause, "peg$parseGuardFilterClause");
  function peg$parseGuardOperationFilter() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c176) {
      s1 = peg$c176;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e498);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseGuardOpIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f812(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOperationFilter, "peg$parseGuardOperationFilter");
  function peg$parseGuardDataFilter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseDataLabelIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f813(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseGuardDataFilter, "peg$parseGuardDataFilter");
  function peg$parseGuardOpIdentifier() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseBaseIdentifier();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c10;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parseBaseIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f814(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s4 = peg$c10;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f814(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f815(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardOpIdentifier, "peg$parseGuardOpIdentifier");
  function peg$parseGuardWhenClause() {
    var s0, s1, s3, s5, s7, s9;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c115) {
      s1 = peg$c115;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e318);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenModifier();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 91) {
        s5 = peg$c71;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$parse_();
        s7 = peg$parseGuardRuleList();
        if (s7 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 93) {
            s9 = peg$c70;
            peg$currPos++;
          } else {
            s9 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e131);
            }
          }
          if (s9 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f816(s3, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c115) {
        s1 = peg$c115;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e318);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseWhenModifier();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 91) {
          s5 = peg$c71;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$parse_();
          peg$savedPos = s0;
          s0 = peg$f817(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c115) {
          s1 = peg$c115;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e318);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseWhenModifier();
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s5 = peg$c71;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            peg$savedPos = peg$currPos;
            s7 = peg$f818(s3);
            if (s7) {
              s7 = void 0;
            } else {
              s7 = peg$FAILED;
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f819(s3);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseGuardWhenClause, "peg$parseGuardWhenClause");
  function peg$parseGuardRuleList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseGuardEntry();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseWhenConditionSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseGuardEntry();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f820(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseWhenConditionSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseGuardEntry();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f820(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f821(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f822();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseGuardRuleList, "peg$parseGuardRuleList");
  function peg$parseGuardEntry() {
    var s0;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseGuardRule();
    }
    return s0;
  }
  __name(peg$parseGuardEntry, "peg$parseGuardEntry");
  function peg$parseGuardRule() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s3 = peg$c114;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseGuardAction();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f823(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseWhenConditionExpression();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c114) {
          s3 = peg$c114;
          peg$currPos += 2;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e314);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseGuardAction();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f824(s1, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseGuardRule, "peg$parseGuardRule");
  function peg$parseGuardAction() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c177) {
      s1 = peg$c177;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e499);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseGuardActionValue();
      if (s2 === peg$FAILED) {
        s2 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f825(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 4) === peg$c178) {
        s1 = peg$c178;
        peg$currPos += 4;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e500);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parseGuardActionMessage();
        if (s2 === peg$FAILED) {
          s2 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f826(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c21) {
          s1 = peg$c21;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e47);
          }
        }
        if (s1 !== peg$FAILED) {
          s2 = peg$parseGuardActionMessage();
          if (s2 === peg$FAILED) {
            s2 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f827(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseGuardAction, "peg$parseGuardAction");
  function peg$parseGuardActionValue() {
    var s0, s2, s3;
    s0 = peg$currPos;
    peg$parseHWS();
    s2 = peg$currPos;
    peg$silentFails++;
    s3 = peg$parseLineTerminator();
    peg$silentFails--;
    if (s3 === peg$FAILED) {
      s2 = void 0;
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parseUnifiedQuoteOrTemplate();
      if (s3 === peg$FAILED) {
        s3 = peg$parseUnifiedExpression();
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f828(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardActionValue, "peg$parseGuardActionValue");
  function peg$parseGuardActionMessage() {
    var s0, s2;
    s0 = peg$currPos;
    peg$parse_();
    s2 = peg$parseStringLiteral();
    if (s2 !== peg$FAILED) {
      peg$savedPos = s0;
      s0 = peg$f829(s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseGuardActionMessage, "peg$parseGuardActionMessage");
  function peg$parseImportKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c179) {
      s2 = peg$c179;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e501);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseImportKeyword, "peg$parseImportKeyword");
  function peg$parseSlashImport() {
    var s0, s1, s2, s4, s5, s6, s8, s10, s12, s13;
    s0 = peg$parseSlashImportPolicy();
    if (s0 === peg$FAILED) {
      s0 = peg$parseSlashImportShorthand();
      if (s0 === peg$FAILED) {
        s0 = peg$parseSlashImportFull();
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseImportKeyword();
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 123) {
                s4 = peg$c84;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e188);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s5 = peg$f830();
                if (s5) {
                  s5 = void 0;
                } else {
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f831();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseImportKeyword();
              if (s2 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 123) {
                  s4 = peg$c84;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e188);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parse_();
                  s6 = peg$parseImportsList();
                  if (s6 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 125) {
                      s8 = peg$c86;
                      peg$currPos++;
                    } else {
                      s8 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e190);
                      }
                    }
                    if (s8 !== peg$FAILED) {
                      peg$parse_();
                      peg$savedPos = peg$currPos;
                      s10 = peg$f832();
                      if (s10) {
                        s10 = void 0;
                      } else {
                        s10 = peg$FAILED;
                      }
                      if (s10 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f833();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseImportKeyword();
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 123) {
                    s4 = peg$c84;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e188);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    s6 = peg$parseImportsList();
                    if (s6 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 125) {
                        s8 = peg$c86;
                        peg$currPos++;
                      } else {
                        s8 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e190);
                        }
                      }
                      if (s8 !== peg$FAILED) {
                        peg$parse_();
                        if (input.substr(peg$currPos, 4) === peg$c160) {
                          s10 = peg$c160;
                          peg$currPos += 4;
                        } else {
                          s10 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e476);
                          }
                        }
                        if (s10 !== peg$FAILED) {
                          peg$parse_();
                          s12 = peg$currPos;
                          peg$silentFails++;
                          s13 = peg$parseLineTerminator();
                          if (s13 === peg$FAILED) {
                            s13 = peg$parseEOF();
                          }
                          peg$silentFails--;
                          if (s13 !== peg$FAILED) {
                            peg$currPos = s12;
                            s12 = void 0;
                          } else {
                            s12 = peg$FAILED;
                          }
                          if (s12 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f834();
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseImportKeyword();
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 123) {
                      s4 = peg$c84;
                      peg$currPos++;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e188);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$parseImportsList();
                      if (s6 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 125) {
                          s8 = peg$c86;
                          peg$currPos++;
                        } else {
                          s8 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e190);
                          }
                        }
                        if (s8 !== peg$FAILED) {
                          peg$parse_();
                          if (input.substr(peg$currPos, 4) === peg$c160) {
                            s10 = peg$c160;
                            peg$currPos += 4;
                          } else {
                            s10 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e476);
                            }
                          }
                          if (s10 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 34) {
                              s12 = peg$c8;
                              peg$currPos++;
                            } else {
                              s12 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e23);
                              }
                            }
                            if (s12 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s13 = peg$f835();
                              if (s13) {
                                s13 = void 0;
                              } else {
                                s13 = peg$FAILED;
                              }
                              if (s13 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f836();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseImportKeyword();
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 123) {
                        s4 = peg$c84;
                        peg$currPos++;
                      } else {
                        s4 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e188);
                        }
                      }
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        s6 = peg$parseImportsList();
                        if (s6 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 125) {
                            s8 = peg$c86;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e190);
                            }
                          }
                          if (s8 !== peg$FAILED) {
                            peg$parse_();
                            if (input.substr(peg$currPos, 4) === peg$c160) {
                              s10 = peg$c160;
                              peg$currPos += 4;
                            } else {
                              s10 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e476);
                              }
                            }
                            if (s10 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 39) {
                                s12 = peg$c7;
                                peg$currPos++;
                              } else {
                                s12 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e22);
                                }
                              }
                              if (s12 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s13 = peg$f837();
                                if (s13) {
                                  s13 = void 0;
                                } else {
                                  s13 = peg$FAILED;
                                }
                                if (s13 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f838();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseImportKeyword();
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 123) {
                          s4 = peg$c84;
                          peg$currPos++;
                        } else {
                          s4 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e188);
                          }
                        }
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          s6 = peg$parseImportsList();
                          if (s6 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 125) {
                              s8 = peg$c86;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e190);
                              }
                            }
                            if (s8 !== peg$FAILED) {
                              peg$parse_();
                              if (input.substr(peg$currPos, 4) === peg$c160) {
                                s10 = peg$c160;
                                peg$currPos += 4;
                              } else {
                                s10 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e476);
                                }
                              }
                              if (s10 !== peg$FAILED) {
                                peg$parse_();
                                if (input.charCodeAt(peg$currPos) === 91) {
                                  s12 = peg$c71;
                                  peg$currPos++;
                                } else {
                                  s12 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e132);
                                  }
                                }
                                if (s12 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s13 = peg$f839();
                                  if (s13) {
                                    s13 = void 0;
                                  } else {
                                    s13 = peg$FAILED;
                                  }
                                  if (s13 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f840();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseImportKeyword();
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 123) {
                            s4 = peg$c84;
                            peg$currPos++;
                          } else {
                            s4 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e188);
                            }
                          }
                          if (s4 !== peg$FAILED) {
                            s5 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 42) {
                              s6 = peg$c14;
                              peg$currPos++;
                            } else {
                              s6 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e34);
                              }
                            }
                            if (s6 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 125) {
                                s8 = peg$c86;
                                peg$currPos++;
                              } else {
                                s8 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e190);
                                }
                              }
                              if (s8 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f841();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseImportKeyword();
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$currPos;
                            peg$silentFails++;
                            s5 = peg$parseLineTerminator();
                            if (s5 === peg$FAILED) {
                              s5 = peg$parseEOF();
                            }
                            peg$silentFails--;
                            if (s5 !== peg$FAILED) {
                              peg$currPos = s4;
                              s4 = void 0;
                            } else {
                              s4 = peg$FAILED;
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f842();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseImportKeyword();
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              if (input.charCodeAt(peg$currPos) === 64) {
                                s4 = peg$c68;
                                peg$currPos++;
                              } else {
                                s4 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e129);
                                }
                              }
                              if (s4 !== peg$FAILED) {
                                peg$savedPos = peg$currPos;
                                s5 = peg$f843();
                                if (s5) {
                                  s5 = void 0;
                                } else {
                                  s5 = peg$FAILED;
                                }
                                if (s5 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f844();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              s2 = peg$parseImportKeyword();
                              if (s2 !== peg$FAILED) {
                                peg$parse_();
                                if (input.charCodeAt(peg$currPos) === 91) {
                                  s4 = peg$c71;
                                  peg$currPos++;
                                } else {
                                  s4 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e132);
                                  }
                                }
                                if (s4 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s5 = peg$f845();
                                  if (s5) {
                                    s5 = void 0;
                                  } else {
                                    s5 = peg$FAILED;
                                  }
                                  if (s5 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f846();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                            if (s0 === peg$FAILED) {
                              s0 = peg$currPos;
                              s1 = peg$parseDirectiveContext();
                              if (s1 !== peg$FAILED) {
                                s2 = peg$parseImportKeyword();
                                if (s2 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f847();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashImport, "peg$parseSlashImport");
  function peg$parseSlashImportShorthand() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseImportKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseImportTypeClause();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$currPos;
        s6 = peg$parseHWS();
        s7 = peg$parseDataLabelList();
        if (s7 !== peg$FAILED) {
          s6 = [
            s6,
            s7
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        s6 = peg$parse_();
        s7 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c160) {
          s8 = peg$c160;
          peg$currPos += 4;
        } else {
          s8 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e476);
          }
        }
        if (s8 !== peg$FAILED) {
          s9 = peg$parse_();
          s8 = [
            s8,
            s9
          ];
          s7 = s8;
        } else {
          peg$currPos = s7;
          s7 = peg$FAILED;
        }
        if (s7 === peg$FAILED) {
          s7 = null;
        }
        s8 = peg$parseImportPath();
        if (s8 !== peg$FAILED) {
          s9 = peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c100) {
            s10 = peg$c100;
            peg$currPos += 2;
          } else {
            s10 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e219);
            }
          }
          if (s10 !== peg$FAILED) {
            s11 = peg$parse_();
            s12 = peg$parseBaseIdentifier();
            if (s12 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f848(s4, s5, s8, s12);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseImportKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseImportTypeClause();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          s5 = peg$currPos;
          s6 = peg$parseHWS();
          s7 = peg$parseDataLabelList();
          if (s7 !== peg$FAILED) {
            s6 = [
              s6,
              s7
            ];
            s5 = s6;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$parse_();
          s7 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c160) {
            s8 = peg$c160;
            peg$currPos += 4;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e476);
            }
          }
          if (s8 !== peg$FAILED) {
            s9 = peg$parse_();
            s8 = [
              s8,
              s9
            ];
            s7 = s8;
          } else {
            peg$currPos = s7;
            s7 = peg$FAILED;
          }
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          s8 = peg$parseImportPath();
          if (s8 !== peg$FAILED) {
            s9 = peg$currPos;
            s10 = peg$parse_();
            if (input.substr(peg$currPos, 2) === peg$c100) {
              s11 = peg$c100;
              peg$currPos += 2;
            } else {
              s11 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e219);
              }
            }
            if (s11 !== peg$FAILED) {
              s12 = peg$parse_();
              s13 = peg$parseImportAliasIdentifier();
              if (s13 !== peg$FAILED) {
                s14 = peg$parseExecParameters();
                if (s14 === peg$FAILED) {
                  s14 = null;
                }
                peg$savedPos = s9;
                s9 = peg$f849(s4, s5, s7, s8, s13, s14);
              } else {
                peg$currPos = s9;
                s9 = peg$FAILED;
              }
            } else {
              peg$currPos = s9;
              s9 = peg$FAILED;
            }
            if (s9 === peg$FAILED) {
              s9 = null;
            }
            s10 = peg$parseTailModifiers();
            if (s10 === peg$FAILED) {
              s10 = null;
            }
            s11 = peg$parseInlineComment();
            if (s11 === peg$FAILED) {
              s11 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f850(s4, s5, s7, s8, s9, s10, s11);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseSlashImportShorthand, "peg$parseSlashImportShorthand");
  function peg$parseSlashImportPolicy() {
    var s0, s1, s2, s4, s6, s8, s10, s11, s12;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseImportKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 6) === peg$c153) {
          s4 = peg$c153;
          peg$currPos += 6;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e464);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseImportAliasIdentifier();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            if (input.substr(peg$currPos, 4) === peg$c160) {
              s8 = peg$c160;
              peg$currPos += 4;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e476);
              }
            }
            if (s8 !== peg$FAILED) {
              peg$parse_();
              s10 = peg$parseImportPath();
              if (s10 !== peg$FAILED) {
                s11 = peg$parseTailModifiers();
                if (s11 === peg$FAILED) {
                  s11 = null;
                }
                s12 = peg$parseInlineComment();
                if (s12 === peg$FAILED) {
                  s12 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f851(s6, s10, s11, s12);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashImportPolicy, "peg$parseSlashImportPolicy");
  function peg$parseSlashImportFull() {
    var s0, s1, s2, s4, s5, s6, s7, s9, s11, s13, s15, s16, s17;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseImportKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseImportTypeClause();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$currPos;
        s6 = peg$parseHWS();
        s7 = peg$parseDataLabelList();
        if (s7 !== peg$FAILED) {
          s6 = [
            s6,
            s7
          ];
          s5 = s6;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        s6 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 123) {
          s7 = peg$c84;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$parse_();
          s9 = peg$parseImportsList();
          if (s9 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 125) {
              s11 = peg$c86;
              peg$currPos++;
            } else {
              s11 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e190);
              }
            }
            if (s11 !== peg$FAILED) {
              peg$parse_();
              if (input.substr(peg$currPos, 4) === peg$c160) {
                s13 = peg$c160;
                peg$currPos += 4;
              } else {
                s13 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e476);
                }
              }
              if (s13 !== peg$FAILED) {
                peg$parse_();
                s15 = peg$parseImportPath();
                if (s15 !== peg$FAILED) {
                  s16 = peg$parseTailModifiers();
                  if (s16 === peg$FAILED) {
                    s16 = null;
                  }
                  s17 = peg$parseInlineComment();
                  if (s17 === peg$FAILED) {
                    s17 = null;
                  }
                  peg$savedPos = s0;
                  s0 = peg$f852(s4, s5, s9, s15, s16, s17);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashImportFull, "peg$parseSlashImportFull");
  function peg$parseImportTypeClause() {
    var s0;
    s0 = peg$parseCachedImportType();
    if (s0 === peg$FAILED) {
      s0 = peg$parseBasicImportType();
    }
    return s0;
  }
  __name(peg$parseImportTypeClause, "peg$parseImportTypeClause");
  function peg$parseBasicImportType() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c95) {
      s1 = peg$c95;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e203);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c180) {
        s1 = peg$c180;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e502);
        }
      }
      if (s1 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c181) {
          s1 = peg$c181;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e503);
          }
        }
        if (s1 === peg$FAILED) {
          if (input.substr(peg$currPos, 5) === peg$c182) {
            s1 = peg$c182;
            peg$currPos += 5;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e504);
            }
          }
          if (s1 === peg$FAILED) {
            if (input.substr(peg$currPos, 9) === peg$c183) {
              s1 = peg$c183;
              peg$currPos += 9;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e505);
              }
            }
          }
        }
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      peg$silentFails++;
      s3 = input.charAt(peg$currPos);
      if (peg$r5.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e37);
        }
      }
      peg$silentFails--;
      if (s3 === peg$FAILED) {
        s2 = void 0;
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f853(s1);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseBasicImportType, "peg$parseBasicImportType");
  function peg$parseCachedImportType() {
    var s0, s1, s2, s3, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c184) {
      s1 = peg$c184;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e506);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseHWS();
      if (input.charCodeAt(peg$currPos) === 40) {
        s3 = peg$c18;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parseHWS();
        s5 = peg$parseTimeDurationLiteral();
        if (s5 !== peg$FAILED) {
          peg$parseHWS();
          if (input.charCodeAt(peg$currPos) === 41) {
            s7 = peg$c19;
            peg$currPos++;
          } else {
            s7 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s7 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f854(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 6) === peg$c184) {
        s1 = peg$c184;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e506);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        peg$silentFails++;
        s3 = input.charAt(peg$currPos);
        if (peg$r5.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e37);
          }
        }
        peg$silentFails--;
        if (s3 === peg$FAILED) {
          s2 = void 0;
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f855();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCachedImportType, "peg$parseCachedImportType");
  function peg$parseImportPath() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = input.substr(peg$currPos, 8);
    if (s1.toLowerCase() === peg$c185) {
      peg$currPos += 8;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e507);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f856();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = input.substr(peg$currPos, 6);
      if (s1.toLowerCase() === peg$c186) {
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e508);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f857();
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = input.substr(peg$currPos, 6);
        if (s1.toLowerCase() === peg$c187) {
          peg$currPos += 6;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e509);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f858();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = input.substr(peg$currPos, 4);
          if (s1.toLowerCase() === peg$c188) {
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e510);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f859();
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = input.substr(peg$currPos, 5);
            if (s1.toLowerCase() === peg$c189) {
              peg$currPos += 5;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e511);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f860();
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.substr(peg$currPos, 6) === peg$c190) {
                s1 = peg$c190;
                peg$currPos += 6;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e512);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f861();
              }
              s0 = s1;
              if (s0 === peg$FAILED) {
                s0 = peg$parseSpecialVariablePath();
                if (s0 === peg$FAILED) {
                  s0 = peg$parseModuleReference();
                  if (s0 === peg$FAILED) {
                    s0 = peg$parseQuotedPath();
                    if (s0 === peg$FAILED) {
                      s0 = peg$parseImportAlligatorAdapter();
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseImportPath, "peg$parseImportPath");
  function peg$parseImportAlligatorAdapter() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseAlligatorExpression();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f862(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseImportAlligatorAdapter, "peg$parseImportAlligatorAdapter");
  function peg$parseQuotedPath() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedDoubleQuote();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f863(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r43.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e377);
          }
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = input.charAt(peg$currPos);
          if (peg$r43.test(s4)) {
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e377);
            }
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f864(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedPath, "peg$parseQuotedPath");
  function peg$parseModuleReference() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseModuleIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f865(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModuleReference, "peg$parseModuleReference");
  function peg$parseModuleIdentifier() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    s1 = peg$parseModuleIdentifierPart();
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s2 = peg$c37;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e84);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parseModulePathAndName();
        if (s3 !== peg$FAILED) {
          s4 = peg$currPos;
          if (input.charCodeAt(peg$currPos) === 64) {
            s5 = peg$c68;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parseShortHash();
            if (s6 !== peg$FAILED) {
              peg$savedPos = s4;
              s4 = peg$f866(s1, s3, s6);
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f867(s1, s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModuleIdentifier, "peg$parseModuleIdentifier");
  function peg$parseModulePathAndName() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$currPos;
    s3 = peg$parseModuleIdentifierPart();
    if (s3 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 47) {
        s4 = peg$c37;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e84);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s2;
        s2 = peg$f868(s3);
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    } else {
      peg$currPos = s2;
      s2 = peg$FAILED;
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$currPos;
      s3 = peg$parseModuleIdentifierPart();
      if (s3 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 47) {
          s4 = peg$c37;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e84);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$savedPos = s2;
          s2 = peg$f868(s3);
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
      } else {
        peg$currPos = s2;
        s2 = peg$FAILED;
      }
    }
    s2 = peg$parseModuleIdentifierPart();
    if (s2 !== peg$FAILED) {
      s3 = peg$parseModuleExtension();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f869(s1, s2, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseModulePathAndName, "peg$parseModulePathAndName");
  function peg$parseModuleExtension() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 46) {
      s1 = peg$c10;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e27);
      }
    }
    if (s1 !== peg$FAILED) {
      if (input.substr(peg$currPos, 3) === peg$c191) {
        s2 = peg$c191;
        peg$currPos += 3;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e514);
        }
      }
      if (s2 === peg$FAILED) {
        if (input.substr(peg$currPos, 4) === peg$c192) {
          s2 = peg$c192;
          peg$currPos += 4;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e515);
          }
        }
        if (s2 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c193) {
            s2 = peg$c193;
            peg$currPos += 2;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e516);
            }
          }
        }
      }
      if (s2 !== peg$FAILED) {
        if (input.substr(peg$currPos, 3) === peg$c194) {
          s3 = peg$c194;
          peg$currPos += 3;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e517);
          }
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f870(s2, s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e513);
      }
    }
    return s0;
  }
  __name(peg$parseModuleExtension, "peg$parseModuleExtension");
  function peg$parseModuleIdentifierPart() {
    var s0, s1, s2, s3;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = input.charAt(peg$currPos);
    if (peg$r13.test(s1)) {
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e89);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r59.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e519);
        }
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = input.charAt(peg$currPos);
        if (peg$r59.test(s3)) {
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e519);
          }
        }
      }
      peg$savedPos = s0;
      s0 = peg$f871(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e518);
      }
    }
    return s0;
  }
  __name(peg$parseModuleIdentifierPart, "peg$parseModuleIdentifierPart");
  function peg$parseShortHash() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseSemverVersion();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f872(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = input.charAt(peg$currPos);
      if (peg$r60.test(s2)) {
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e520);
        }
      }
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = input.charAt(peg$currPos);
          if (peg$r60.test(s2)) {
            peg$currPos++;
          } else {
            s2 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e520);
            }
          }
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f873(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f874(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseShortHash, "peg$parseShortHash");
  function peg$parseSemverVersion() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r4.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e26);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r4.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e26);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      if (input.charCodeAt(peg$currPos) === 46) {
        s2 = peg$c10;
        peg$currPos++;
      } else {
        s2 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s2 !== peg$FAILED) {
        s3 = [];
        s4 = input.charAt(peg$currPos);
        if (peg$r4.test(s4)) {
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e26);
          }
        }
        if (s4 !== peg$FAILED) {
          while (s4 !== peg$FAILED) {
            s3.push(s4);
            s4 = input.charAt(peg$currPos);
            if (peg$r4.test(s4)) {
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e26);
              }
            }
          }
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          if (input.charCodeAt(peg$currPos) === 46) {
            s4 = peg$c10;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e27);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = [];
            s6 = input.charAt(peg$currPos);
            if (peg$r4.test(s6)) {
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e26);
              }
            }
            if (s6 !== peg$FAILED) {
              while (s6 !== peg$FAILED) {
                s5.push(s6);
                s6 = input.charAt(peg$currPos);
                if (peg$r4.test(s6)) {
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e26);
                  }
                }
              }
            } else {
              s5 = peg$FAILED;
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 45) {
                s7 = peg$c9;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e25);
                }
              }
              if (s7 !== peg$FAILED) {
                s8 = peg$parseSemverPrerelease();
                if (s8 !== peg$FAILED) {
                  peg$savedPos = s6;
                  s6 = peg$f875(s1, s3, s5, s8);
                } else {
                  peg$currPos = s6;
                  s6 = peg$FAILED;
                }
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 43) {
                s8 = peg$c195;
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e521);
                }
              }
              if (s8 !== peg$FAILED) {
                s9 = peg$parseSemverMetadata();
                if (s9 !== peg$FAILED) {
                  peg$savedPos = s7;
                  s7 = peg$f876(s1, s3, s5, s6, s9);
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
              } else {
                peg$currPos = s7;
                s7 = peg$FAILED;
              }
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f877(s1, s3, s5, s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSemverVersion, "peg$parseSemverVersion");
  function peg$parseSemverPrerelease() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseSemverPrereleaseId();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c10;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parseSemverPrereleaseId();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f878(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s4 = peg$c10;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseSemverPrereleaseId();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f878(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f879(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSemverPrerelease, "peg$parseSemverPrerelease");
  function peg$parseSemverPrereleaseId() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r61.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e522);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r61.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e522);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f880(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseSemverPrereleaseId, "peg$parseSemverPrereleaseId");
  function peg$parseSemverMetadata() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseSemverMetadataId();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s4 = peg$c10;
        peg$currPos++;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s4 !== peg$FAILED) {
        s5 = peg$parseSemverMetadataId();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f881(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 46) {
          s4 = peg$c10;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e27);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseSemverMetadataId();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f881(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f882(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSemverMetadata, "peg$parseSemverMetadata");
  function peg$parseSemverMetadataId() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r61.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e522);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r61.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e522);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f883(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseSemverMetadataId, "peg$parseSemverMetadataId");
  function peg$parseImportsList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c100) {
        s3 = peg$c100;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e219);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parse_();
        s5 = peg$parseImportAliasIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f884(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 42) {
        s1 = peg$c14;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e34);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        peg$savedPos = peg$currPos;
        s3 = peg$f885();
        if (s3) {
          s3 = void 0;
        } else {
          s3 = peg$FAILED;
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f886();
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseImportItem();
        if (s1 !== peg$FAILED) {
          s2 = [];
          s3 = peg$currPos;
          s4 = peg$parseCommaSpace();
          if (s4 !== peg$FAILED) {
            s5 = peg$parseImportItem();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s3;
              s3 = peg$f887(s1, s5);
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          while (s3 !== peg$FAILED) {
            s2.push(s3);
            s3 = peg$currPos;
            s4 = peg$parseCommaSpace();
            if (s4 !== peg$FAILED) {
              s5 = peg$parseImportItem();
              if (s5 !== peg$FAILED) {
                peg$savedPos = s3;
                s3 = peg$f887(s1, s5);
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
          }
          peg$savedPos = s0;
          s0 = peg$f888(s1, s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parse_();
          peg$savedPos = s0;
          s1 = peg$f889();
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseImportsList, "peg$parseImportsList");
  function peg$parseImportItem() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseImportIdentifier();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c100) {
        s3 = peg$c100;
        peg$currPos += 2;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e219);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseImportAliasIdentifier();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f890(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseImportIdentifier();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.substr(peg$currPos, 2) === peg$c100) {
          s3 = peg$c100;
          peg$currPos += 2;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e219);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f891(s1, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseImportIdentifier();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f892(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseImportItem, "peg$parseImportItem");
  function peg$parseImportIdentifier() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f893(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseBaseIdentifier();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f894(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseImportIdentifier, "peg$parseImportIdentifier");
  function peg$parseImportAliasIdentifier() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f895(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseImportAliasIdentifier, "peg$parseImportAliasIdentifier");
  function peg$parseImportPathParts() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedVariableNoTail();
    if (s2 === peg$FAILED) {
      s2 = peg$parsePathTextSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedVariableNoTail();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f896(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parseImportPathParts, "peg$parseImportPathParts");
  function peg$parseSpecialVariablePath() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedSpecialVariable();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$parsePathTextSegment();
      if (s3 === peg$FAILED) {
        s3 = peg$parsePathSeparator();
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parsePathTextSegment();
          if (s3 === peg$FAILED) {
            s3 = peg$parsePathSeparator();
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f897(s1, s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSpecialVariablePath, "peg$parseSpecialVariablePath");
  function peg$parseNeedsKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 5) === peg$c196) {
      s2 = peg$c196;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e523);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsKeyword, "peg$parseNeedsKeyword");
  function peg$parseWantsKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 5) === peg$c197) {
      s2 = peg$c197;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e524);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWantsKeyword, "peg$parseWantsKeyword");
  function peg$parseSlashNeeds() {
    var s0, s1, s2, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseNeedsKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseNeedsObject();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f898(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashNeeds, "peg$parseSlashNeeds");
  function peg$parseSlashWants() {
    var s0, s1, s2, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWantsKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWantsArray();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f899(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashWants, "peg$parseSlashWants");
  function peg$parseNeedsObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNeedsEntryList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c86;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f900(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsObject, "peg$parseNeedsObject");
  function peg$parseNeedsEntryList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f901(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f901(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f902(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsEntryList, "peg$parseNeedsEntryList");
  function peg$parseNeedsEntry() {
    var s0, s1, s2, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c136) {
      s1 = peg$c136;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e424);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseNeedsCommandValue();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f903(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseNeedsPackageKey();
      if (s1 !== peg$FAILED) {
        s2 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseNeedsPackageList();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f904(s1, s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseNeedsBooleanKey();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseNeedsBooleanOption();
          if (s2 === peg$FAILED) {
            s2 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f905(s1, s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseCapabilityName();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f906(s1);
          }
          s0 = s1;
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsEntry, "peg$parseNeedsEntry");
  function peg$parseNeedsBooleanOption() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.charCodeAt(peg$currPos) === 58) {
      s2 = peg$c56;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e115);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseBooleanLiteral();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f907(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsBooleanOption, "peg$parseNeedsBooleanOption");
  function peg$parseNeedsCommandValue() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f908();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseNeedsValueList();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f909(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 123) {
          s1 = peg$c84;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseNeedsCommandEntries();
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s5 = peg$c86;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f910(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsCommandValue, "peg$parseNeedsCommandValue");
  function peg$parseNeedsCommandEntries() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsCommandEntry();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsCommandEntry();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f911(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsCommandEntry();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f911(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f912(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsCommandEntries, "peg$parseNeedsCommandEntries");
  function peg$parseNeedsCommandEntry() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    s1 = peg$parseCapabilityName();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseNeedsCommandDetail();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f913(s1, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsCommandEntry, "peg$parseNeedsCommandEntry");
  function peg$parseNeedsCommandDetail() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 42) {
      s1 = peg$c14;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e34);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f914();
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseNeedsValueList();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f915(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 123) {
          s1 = peg$c84;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e188);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseNeedsCommandDetailProps();
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 125) {
            s5 = peg$c86;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e190);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f916(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsCommandDetail, "peg$parseNeedsCommandDetail");
  function peg$parseNeedsCommandDetailProps() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsCommandDetailProp();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsCommandDetailProp();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f917(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsCommandDetailProp();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f917(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f918(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsCommandDetailProps, "peg$parseNeedsCommandDetailProps");
  function peg$parseNeedsCommandDetailProp() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 7) === peg$c198) {
      s1 = peg$c198;
      peg$currPos += 7;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e525);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseNeedsValueArray();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f919(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 11) === peg$c199) {
        s1 = peg$c199;
        peg$currPos += 11;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e526);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseNeedsValueArray();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f920(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 5) === peg$c200) {
          s1 = peg$c200;
          peg$currPos += 5;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e527);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s3 = peg$c56;
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e115);
            }
          }
          if (s3 !== peg$FAILED) {
            peg$parse_();
            s5 = peg$parseNeedsValueArray();
            if (s5 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f921(s5);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsCommandDetailProp, "peg$parseNeedsCommandDetailProp");
  function peg$parseNeedsValueArray() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNeedsValueList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f922(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsValueArray, "peg$parseNeedsValueArray");
  function peg$parseNeedsValueList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsValueToken();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsValueToken();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f923(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsValueToken();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f923(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f924(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsValueList, "peg$parseNeedsValueList");
  function peg$parseNeedsValueToken() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f925(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseBaseIdentifier();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f926(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseNeedsValueToken, "peg$parseNeedsValueToken");
  function peg$parseNeedsPackageList() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNeedsPackageItems();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f927(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsPackageList, "peg$parseNeedsPackageList");
  function peg$parseNeedsPackageItems() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseNeedsPackageToken();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseNeedsPackageToken();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f928(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseNeedsPackageToken();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f928(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f929(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNeedsPackageItems, "peg$parseNeedsPackageItems");
  function peg$parseNeedsPackageToken() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f930(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$currPos;
      s2 = [];
      s3 = input.charAt(peg$currPos);
      if (peg$r62.test(s3)) {
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e528);
        }
      }
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = input.charAt(peg$currPos);
          if (peg$r62.test(s3)) {
            peg$currPos++;
          } else {
            s3 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e528);
            }
          }
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s1 = input.substring(s1, peg$currPos);
      } else {
        s1 = s2;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f931(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseNeedsPackageToken, "peg$parseNeedsPackageToken");
  function peg$parseNeedsPackageKey() {
    var s0;
    if (input.substr(peg$currPos, 4) === peg$c143) {
      s0 = peg$c143;
      peg$currPos += 4;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e447);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 2) === peg$c141) {
        s0 = peg$c141;
        peg$currPos += 2;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e445);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 6) === peg$c144) {
          s0 = peg$c144;
          peg$currPos += 6;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e448);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 2) === peg$c162) {
            s0 = peg$c162;
            peg$currPos += 2;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e479);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 4) === peg$c201) {
              s0 = peg$c201;
              peg$currPos += 4;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e529);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c202) {
                s0 = peg$c202;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e530);
                }
              }
              if (s0 === peg$FAILED) {
                if (input.substr(peg$currPos, 2) === peg$c203) {
                  s0 = peg$c203;
                  peg$currPos += 2;
                } else {
                  s0 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e531);
                  }
                }
                if (s0 === peg$FAILED) {
                  if (input.substr(peg$currPos, 4) === peg$c204) {
                    s0 = peg$c204;
                    peg$currPos += 4;
                  } else {
                    s0 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e532);
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsPackageKey, "peg$parseNeedsPackageKey");
  function peg$parseNeedsBooleanKey() {
    var s0;
    if (input.substr(peg$currPos, 2) === peg$c146) {
      s0 = peg$c146;
      peg$currPos += 2;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e450);
      }
    }
    if (s0 === peg$FAILED) {
      if (input.substr(peg$currPos, 4) === peg$c145) {
        s0 = peg$c145;
        peg$currPos += 4;
      } else {
        s0 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e449);
        }
      }
      if (s0 === peg$FAILED) {
        if (input.substr(peg$currPos, 7) === peg$c205) {
          s0 = peg$c205;
          peg$currPos += 7;
        } else {
          s0 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e533);
          }
        }
        if (s0 === peg$FAILED) {
          if (input.substr(peg$currPos, 3) === peg$c206) {
            s0 = peg$c206;
            peg$currPos += 3;
          } else {
            s0 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e534);
            }
          }
          if (s0 === peg$FAILED) {
            if (input.substr(peg$currPos, 10) === peg$c207) {
              s0 = peg$c207;
              peg$currPos += 10;
            } else {
              s0 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e535);
              }
            }
            if (s0 === peg$FAILED) {
              if (input.substr(peg$currPos, 2) === peg$c208) {
                s0 = peg$c208;
                peg$currPos += 2;
              } else {
                s0 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e536);
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNeedsBooleanKey, "peg$parseNeedsBooleanKey");
  function peg$parseCapabilityName() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseDataString();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f932(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseBaseIdentifier();
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f933(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f934(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseCapabilityName, "peg$parseCapabilityName");
  function peg$parseWantsArray() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWantsTierList();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 93) {
        s5 = peg$c70;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e131);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f935(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWantsArray, "peg$parseWantsArray");
  function peg$parseWantsTierList() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseWantsTierObject();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseWantsTierObject();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f936(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseWantsTierObject();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f936(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f937(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWantsTierList, "peg$parseWantsTierList");
  function peg$parseWantsTierObject() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 123) {
      s1 = peg$c84;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e188);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWantsProperties();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 125) {
        s5 = peg$c86;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e190);
        }
      }
      if (s5 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f938(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWantsTierObject, "peg$parseWantsTierObject");
  function peg$parseWantsProperties() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseWantsProperty();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseWantsProperty();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f939(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseWantsProperty();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f939(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f940(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWantsProperties, "peg$parseWantsProperties");
  function peg$parseWantsProperty() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c209) {
      s1 = peg$c209;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e537);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 58) {
        s3 = peg$c56;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e115);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseDataString();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f941(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c210) {
        s1 = peg$c210;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e538);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$parse_();
          s5 = peg$parseDataString();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f942(s5);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseNeedsEntry();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f943(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseWantsProperty, "peg$parseWantsProperty");
  function peg$parseOutputKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c106) {
      s2 = peg$c106;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e284);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseOutputKeyword, "peg$parseOutputKeyword");
  function peg$parseAppendKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c108) {
      s2 = peg$c108;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e286);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAppendKeyword, "peg$parseAppendKeyword");
  function peg$parseLogKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c105) {
      s2 = peg$c105;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e283);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseLogKeyword, "peg$parseLogKeyword");
  function peg$parseSlashAppend() {
    var s0, s1, s2, s4, s6, s8, s9, s10, s11;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseAppendKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseOutputSource();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c107) {
            s6 = peg$c107;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e285);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseOutputTargetFile();
            if (s8 !== peg$FAILED) {
              s9 = peg$currPos;
              s10 = peg$parse_();
              s11 = peg$parseOutputFormat();
              if (s11 !== peg$FAILED) {
                peg$savedPos = s9;
                s9 = peg$f944(s4, s8, s11);
              } else {
                peg$currPos = s9;
                s9 = peg$FAILED;
              }
              if (s9 === peg$FAILED) {
                s9 = null;
              }
              s10 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f945(s4, s8, s9, s10);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseAppendKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseOutputSource();
          if (s4 !== peg$FAILED) {
            peg$parse_();
            peg$savedPos = peg$currPos;
            s6 = peg$f946();
            if (s6) {
              s6 = void 0;
            } else {
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f947();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseAppendKeyword();
          if (s2 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f948();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashAppend, "peg$parseSlashAppend");
  function peg$parseSlashOutput() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseOutputKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseDataString();
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          peg$silentFails++;
          s6 = peg$currPos;
          s7 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 91) {
            s8 = peg$c71;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e132);
            }
          }
          if (s8 !== peg$FAILED) {
            s7 = [
              s7,
              s8
            ];
            s6 = s7;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$currPos;
            peg$silentFails++;
            s7 = peg$currPos;
            s8 = peg$parse_();
            if (input.substr(peg$currPos, 2) === peg$c107) {
              s9 = peg$c107;
              peg$currPos += 2;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e285);
              }
            }
            if (s9 !== peg$FAILED) {
              s8 = [
                s8,
                s9
              ];
              s7 = s8;
            } else {
              peg$currPos = s7;
              s7 = peg$FAILED;
            }
            peg$silentFails--;
            if (s7 === peg$FAILED) {
              s6 = void 0;
            } else {
              peg$currPos = s6;
              s6 = peg$FAILED;
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f949(s4, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseOutputKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          s4 = peg$parseOutputSource();
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.substr(peg$currPos, 2) === peg$c107) {
              s6 = peg$c107;
              peg$currPos += 2;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e285);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              s8 = peg$parseOutputTarget();
              if (s8 !== peg$FAILED) {
                s9 = peg$currPos;
                s10 = peg$parse_();
                s11 = peg$parseOutputFormat();
                if (s11 !== peg$FAILED) {
                  peg$savedPos = s9;
                  s9 = peg$f950(s4, s8, s11);
                } else {
                  peg$currPos = s9;
                  s9 = peg$FAILED;
                }
                if (s9 === peg$FAILED) {
                  s9 = null;
                }
                s10 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f951(s4, s8, s9, s10);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseOutputKeyword();
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseOutputSource();
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              s6 = peg$parseDataString();
              if (s6 !== peg$FAILED) {
                s7 = peg$currPos;
                peg$silentFails++;
                s8 = peg$currPos;
                s9 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 91) {
                  s10 = peg$c71;
                  peg$currPos++;
                } else {
                  s10 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e132);
                  }
                }
                if (s10 !== peg$FAILED) {
                  s9 = [
                    s9,
                    s10
                  ];
                  s8 = s9;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
                peg$silentFails--;
                if (s8 === peg$FAILED) {
                  s7 = void 0;
                } else {
                  peg$currPos = s7;
                  s7 = peg$FAILED;
                }
                if (s7 !== peg$FAILED) {
                  s8 = peg$currPos;
                  peg$silentFails++;
                  s9 = peg$currPos;
                  s10 = peg$parse_();
                  if (input.substr(peg$currPos, 2) === peg$c107) {
                    s11 = peg$c107;
                    peg$currPos += 2;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e285);
                    }
                  }
                  if (s11 !== peg$FAILED) {
                    s10 = [
                      s10,
                      s11
                    ];
                    s9 = s10;
                  } else {
                    peg$currPos = s9;
                    s9 = peg$FAILED;
                  }
                  peg$silentFails--;
                  if (s9 === peg$FAILED) {
                    s8 = void 0;
                  } else {
                    peg$currPos = s8;
                    s8 = peg$FAILED;
                  }
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parseStandardDirectiveEnding();
                    peg$savedPos = s0;
                    s0 = peg$f952(s4, s6, s9);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseOutputKeyword();
            if (s2 !== peg$FAILED) {
              peg$parse_();
              if (input.substr(peg$currPos, 2) === peg$c107) {
                s4 = peg$c107;
                peg$currPos += 2;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e285);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                s6 = peg$parseOutputTarget();
                if (s6 !== peg$FAILED) {
                  s7 = peg$currPos;
                  s8 = peg$parse_();
                  s9 = peg$parseOutputFormat();
                  if (s9 !== peg$FAILED) {
                    peg$savedPos = s7;
                    s7 = peg$f953(s6, s9);
                  } else {
                    peg$currPos = s7;
                    s7 = peg$FAILED;
                  }
                  if (s7 === peg$FAILED) {
                    s7 = null;
                  }
                  s8 = peg$parseStandardDirectiveEnding();
                  peg$savedPos = s0;
                  s0 = peg$f954(s6, s7, s8);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseOutputKeyword();
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$parseOutputSource();
                if (s4 !== peg$FAILED) {
                  s5 = peg$parse_();
                  peg$savedPos = peg$currPos;
                  s6 = peg$f955();
                  if (s6) {
                    s6 = void 0;
                  } else {
                    s6 = peg$FAILED;
                  }
                  if (s6 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f956();
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseOutputKeyword();
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseOutputSource();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    if (input.substr(peg$currPos, 2) === peg$c107) {
                      s6 = peg$c107;
                      peg$currPos += 2;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e285);
                      }
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parse_();
                      s8 = peg$currPos;
                      peg$silentFails++;
                      s9 = peg$parseLineTerminator();
                      if (s9 === peg$FAILED) {
                        s9 = peg$parseEOF();
                      }
                      peg$silentFails--;
                      if (s9 !== peg$FAILED) {
                        peg$currPos = s8;
                        s8 = void 0;
                      } else {
                        s8 = peg$FAILED;
                      }
                      if (s8 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f957();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseOutputKeyword();
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.substr(peg$currPos, 2) === peg$c107) {
                      s4 = peg$c107;
                      peg$currPos += 2;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e285);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$currPos;
                      peg$silentFails++;
                      s7 = peg$parseLineTerminator();
                      if (s7 === peg$FAILED) {
                        s7 = peg$parseEOF();
                      }
                      peg$silentFails--;
                      if (s7 !== peg$FAILED) {
                        peg$currPos = s6;
                        s6 = void 0;
                      } else {
                        s6 = peg$FAILED;
                      }
                      if (s6 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f958();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseOutputKeyword();
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parseOutputSource();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        if (input.substr(peg$currPos, 2) === peg$c107) {
                          s6 = peg$c107;
                          peg$currPos += 2;
                        } else {
                          s6 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e285);
                          }
                        }
                        if (s6 !== peg$FAILED) {
                          s7 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 34) {
                            s8 = peg$c8;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e23);
                            }
                          }
                          if (s8 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s9 = peg$f959();
                            if (s9) {
                              s9 = void 0;
                            } else {
                              s9 = peg$FAILED;
                            }
                            if (s9 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f960();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseOutputKeyword();
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$parseOutputSource();
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          if (input.substr(peg$currPos, 2) === peg$c107) {
                            s6 = peg$c107;
                            peg$currPos += 2;
                          } else {
                            s6 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e285);
                            }
                          }
                          if (s6 !== peg$FAILED) {
                            s7 = peg$parse_();
                            s8 = peg$parseOutputTarget();
                            if (s8 !== peg$FAILED) {
                              s9 = peg$parse_();
                              if (input.substr(peg$currPos, 2) === peg$c100) {
                                s10 = peg$c100;
                                peg$currPos += 2;
                              } else {
                                s10 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e219);
                                }
                              }
                              if (s10 !== peg$FAILED) {
                                s11 = peg$parse_();
                                s12 = peg$currPos;
                                peg$silentFails++;
                                s13 = peg$parseLineTerminator();
                                if (s13 === peg$FAILED) {
                                  s13 = peg$parseEOF();
                                }
                                peg$silentFails--;
                                if (s13 !== peg$FAILED) {
                                  peg$currPos = s12;
                                  s12 = void 0;
                                } else {
                                  s12 = peg$FAILED;
                                }
                                if (s12 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f961();
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseOutputKeyword();
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 64) {
                            s4 = peg$c68;
                            peg$currPos++;
                          } else {
                            s4 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e129);
                            }
                          }
                          if (s4 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s5 = peg$f962();
                            if (s5) {
                              s5 = void 0;
                            } else {
                              s5 = peg$FAILED;
                            }
                            if (s5 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f963();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseOutputKeyword();
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$currPos;
                            peg$silentFails++;
                            s5 = peg$parseLineTerminator();
                            if (s5 === peg$FAILED) {
                              s5 = peg$parseEOF();
                            }
                            peg$silentFails--;
                            if (s5 !== peg$FAILED) {
                              peg$currPos = s4;
                              s4 = void 0;
                            } else {
                              s4 = peg$FAILED;
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f964();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseOutputKeyword();
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              s4 = peg$parseOutputSource();
                              if (s4 !== peg$FAILED) {
                                s5 = peg$parse_();
                                if (input.substr(peg$currPos, 2) === peg$c107) {
                                  s6 = peg$c107;
                                  peg$currPos += 2;
                                } else {
                                  s6 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e285);
                                  }
                                }
                                if (s6 !== peg$FAILED) {
                                  s7 = peg$parse_();
                                  if (input.substr(peg$currPos, 4) === peg$c211) {
                                    s8 = peg$c211;
                                    peg$currPos += 4;
                                  } else {
                                    s8 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e539);
                                    }
                                  }
                                  if (s8 !== peg$FAILED) {
                                    peg$savedPos = peg$currPos;
                                    s9 = peg$f965();
                                    if (s9) {
                                      s9 = void 0;
                                    } else {
                                      s9 = peg$FAILED;
                                    }
                                    if (s9 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f966();
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              s2 = peg$parseOutputKeyword();
                              if (s2 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f967();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashOutput, "peg$parseSlashOutput");
  function peg$parseSlashLog() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseLogKeyword();
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s4 = peg$parseOutputSource();
        if (s4 !== peg$FAILED) {
          s5 = peg$currPos;
          s6 = peg$parse_();
          s7 = peg$parseOutputFormat();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f968(s4, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f969(s4, s5, s6);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseLogKeyword();
        if (s2 !== peg$FAILED) {
          s3 = peg$currPos;
          s4 = peg$parse_();
          s5 = peg$parseOutputFormat();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f970(s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          s4 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f971(s3, s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseLogKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$parse_();
            s4 = peg$currPos;
            peg$silentFails++;
            s5 = peg$parseLineTerminator();
            if (s5 === peg$FAILED) {
              s5 = peg$parseEOF();
            }
            peg$silentFails--;
            if (s5 !== peg$FAILED) {
              peg$currPos = s4;
              s4 = void 0;
            } else {
              s4 = peg$FAILED;
            }
            if (s4 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f972();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseLogKeyword();
            if (s2 !== peg$FAILED) {
              s3 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c68;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = peg$currPos;
                s5 = peg$f973();
                if (s5) {
                  s5 = void 0;
                } else {
                  s5 = peg$FAILED;
                }
                if (s5 !== peg$FAILED) {
                  peg$savedPos = s0;
                  s0 = peg$f974();
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseLogKeyword();
              if (s2 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f975();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashLog, "peg$parseSlashLog");
  function peg$parsePathKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 4) === peg$c212) {
      s2 = peg$c212;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e540);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePathKeyword, "peg$parsePathKeyword");
  function peg$parseSlashPath() {
    var s0, s1, s2, s4, s5, s7, s9, s10, s11, s12, s13;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parsePathKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s4 = peg$c68;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parseBaseIdentifier();
          if (s5 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s7 = peg$c65;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$parse_();
              s9 = peg$parseUnifiedDoubleQuote();
              if (s9 !== peg$FAILED) {
                s10 = peg$parseTailModifiers();
                if (s10 === peg$FAILED) {
                  s10 = null;
                }
                s11 = peg$parseInlineComment();
                if (s11 === peg$FAILED) {
                  s11 = null;
                }
                peg$savedPos = s0;
                s0 = peg$f976(s5, s9, s10, s11);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parsePathKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s4 = peg$c68;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseBaseIdentifier();
            if (s5 !== peg$FAILED) {
              peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s7 = peg$c65;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e124);
                }
              }
              if (s7 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 39) {
                  s9 = peg$c7;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e22);
                  }
                }
                if (s9 !== peg$FAILED) {
                  s10 = peg$currPos;
                  s11 = [];
                  s12 = input.charAt(peg$currPos);
                  if (peg$r43.test(s12)) {
                    peg$currPos++;
                  } else {
                    s12 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e377);
                    }
                  }
                  while (s12 !== peg$FAILED) {
                    s11.push(s12);
                    s12 = input.charAt(peg$currPos);
                    if (peg$r43.test(s12)) {
                      peg$currPos++;
                    } else {
                      s12 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e377);
                      }
                    }
                  }
                  s10 = input.substring(s10, peg$currPos);
                  if (input.charCodeAt(peg$currPos) === 39) {
                    s11 = peg$c7;
                    peg$currPos++;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e22);
                    }
                  }
                  if (s11 !== peg$FAILED) {
                    s12 = peg$parseTailModifiers();
                    if (s12 === peg$FAILED) {
                      s12 = null;
                    }
                    s13 = peg$parseInlineComment();
                    if (s13 === peg$FAILED) {
                      s13 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f977(s5, s10, s12, s13);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parsePathKeyword();
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c68;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseBaseIdentifier();
              if (s5 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 61) {
                  s7 = peg$c65;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e124);
                  }
                }
                if (s7 !== peg$FAILED) {
                  peg$parse_();
                  s9 = peg$parsePathExpression();
                  if (s9 !== peg$FAILED) {
                    s10 = peg$parseTailModifiers();
                    if (s10 === peg$FAILED) {
                      s10 = null;
                    }
                    s11 = peg$parseInlineComment();
                    if (s11 === peg$FAILED) {
                      s11 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f978(s5, s9, s10, s11);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashPath, "peg$parseSlashPath");
  function peg$parsePathAssignmentParts() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseUnifiedVariableNoTail();
    if (s2 === peg$FAILED) {
      s2 = peg$parsePathTextSegment();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathSeparator();
      }
    }
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseUnifiedVariableNoTail();
      if (s2 === peg$FAILED) {
        s2 = peg$parsePathTextSegment();
        if (s2 === peg$FAILED) {
          s2 = peg$parsePathSeparator();
        }
      }
    }
    peg$savedPos = s0;
    s1 = peg$f979(s1);
    s0 = s1;
    return s0;
  }
  __name(peg$parsePathAssignmentParts, "peg$parsePathAssignmentParts");
  function peg$parseSpecialPathIdentifier() {
    var s0, s1;
    if (input.substr(peg$currPos, 11) === peg$c213) {
      s0 = peg$c213;
      peg$currPos += 11;
    } else {
      s0 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e541);
      }
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 46) {
        s1 = peg$c10;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e27);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f980();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseSpecialPathIdentifier, "peg$parseSpecialPathIdentifier");
  function peg$parsePolicyKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c153) {
      s2 = peg$c153;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e464);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePolicyKeyword, "peg$parsePolicyKeyword");
  function peg$parseSlashPolicy() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parsePolicyKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parsePolicyIdentifier();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 61) {
            s6 = peg$c65;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e124);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseUnionCall();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f981(s4, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashPolicy, "peg$parseSlashPolicy");
  function peg$parseUnionCall() {
    var s0, s1, s3, s5, s7;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c214) {
      s1 = peg$c214;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e542);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 40) {
        s3 = peg$c18;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e42);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$parse_();
        s5 = peg$parseUnionArgs();
        if (s5 === peg$FAILED) {
          s5 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 41) {
          s7 = peg$c19;
          peg$currPos++;
        } else {
          s7 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e43);
          }
        }
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f982(s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnionCall, "peg$parseUnionCall");
  function peg$parseUnionArgs() {
    var s0, s1, s2, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseUnionArg();
    if (s1 !== peg$FAILED) {
      s2 = [];
      s3 = peg$currPos;
      s4 = peg$parseCommaSpace();
      if (s4 !== peg$FAILED) {
        s5 = peg$parseUnionArg();
        if (s5 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f983(s1, s5);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      while (s3 !== peg$FAILED) {
        s2.push(s3);
        s3 = peg$currPos;
        s4 = peg$parseCommaSpace();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseUnionArg();
          if (s5 !== peg$FAILED) {
            peg$savedPos = s3;
            s3 = peg$f983(s1, s5);
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      }
      peg$savedPos = s0;
      s0 = peg$f984(s1, s2);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnionArgs, "peg$parseUnionArgs");
  function peg$parseUnionArg() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parsePolicyIdentifier();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f985(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseUnionArg, "peg$parseUnionArg");
  function peg$parsePolicyIdentifier() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f986(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parsePolicyIdentifier, "peg$parsePolicyIdentifier");
  function peg$parseRunKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c109) {
      s2 = peg$c109;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e290);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseRunKeyword, "peg$parseRunKeyword");
  function peg$parseSlashRun() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseRunKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseLeadingParallelPipeline();
        if (s4 !== peg$FAILED) {
          s5 = peg$parsePipelineParallelSpec();
          if (s5 === peg$FAILED) {
            s5 = null;
          }
          s6 = peg$currPos;
          s7 = peg$parseHWS();
          s8 = peg$parseDataLabelList();
          if (s8 !== peg$FAILED) {
            s7 = [
              s7,
              s8
            ];
            s6 = s7;
          } else {
            peg$currPos = s6;
            s6 = peg$FAILED;
          }
          if (s6 === peg$FAILED) {
            s6 = null;
          }
          s7 = peg$parseInlineComment();
          if (s7 === peg$FAILED) {
            s7 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f987(s4, s5, s6, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseRunKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 34) {
            s4 = peg$c8;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e23);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$currPos;
            s6 = [];
            s7 = input.charAt(peg$currPos);
            if (peg$r47.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e399);
              }
            }
            while (s7 !== peg$FAILED) {
              s6.push(s7);
              s7 = input.charAt(peg$currPos);
              if (peg$r47.test(s7)) {
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e399);
                }
              }
            }
            s5 = input.substring(s5, peg$currPos);
            if (input.charCodeAt(peg$currPos) === 34) {
              s6 = peg$c8;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e23);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parseTailModifiers();
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              s8 = peg$currPos;
              s9 = peg$parseHWS();
              s10 = peg$parseDataLabelList();
              if (s10 !== peg$FAILED) {
                s9 = [
                  s9,
                  s10
                ];
                s8 = s9;
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
              if (s8 === peg$FAILED) {
                s8 = null;
              }
              s9 = peg$parseInlineComment();
              if (s9 === peg$FAILED) {
                s9 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f988(s5, s7, s8, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseRunKeyword();
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$parseCmdCommandBrackets();
            if (s4 === peg$FAILED) {
              s4 = peg$parseUnifiedCommandBrackets();
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseTailModifiers();
              if (s5 === peg$FAILED) {
                s5 = null;
              }
              s6 = peg$currPos;
              s7 = peg$parseHWS();
              s8 = peg$parseDataLabelList();
              if (s8 !== peg$FAILED) {
                s7 = [
                  s7,
                  s8
                ];
                s6 = s7;
              } else {
                peg$currPos = s6;
                s6 = peg$FAILED;
              }
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$parseInlineComment();
              if (s7 === peg$FAILED) {
                s7 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f989(s4, s5, s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseRunKeyword();
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$parsePipeStdinExpression();
              if (s4 !== peg$FAILED) {
                s5 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 124) {
                  s6 = peg$c110;
                  peg$currPos++;
                } else {
                  s6 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e292);
                  }
                }
                if (s6 !== peg$FAILED) {
                  s7 = peg$parse_();
                  s8 = peg$parseCmdCommandBrackets();
                  if (s8 === peg$FAILED) {
                    s8 = peg$parseUnifiedCommandBrackets();
                  }
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parseTailModifiers();
                    if (s9 === peg$FAILED) {
                      s9 = null;
                    }
                    s10 = peg$currPos;
                    s11 = peg$parseHWS();
                    s12 = peg$parseDataLabelList();
                    if (s12 !== peg$FAILED) {
                      s11 = [
                        s11,
                        s12
                      ];
                      s10 = s11;
                    } else {
                      peg$currPos = s10;
                      s10 = peg$FAILED;
                    }
                    if (s10 === peg$FAILED) {
                      s10 = null;
                    }
                    s11 = peg$parseInlineComment();
                    if (s11 === peg$FAILED) {
                      s11 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f990(s4, s8, s9, s10, s11);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseRunKeyword();
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$parseRunLanguageCodeWithArgs();
                if (s4 === peg$FAILED) {
                  s4 = peg$parseRunLanguageCodeCore();
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parseTailModifiers();
                  if (s5 === peg$FAILED) {
                    s5 = null;
                  }
                  s6 = peg$currPos;
                  s7 = peg$parseHWS();
                  s8 = peg$parseDataLabelList();
                  if (s8 !== peg$FAILED) {
                    s7 = [
                      s7,
                      s8
                    ];
                    s6 = s7;
                  } else {
                    peg$currPos = s6;
                    s6 = peg$FAILED;
                  }
                  if (s6 === peg$FAILED) {
                    s6 = null;
                  }
                  s7 = peg$parseInlineComment();
                  if (s7 === peg$FAILED) {
                    s7 = null;
                  }
                  peg$savedPos = s0;
                  s0 = peg$f991(s4, s5, s6, s7);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseRunKeyword();
                if (s2 !== peg$FAILED) {
                  peg$parse_();
                  s4 = peg$parseUnifiedReferenceWithTail();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$currPos;
                    s6 = peg$parseHWS();
                    s7 = peg$parseDataLabelList();
                    if (s7 !== peg$FAILED) {
                      s6 = [
                        s6,
                        s7
                      ];
                      s5 = s6;
                    } else {
                      peg$currPos = s5;
                      s5 = peg$FAILED;
                    }
                    if (s5 === peg$FAILED) {
                      s5 = null;
                    }
                    s6 = peg$parseInlineComment();
                    if (s6 === peg$FAILED) {
                      s6 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f992(s4, s5, s6);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseRunKeyword();
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 34) {
                      s4 = peg$c8;
                      peg$currPos++;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e23);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s5 = peg$f993();
                      if (s5) {
                        s5 = void 0;
                      } else {
                        s5 = peg$FAILED;
                      }
                      if (s5 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f994();
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseRunKeyword();
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 123) {
                        s4 = peg$c84;
                        peg$currPos++;
                      } else {
                        s4 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e188);
                        }
                      }
                      if (s4 !== peg$FAILED) {
                        peg$savedPos = peg$currPos;
                        s5 = peg$f995();
                        if (s5) {
                          s5 = void 0;
                        } else {
                          s5 = peg$FAILED;
                        }
                        if (s5 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f996();
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseRunKeyword();
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$parseBaseIdentifier();
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parse_();
                          s6 = peg$currPos;
                          peg$silentFails++;
                          if (input.charCodeAt(peg$currPos) === 123) {
                            s7 = peg$c84;
                            peg$currPos++;
                          } else {
                            s7 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e188);
                            }
                          }
                          peg$silentFails--;
                          if (s7 === peg$FAILED) {
                            s6 = void 0;
                          } else {
                            peg$currPos = s6;
                            s6 = peg$FAILED;
                          }
                          if (s6 !== peg$FAILED) {
                            s7 = peg$currPos;
                            peg$silentFails++;
                            if (input.charCodeAt(peg$currPos) === 40) {
                              s8 = peg$c18;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e42);
                              }
                            }
                            peg$silentFails--;
                            if (s8 === peg$FAILED) {
                              s7 = void 0;
                            } else {
                              peg$currPos = s7;
                              s7 = peg$FAILED;
                            }
                            if (s7 !== peg$FAILED) {
                              s8 = peg$currPos;
                              peg$silentFails++;
                              s9 = peg$parseLineTerminator();
                              peg$silentFails--;
                              if (s9 === peg$FAILED) {
                                s8 = void 0;
                              } else {
                                peg$currPos = s8;
                                s8 = peg$FAILED;
                              }
                              if (s8 !== peg$FAILED) {
                                s9 = peg$currPos;
                                peg$silentFails++;
                                s10 = peg$parseEOF();
                                peg$silentFails--;
                                if (s10 === peg$FAILED) {
                                  s9 = void 0;
                                } else {
                                  peg$currPos = s9;
                                  s9 = peg$FAILED;
                                }
                                if (s9 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s10 = peg$f997(s4);
                                  if (s10) {
                                    s10 = void 0;
                                  } else {
                                    s10 = peg$FAILED;
                                  }
                                  if (s10 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f998(s4);
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseRunKeyword();
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          s4 = peg$parseBaseIdentifier();
                          if (s4 !== peg$FAILED) {
                            s5 = peg$parse_();
                            s6 = peg$currPos;
                            peg$silentFails++;
                            s7 = peg$parseLineTerminator();
                            if (s7 === peg$FAILED) {
                              s7 = peg$parseEOF();
                            }
                            peg$silentFails--;
                            if (s7 !== peg$FAILED) {
                              peg$currPos = s6;
                              s6 = void 0;
                            } else {
                              s6 = peg$FAILED;
                            }
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s7 = peg$f999(s4);
                              if (s7) {
                                s7 = void 0;
                              } else {
                                s7 = peg$FAILED;
                              }
                              if (s7 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f1000(s4);
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseRunKeyword();
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s4 = peg$c68;
                              peg$currPos++;
                            } else {
                              s4 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e129);
                              }
                            }
                            if (s4 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s5 = peg$f1001();
                              if (s5) {
                                s5 = void 0;
                              } else {
                                s5 = peg$FAILED;
                              }
                              if (s5 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f1002();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseRunKeyword();
                            if (s2 !== peg$FAILED) {
                              peg$parse_();
                              s4 = peg$currPos;
                              peg$silentFails++;
                              s5 = peg$parseLineTerminator();
                              if (s5 === peg$FAILED) {
                                s5 = peg$parseEOF();
                              }
                              peg$silentFails--;
                              if (s5 !== peg$FAILED) {
                                peg$currPos = s4;
                                s4 = void 0;
                              } else {
                                s4 = peg$FAILED;
                              }
                              if (s4 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f1003();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              s2 = peg$parseRunKeyword();
                              if (s2 !== peg$FAILED) {
                                peg$parse_();
                                s4 = peg$parseBaseIdentifier();
                                if (s4 !== peg$FAILED) {
                                  s5 = peg$parse_();
                                  if (input.charCodeAt(peg$currPos) === 40) {
                                    s6 = peg$c18;
                                    peg$currPos++;
                                  } else {
                                    s6 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e42);
                                    }
                                  }
                                  if (s6 !== peg$FAILED) {
                                    s7 = [];
                                    s8 = input.charAt(peg$currPos);
                                    if (peg$r58.test(s8)) {
                                      peg$currPos++;
                                    } else {
                                      s8 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e483);
                                      }
                                    }
                                    while (s8 !== peg$FAILED) {
                                      s7.push(s8);
                                      s8 = input.charAt(peg$currPos);
                                      if (peg$r58.test(s8)) {
                                        peg$currPos++;
                                      } else {
                                        s8 = peg$FAILED;
                                        if (peg$silentFails === 0) {
                                          peg$fail(peg$e483);
                                        }
                                      }
                                    }
                                    if (input.charCodeAt(peg$currPos) === 41) {
                                      s8 = peg$c19;
                                      peg$currPos++;
                                    } else {
                                      s8 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e43);
                                      }
                                    }
                                    if (s8 !== peg$FAILED) {
                                      s9 = peg$parse_();
                                      if (input.charCodeAt(peg$currPos) === 123) {
                                        s10 = peg$c84;
                                        peg$currPos++;
                                      } else {
                                        s10 = peg$FAILED;
                                        if (peg$silentFails === 0) {
                                          peg$fail(peg$e188);
                                        }
                                      }
                                      if (s10 !== peg$FAILED) {
                                        peg$savedPos = peg$currPos;
                                        s11 = peg$f1004(s4);
                                        if (s11) {
                                          s11 = void 0;
                                        } else {
                                          s11 = peg$FAILED;
                                        }
                                        if (s11 !== peg$FAILED) {
                                          peg$savedPos = s0;
                                          s0 = peg$f1005(s4);
                                        } else {
                                          peg$currPos = s0;
                                          s0 = peg$FAILED;
                                        }
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                            if (s0 === peg$FAILED) {
                              s0 = peg$currPos;
                              s1 = peg$parseDirectiveContext();
                              if (s1 !== peg$FAILED) {
                                s2 = peg$parseRunKeyword();
                                if (s2 !== peg$FAILED) {
                                  peg$parse_();
                                  s4 = peg$parseBaseIdentifier();
                                  if (s4 !== peg$FAILED) {
                                    s5 = peg$parse_();
                                    if (input.charCodeAt(peg$currPos) === 123) {
                                      s6 = peg$c84;
                                      peg$currPos++;
                                    } else {
                                      s6 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e188);
                                      }
                                    }
                                    if (s6 !== peg$FAILED) {
                                      peg$savedPos = peg$currPos;
                                      s7 = peg$f1006(s4);
                                      if (s7) {
                                        s7 = void 0;
                                      } else {
                                        s7 = peg$FAILED;
                                      }
                                      if (s7 !== peg$FAILED) {
                                        peg$savedPos = s0;
                                        s0 = peg$f1007(s4);
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                              if (s0 === peg$FAILED) {
                                s0 = peg$currPos;
                                s1 = peg$parseDirectiveContext();
                                if (s1 !== peg$FAILED) {
                                  s2 = peg$parseRunKeyword();
                                  if (s2 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f1008();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashRun, "peg$parseSlashRun");
  function peg$parseRunDirectiveRef() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseRunLanguageCodeWithArgs();
    if (s1 === peg$FAILED) {
      s1 = peg$parseRunLanguageCodeCore();
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1009(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseUnifiedReferenceNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1010(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseCmdCommandBrackets();
        if (s1 === peg$FAILED) {
          s1 = peg$parseUnifiedCommandBrackets();
        }
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1011(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseRunDirectiveRef, "peg$parseRunDirectiveRef");
  function peg$parseShowKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 4) === peg$c104) {
      s2 = peg$c104;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseShowKeyword, "peg$parseShowKeyword");
  function peg$parseSlashShow() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseShowKeyword();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = peg$parseHWS();
        s5 = peg$parseDataLabelList();
        if (s5 !== peg$FAILED) {
          s4 = [
            s4,
            s5
          ];
          s3 = s4;
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s5 = peg$c68;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseBaseIdentifier();
          if (s6 !== peg$FAILED) {
            s7 = [];
            s8 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 46) {
              s9 = peg$c10;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e27);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = peg$parseBaseIdentifier();
              if (s10 !== peg$FAILED) {
                s9 = [
                  s9,
                  s10
                ];
                s8 = s9;
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
            while (s8 !== peg$FAILED) {
              s7.push(s8);
              s8 = peg$currPos;
              if (input.charCodeAt(peg$currPos) === 46) {
                s9 = peg$c10;
                peg$currPos++;
              } else {
                s9 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e27);
                }
              }
              if (s9 !== peg$FAILED) {
                s10 = peg$parseBaseIdentifier();
                if (s10 !== peg$FAILED) {
                  s9 = [
                    s9,
                    s10
                  ];
                  s8 = s9;
                } else {
                  peg$currPos = s8;
                  s8 = peg$FAILED;
                }
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
            }
            s8 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s9 = peg$c68;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s9 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1012(s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseShowKeyword();
        if (s2 !== peg$FAILED) {
          s3 = peg$currPos;
          s4 = peg$parseHWS();
          s5 = peg$parseDataLabelList();
          if (s5 !== peg$FAILED) {
            s4 = [
              s4,
              s5
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
          if (s3 === peg$FAILED) {
            s3 = null;
          }
          s4 = peg$parse_();
          s5 = peg$parseUnifiedDoubleQuote();
          if (s5 === peg$FAILED) {
            s5 = peg$parseUnifiedSingleQuote();
          }
          if (s5 !== peg$FAILED) {
            s6 = peg$parse_();
            s7 = input.charAt(peg$currPos);
            if (peg$r63.test(s7)) {
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e543);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1013();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseShowKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$currPos;
            s4 = peg$parseHWS();
            s5 = peg$parseDataLabelList();
            if (s5 !== peg$FAILED) {
              s4 = [
                s4,
                s5
              ];
              s3 = s4;
            } else {
              peg$currPos = s3;
              s3 = peg$FAILED;
            }
            if (s3 === peg$FAILED) {
              s3 = null;
            }
            s4 = peg$parse_();
            s5 = peg$parseUnifiedCommandBrackets();
            if (s5 !== peg$FAILED) {
              s6 = peg$parseTailModifiers();
              if (s6 === peg$FAILED) {
                s6 = null;
              }
              s7 = peg$parseStandardDirectiveEnding();
              peg$savedPos = s0;
              s0 = peg$f1014(s3, s5, s6, s7);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseShowKeyword();
            if (s2 !== peg$FAILED) {
              s3 = peg$currPos;
              s4 = peg$parseHWS();
              s5 = peg$parseDataLabelList();
              if (s5 !== peg$FAILED) {
                s4 = [
                  s4,
                  s5
                ];
                s3 = s4;
              } else {
                peg$currPos = s3;
                s3 = peg$FAILED;
              }
              if (s3 === peg$FAILED) {
                s3 = null;
              }
              s4 = peg$parse_();
              s5 = peg$parseRunCodeLanguage();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                s7 = peg$parseUnifiedCodeBrackets();
                if (s7 !== peg$FAILED) {
                  s8 = peg$parseTailModifiers();
                  if (s8 === peg$FAILED) {
                    s8 = null;
                  }
                  s9 = peg$parseStandardDirectiveEnding();
                  peg$savedPos = s0;
                  s0 = peg$f1015(s3, s5, s7, s8, s9);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseShowKeyword();
              if (s2 !== peg$FAILED) {
                s3 = peg$currPos;
                s4 = peg$parseHWS();
                s5 = peg$parseDataLabelList();
                if (s5 !== peg$FAILED) {
                  s4 = [
                    s4,
                    s5
                  ];
                  s3 = s4;
                } else {
                  peg$currPos = s3;
                  s3 = peg$FAILED;
                }
                if (s3 === peg$FAILED) {
                  s3 = null;
                }
                s4 = peg$parse_();
                s5 = peg$parseForeachCommandExpression();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parseStandardDirectiveEnding();
                  peg$savedPos = s0;
                  s0 = peg$f1016(s3, s5, s6);
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseShowKeyword();
                if (s2 !== peg$FAILED) {
                  s3 = peg$currPos;
                  s4 = peg$parseHWS();
                  s5 = peg$parseDataLabelList();
                  if (s5 !== peg$FAILED) {
                    s4 = [
                      s4,
                      s5
                    ];
                    s3 = s4;
                  } else {
                    peg$currPos = s3;
                    s3 = peg$FAILED;
                  }
                  if (s3 === peg$FAILED) {
                    s3 = null;
                  }
                  s4 = peg$parse_();
                  s5 = peg$parseWrappedTemplateContent();
                  if (s5 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s6 = peg$f1017(s3, s5);
                    if (s6) {
                      s6 = void 0;
                    } else {
                      s6 = peg$FAILED;
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parseAsNewTitle();
                      if (s7 === peg$FAILED) {
                        s7 = null;
                      }
                      s8 = peg$parseStandardDirectiveEnding();
                      peg$savedPos = s0;
                      s0 = peg$f1018(s3, s5, s7, s8);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseShowKeyword();
                  if (s2 !== peg$FAILED) {
                    s3 = peg$currPos;
                    s4 = peg$parseHWS();
                    s5 = peg$parseDataLabelList();
                    if (s5 !== peg$FAILED) {
                      s4 = [
                        s4,
                        s5
                      ];
                      s3 = s4;
                    } else {
                      peg$currPos = s3;
                      s3 = peg$FAILED;
                    }
                    if (s3 === peg$FAILED) {
                      s3 = null;
                    }
                    s4 = peg$parse_();
                    s5 = peg$parseAlligatorExpression();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parseAsNewTitle();
                      if (s6 === peg$FAILED) {
                        s6 = null;
                      }
                      s7 = peg$parseStandardDirectiveEnding();
                      peg$savedPos = s0;
                      s0 = peg$f1019(s3, s5, s6, s7);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseShowKeyword();
                    if (s2 !== peg$FAILED) {
                      s3 = peg$currPos;
                      s4 = peg$parseHWS();
                      s5 = peg$parseDataLabelList();
                      if (s5 !== peg$FAILED) {
                        s4 = [
                          s4,
                          s5
                        ];
                        s3 = s4;
                      } else {
                        peg$currPos = s3;
                        s3 = peg$FAILED;
                      }
                      if (s3 === peg$FAILED) {
                        s3 = null;
                      }
                      s4 = peg$parse_();
                      s5 = peg$parseTemplateCore();
                      if (s5 !== peg$FAILED) {
                        s6 = peg$parse_();
                        s7 = peg$parseHeaderLevel();
                        if (s7 === peg$FAILED) {
                          s7 = null;
                        }
                        s8 = peg$parseUnderHeader();
                        if (s8 === peg$FAILED) {
                          s8 = null;
                        }
                        s9 = peg$parseStandardDirectiveEnding();
                        peg$savedPos = s0;
                        s0 = peg$f1020(s3, s5, s7, s8, s9);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseShowKeyword();
                      if (s2 !== peg$FAILED) {
                        s3 = peg$currPos;
                        s4 = peg$parseHWS();
                        s5 = peg$parseDataLabelList();
                        if (s5 !== peg$FAILED) {
                          s4 = [
                            s4,
                            s5
                          ];
                          s3 = s4;
                        } else {
                          peg$currPos = s3;
                          s3 = peg$FAILED;
                        }
                        if (s3 === peg$FAILED) {
                          s3 = null;
                        }
                        s4 = peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 64) {
                          s5 = peg$c68;
                          peg$currPos++;
                        } else {
                          s5 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e129);
                          }
                        }
                        if (s5 !== peg$FAILED) {
                          s6 = peg$parseUnifiedAtVar();
                          if (s6 !== peg$FAILED) {
                            s7 = peg$currPos;
                            peg$silentFails++;
                            if (input.charCodeAt(peg$currPos) === 40) {
                              s8 = peg$c18;
                              peg$currPos++;
                            } else {
                              s8 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e42);
                              }
                            }
                            peg$silentFails--;
                            if (s8 === peg$FAILED) {
                              s7 = void 0;
                            } else {
                              peg$currPos = s7;
                              s7 = peg$FAILED;
                            }
                            if (s7 !== peg$FAILED) {
                              s8 = peg$currPos;
                              peg$silentFails++;
                              s9 = peg$parseTailModifiers();
                              peg$silentFails--;
                              if (s9 === peg$FAILED) {
                                s8 = void 0;
                              } else {
                                peg$currPos = s8;
                                s8 = peg$FAILED;
                              }
                              if (s8 !== peg$FAILED) {
                                s9 = peg$parse_();
                                s10 = peg$parseHeaderLevel();
                                if (s10 === peg$FAILED) {
                                  s10 = null;
                                }
                                s11 = peg$parseUnderHeader();
                                if (s11 === peg$FAILED) {
                                  s11 = null;
                                }
                                s12 = peg$parseStandardDirectiveEnding();
                                peg$savedPos = s0;
                                s0 = peg$f1021(s3, s6, s10, s11, s12);
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseShowKeyword();
                        if (s2 !== peg$FAILED) {
                          s3 = peg$currPos;
                          s4 = peg$parseHWS();
                          s5 = peg$parseDataLabelList();
                          if (s5 !== peg$FAILED) {
                            s4 = [
                              s4,
                              s5
                            ];
                            s3 = s4;
                          } else {
                            peg$currPos = s3;
                            s3 = peg$FAILED;
                          }
                          if (s3 === peg$FAILED) {
                            s3 = null;
                          }
                          s4 = peg$parse_();
                          s5 = peg$parseUnifiedReferenceWithTail();
                          if (s5 !== peg$FAILED) {
                            s6 = peg$parse_();
                            s7 = peg$parseHeaderLevel();
                            if (s7 === peg$FAILED) {
                              s7 = null;
                            }
                            s8 = peg$parseUnderHeader();
                            if (s8 === peg$FAILED) {
                              s8 = null;
                            }
                            s9 = peg$parseStandardDirectiveEnding();
                            peg$savedPos = s0;
                            s0 = peg$f1022(s3, s5, s7, s8, s9);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseShowKeyword();
                          if (s2 !== peg$FAILED) {
                            s3 = peg$currPos;
                            s4 = peg$parseHWS();
                            s5 = peg$parseDataLabelList();
                            if (s5 !== peg$FAILED) {
                              s4 = [
                                s4,
                                s5
                              ];
                              s3 = s4;
                            } else {
                              peg$currPos = s3;
                              s3 = peg$FAILED;
                            }
                            if (s3 === peg$FAILED) {
                              s3 = null;
                            }
                            s4 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 34) {
                              s5 = peg$c8;
                              peg$currPos++;
                            } else {
                              s5 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e23);
                              }
                            }
                            if (s5 !== peg$FAILED) {
                              s6 = peg$currPos;
                              s7 = [];
                              s8 = input.charAt(peg$currPos);
                              if (peg$r47.test(s8)) {
                                peg$currPos++;
                              } else {
                                s8 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e399);
                                }
                              }
                              while (s8 !== peg$FAILED) {
                                s7.push(s8);
                                s8 = input.charAt(peg$currPos);
                                if (peg$r47.test(s8)) {
                                  peg$currPos++;
                                } else {
                                  s8 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e399);
                                  }
                                }
                              }
                              s6 = input.substring(s6, peg$currPos);
                              if (input.charCodeAt(peg$currPos) === 34) {
                                s7 = peg$c8;
                                peg$currPos++;
                              } else {
                                s7 = peg$FAILED;
                                if (peg$silentFails === 0) {
                                  peg$fail(peg$e23);
                                }
                              }
                              if (s7 !== peg$FAILED) {
                                s8 = peg$parse_();
                                s9 = peg$parseHeaderLevel();
                                if (s9 === peg$FAILED) {
                                  s9 = null;
                                }
                                s10 = peg$parseUnderHeader();
                                if (s10 === peg$FAILED) {
                                  s10 = null;
                                }
                                s11 = peg$parseStandardDirectiveEnding();
                                peg$savedPos = s0;
                                s0 = peg$f1023(s3, s6, s9, s10, s11);
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseShowKeyword();
                            if (s2 !== peg$FAILED) {
                              s3 = peg$currPos;
                              s4 = peg$parseHWS();
                              s5 = peg$parseDataLabelList();
                              if (s5 !== peg$FAILED) {
                                s4 = [
                                  s4,
                                  s5
                                ];
                                s3 = s4;
                              } else {
                                peg$currPos = s3;
                                s3 = peg$FAILED;
                              }
                              if (s3 === peg$FAILED) {
                                s3 = null;
                              }
                              s4 = peg$parse_();
                              s5 = peg$parsePathExpression();
                              if (s5 !== peg$FAILED) {
                                s6 = peg$parse_();
                                s7 = peg$parseHeaderLevel();
                                if (s7 === peg$FAILED) {
                                  s7 = null;
                                }
                                s8 = peg$parseUnderHeader();
                                if (s8 === peg$FAILED) {
                                  s8 = null;
                                }
                                s9 = peg$parseStandardDirectiveEnding();
                                peg$savedPos = s0;
                                s0 = peg$f1024(s3, s5, s7, s8, s9);
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                          if (s0 === peg$FAILED) {
                            s0 = peg$currPos;
                            s1 = peg$parseDirectiveContext();
                            if (s1 !== peg$FAILED) {
                              s2 = peg$parseShowKeyword();
                              if (s2 !== peg$FAILED) {
                                s3 = peg$currPos;
                                s4 = peg$parseHWS();
                                s5 = peg$parseDataLabelList();
                                if (s5 !== peg$FAILED) {
                                  s4 = [
                                    s4,
                                    s5
                                  ];
                                  s3 = s4;
                                } else {
                                  peg$currPos = s3;
                                  s3 = peg$FAILED;
                                }
                                if (s3 === peg$FAILED) {
                                  s3 = null;
                                }
                                s4 = peg$parse_();
                                if (input.substr(peg$currPos, 2) === peg$c29) {
                                  s5 = peg$c29;
                                  peg$currPos += 2;
                                } else {
                                  s5 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e58);
                                  }
                                }
                                if (s5 !== peg$FAILED) {
                                  peg$savedPos = peg$currPos;
                                  s6 = peg$f1025();
                                  if (s6) {
                                    s6 = void 0;
                                  } else {
                                    s6 = peg$FAILED;
                                  }
                                  if (s6 !== peg$FAILED) {
                                    peg$savedPos = s0;
                                    s0 = peg$f1026();
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                            if (s0 === peg$FAILED) {
                              s0 = peg$currPos;
                              s1 = peg$parseDirectiveContext();
                              if (s1 !== peg$FAILED) {
                                s2 = peg$parseShowKeyword();
                                if (s2 !== peg$FAILED) {
                                  s3 = peg$currPos;
                                  s4 = peg$parseHWS();
                                  s5 = peg$parseDataLabelList();
                                  if (s5 !== peg$FAILED) {
                                    s4 = [
                                      s4,
                                      s5
                                    ];
                                    s3 = s4;
                                  } else {
                                    peg$currPos = s3;
                                    s3 = peg$FAILED;
                                  }
                                  if (s3 === peg$FAILED) {
                                    s3 = null;
                                  }
                                  s4 = peg$parse_();
                                  if (input.charCodeAt(peg$currPos) === 60) {
                                    s5 = peg$c35;
                                    peg$currPos++;
                                  } else {
                                    s5 = peg$FAILED;
                                    if (peg$silentFails === 0) {
                                      peg$fail(peg$e71);
                                    }
                                  }
                                  if (s5 !== peg$FAILED) {
                                    peg$savedPos = peg$currPos;
                                    s6 = peg$f1027();
                                    if (s6) {
                                      s6 = void 0;
                                    } else {
                                      s6 = peg$FAILED;
                                    }
                                    if (s6 !== peg$FAILED) {
                                      peg$savedPos = s0;
                                      s0 = peg$f1028();
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                              if (s0 === peg$FAILED) {
                                s0 = peg$currPos;
                                s1 = peg$parseDirectiveContext();
                                if (s1 !== peg$FAILED) {
                                  s2 = peg$parseShowKeyword();
                                  if (s2 !== peg$FAILED) {
                                    s3 = peg$currPos;
                                    s4 = peg$parseHWS();
                                    s5 = peg$parseDataLabelList();
                                    if (s5 !== peg$FAILED) {
                                      s4 = [
                                        s4,
                                        s5
                                      ];
                                      s3 = s4;
                                    } else {
                                      peg$currPos = s3;
                                      s3 = peg$FAILED;
                                    }
                                    if (s3 === peg$FAILED) {
                                      s3 = null;
                                    }
                                    s4 = peg$parse_();
                                    if (input.charCodeAt(peg$currPos) === 64) {
                                      s5 = peg$c68;
                                      peg$currPos++;
                                    } else {
                                      s5 = peg$FAILED;
                                      if (peg$silentFails === 0) {
                                        peg$fail(peg$e129);
                                      }
                                    }
                                    if (s5 !== peg$FAILED) {
                                      peg$savedPos = peg$currPos;
                                      s6 = peg$f1029();
                                      if (s6) {
                                        s6 = void 0;
                                      } else {
                                        s6 = peg$FAILED;
                                      }
                                      if (s6 !== peg$FAILED) {
                                        peg$savedPos = s0;
                                        s0 = peg$f1030();
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                                if (s0 === peg$FAILED) {
                                  s0 = peg$currPos;
                                  s1 = peg$parseDirectiveContext();
                                  if (s1 !== peg$FAILED) {
                                    s2 = peg$parseShowKeyword();
                                    if (s2 !== peg$FAILED) {
                                      s3 = peg$currPos;
                                      s4 = peg$parseHWS();
                                      s5 = peg$parseDataLabelList();
                                      if (s5 !== peg$FAILED) {
                                        s4 = [
                                          s4,
                                          s5
                                        ];
                                        s3 = s4;
                                      } else {
                                        peg$currPos = s3;
                                        s3 = peg$FAILED;
                                      }
                                      if (s3 === peg$FAILED) {
                                        s3 = null;
                                      }
                                      s4 = peg$parse_();
                                      if (input.charCodeAt(peg$currPos) === 96) {
                                        s5 = peg$c36;
                                        peg$currPos++;
                                      } else {
                                        s5 = peg$FAILED;
                                        if (peg$silentFails === 0) {
                                          peg$fail(peg$e81);
                                        }
                                      }
                                      if (s5 !== peg$FAILED) {
                                        peg$savedPos = peg$currPos;
                                        s6 = peg$f1031();
                                        if (s6) {
                                          s6 = void 0;
                                        } else {
                                          s6 = peg$FAILED;
                                        }
                                        if (s6 !== peg$FAILED) {
                                          peg$savedPos = s0;
                                          s0 = peg$f1032();
                                        } else {
                                          peg$currPos = s0;
                                          s0 = peg$FAILED;
                                        }
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                  } else {
                                    peg$currPos = s0;
                                    s0 = peg$FAILED;
                                  }
                                  if (s0 === peg$FAILED) {
                                    s0 = peg$currPos;
                                    s1 = peg$parseDirectiveContext();
                                    if (s1 !== peg$FAILED) {
                                      s2 = peg$parseShowKeyword();
                                      if (s2 !== peg$FAILED) {
                                        s3 = peg$currPos;
                                        s4 = peg$parseHWS();
                                        s5 = peg$parseDataLabelList();
                                        if (s5 !== peg$FAILED) {
                                          s4 = [
                                            s4,
                                            s5
                                          ];
                                          s3 = s4;
                                        } else {
                                          peg$currPos = s3;
                                          s3 = peg$FAILED;
                                        }
                                        if (s3 === peg$FAILED) {
                                          s3 = null;
                                        }
                                        s4 = peg$parse_();
                                        if (input.substr(peg$currPos, 2) === peg$c3) {
                                          s5 = peg$c3;
                                          peg$currPos += 2;
                                        } else {
                                          s5 = peg$FAILED;
                                          if (peg$silentFails === 0) {
                                            peg$fail(peg$e5);
                                          }
                                        }
                                        if (s5 !== peg$FAILED) {
                                          peg$savedPos = peg$currPos;
                                          s6 = peg$f1033();
                                          if (s6) {
                                            s6 = void 0;
                                          } else {
                                            s6 = peg$FAILED;
                                          }
                                          if (s6 !== peg$FAILED) {
                                            peg$savedPos = s0;
                                            s0 = peg$f1034();
                                          } else {
                                            peg$currPos = s0;
                                            s0 = peg$FAILED;
                                          }
                                        } else {
                                          peg$currPos = s0;
                                          s0 = peg$FAILED;
                                        }
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                    } else {
                                      peg$currPos = s0;
                                      s0 = peg$FAILED;
                                    }
                                    if (s0 === peg$FAILED) {
                                      s0 = peg$currPos;
                                      s1 = peg$parseDirectiveContext();
                                      if (s1 !== peg$FAILED) {
                                        s2 = peg$parseShowKeyword();
                                        if (s2 !== peg$FAILED) {
                                          s3 = peg$currPos;
                                          s4 = peg$parseHWS();
                                          s5 = peg$parseDataLabelList();
                                          if (s5 !== peg$FAILED) {
                                            s4 = [
                                              s4,
                                              s5
                                            ];
                                            s3 = s4;
                                          } else {
                                            peg$currPos = s3;
                                            s3 = peg$FAILED;
                                          }
                                          if (s3 === peg$FAILED) {
                                            s3 = null;
                                          }
                                          s4 = peg$parse_();
                                          s5 = peg$currPos;
                                          peg$silentFails++;
                                          s6 = peg$parseLineTerminator();
                                          if (s6 === peg$FAILED) {
                                            s6 = peg$parseEOF();
                                          }
                                          peg$silentFails--;
                                          if (s6 !== peg$FAILED) {
                                            peg$currPos = s5;
                                            s5 = void 0;
                                          } else {
                                            s5 = peg$FAILED;
                                          }
                                          if (s5 !== peg$FAILED) {
                                            peg$savedPos = s0;
                                            s0 = peg$f1035();
                                          } else {
                                            peg$currPos = s0;
                                            s0 = peg$FAILED;
                                          }
                                        } else {
                                          peg$currPos = s0;
                                          s0 = peg$FAILED;
                                        }
                                      } else {
                                        peg$currPos = s0;
                                        s0 = peg$FAILED;
                                      }
                                      if (s0 === peg$FAILED) {
                                        s0 = peg$currPos;
                                        s1 = peg$parseDirectiveContext();
                                        if (s1 !== peg$FAILED) {
                                          s2 = peg$parseShowKeyword();
                                          if (s2 !== peg$FAILED) {
                                            s3 = peg$currPos;
                                            s4 = peg$parseHWS();
                                            s5 = peg$parseDataLabelList();
                                            if (s5 !== peg$FAILED) {
                                              s4 = [
                                                s4,
                                                s5
                                              ];
                                              s3 = s4;
                                            } else {
                                              peg$currPos = s3;
                                              s3 = peg$FAILED;
                                            }
                                            if (s3 === peg$FAILED) {
                                              s3 = null;
                                            }
                                            s4 = peg$parse_();
                                            if (input.substr(peg$currPos, 7) === peg$c121) {
                                              s5 = peg$c121;
                                              peg$currPos += 7;
                                            } else {
                                              s5 = peg$FAILED;
                                              if (peg$silentFails === 0) {
                                                peg$fail(peg$e332);
                                              }
                                            }
                                            if (s5 !== peg$FAILED) {
                                              s6 = peg$parse_();
                                              peg$savedPos = peg$currPos;
                                              s7 = peg$f1036();
                                              if (s7) {
                                                s7 = void 0;
                                              } else {
                                                s7 = peg$FAILED;
                                              }
                                              if (s7 !== peg$FAILED) {
                                                peg$savedPos = s0;
                                                s0 = peg$f1037();
                                              } else {
                                                peg$currPos = s0;
                                                s0 = peg$FAILED;
                                              }
                                            } else {
                                              peg$currPos = s0;
                                              s0 = peg$FAILED;
                                            }
                                          } else {
                                            peg$currPos = s0;
                                            s0 = peg$FAILED;
                                          }
                                        } else {
                                          peg$currPos = s0;
                                          s0 = peg$FAILED;
                                        }
                                        if (s0 === peg$FAILED) {
                                          s0 = peg$currPos;
                                          s1 = peg$parseDirectiveContext();
                                          if (s1 !== peg$FAILED) {
                                            s2 = peg$parseShowKeyword();
                                            if (s2 !== peg$FAILED) {
                                              peg$savedPos = s0;
                                              s0 = peg$f1038();
                                            } else {
                                              peg$currPos = s0;
                                              s0 = peg$FAILED;
                                            }
                                          } else {
                                            peg$currPos = s0;
                                            s0 = peg$FAILED;
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashShow, "peg$parseSlashShow");
  function peg$parseAddDirectiveRef() {
    var s0, s1, s3, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseRHSContext();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseAlligatorExpression();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1039(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseRHSContext();
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseUnifiedDoubleQuote();
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1040(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseRHSContext();
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$currPos;
          s4 = [];
          s5 = input.charAt(peg$currPos);
          if (peg$r22.test(s5)) {
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e185);
            }
          }
          while (s5 !== peg$FAILED) {
            s4.push(s5);
            s5 = input.charAt(peg$currPos);
            if (peg$r22.test(s5)) {
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e185);
              }
            }
          }
          s3 = input.substring(s3, peg$currPos);
          peg$savedPos = s0;
          s0 = peg$f1041(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseAddDirectiveRef, "peg$parseAddDirectiveRef");
  function peg$parseQuotedContent() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = [];
      s4 = peg$currPos;
      s5 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s6 = peg$c8;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      peg$silentFails--;
      if (s6 === peg$FAILED) {
        s5 = void 0;
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      if (s5 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s6 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c8;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      }
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1042(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s6 = peg$c7;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c7;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e22);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1043(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedContent, "peg$parseQuotedContent");
  function peg$parseHeaderLevel() {
    var s0, s2, s4, s5;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s2 = peg$c100;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = [];
      if (input.charCodeAt(peg$currPos) === 35) {
        s5 = peg$c38;
        peg$currPos++;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e87);
        }
      }
      if (s5 !== peg$FAILED) {
        while (s5 !== peg$FAILED) {
          s4.push(s5);
          if (input.charCodeAt(peg$currPos) === 35) {
            s5 = peg$c38;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e87);
            }
          }
        }
      } else {
        s4 = peg$FAILED;
      }
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1044(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseHeaderLevel, "peg$parseHeaderLevel");
  function peg$parseUnderHeader() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 5) === peg$c215) {
      s2 = peg$c215;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e544);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseTextUntilNewline();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1045(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseUnderHeader, "peg$parseUnderHeader");
  function peg$parseAsNewTitle() {
    var s0, s2, s4;
    s0 = peg$currPos;
    peg$parse_();
    if (input.substr(peg$currPos, 2) === peg$c100) {
      s2 = peg$c100;
      peg$currPos += 2;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e219);
      }
    }
    if (s2 !== peg$FAILED) {
      peg$parse_();
      s4 = peg$parseLiteralContent();
      if (s4 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1046(s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseAsNewTitle, "peg$parseAsNewTitle");
  function peg$parseQuotedStringContent() {
    var s0, s1, s2, s3, s4, s5, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 34) {
      s1 = peg$c8;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e23);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$currPos;
      s3 = [];
      s4 = peg$currPos;
      s5 = peg$currPos;
      peg$silentFails++;
      if (input.charCodeAt(peg$currPos) === 34) {
        s6 = peg$c8;
        peg$currPos++;
      } else {
        s6 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      peg$silentFails--;
      if (s6 === peg$FAILED) {
        s5 = void 0;
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      if (s5 !== peg$FAILED) {
        if (input.length > peg$currPos) {
          s6 = input.charAt(peg$currPos);
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e6);
          }
        }
        if (s6 !== peg$FAILED) {
          s5 = [
            s5,
            s6
          ];
          s4 = s5;
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      } else {
        peg$currPos = s4;
        s4 = peg$FAILED;
      }
      while (s4 !== peg$FAILED) {
        s3.push(s4);
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 34) {
          s6 = peg$c8;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e23);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
      }
      s2 = input.substring(s2, peg$currPos);
      if (input.charCodeAt(peg$currPos) === 34) {
        s3 = peg$c8;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e23);
        }
      }
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1047(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 39) {
        s1 = peg$c7;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e22);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        s3 = [];
        s4 = peg$currPos;
        s5 = peg$currPos;
        peg$silentFails++;
        if (input.charCodeAt(peg$currPos) === 39) {
          s6 = peg$c7;
          peg$currPos++;
        } else {
          s6 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        peg$silentFails--;
        if (s6 === peg$FAILED) {
          s5 = void 0;
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
        if (s5 !== peg$FAILED) {
          if (input.length > peg$currPos) {
            s6 = input.charAt(peg$currPos);
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e6);
            }
          }
          if (s6 !== peg$FAILED) {
            s5 = [
              s5,
              s6
            ];
            s4 = s5;
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        while (s4 !== peg$FAILED) {
          s3.push(s4);
          s4 = peg$currPos;
          s5 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 39) {
            s6 = peg$c7;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e22);
            }
          }
          peg$silentFails--;
          if (s6 === peg$FAILED) {
            s5 = void 0;
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
          if (s5 !== peg$FAILED) {
            if (input.length > peg$currPos) {
              s6 = input.charAt(peg$currPos);
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e6);
              }
            }
            if (s6 !== peg$FAILED) {
              s5 = [
                s5,
                s6
              ];
              s4 = s5;
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        }
        s2 = input.substring(s2, peg$currPos);
        if (input.charCodeAt(peg$currPos) === 39) {
          s3 = peg$c7;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e22);
          }
        }
        if (s3 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1048(s2);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseQuotedStringContent, "peg$parseQuotedStringContent");
  function peg$parseStreamDirectiveKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 6) === peg$c54) {
      s2 = peg$c54;
      peg$currPos += 6;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e113);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseStreamDirectiveKeyword, "peg$parseStreamDirectiveKeyword");
  function peg$parseSlashStream() {
    var s0, s1, s2, s4, s5;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseStreamDirectiveKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseUnifiedReferenceWithTail();
        if (s4 !== peg$FAILED) {
          s5 = peg$parseStandardDirectiveEnding();
          peg$savedPos = s0;
          s0 = peg$f1049(s4, s5);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseSlashStream, "peg$parseSlashStream");
  function peg$parseVarKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 3) === peg$c88) {
      s2 = peg$c88;
      peg$currPos += 3;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e196);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseVarKeyword, "peg$parseVarKeyword");
  function peg$parseSlashVar() {
    var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseVarKeyword();
      if (s2 !== peg$FAILED) {
        s3 = peg$currPos;
        s4 = peg$parseHWS();
        s5 = peg$parseDataLabelList();
        if (s5 !== peg$FAILED) {
          s6 = peg$parseHWS();
          s7 = peg$currPos;
          peg$silentFails++;
          if (input.charCodeAt(peg$currPos) === 64) {
            s8 = peg$c68;
            peg$currPos++;
          } else {
            s8 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          peg$silentFails--;
          if (s8 !== peg$FAILED) {
            peg$currPos = s7;
            s7 = void 0;
          } else {
            s7 = peg$FAILED;
          }
          if (s7 !== peg$FAILED) {
            s4 = [
              s4,
              s5,
              s6,
              s7
            ];
            s3 = s4;
          } else {
            peg$currPos = s3;
            s3 = peg$FAILED;
          }
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        s4 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 64) {
          s5 = peg$c68;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseBaseIdentifier();
          if (s6 !== peg$FAILED) {
            s7 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s8 = peg$c65;
              peg$currPos++;
            } else {
              s8 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s8 !== peg$FAILED) {
              s9 = peg$parse_();
              s10 = peg$parseVarRHSContent();
              if (s10 !== peg$FAILED) {
                s11 = peg$parseSecuredDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f1050(s3, s6, s10, s11);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseVarKeyword();
        if (s2 !== peg$FAILED) {
          s3 = peg$parse_();
          if (input.charCodeAt(peg$currPos) === 64) {
            s4 = peg$c68;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e129);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parseBaseIdentifier();
            if (s5 !== peg$FAILED) {
              s6 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 61) {
                s7 = peg$c65;
                peg$currPos++;
              } else {
                s7 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e124);
                }
              }
              if (s7 !== peg$FAILED) {
                s8 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s9 = peg$c68;
                  peg$currPos++;
                } else {
                  s9 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s9 !== peg$FAILED) {
                  s10 = peg$parseBaseIdentifier();
                  if (s10 !== peg$FAILED) {
                    s11 = peg$parse_();
                    if (input.substr(peg$currPos, 2) === peg$c127) {
                      s12 = peg$c127;
                      peg$currPos += 2;
                    } else {
                      s12 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e350);
                      }
                    }
                    if (s12 !== peg$FAILED) {
                      peg$parse_();
                      peg$savedPos = s0;
                      s0 = peg$f1051(s5, s10);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseVarKeyword();
          if (s2 !== peg$FAILED) {
            s3 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 64) {
              s4 = peg$c68;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parseBaseIdentifier();
              if (s5 !== peg$FAILED) {
                s6 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 61) {
                  s7 = peg$c65;
                  peg$currPos++;
                } else {
                  s7 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e124);
                  }
                }
                if (s7 !== peg$FAILED) {
                  s8 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 91) {
                    s9 = peg$c71;
                    peg$currPos++;
                  } else {
                    s9 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e132);
                    }
                  }
                  if (s9 !== peg$FAILED) {
                    peg$savedPos = peg$currPos;
                    s10 = peg$f1052(s5);
                    if (s10) {
                      s10 = void 0;
                    } else {
                      s10 = peg$FAILED;
                    }
                    if (s10 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f1053(s5);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseVarKeyword();
            if (s2 !== peg$FAILED) {
              s3 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 64) {
                s4 = peg$c68;
                peg$currPos++;
              } else {
                s4 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e129);
                }
              }
              if (s4 !== peg$FAILED) {
                s5 = peg$parseBaseIdentifier();
                if (s5 !== peg$FAILED) {
                  s6 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 61) {
                    s7 = peg$c65;
                    peg$currPos++;
                  } else {
                    s7 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e124);
                    }
                  }
                  if (s7 !== peg$FAILED) {
                    s8 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 123) {
                      s9 = peg$c84;
                      peg$currPos++;
                    } else {
                      s9 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e188);
                      }
                    }
                    if (s9 !== peg$FAILED) {
                      peg$savedPos = peg$currPos;
                      s10 = peg$f1054(s5);
                      if (s10) {
                        s10 = void 0;
                      } else {
                        s10 = peg$FAILED;
                      }
                      if (s10 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f1055(s5);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseVarKeyword();
              if (s2 !== peg$FAILED) {
                s3 = peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s4 = peg$c68;
                  peg$currPos++;
                } else {
                  s4 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s4 !== peg$FAILED) {
                  s5 = peg$parseBaseIdentifier();
                  if (s5 !== peg$FAILED) {
                    s6 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 61) {
                      s7 = peg$c65;
                      peg$currPos++;
                    } else {
                      s7 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e124);
                      }
                    }
                    if (s7 !== peg$FAILED) {
                      s8 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 34) {
                        s9 = peg$c8;
                        peg$currPos++;
                      } else {
                        s9 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e23);
                        }
                      }
                      if (s9 !== peg$FAILED) {
                        peg$savedPos = peg$currPos;
                        s10 = peg$f1056(s5);
                        if (s10) {
                          s10 = void 0;
                        } else {
                          s10 = peg$FAILED;
                        }
                        if (s10 !== peg$FAILED) {
                          peg$savedPos = s0;
                          s0 = peg$f1057(s5);
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseDirectiveContext();
              if (s1 !== peg$FAILED) {
                s2 = peg$parseVarKeyword();
                if (s2 !== peg$FAILED) {
                  s3 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 64) {
                    s4 = peg$c68;
                    peg$currPos++;
                  } else {
                    s4 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e129);
                    }
                  }
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parseBaseIdentifier();
                    if (s5 !== peg$FAILED) {
                      s6 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 61) {
                        s7 = peg$c65;
                        peg$currPos++;
                      } else {
                        s7 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e124);
                        }
                      }
                      if (s7 !== peg$FAILED) {
                        s8 = peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 39) {
                          s9 = peg$c7;
                          peg$currPos++;
                        } else {
                          s9 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e22);
                          }
                        }
                        if (s9 !== peg$FAILED) {
                          peg$savedPos = peg$currPos;
                          s10 = peg$f1058(s5);
                          if (s10) {
                            s10 = void 0;
                          } else {
                            s10 = peg$FAILED;
                          }
                          if (s10 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f1059(s5);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseVarKeyword();
                  if (s2 !== peg$FAILED) {
                    s3 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 64) {
                      s4 = peg$c68;
                      peg$currPos++;
                    } else {
                      s4 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e129);
                      }
                    }
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parseBaseIdentifier();
                      if (s5 !== peg$FAILED) {
                        s6 = peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 61) {
                          s7 = peg$c65;
                          peg$currPos++;
                        } else {
                          s7 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e124);
                          }
                        }
                        if (s7 !== peg$FAILED) {
                          s8 = peg$parse_();
                          if (input.substr(peg$currPos, 2) === peg$c3) {
                            s9 = peg$c3;
                            peg$currPos += 2;
                          } else {
                            s9 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e5);
                            }
                          }
                          if (s9 !== peg$FAILED) {
                            peg$savedPos = peg$currPos;
                            s10 = peg$f1060(s5);
                            if (s10) {
                              s10 = void 0;
                            } else {
                              s10 = peg$FAILED;
                            }
                            if (s10 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1061(s5);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseVarKeyword();
                    if (s2 !== peg$FAILED) {
                      s3 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 64) {
                        s4 = peg$c68;
                        peg$currPos++;
                      } else {
                        s4 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e129);
                        }
                      }
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parseBaseIdentifier();
                        if (s5 !== peg$FAILED) {
                          s6 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 61) {
                            s7 = peg$c65;
                            peg$currPos++;
                          } else {
                            s7 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e124);
                            }
                          }
                          if (s7 !== peg$FAILED) {
                            s8 = peg$parse_();
                            s9 = peg$currPos;
                            peg$silentFails++;
                            s10 = peg$parseLineTerminator();
                            if (s10 === peg$FAILED) {
                              s10 = peg$parseEOF();
                            }
                            peg$silentFails--;
                            if (s10 !== peg$FAILED) {
                              peg$currPos = s9;
                              s9 = void 0;
                            } else {
                              s9 = peg$FAILED;
                            }
                            if (s9 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1062(s5);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseVarKeyword();
                      if (s2 !== peg$FAILED) {
                        s3 = peg$parse_();
                        if (input.charCodeAt(peg$currPos) === 64) {
                          s4 = peg$c68;
                          peg$currPos++;
                        } else {
                          s4 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e129);
                          }
                        }
                        if (s4 !== peg$FAILED) {
                          s5 = peg$parseBaseIdentifier();
                          if (s5 !== peg$FAILED) {
                            s6 = peg$parse_();
                            peg$savedPos = peg$currPos;
                            s7 = peg$f1063(s5);
                            if (s7) {
                              s7 = void 0;
                            } else {
                              s7 = peg$FAILED;
                            }
                            if (s7 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1064(s5);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseVarKeyword();
                        if (s2 !== peg$FAILED) {
                          s3 = peg$parse_();
                          s4 = peg$parseBaseIdentifier();
                          if (s4 !== peg$FAILED) {
                            s5 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 61) {
                              s6 = peg$c65;
                              peg$currPos++;
                            } else {
                              s6 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e124);
                              }
                            }
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1065(s4);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseVarKeyword();
                          if (s2 !== peg$FAILED) {
                            s3 = peg$parse_();
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s4 = peg$c68;
                              peg$currPos++;
                            } else {
                              s4 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e129);
                              }
                            }
                            if (s4 !== peg$FAILED) {
                              s5 = peg$parse_();
                              peg$savedPos = peg$currPos;
                              s6 = peg$f1066();
                              if (s6) {
                                s6 = void 0;
                              } else {
                                s6 = peg$FAILED;
                              }
                              if (s6 !== peg$FAILED) {
                                peg$savedPos = s0;
                                s0 = peg$f1067();
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseVarKeyword();
                            if (s2 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1068();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e545);
      }
    }
    return s0;
  }
  __name(peg$parseSlashVar, "peg$parseSlashVar");
  function peg$parseWhenKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 4) === peg$c115) {
      s2 = peg$c115;
      peg$currPos += 4;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e318);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenKeyword, "peg$parseWhenKeyword");
  function peg$parseSlashWhen() {
    var s0, s1, s2, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
    s0 = peg$parseWhenMatchForm();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenSimpleForm();
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseWhenKeyword();
          if (s2 !== peg$FAILED) {
            peg$parse_();
            s4 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 64) {
              s5 = peg$c68;
              peg$currPos++;
            } else {
              s5 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e129);
              }
            }
            if (s5 !== peg$FAILED) {
              s6 = peg$parseBaseIdentifier();
              if (s6 !== peg$FAILED) {
                peg$savedPos = s4;
                s4 = peg$f1069(s6);
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
            } else {
              peg$currPos = s4;
              s4 = peg$FAILED;
            }
            if (s4 === peg$FAILED) {
              s4 = null;
            }
            s5 = peg$parse_();
            if (input.substr(peg$currPos, 3) === peg$c216) {
              s6 = peg$c216;
              peg$currPos += 3;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e546);
              }
            }
            if (s6 !== peg$FAILED) {
              s7 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 58) {
                s8 = peg$c56;
                peg$currPos++;
              } else {
                s8 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e115);
                }
              }
              if (s8 === peg$FAILED) {
                s8 = null;
              }
              s9 = peg$parse_();
              if (input.charCodeAt(peg$currPos) === 91) {
                s10 = peg$c71;
                peg$currPos++;
              } else {
                s10 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e132);
                }
              }
              if (s10 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f1070(s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$parseWhenBareBlockForm();
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseDirectiveContext();
            if (s1 !== peg$FAILED) {
              s2 = peg$parseWhenKeyword();
              if (s2 !== peg$FAILED) {
                peg$parse_();
                s4 = peg$parseWhenModifier();
                if (s4 !== peg$FAILED) {
                  s5 = peg$parse_();
                  if (input.charCodeAt(peg$currPos) === 58) {
                    s6 = peg$c56;
                    peg$currPos++;
                  } else {
                    s6 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e115);
                    }
                  }
                  if (s6 === peg$FAILED) {
                    s6 = null;
                  }
                  s7 = peg$parse_();
                  s8 = peg$parseWhenConditionBlock();
                  if (s8 !== peg$FAILED) {
                    s9 = peg$parse_();
                    s10 = peg$currPos;
                    if (input.substr(peg$currPos, 2) === peg$c114) {
                      s11 = peg$c114;
                      peg$currPos += 2;
                    } else {
                      s11 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e314);
                      }
                    }
                    if (s11 !== peg$FAILED) {
                      s12 = peg$parse_();
                      s13 = peg$parseWhenAction();
                      if (s13 !== peg$FAILED) {
                        peg$savedPos = s10;
                        s10 = peg$f1071(s4, s8, s13);
                      } else {
                        peg$currPos = s10;
                        s10 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s10;
                      s10 = peg$FAILED;
                    }
                    if (s10 === peg$FAILED) {
                      s10 = null;
                    }
                    peg$savedPos = s0;
                    s0 = peg$f1072(s4, s8, s10);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$parseWhenBlockForm();
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                s1 = peg$parseDirectiveContext();
                if (s1 !== peg$FAILED) {
                  s2 = peg$parseWhenKeyword();
                  if (s2 !== peg$FAILED) {
                    peg$parse_();
                    s4 = peg$parseWhenSimpleCondition();
                    if (s4 !== peg$FAILED) {
                      s5 = peg$parse_();
                      s6 = peg$currPos;
                      peg$silentFails++;
                      if (input.substr(peg$currPos, 2) === peg$c114) {
                        s7 = peg$c114;
                        peg$currPos += 2;
                      } else {
                        s7 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e314);
                        }
                      }
                      peg$silentFails--;
                      if (s7 === peg$FAILED) {
                        s6 = void 0;
                      } else {
                        peg$currPos = s6;
                        s6 = peg$FAILED;
                      }
                      if (s6 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f1073(s4);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  s1 = peg$parseDirectiveContext();
                  if (s1 !== peg$FAILED) {
                    s2 = peg$parseWhenKeyword();
                    if (s2 !== peg$FAILED) {
                      peg$parse_();
                      s4 = peg$parseWhenSimpleCondition();
                      if (s4 !== peg$FAILED) {
                        s5 = peg$parse_();
                        if (input.substr(peg$currPos, 2) === peg$c114) {
                          s6 = peg$c114;
                          peg$currPos += 2;
                        } else {
                          s6 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e314);
                          }
                        }
                        if (s6 !== peg$FAILED) {
                          s7 = peg$parse_();
                          s8 = peg$currPos;
                          peg$silentFails++;
                          if (input.length > peg$currPos) {
                            s9 = input.charAt(peg$currPos);
                            peg$currPos++;
                          } else {
                            s9 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e6);
                            }
                          }
                          peg$silentFails--;
                          if (s9 === peg$FAILED) {
                            s8 = void 0;
                          } else {
                            peg$currPos = s8;
                            s8 = peg$FAILED;
                          }
                          if (s8 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f1074(s4);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    s1 = peg$parseDirectiveContext();
                    if (s1 !== peg$FAILED) {
                      s2 = peg$parseWhenKeyword();
                      if (s2 !== peg$FAILED) {
                        peg$parse_();
                        s4 = peg$currPos;
                        if (input.charCodeAt(peg$currPos) === 64) {
                          s5 = peg$c68;
                          peg$currPos++;
                        } else {
                          s5 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e129);
                          }
                        }
                        if (s5 !== peg$FAILED) {
                          s6 = peg$parseBaseIdentifier();
                          if (s6 !== peg$FAILED) {
                            peg$savedPos = s4;
                            s4 = peg$f1075(s6);
                          } else {
                            peg$currPos = s4;
                            s4 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s4;
                          s4 = peg$FAILED;
                        }
                        if (s4 === peg$FAILED) {
                          s4 = null;
                        }
                        s5 = peg$parse_();
                        if (input.substr(peg$currPos, 3) === peg$c217) {
                          s6 = peg$c217;
                          peg$currPos += 3;
                        } else {
                          s6 = peg$FAILED;
                          if (peg$silentFails === 0) {
                            peg$fail(peg$e547);
                          }
                        }
                        if (s6 !== peg$FAILED) {
                          s7 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 58) {
                            s8 = peg$c56;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e115);
                            }
                          }
                          if (s8 === peg$FAILED) {
                            s8 = null;
                          }
                          s9 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 91) {
                            s10 = peg$c71;
                            peg$currPos++;
                          } else {
                            s10 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e132);
                            }
                          }
                          if (s10 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f1076(s4);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                    if (s0 === peg$FAILED) {
                      s0 = peg$currPos;
                      s1 = peg$parseDirectiveContext();
                      if (s1 !== peg$FAILED) {
                        s2 = peg$parseWhenKeyword();
                        if (s2 !== peg$FAILED) {
                          peg$parse_();
                          s4 = peg$currPos;
                          if (input.charCodeAt(peg$currPos) === 64) {
                            s5 = peg$c68;
                            peg$currPos++;
                          } else {
                            s5 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e129);
                            }
                          }
                          if (s5 !== peg$FAILED) {
                            s6 = peg$parseBaseIdentifier();
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = s4;
                              s4 = peg$f1077(s6);
                            } else {
                              peg$currPos = s4;
                              s4 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s4;
                            s4 = peg$FAILED;
                          }
                          if (s4 === peg$FAILED) {
                            s4 = null;
                          }
                          s5 = peg$parse_();
                          s6 = peg$parseWhenModifier();
                          if (s6 === peg$FAILED) {
                            s6 = null;
                          }
                          s7 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 58) {
                            s8 = peg$c56;
                            peg$currPos++;
                          } else {
                            s8 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e115);
                            }
                          }
                          if (s8 === peg$FAILED) {
                            s8 = null;
                          }
                          s9 = peg$parse_();
                          if (input.charCodeAt(peg$currPos) === 91) {
                            s10 = peg$c71;
                            peg$currPos++;
                          } else {
                            s10 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e132);
                            }
                          }
                          if (s10 !== peg$FAILED) {
                            s11 = peg$parse_();
                            peg$savedPos = peg$currPos;
                            s12 = peg$f1078(s4, s6);
                            if (s12) {
                              s12 = void 0;
                            } else {
                              s12 = peg$FAILED;
                            }
                            if (s12 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1079(s4, s6);
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                      if (s0 === peg$FAILED) {
                        s0 = peg$currPos;
                        s1 = peg$parseDirectiveContext();
                        if (s1 !== peg$FAILED) {
                          s2 = peg$parseWhenKeyword();
                          if (s2 !== peg$FAILED) {
                            peg$parse_();
                            s4 = peg$currPos;
                            if (input.charCodeAt(peg$currPos) === 64) {
                              s5 = peg$c68;
                              peg$currPos++;
                            } else {
                              s5 = peg$FAILED;
                              if (peg$silentFails === 0) {
                                peg$fail(peg$e129);
                              }
                            }
                            if (s5 !== peg$FAILED) {
                              s6 = peg$parseBaseIdentifier();
                              if (s6 !== peg$FAILED) {
                                peg$savedPos = s4;
                                s4 = peg$f1080(s6);
                              } else {
                                peg$currPos = s4;
                                s4 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s4;
                              s4 = peg$FAILED;
                            }
                            if (s4 === peg$FAILED) {
                              s4 = null;
                            }
                            s5 = peg$parse_();
                            s6 = peg$parseBaseIdentifier();
                            if (s6 !== peg$FAILED) {
                              peg$savedPos = peg$currPos;
                              s7 = peg$f1081(s4, s6);
                              if (s7) {
                                s7 = void 0;
                              } else {
                                s7 = peg$FAILED;
                              }
                              if (s7 !== peg$FAILED) {
                                s8 = peg$parse_();
                                if (input.charCodeAt(peg$currPos) === 58) {
                                  s9 = peg$c56;
                                  peg$currPos++;
                                } else {
                                  s9 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e115);
                                  }
                                }
                                if (s9 === peg$FAILED) {
                                  s9 = null;
                                }
                                s10 = peg$parse_();
                                if (input.charCodeAt(peg$currPos) === 91) {
                                  s11 = peg$c71;
                                  peg$currPos++;
                                } else {
                                  s11 = peg$FAILED;
                                  if (peg$silentFails === 0) {
                                    peg$fail(peg$e132);
                                  }
                                }
                                if (s11 !== peg$FAILED) {
                                  peg$savedPos = s0;
                                  s0 = peg$f1082(s4, s6);
                                } else {
                                  peg$currPos = s0;
                                  s0 = peg$FAILED;
                                }
                              } else {
                                peg$currPos = s0;
                                s0 = peg$FAILED;
                              }
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                        if (s0 === peg$FAILED) {
                          s0 = peg$currPos;
                          s1 = peg$parseDirectiveContext();
                          if (s1 !== peg$FAILED) {
                            s2 = peg$parseWhenKeyword();
                            if (s2 !== peg$FAILED) {
                              peg$savedPos = s0;
                              s0 = peg$f1083();
                            } else {
                              peg$currPos = s0;
                              s0 = peg$FAILED;
                            }
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseSlashWhen, "peg$parseSlashWhen");
  function peg$parseWhenSimpleForm() {
    var s0, s1, s2, s4, s6, s8, s9;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWhenKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWhenSimpleCondition();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.substr(peg$currPos, 2) === peg$c114) {
            s6 = peg$c114;
            peg$currPos += 2;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e314);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseWhenAction();
            if (s8 !== peg$FAILED) {
              s9 = peg$parseInlineComment();
              if (s9 === peg$FAILED) {
                s9 = null;
              }
              peg$savedPos = s0;
              s0 = peg$f1084(s4, s8, s9);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenSimpleForm, "peg$parseWhenSimpleForm");
  function peg$parseWhenMatchForm() {
    var s0, s1, s2, s4, s6, s8;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWhenKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWhenConditionExpression();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 58) {
            s6 = peg$c56;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e115);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseWhenConditionBlock();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1085(s4, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenMatchForm, "peg$parseWhenMatchForm");
  function peg$parseWhenBlockForm() {
    var s0, s1, s2, s4, s5, s6, s10, s12, s13, s15;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWhenKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 64) {
          s5 = peg$c68;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e129);
          }
        }
        if (s5 !== peg$FAILED) {
          s6 = peg$parseBaseIdentifier();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s4;
            s4 = peg$f1086(s6);
          } else {
            peg$currPos = s4;
            s4 = peg$FAILED;
          }
        } else {
          peg$currPos = s4;
          s4 = peg$FAILED;
        }
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        s5 = peg$parse_();
        s6 = peg$parseWhenModifier();
        if (s6 === peg$FAILED) {
          s6 = null;
        }
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 58) {
          peg$currPos++;
        } else {
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        peg$parse_();
        s10 = peg$parseWhenConditionBlock();
        if (s10 !== peg$FAILED) {
          peg$parse_();
          s12 = peg$currPos;
          if (input.substr(peg$currPos, 2) === peg$c114) {
            s13 = peg$c114;
            peg$currPos += 2;
          } else {
            s13 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e314);
            }
          }
          if (s13 !== peg$FAILED) {
            peg$parse_();
            s15 = peg$parseWhenAction();
            if (s15 !== peg$FAILED) {
              peg$savedPos = s12;
              s12 = peg$f1087(s4, s6, s10, s15);
            } else {
              peg$currPos = s12;
              s12 = peg$FAILED;
            }
          } else {
            peg$currPos = s12;
            s12 = peg$FAILED;
          }
          if (s12 === peg$FAILED) {
            s12 = null;
          }
          peg$savedPos = s0;
          s0 = peg$f1088(s4, s6, s10, s12);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBlockForm, "peg$parseWhenBlockForm");
  function peg$parseWhenBareBlockForm() {
    var s0, s1, s2, s4;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWhenKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        s4 = peg$parseWhenConditionBlock();
        if (s4 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1089(s4);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenBareBlockForm, "peg$parseWhenBareBlockForm");
  function peg$parseWhenModifier() {
    var s0, s1;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c116) {
      s1 = peg$c116;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e319);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1090(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenModifier, "peg$parseWhenModifier");
  function peg$parseWhenSimpleCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionAdapter();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1091(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenSimpleCondition, "peg$parseWhenSimpleCondition");
  function peg$parseNegatedSimpleCondition() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c67;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e128);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNonNegatedSimpleCondition();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1092(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNegatedSimpleCondition, "peg$parseNegatedSimpleCondition");
  function peg$parseNonNegatedSimpleCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1093(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVariableNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1094(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedVariable();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1095();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseBooleanLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f1096(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNullLiteral();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f1097(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseStringLiteral();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f1098(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNonNegatedSimpleCondition, "peg$parseNonNegatedSimpleCondition");
  function peg$parseWhenConditionExpression() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionAdapter();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1099(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$parseNegatedCondition();
      if (s0 === peg$FAILED) {
        s0 = peg$parseNonNegatedCondition();
      }
    }
    return s0;
  }
  __name(peg$parseWhenConditionExpression, "peg$parseWhenConditionExpression");
  function peg$parseNegatedCondition() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 33) {
      s1 = peg$c67;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e128);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseNonNegatedCondition();
      if (s3 !== peg$FAILED) {
        peg$savedPos = s0;
        s0 = peg$f1100(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseNegatedCondition, "peg$parseNegatedCondition");
  function peg$parseNonNegatedCondition() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseUnifiedReferenceWithTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1101(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVariableNoTail();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1102(s1);
      }
      s0 = s1;
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseUnifiedVariable();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1103();
        }
        s0 = s1;
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseBooleanLiteral();
          if (s1 !== peg$FAILED) {
            peg$savedPos = s0;
            s1 = peg$f1104(s1);
          }
          s0 = s1;
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            s1 = peg$parseNullLiteral();
            if (s1 !== peg$FAILED) {
              peg$savedPos = s0;
              s1 = peg$f1105(s1);
            }
            s0 = s1;
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              s1 = peg$parseStringLiteral();
              if (s1 !== peg$FAILED) {
                peg$savedPos = s0;
                s1 = peg$f1106(s1);
              }
              s0 = s1;
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseNonNegatedCondition, "peg$parseNonNegatedCondition");
  function peg$parseWhenConditionBlock() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenConditionList();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1107(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        peg$savedPos = s0;
        s0 = peg$f1108();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          peg$savedPos = peg$currPos;
          s3 = peg$f1109();
          if (s3) {
            s3 = void 0;
          } else {
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f1110();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenConditionBlock, "peg$parseWhenConditionBlock");
  function peg$parseWhenConditionList() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseWhenEntry();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseWhenConditionSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseWhenEntry();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f1111(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseWhenConditionSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseWhenEntry();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f1111(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f1112(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1113();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenConditionList, "peg$parseWhenConditionList");
  function peg$parseWhenEntry() {
    var s0;
    s0 = peg$parseLetAssignment();
    if (s0 === peg$FAILED) {
      s0 = peg$parseAugmentedAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenConditionPair();
      }
    }
    return s0;
  }
  __name(peg$parseWhenEntry, "peg$parseWhenEntry");
  function peg$parseWhenConditionSeparator() {
    var s0, s1, s2, s3;
    s0 = peg$currPos;
    s1 = peg$parse_();
    if (input.charCodeAt(peg$currPos) === 44) {
      s2 = peg$c85;
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e189);
      }
    }
    if (s2 !== peg$FAILED) {
      s3 = peg$parse_();
      peg$savedPos = s0;
      s0 = peg$f1114();
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parse_();
      s2 = [];
      s3 = peg$parseBlockComments();
      if (s3 !== peg$FAILED) {
        while (s3 !== peg$FAILED) {
          s2.push(s3);
          s3 = peg$parseBlockComments();
        }
      } else {
        s2 = peg$FAILED;
      }
      if (s2 !== peg$FAILED) {
        s3 = peg$parse_();
        s1 = [
          s1,
          s2,
          s3
        ];
        s0 = s1;
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parse_();
        if (input.charCodeAt(peg$currPos) === 59) {
          s2 = peg$c125;
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e339);
          }
        }
        if (s2 !== peg$FAILED) {
          s3 = peg$parse_();
          s1 = [
            s1,
            s2,
            s3
          ];
          s0 = s1;
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$parse_();
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenConditionSeparator, "peg$parseWhenConditionSeparator");
  function peg$parseWhenConditionPair() {
    var s0, s1, s3, s4, s6;
    s0 = peg$currPos;
    s1 = peg$parseWhenConditionExpression();
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$currPos;
      if (input.substr(peg$currPos, 2) === peg$c114) {
        s4 = peg$c114;
        peg$currPos += 2;
      } else {
        s4 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e314);
        }
      }
      if (s4 !== peg$FAILED) {
        peg$parse_();
        s6 = peg$parseWhenAction();
        if (s6 !== peg$FAILED) {
          peg$savedPos = s3;
          s3 = peg$f1115(s1, s6);
        } else {
          peg$currPos = s3;
          s3 = peg$FAILED;
        }
      } else {
        peg$currPos = s3;
        s3 = peg$FAILED;
      }
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f1116(s1, s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenConditionPair, "peg$parseWhenConditionPair");
  function peg$parseWhenAction() {
    var s0;
    s0 = peg$parseWhenActionBlock();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenImplicitAction();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenActionDirective();
      }
    }
    return s0;
  }
  __name(peg$parseWhenAction, "peg$parseWhenAction");
  function peg$parseWhenActionBlock() {
    var s0, s1, s3, s5;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 91) {
      s1 = peg$c71;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e132);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenActionBlockContent();
      if (s3 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 93) {
          s5 = peg$c70;
          peg$currPos++;
        } else {
          s5 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e131);
          }
        }
        if (s5 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1117(s3);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.charCodeAt(peg$currPos) === 91) {
        s1 = peg$c71;
        peg$currPos++;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e132);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        peg$savedPos = s0;
        s0 = peg$f1118();
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 91) {
          s1 = peg$c71;
          peg$currPos++;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e132);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          peg$savedPos = peg$currPos;
          s3 = peg$f1119();
          if (s3) {
            s3 = void 0;
          } else {
            s3 = peg$FAILED;
          }
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f1120();
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenActionBlock, "peg$parseWhenActionBlock");
  function peg$parseWhenActionBlockContent() {
    var s0, s1, s2, s3, s4, s5, s6, s7;
    s0 = peg$currPos;
    s1 = [];
    s2 = peg$parseLeadingBlockComment();
    while (s2 !== peg$FAILED) {
      s1.push(s2);
      s2 = peg$parseLeadingBlockComment();
    }
    s2 = peg$parse_();
    s3 = peg$parseWhenBlockAction();
    if (s3 !== peg$FAILED) {
      s4 = [];
      s5 = peg$currPos;
      s6 = peg$parseBlockStatementSeparator();
      if (s6 !== peg$FAILED) {
        s7 = peg$parseWhenBlockAction();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s5;
          s5 = peg$f1121(s1, s3, s7);
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      } else {
        peg$currPos = s5;
        s5 = peg$FAILED;
      }
      while (s5 !== peg$FAILED) {
        s4.push(s5);
        s5 = peg$currPos;
        s6 = peg$parseBlockStatementSeparator();
        if (s6 !== peg$FAILED) {
          s7 = peg$parseWhenBlockAction();
          if (s7 !== peg$FAILED) {
            peg$savedPos = s5;
            s5 = peg$f1121(s1, s3, s7);
          } else {
            peg$currPos = s5;
            s5 = peg$FAILED;
          }
        } else {
          peg$currPos = s5;
          s5 = peg$FAILED;
        }
      }
      s5 = [];
      s6 = peg$parseBlockComments();
      while (s6 !== peg$FAILED) {
        s5.push(s6);
        s6 = peg$parseBlockComments();
      }
      peg$savedPos = s0;
      s0 = peg$f1122(s1, s3, s4, s5);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = [];
      s2 = peg$parseBlockComments();
      if (s2 !== peg$FAILED) {
        while (s2 !== peg$FAILED) {
          s1.push(s2);
          s2 = peg$parseBlockComments();
        }
      } else {
        s1 = peg$FAILED;
      }
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1123();
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenActionBlockContent, "peg$parseWhenActionBlockContent");
  function peg$parseWhenBlockAction() {
    var s0;
    s0 = peg$parseWhenImplicitAction();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenActionDirective();
    }
    return s0;
  }
  __name(peg$parseWhenBlockAction, "peg$parseWhenBlockAction");
  function peg$parseWhenActionDirective() {
    var s0, s1, s3, s4, s5, s6, s7, s8;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c106) {
      s1 = peg$c106;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e284);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseWhenOutputSource();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      s4 = peg$parse_();
      if (input.substr(peg$currPos, 2) === peg$c107) {
        s5 = peg$c107;
        peg$currPos += 2;
      } else {
        s5 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e285);
        }
      }
      if (s5 !== peg$FAILED) {
        s6 = peg$parse_();
        s7 = peg$parseWhenOutputTarget();
        if (s7 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1124(s3, s7);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c105) {
        s1 = peg$c105;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e283);
        }
      }
      if (s1 !== peg$FAILED) {
        peg$parse_();
        s3 = peg$parseWhenOutputSource();
        if (s3 === peg$FAILED) {
          s3 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f1125(s3);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        if (input.substr(peg$currPos, 4) === peg$c104) {
          s1 = peg$c104;
          peg$currPos += 4;
        } else {
          s1 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e282);
          }
        }
        if (s1 !== peg$FAILED) {
          peg$parse_();
          s3 = peg$parseVariableNoTail();
          if (s3 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f1126(s3);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          if (input.substr(peg$currPos, 4) === peg$c104) {
            s1 = peg$c104;
            peg$currPos += 4;
          } else {
            s1 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e282);
            }
          }
          if (s1 !== peg$FAILED) {
            peg$parse_();
            s3 = peg$parseUnifiedReferenceWithTail();
            if (s3 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1127(s3);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
          if (s0 === peg$FAILED) {
            s0 = peg$currPos;
            if (input.substr(peg$currPos, 4) === peg$c104) {
              s1 = peg$c104;
              peg$currPos += 4;
            } else {
              s1 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e282);
              }
            }
            if (s1 !== peg$FAILED) {
              peg$parse_();
              s3 = peg$parseTemplateCore();
              if (s3 !== peg$FAILED) {
                s4 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f1128(s3, s4);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
            if (s0 === peg$FAILED) {
              s0 = peg$currPos;
              if (input.substr(peg$currPos, 3) === peg$c88) {
                s1 = peg$c88;
                peg$currPos += 3;
              } else {
                s1 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e196);
                }
              }
              if (s1 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 64) {
                  s3 = peg$c68;
                  peg$currPos++;
                } else {
                  s3 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e129);
                  }
                }
                if (s3 !== peg$FAILED) {
                  s4 = peg$parseBaseIdentifier();
                  if (s4 !== peg$FAILED) {
                    s5 = peg$parse_();
                    if (input.charCodeAt(peg$currPos) === 61) {
                      s6 = peg$c65;
                      peg$currPos++;
                    } else {
                      s6 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e124);
                      }
                    }
                    if (s6 !== peg$FAILED) {
                      s7 = peg$parse_();
                      s8 = peg$parseVarRHSContent();
                      if (s8 !== peg$FAILED) {
                        peg$savedPos = s0;
                        s0 = peg$f1129(s4, s8);
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
              if (s0 === peg$FAILED) {
                s0 = peg$currPos;
                if (input.substr(peg$currPos, 3) === peg$c109) {
                  s1 = peg$c109;
                  peg$currPos += 3;
                } else {
                  s1 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e290);
                  }
                }
                if (s1 !== peg$FAILED) {
                  peg$parse_();
                  s3 = peg$parseUnifiedReferenceWithTail();
                  if (s3 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f1130(s3);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
                if (s0 === peg$FAILED) {
                  s0 = peg$currPos;
                  if (input.substr(peg$currPos, 3) === peg$c109) {
                    s1 = peg$c109;
                    peg$currPos += 3;
                  } else {
                    s1 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e290);
                    }
                  }
                  if (s1 !== peg$FAILED) {
                    peg$parse_();
                    s3 = peg$parseUnifiedCommandBrackets();
                    if (s3 !== peg$FAILED) {
                      peg$savedPos = s0;
                      s0 = peg$f1131(s3);
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                  if (s0 === peg$FAILED) {
                    s0 = peg$currPos;
                    if (input.substr(peg$currPos, 6) === peg$c106) {
                      s1 = peg$c106;
                      peg$currPos += 6;
                    } else {
                      s1 = peg$FAILED;
                      if (peg$silentFails === 0) {
                        peg$fail(peg$e284);
                      }
                    }
                    if (s1 !== peg$FAILED) {
                      peg$parse_();
                      s3 = peg$parseWhenOutputSource();
                      if (s3 === peg$FAILED) {
                        s3 = null;
                      }
                      s4 = peg$parse_();
                      if (input.charCodeAt(peg$currPos) === 91) {
                        s5 = peg$c71;
                        peg$currPos++;
                      } else {
                        s5 = peg$FAILED;
                        if (peg$silentFails === 0) {
                          peg$fail(peg$e132);
                        }
                      }
                      if (s5 !== peg$FAILED) {
                        s6 = peg$parseWhenPathText();
                        if (s6 !== peg$FAILED) {
                          if (input.charCodeAt(peg$currPos) === 93) {
                            s7 = peg$c70;
                            peg$currPos++;
                          } else {
                            s7 = peg$FAILED;
                            if (peg$silentFails === 0) {
                              peg$fail(peg$e131);
                            }
                          }
                          if (s7 !== peg$FAILED) {
                            peg$savedPos = s0;
                            s0 = peg$f1132(s3, s6);
                          } else {
                            peg$currPos = s0;
                            s0 = peg$FAILED;
                          }
                        } else {
                          peg$currPos = s0;
                          s0 = peg$FAILED;
                        }
                      } else {
                        peg$currPos = s0;
                        s0 = peg$FAILED;
                      }
                    } else {
                      peg$currPos = s0;
                      s0 = peg$FAILED;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenActionDirective, "peg$parseWhenActionDirective");
  function peg$parseWhenCommandText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r36.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e267);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r36.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e267);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1133(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenCommandText, "peg$parseWhenCommandText");
  function peg$parseWhenBraceCommandText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r50.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e428);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r50.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e428);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1134(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenBraceCommandText, "peg$parseWhenBraceCommandText");
  function peg$parseWhenPathText() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = [];
    s2 = input.charAt(peg$currPos);
    if (peg$r36.test(s2)) {
      peg$currPos++;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e267);
      }
    }
    if (s2 !== peg$FAILED) {
      while (s2 !== peg$FAILED) {
        s1.push(s2);
        s2 = input.charAt(peg$currPos);
        if (peg$r36.test(s2)) {
          peg$currPos++;
        } else {
          s2 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e267);
          }
        }
      }
    } else {
      s1 = peg$FAILED;
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1135(s1);
    }
    s0 = s1;
    return s0;
  }
  __name(peg$parseWhenPathText, "peg$parseWhenPathText");
  function peg$parseWhenOutputSource() {
    var s0, s1;
    s0 = peg$currPos;
    s1 = peg$parseVariableNoTail();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1136(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDataString();
      if (s1 !== peg$FAILED) {
        peg$savedPos = s0;
        s1 = peg$f1137(s1);
      }
      s0 = s1;
    }
    return s0;
  }
  __name(peg$parseWhenOutputSource, "peg$parseWhenOutputSource");
  function peg$parseWhenOutputTarget() {
    var s0, s1, s2, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 6) === peg$c130) {
      s1 = peg$c130;
      peg$currPos += 6;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e364);
      }
    }
    if (s1 === peg$FAILED) {
      if (input.substr(peg$currPos, 6) === peg$c131) {
        s1 = peg$c131;
        peg$currPos += 6;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e365);
        }
      }
    }
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1138(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      if (input.substr(peg$currPos, 3) === peg$c132) {
        s1 = peg$c132;
        peg$currPos += 3;
      } else {
        s1 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e367);
        }
      }
      if (s1 !== peg$FAILED) {
        s2 = peg$currPos;
        if (input.charCodeAt(peg$currPos) === 58) {
          s3 = peg$c56;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e115);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseBaseIdentifier();
          if (s4 !== peg$FAILED) {
            peg$savedPos = s2;
            s2 = peg$f1139(s4);
          } else {
            peg$currPos = s2;
            s2 = peg$FAILED;
          }
        } else {
          peg$currPos = s2;
          s2 = peg$FAILED;
        }
        if (s2 === peg$FAILED) {
          s2 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f1140(s2);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDataString();
        if (s1 !== peg$FAILED) {
          peg$savedPos = s0;
          s1 = peg$f1141(s1);
        }
        s0 = s1;
      }
    }
    return s0;
  }
  __name(peg$parseWhenOutputTarget, "peg$parseWhenOutputTarget");
  function peg$parseWhenImplicitAction() {
    var s0;
    s0 = peg$parseWhenImplicitRetryAction();
    if (s0 === peg$FAILED) {
      s0 = peg$parseWhenImplicitExplicitVarAssignment();
      if (s0 === peg$FAILED) {
        s0 = peg$parseWhenImplicitVarAssignmentError();
        if (s0 === peg$FAILED) {
          s0 = peg$parseWhenImplicitFunctionCall();
          if (s0 === peg$FAILED) {
            s0 = peg$parseWhenImplicitShowWithPipeline();
            if (s0 === peg$FAILED) {
              s0 = peg$parseWhenImplicitRichContent();
              if (s0 === peg$FAILED) {
                s0 = peg$parseWhenImplicitExecDefinitionError();
              }
            }
          }
        }
      }
    }
    return s0;
  }
  __name(peg$parseWhenImplicitAction, "peg$parseWhenImplicitAction");
  function peg$parseWhenImplicitShowWithPipeline() {
    var s0, s1, s3, s4;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 4) === peg$c104) {
      s1 = peg$c104;
      peg$currPos += 4;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e282);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseTemplateCore();
      if (s3 !== peg$FAILED) {
        s4 = peg$parseTailModifiers();
        if (s4 === peg$FAILED) {
          s4 = null;
        }
        peg$savedPos = s0;
        s0 = peg$f1142(s3, s4);
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitShowWithPipeline, "peg$parseWhenImplicitShowWithPipeline");
  function peg$parseWhenImplicitVarAssignmentError() {
    var s0, s1, s2, s4, s6;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 61) {
          s4 = peg$c65;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e124);
          }
        }
        if (s4 !== peg$FAILED) {
          peg$parse_();
          s6 = peg$parseVarRHSContent();
          if (s6 !== peg$FAILED) {
            peg$savedPos = s0;
            s0 = peg$f1143(s2, s6);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitVarAssignmentError, "peg$parseWhenImplicitVarAssignmentError");
  function peg$parseWhenImplicitExplicitVarAssignment() {
    var s0, s1, s3, s4, s6, s8;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 3) === peg$c88) {
      s1 = peg$c88;
      peg$currPos += 3;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e196);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      if (input.charCodeAt(peg$currPos) === 64) {
        s3 = peg$c68;
        peg$currPos++;
      } else {
        s3 = peg$FAILED;
        if (peg$silentFails === 0) {
          peg$fail(peg$e129);
        }
      }
      if (s3 !== peg$FAILED) {
        s4 = peg$parseBaseIdentifier();
        if (s4 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 61) {
            s6 = peg$c65;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e124);
            }
          }
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$parseVarRHSContent();
            if (s8 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1144(s4, s8);
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitExplicitVarAssignment, "peg$parseWhenImplicitExplicitVarAssignment");
  function peg$parseWhenImplicitFunctionCall() {
    var s0, s1, s2, s3, s4, s6, s7;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c18;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 41) {
            s6 = peg$c19;
            peg$currPos++;
          } else {
            s6 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s6 !== peg$FAILED) {
            s7 = peg$parseTailModifiers();
            if (s7 === peg$FAILED) {
              s7 = null;
            }
            peg$savedPos = s0;
            s0 = peg$f1145(s2, s4, s7);
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitFunctionCall, "peg$parseWhenImplicitFunctionCall");
  function peg$parseWhenImplicitRichContent() {
    var s0, s1, s2;
    s0 = peg$currPos;
    s1 = peg$parseTemplateCore();
    if (s1 !== peg$FAILED) {
      peg$savedPos = s0;
      s1 = peg$f1146(s1);
    }
    s0 = s1;
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseVarRHSContent();
      if (s1 !== peg$FAILED) {
        peg$savedPos = peg$currPos;
        s2 = peg$f1147(s1);
        if (s2) {
          s2 = void 0;
        } else {
          s2 = peg$FAILED;
        }
        if (s2 !== peg$FAILED) {
          peg$savedPos = s0;
          s0 = peg$f1148(s1);
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    }
    return s0;
  }
  __name(peg$parseWhenImplicitRichContent, "peg$parseWhenImplicitRichContent");
  function peg$parseWhenImplicitExecDefinitionError() {
    var s0, s1, s2, s3, s4, s5, s7, s9;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 64) {
      s1 = peg$c68;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e129);
      }
    }
    if (s1 !== peg$FAILED) {
      s2 = peg$parseBaseIdentifier();
      if (s2 !== peg$FAILED) {
        if (input.charCodeAt(peg$currPos) === 40) {
          s3 = peg$c18;
          peg$currPos++;
        } else {
          s3 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s3 !== peg$FAILED) {
          s4 = peg$parseCommandArgumentList();
          if (s4 === peg$FAILED) {
            s4 = null;
          }
          if (input.charCodeAt(peg$currPos) === 41) {
            s5 = peg$c19;
            peg$currPos++;
          } else {
            s5 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e43);
            }
          }
          if (s5 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 61) {
              s7 = peg$c65;
              peg$currPos++;
            } else {
              s7 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e124);
              }
            }
            if (s7 !== peg$FAILED) {
              peg$parse_();
              s9 = peg$parseVarRHSContent();
              if (s9 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f1149(s2, s4, s9);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitExecDefinitionError, "peg$parseWhenImplicitExecDefinitionError");
  function peg$parseWhenImplicitRetryAction() {
    var s0, s1, s3;
    s0 = peg$currPos;
    if (input.substr(peg$currPos, 5) === peg$c21) {
      s1 = peg$c21;
      peg$currPos += 5;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e47);
      }
    }
    if (s1 !== peg$FAILED) {
      peg$parse_();
      s3 = peg$parseVarRHSContent();
      if (s3 === peg$FAILED) {
        s3 = null;
      }
      peg$savedPos = s0;
      s0 = peg$f1150(s3);
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhenImplicitRetryAction, "peg$parseWhenImplicitRetryAction");
  function peg$parseWhileKeyword() {
    var s0, s1, s2;
    s0 = peg$currPos;
    if (input.charCodeAt(peg$currPos) === 47) {
      s1 = peg$c37;
      peg$currPos++;
    } else {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e84);
      }
    }
    if (s1 === peg$FAILED) {
      s1 = null;
    }
    if (input.substr(peg$currPos, 5) === peg$c159) {
      s2 = peg$c159;
      peg$currPos += 5;
    } else {
      s2 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e471);
      }
    }
    if (s2 !== peg$FAILED) {
      s1 = [
        s1,
        s2
      ];
      s0 = s1;
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    return s0;
  }
  __name(peg$parseWhileKeyword, "peg$parseWhileKeyword");
  function peg$parseSlashWhile() {
    var s0, s1, s2, s4, s5, s6, s8, s9, s10, s11, s12, s13;
    peg$silentFails++;
    s0 = peg$currPos;
    s1 = peg$parseDirectiveContext();
    if (s1 !== peg$FAILED) {
      s2 = peg$parseWhileKeyword();
      if (s2 !== peg$FAILED) {
        peg$parse_();
        if (input.charCodeAt(peg$currPos) === 40) {
          s4 = peg$c18;
          peg$currPos++;
        } else {
          s4 = peg$FAILED;
          if (peg$silentFails === 0) {
            peg$fail(peg$e42);
          }
        }
        if (s4 !== peg$FAILED) {
          s5 = peg$parse_();
          s6 = peg$parseNumberLiteral();
          if (s6 !== peg$FAILED) {
            peg$parse_();
            s8 = peg$currPos;
            if (input.charCodeAt(peg$currPos) === 44) {
              s9 = peg$c85;
              peg$currPos++;
            } else {
              s9 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e189);
              }
            }
            if (s9 !== peg$FAILED) {
              s10 = peg$parse_();
              s11 = peg$parseTimeDurationLiteral();
              if (s11 !== peg$FAILED) {
                s9 = [
                  s9,
                  s10,
                  s11
                ];
                s8 = s9;
              } else {
                peg$currPos = s8;
                s8 = peg$FAILED;
              }
            } else {
              peg$currPos = s8;
              s8 = peg$FAILED;
            }
            if (s8 === peg$FAILED) {
              s8 = null;
            }
            s9 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s10 = peg$c19;
              peg$currPos++;
            } else {
              s10 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s10 !== peg$FAILED) {
              s11 = peg$parse_();
              s12 = peg$parseUnifiedReferenceWithTail();
              if (s12 !== peg$FAILED) {
                s13 = peg$parseStandardDirectiveEnding();
                peg$savedPos = s0;
                s0 = peg$f1151(s6, s8, s12, s13);
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
    } else {
      peg$currPos = s0;
      s0 = peg$FAILED;
    }
    if (s0 === peg$FAILED) {
      s0 = peg$currPos;
      s1 = peg$parseDirectiveContext();
      if (s1 !== peg$FAILED) {
        s2 = peg$parseWhileKeyword();
        if (s2 !== peg$FAILED) {
          peg$parse_();
          if (input.charCodeAt(peg$currPos) === 40) {
            s4 = peg$c18;
            peg$currPos++;
          } else {
            s4 = peg$FAILED;
            if (peg$silentFails === 0) {
              peg$fail(peg$e42);
            }
          }
          if (s4 !== peg$FAILED) {
            s5 = peg$parse_();
            if (input.charCodeAt(peg$currPos) === 41) {
              s6 = peg$c19;
              peg$currPos++;
            } else {
              s6 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e43);
              }
            }
            if (s6 !== peg$FAILED) {
              peg$savedPos = s0;
              s0 = peg$f1152();
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
      } else {
        peg$currPos = s0;
        s0 = peg$FAILED;
      }
      if (s0 === peg$FAILED) {
        s0 = peg$currPos;
        s1 = peg$parseDirectiveContext();
        if (s1 !== peg$FAILED) {
          s2 = peg$parseWhileKeyword();
          if (s2 !== peg$FAILED) {
            peg$parse_();
            if (input.charCodeAt(peg$currPos) === 40) {
              s4 = peg$c18;
              peg$currPos++;
            } else {
              s4 = peg$FAILED;
              if (peg$silentFails === 0) {
                peg$fail(peg$e42);
              }
            }
            if (s4 !== peg$FAILED) {
              s5 = peg$parse_();
              s6 = peg$parseNumberLiteral();
              if (s6 !== peg$FAILED) {
                peg$parse_();
                if (input.charCodeAt(peg$currPos) === 41) {
                  s8 = peg$c19;
                  peg$currPos++;
                } else {
                  s8 = peg$FAILED;
                  if (peg$silentFails === 0) {
                    peg$fail(peg$e43);
                  }
                }
                if (s8 !== peg$FAILED) {
                  s9 = peg$parse_();
                  s10 = peg$currPos;
                  peg$silentFails++;
                  if (input.charCodeAt(peg$currPos) === 64) {
                    s11 = peg$c68;
                    peg$currPos++;
                  } else {
                    s11 = peg$FAILED;
                    if (peg$silentFails === 0) {
                      peg$fail(peg$e129);
                    }
                  }
                  peg$silentFails--;
                  if (s11 === peg$FAILED) {
                    s10 = void 0;
                  } else {
                    peg$currPos = s10;
                    s10 = peg$FAILED;
                  }
                  if (s10 !== peg$FAILED) {
                    peg$savedPos = s0;
                    s0 = peg$f1153(s6);
                  } else {
                    peg$currPos = s0;
                    s0 = peg$FAILED;
                  }
                } else {
                  peg$currPos = s0;
                  s0 = peg$FAILED;
                }
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        } else {
          peg$currPos = s0;
          s0 = peg$FAILED;
        }
        if (s0 === peg$FAILED) {
          s0 = peg$currPos;
          s1 = peg$parseDirectiveContext();
          if (s1 !== peg$FAILED) {
            s2 = peg$parseWhileKeyword();
            if (s2 !== peg$FAILED) {
              peg$parse_();
              s4 = peg$currPos;
              peg$silentFails++;
              if (input.charCodeAt(peg$currPos) === 40) {
                s5 = peg$c18;
                peg$currPos++;
              } else {
                s5 = peg$FAILED;
                if (peg$silentFails === 0) {
                  peg$fail(peg$e42);
                }
              }
              peg$silentFails--;
              if (s5 === peg$FAILED) {
                s4 = void 0;
              } else {
                peg$currPos = s4;
                s4 = peg$FAILED;
              }
              if (s4 !== peg$FAILED) {
                peg$savedPos = s0;
                s0 = peg$f1154();
              } else {
                peg$currPos = s0;
                s0 = peg$FAILED;
              }
            } else {
              peg$currPos = s0;
              s0 = peg$FAILED;
            }
          } else {
            peg$currPos = s0;
            s0 = peg$FAILED;
          }
        }
      }
    }
    peg$silentFails--;
    if (s0 === peg$FAILED) {
      s1 = peg$FAILED;
      if (peg$silentFails === 0) {
        peg$fail(peg$e548);
      }
    }
    return s0;
  }
  __name(peg$parseSlashWhile, "peg$parseSlashWhile");
  if (typeof options !== "undefined") {
    options.rhsDirectiveType = "";
    options.afterDirectiveType = "";
  }
  function isSimpleCondition(expr) {
    return expr.type === "VariableReference" || expr.type === "Literal" || expr.type === "UnaryExpression" && expr.operator === "!" && isSimpleCondition(expr.operand);
  }
  __name(isSimpleCondition, "isSimpleCondition");
  function isComparisonOperator(op) {
    return [
      "==",
      "!=",
      "~=",
      "<",
      ">",
      "<=",
      ">="
    ].includes(op);
  }
  __name(isComparisonOperator, "isComparisonOperator");
  function extractConditionVariables(expr) {
    const variables = [];
    function traverse(node) {
      if (!node) return;
      if (node.type === "VariableReference") {
        variables.push(node.name);
      } else if (node.type === "ExecutableReference") {
        variables.push(node.name);
      }
      if (node.left) traverse(node.left);
      if (node.right) traverse(node.right);
      if (node.operand) traverse(node.operand);
      if (node.argument) traverse(node.argument);
      if (node.condition) traverse(node.condition);
      if (node.trueBranch) traverse(node.trueBranch);
      if (node.falseBranch) traverse(node.falseBranch);
    }
    __name(traverse, "traverse");
    traverse(expr);
    return [
      ...new Set(variables)
    ];
  }
  __name(extractConditionVariables, "extractConditionVariables");
  peg$result = peg$startRuleFunction();
  if (options.peg$library) {
    return (
      /** @type {any} */
      {
        peg$result,
        peg$currPos,
        peg$FAILED,
        peg$maxFailExpected,
        peg$maxFailPos
      }
    );
  }
  if (peg$result !== peg$FAILED && peg$currPos === input.length) {
    return peg$result;
  } else {
    if (peg$result !== peg$FAILED && peg$currPos < input.length) {
      peg$fail(peg$endExpectation());
    }
    throw peg$buildStructuredError(peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos));
  }
}
__name(peg$parse, "peg$parse");
var peg$allowedStartRules = [
  "Start",
  "ExeBlockBody",
  "ForBlockBody",
  "ForBlockStatementList",
  "WhenConditionList",
  "WhenExpressionConditionList",
  "WhenBoundExpressionConditionList",
  "GuardRuleList",
  "WhenActionBlockContent",
  "TemplateBodyAtt",
  "TemplateBodyMtt"
];
var parser = {
  parse: peg$parse,
  SyntaxError: peg$SyntaxError,
  StartRules: peg$allowedStartRules
};
var parser_default = parser;

// grammar/parser/index.ts
async function parse2(source, options) {
  const warnings = [];
  helpers.setWarningCollector(warnings);
  try {
    const ast = parser_default.parse(source, {
      startRule: "Start",
      mode: "markdown",
      ...options
    });
    return {
      ast,
      success: true,
      warnings
    };
  } catch (error) {
    return {
      ast: [],
      success: false,
      error: error instanceof Error ? error : new Error(String(error)),
      warnings
    };
  } finally {
    helpers.clearWarningCollector();
  }
}
__name(parse2, "parse");
function parseSync(source, options) {
  const warnings = [];
  helpers.setWarningCollector(warnings);
  try {
    return parser_default.parse(source, {
      startRule: "Start",
      mode: "markdown",
      ...options
    });
  } finally {
    helpers.clearWarningCollector();
  }
}
__name(parseSync, "parseSync");
var SyntaxError = parser_default.SyntaxError;

export { SyntaxError, parse2 as parse, parseSync, parser_default };
//# sourceMappingURL=chunk-J3EQD6RR.mjs.map
//# sourceMappingURL=chunk-J3EQD6RR.mjs.map