(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[5],{

/***/ "./node_modules/@babel/parser/lib/index.js":
/*!*************************************************!*\
  !*** ./node_modules/@babel/parser/lib/index.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass BaseParser {\n  constructor() {\n    this.sawUnambiguousESM = false;\n    this.ambiguousScriptDifferentAst = false;\n  }\n\n  hasPlugin(pluginConfig) {\n    if (typeof pluginConfig === \"string\") {\n      return this.plugins.has(pluginConfig);\n    } else {\n      const [pluginName, pluginOptions] = pluginConfig;\n\n      if (!this.hasPlugin(pluginName)) {\n        return false;\n      }\n\n      const actualOptions = this.plugins.get(pluginName);\n\n      for (const key of Object.keys(pluginOptions)) {\n        if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  }\n\n  getPluginOption(plugin, name) {\n    var _this$plugins$get;\n\n    return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n  }\n\n}\n\nfunction setTrailingComments(node, comments) {\n  if (node.trailingComments === undefined) {\n    node.trailingComments = comments;\n  } else {\n    node.trailingComments.unshift(...comments);\n  }\n}\n\nfunction setLeadingComments(node, comments) {\n  if (node.leadingComments === undefined) {\n    node.leadingComments = comments;\n  } else {\n    node.leadingComments.unshift(...comments);\n  }\n}\n\nfunction setInnerComments(node, comments) {\n  if (node.innerComments === undefined) {\n    node.innerComments = comments;\n  } else {\n    node.innerComments.unshift(...comments);\n  }\n}\n\nfunction adjustInnerComments(node, elements, commentWS) {\n  let lastElement = null;\n  let i = elements.length;\n\n  while (lastElement === null && i > 0) {\n    lastElement = elements[--i];\n  }\n\n  if (lastElement === null || lastElement.start > commentWS.start) {\n    setInnerComments(node, commentWS.comments);\n  } else {\n    setTrailingComments(lastElement, commentWS.comments);\n  }\n}\n\nclass CommentsParser extends BaseParser {\n  addComment(comment) {\n    if (this.filename) comment.loc.filename = this.filename;\n    this.state.comments.push(comment);\n  }\n\n  processComment(node) {\n    const {\n      commentStack\n    } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n    const lastCommentWS = commentStack[i];\n\n    if (lastCommentWS.start === node.end) {\n      lastCommentWS.leadingNode = node;\n      i--;\n    }\n\n    const {\n      start: nodeStart\n    } = node;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n\n      if (commentEnd > nodeStart) {\n        commentWS.containingNode = node;\n        this.finalizeComment(commentWS);\n        commentStack.splice(i, 1);\n      } else {\n        if (commentEnd === nodeStart) {\n          commentWS.trailingNode = node;\n        }\n\n        break;\n      }\n    }\n  }\n\n  finalizeComment(commentWS) {\n    const {\n      comments\n    } = commentWS;\n\n    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n      if (commentWS.leadingNode !== null) {\n        setTrailingComments(commentWS.leadingNode, comments);\n      }\n\n      if (commentWS.trailingNode !== null) {\n        setLeadingComments(commentWS.trailingNode, comments);\n      }\n    } else {\n      const {\n        containingNode: node,\n        start: commentStart\n      } = commentWS;\n\n      if (this.input.charCodeAt(commentStart - 1) === 44) {\n        switch (node.type) {\n          case \"ObjectExpression\":\n          case \"ObjectPattern\":\n          case \"RecordExpression\":\n            adjustInnerComments(node, node.properties, commentWS);\n            break;\n\n          case \"CallExpression\":\n          case \"OptionalCallExpression\":\n            adjustInnerComments(node, node.arguments, commentWS);\n            break;\n\n          case \"FunctionDeclaration\":\n          case \"FunctionExpression\":\n          case \"ArrowFunctionExpression\":\n          case \"ObjectMethod\":\n          case \"ClassMethod\":\n          case \"ClassPrivateMethod\":\n            adjustInnerComments(node, node.params, commentWS);\n            break;\n\n          case \"ArrayExpression\":\n          case \"ArrayPattern\":\n          case \"TupleExpression\":\n            adjustInnerComments(node, node.elements, commentWS);\n            break;\n\n          case \"ExportNamedDeclaration\":\n          case \"ImportDeclaration\":\n            adjustInnerComments(node, node.specifiers, commentWS);\n            break;\n\n          default:\n            {\n              setInnerComments(node, comments);\n            }\n        }\n      } else {\n        setInnerComments(node, comments);\n      }\n    }\n  }\n\n  finalizeRemainingComments() {\n    const {\n      commentStack\n    } = this.state;\n\n    for (let i = commentStack.length - 1; i >= 0; i--) {\n      this.finalizeComment(commentStack[i]);\n    }\n\n    this.state.commentStack = [];\n  }\n\n  resetPreviousNodeTrailingComments(node) {\n    const {\n      commentStack\n    } = this.state;\n    const {\n      length\n    } = commentStack;\n    if (length === 0) return;\n    const commentWS = commentStack[length - 1];\n\n    if (commentWS.leadingNode === node) {\n      commentWS.leadingNode = null;\n    }\n  }\n\n  takeSurroundingComments(node, start, end) {\n    const {\n      commentStack\n    } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      const commentStart = commentWS.start;\n\n      if (commentStart === end) {\n        commentWS.leadingNode = node;\n      } else if (commentEnd === start) {\n        commentWS.trailingNode = node;\n      } else if (commentEnd < start) {\n        break;\n      }\n    }\n  }\n\n}\n\nconst ErrorCodes = Object.freeze({\n  SyntaxError: \"BABEL_PARSER_SYNTAX_ERROR\",\n  SourceTypeModuleError: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\"\n});\n\nconst ErrorMessages = makeErrorTemplates({\n  AccessorIsGenerator: \"A %0ter cannot be a generator.\",\n  ArgumentsInClass: \"'arguments' is only allowed in functions and class methods.\",\n  AsyncFunctionInSingleStatementContext: \"Async functions can only be declared at the top level or inside a block.\",\n  AwaitBindingIdentifier: \"Can not use 'await' as identifier inside an async function.\",\n  AwaitBindingIdentifierInStaticBlock: \"Can not use 'await' as identifier inside a static block.\",\n  AwaitExpressionFormalParameter: \"'await' is not allowed in async function parameters.\",\n  AwaitNotInAsyncContext: \"'await' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n  BadGetterArity: \"A 'get' accesor must not have any formal parameters.\",\n  BadSetterArity: \"A 'set' accesor must have exactly one formal parameter.\",\n  BadSetterRestParameter: \"A 'set' accesor function argument must not be a rest parameter.\",\n  ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n  ConstructorClassPrivateField: \"Classes may not have a private field named '#constructor'.\",\n  ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n  ConstructorIsAsync: \"Constructor can't be an async function.\",\n  ConstructorIsGenerator: \"Constructor can't be a generator.\",\n  DeclarationMissingInitializer: \"'%0' require an initialization value.\",\n  DecoratorBeforeExport: \"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.\",\n  DecoratorConstructor: \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n  DecoratorExportClass: \"Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.\",\n  DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n  DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n  DeletePrivateField: \"Deleting a private field is not allowed.\",\n  DestructureNamedImport: \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n  DuplicateConstructor: \"Duplicate constructor in the same class.\",\n  DuplicateDefaultExport: \"Only one default export allowed per module.\",\n  DuplicateExport: \"`%0` has already been exported. Exported identifiers must be unique.\",\n  DuplicateProto: \"Redefinition of __proto__ property.\",\n  DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n  ElementAfterRest: \"Rest element must be last element.\",\n  EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n  ExportBindingIsString: \"A string literal cannot be used as an exported binding without `from`.\\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?\",\n  ExportDefaultFromAsIdentifier: \"'from' is not allowed as an identifier after 'export default'.\",\n  ForInOfLoopInitializer: \"'%0' loop variable declaration may not have an initializer.\",\n  ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n  ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n  GeneratorInSingleStatementContext: \"Generators can only be declared at the top level or inside a block.\",\n  IllegalBreakContinue: \"Unsyntactic %0.\",\n  IllegalLanguageModeDirective: \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n  IllegalReturn: \"'return' outside of function.\",\n  ImportBindingIsString: 'A string literal cannot be used as an imported binding.\\n- Did you mean `import { \"%0\" as foo }`?',\n  ImportCallArgumentTrailingComma: \"Trailing comma is disallowed inside import(...) arguments.\",\n  ImportCallArity: \"`import()` requires exactly %0.\",\n  ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n  ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n  IncompatibleRegExpUVFlags: \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n  InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n  InvalidCodePoint: \"Code point out of bounds.\",\n  InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n  InvalidDecimal: \"Invalid decimal.\",\n  InvalidDigit: \"Expected number in radix %0.\",\n  InvalidEscapeSequence: \"Bad character escape sequence.\",\n  InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n  InvalidEscapedReservedWord: \"Escape sequence in keyword %0.\",\n  InvalidIdentifier: \"Invalid identifier %0.\",\n  InvalidLhs: \"Invalid left-hand side in %0.\",\n  InvalidLhsBinding: \"Binding invalid left-hand side in %0.\",\n  InvalidNumber: \"Invalid number.\",\n  InvalidOrMissingExponent: \"Floating-point numbers require a valid exponent after the 'e'.\",\n  InvalidOrUnexpectedToken: \"Unexpected character '%0'.\",\n  InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n  InvalidPrivateFieldResolution: \"Private name #%0 is not defined.\",\n  InvalidPropertyBindingPattern: \"Binding member expression.\",\n  InvalidRecordProperty: \"Only properties and spread elements are allowed in record definitions.\",\n  InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n  LabelRedeclaration: \"Label '%0' is already declared.\",\n  LetInLexicalBinding: \"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\",\n  LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n  MalformedRegExpFlags: \"Invalid regular expression flag.\",\n  MissingClassName: \"A class name is required.\",\n  MissingEqInAssignment: \"Only '=' operator can be used for specifying default value.\",\n  MissingSemicolon: \"Missing semicolon.\",\n  MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n  MixingCoalesceWithLogical: \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n  ModuleAttributeDifferentFromType: \"The only accepted module attribute is `type`.\",\n  ModuleAttributeInvalidValue: \"Only string literals are allowed as module attribute values.\",\n  ModuleAttributesWithDuplicateKeys: 'Duplicate key \"%0\" is not allowed in module attributes.',\n  ModuleExportNameHasLoneSurrogate: \"An export name cannot include a lone surrogate, found '\\\\u%0'.\",\n  ModuleExportUndefined: \"Export '%0' is not defined.\",\n  MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n  NewlineAfterThrow: \"Illegal newline after throw.\",\n  NoCatchOrFinally: \"Missing catch or finally clause.\",\n  NumberIdentifier: \"Identifier directly after number.\",\n  NumericSeparatorInEscapeSequence: \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n  ObsoleteAwaitStar: \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n  OptionalChainingNoNew: \"Constructors in/after an Optional Chain are not allowed.\",\n  OptionalChainingNoTemplate: \"Tagged Template Literals are not allowed in optionalChain.\",\n  OverrideOnConstructor: \"'override' modifier cannot appear on a constructor declaration.\",\n  ParamDupe: \"Argument name clash.\",\n  PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n  PatternHasMethod: \"Object pattern can't contain methods.\",\n  PipeBodyIsTighter: \"Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n  PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PipeTopicUnbound: \"Topic reference is unbound; it must be inside a pipe body.\",\n  PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"%0\" }.',\n  PipeTopicUnused: \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n  PipeUnparenthesizedBody: \"Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.\",\n  PipelineBodyNoArrow: 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n  PipelineBodySequenceExpression: \"Pipeline body may not be a comma-separated sequence expression.\",\n  PipelineHeadSequenceExpression: \"Pipeline head should not be a comma-separated sequence expression.\",\n  PipelineTopicUnused: \"Pipeline is in topic style but does not use topic reference.\",\n  PrimaryTopicNotAllowed: \"Topic reference was used in a lexical context without topic binding.\",\n  PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PrivateInExpectedIn: \"Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).\",\n  PrivateNameRedeclaration: \"Duplicate private name #%0.\",\n  RecordExpressionBarIncorrectEndSyntaxType: \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionBarIncorrectStartSyntaxType: \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionHashIncorrectStartSyntaxType: \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n  RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n  SloppyFunction: \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n  StaticPrototype: \"Classes may not have static property named prototype.\",\n  StrictDelete: \"Deleting local variable in strict mode.\",\n  StrictEvalArguments: \"Assigning to '%0' in strict mode.\",\n  StrictEvalArgumentsBinding: \"Binding '%0' in strict mode.\",\n  StrictFunction: \"In strict mode code, functions can only be declared at top level or inside a block.\",\n  StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n  StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n  StrictWith: \"'with' in strict mode.\",\n  SuperNotAllowed: \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n  SuperPrivateField: \"Private fields can't be accessed on super.\",\n  TrailingDecorator: \"Decorators must be attached to a class element.\",\n  TupleExpressionBarIncorrectEndSyntaxType: \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionBarIncorrectStartSyntaxType: \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionHashIncorrectStartSyntaxType: \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n  UnexpectedAwaitAfterPipelineBody: 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n  UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n  UnexpectedImportExport: \"'import' and 'export' may only appear at the top level.\",\n  UnexpectedKeyword: \"Unexpected keyword '%0'.\",\n  UnexpectedLeadingDecorator: \"Leading decorators must be attached to a class declaration.\",\n  UnexpectedLexicalDeclaration: \"Lexical declaration cannot appear in a single-statement context.\",\n  UnexpectedNewTarget: \"`new.target` can only be used in functions or class properties.\",\n  UnexpectedNumericSeparator: \"A numeric separator is only allowed between two digits.\",\n  UnexpectedPrivateField: \"Unexpected private name.\",\n  UnexpectedReservedWord: \"Unexpected reserved word '%0'.\",\n  UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n  UnexpectedToken: \"Unexpected token '%0'.\",\n  UnexpectedTokenUnaryExponentiation: \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n  UnsupportedBind: \"Binding should be performed on object property.\",\n  UnsupportedDecoratorExport: \"A decorated export must export a class declaration.\",\n  UnsupportedDefaultExport: \"Only expressions, functions or classes are allowed as the `default` export.\",\n  UnsupportedImport: \"`import` can only be used in `import()` or `import.meta`.\",\n  UnsupportedMetaProperty: \"The only valid meta property for %0 is %0.%1.\",\n  UnsupportedParameterDecorator: \"Decorators cannot be used to decorate parameters.\",\n  UnsupportedPropertyDecorator: \"Decorators cannot be used to decorate object literal properties.\",\n  UnsupportedSuper: \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n  UnterminatedComment: \"Unterminated comment.\",\n  UnterminatedRegExp: \"Unterminated regular expression.\",\n  UnterminatedString: \"Unterminated string constant.\",\n  UnterminatedTemplate: \"Unterminated template.\",\n  VarRedeclaration: \"Identifier '%0' has already been declared.\",\n  YieldBindingIdentifier: \"Can not use 'yield' as identifier inside a generator.\",\n  YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n  ZeroDigitNumericSeparator: \"Numeric separator can not be used after leading 0.\"\n}, ErrorCodes.SyntaxError);\nconst SourceTypeModuleErrorMessages = makeErrorTemplates({\n  ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: \"module\"'`,\n  ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: \"module\"'`\n}, ErrorCodes.SourceTypeModuleError);\n\nfunction keepReasonCodeCompat(reasonCode, syntaxPlugin) {\n  {\n    if (syntaxPlugin === \"flow\" && reasonCode === \"PatternIsOptional\") {\n      return \"OptionalBindingPattern\";\n    }\n  }\n  return reasonCode;\n}\n\nfunction makeErrorTemplates(messages, code, syntaxPlugin) {\n  const templates = {};\n  Object.keys(messages).forEach(reasonCode => {\n    templates[reasonCode] = Object.freeze({\n      code,\n      reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),\n      template: messages[reasonCode]\n    });\n  });\n  return Object.freeze(templates);\n}\nclass ParserError extends CommentsParser {\n  raise({\n    code,\n    reasonCode,\n    template\n  }, origin, ...params) {\n    return this.raiseWithData(origin.node ? origin.node.loc.start : origin.at, {\n      code,\n      reasonCode\n    }, template, ...params);\n  }\n\n  raiseOverwrite(loc, {\n    code,\n    template\n  }, ...params) {\n    const pos = loc.index;\n    const message = template.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n\n    if (this.options.errorRecovery) {\n      const errors = this.state.errors;\n\n      for (let i = errors.length - 1; i >= 0; i--) {\n        const error = errors[i];\n\n        if (error.pos === pos) {\n          return Object.assign(error, {\n            message\n          });\n        } else if (error.pos < pos) {\n          break;\n        }\n      }\n    }\n\n    return this._raise({\n      code,\n      loc,\n      pos\n    }, message);\n  }\n\n  raiseWithData(loc, data, errorTemplate, ...params) {\n    const pos = loc.index;\n    const message = errorTemplate.replace(/%(\\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;\n    return this._raise(Object.assign({\n      loc,\n      pos\n    }, data), message);\n  }\n\n  _raise(errorContext, message) {\n    const err = new SyntaxError(message);\n    Object.assign(err, errorContext);\n\n    if (this.options.errorRecovery) {\n      if (!this.isLookahead) this.state.errors.push(err);\n      return err;\n    } else {\n      throw err;\n    }\n  }\n\n}\n\nconst {\n  defineProperty\n} = Object;\n\nconst toUnenumerable = (object, key) => defineProperty(object, key, {\n  enumerable: false,\n  value: object[key]\n});\n\nfunction toESTreeLocation(node) {\n  toUnenumerable(node.loc.start, \"index\");\n  toUnenumerable(node.loc.end, \"index\");\n  return node;\n}\n\nvar estree = (superClass => class extends superClass {\n  parse() {\n    const file = toESTreeLocation(super.parse());\n\n    if (this.options.tokens) {\n      file.tokens = file.tokens.map(toESTreeLocation);\n    }\n\n    return file;\n  }\n\n  parseRegExpLiteral({\n    pattern,\n    flags\n  }) {\n    let regex = null;\n\n    try {\n      regex = new RegExp(pattern, flags);\n    } catch (e) {}\n\n    const node = this.estreeParseLiteral(regex);\n    node.regex = {\n      pattern,\n      flags\n    };\n    return node;\n  }\n\n  parseBigIntLiteral(value) {\n    let bigInt;\n\n    try {\n      bigInt = BigInt(value);\n    } catch (_unused) {\n      bigInt = null;\n    }\n\n    const node = this.estreeParseLiteral(bigInt);\n    node.bigint = String(node.value || value);\n    return node;\n  }\n\n  parseDecimalLiteral(value) {\n    const decimal = null;\n    const node = this.estreeParseLiteral(decimal);\n    node.decimal = String(node.value || value);\n    return node;\n  }\n\n  estreeParseLiteral(value) {\n    return this.parseLiteral(value, \"Literal\");\n  }\n\n  parseStringLiteral(value) {\n    return this.estreeParseLiteral(value);\n  }\n\n  parseNumericLiteral(value) {\n    return this.estreeParseLiteral(value);\n  }\n\n  parseNullLiteral() {\n    return this.estreeParseLiteral(null);\n  }\n\n  parseBooleanLiteral(value) {\n    return this.estreeParseLiteral(value);\n  }\n\n  directiveToStmt(directive) {\n    const directiveLiteral = directive.value;\n    const stmt = this.startNodeAt(directive.start, directive.loc.start);\n    const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);\n    expression.value = directiveLiteral.extra.expressionValue;\n    expression.raw = directiveLiteral.extra.raw;\n    stmt.expression = this.finishNodeAt(expression, \"Literal\", directiveLiteral.loc.end);\n    stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n    return this.finishNodeAt(stmt, \"ExpressionStatement\", directive.loc.end);\n  }\n\n  initFunction(node, isAsync) {\n    super.initFunction(node, isAsync);\n    node.expression = false;\n  }\n\n  checkDeclaration(node) {\n    if (node != null && this.isObjectProperty(node)) {\n      this.checkDeclaration(node.value);\n    } else {\n      super.checkDeclaration(node);\n    }\n  }\n\n  getObjectOrClassMethodParams(method) {\n    return method.value.params;\n  }\n\n  isValidDirective(stmt) {\n    var _stmt$expression$extr;\n\n    return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && typeof stmt.expression.value === \"string\" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n  }\n\n  parseBlockBody(node, ...args) {\n    super.parseBlockBody(node, ...args);\n    const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n    node.body = directiveStatements.concat(node.body);\n    delete node.directives;\n  }\n\n  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n    this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true);\n\n    if (method.typeParameters) {\n      method.value.typeParameters = method.typeParameters;\n      delete method.typeParameters;\n    }\n\n    classBody.body.push(method);\n  }\n\n  parsePrivateName() {\n    const node = super.parsePrivateName();\n    {\n      if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n        return node;\n      }\n    }\n    return this.convertPrivateNameToPrivateIdentifier(node);\n  }\n\n  convertPrivateNameToPrivateIdentifier(node) {\n    const name = super.getPrivateNameSV(node);\n    node = node;\n    delete node.id;\n    node.name = name;\n    node.type = \"PrivateIdentifier\";\n    return node;\n  }\n\n  isPrivateName(node) {\n    {\n      if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n        return super.isPrivateName(node);\n      }\n    }\n    return node.type === \"PrivateIdentifier\";\n  }\n\n  getPrivateNameSV(node) {\n    {\n      if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n        return super.getPrivateNameSV(node);\n      }\n    }\n    return node.name;\n  }\n\n  parseLiteral(value, type) {\n    const node = super.parseLiteral(value, type);\n    node.raw = node.extra.raw;\n    delete node.extra;\n    return node;\n  }\n\n  parseFunctionBody(node, allowExpression, isMethod = false) {\n    super.parseFunctionBody(node, allowExpression, isMethod);\n    node.expression = node.body.type !== \"BlockStatement\";\n  }\n\n  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n    let funcNode = this.startNode();\n    funcNode.kind = node.kind;\n    funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n    funcNode.type = \"FunctionExpression\";\n    delete funcNode.kind;\n    node.value = funcNode;\n\n    if (type === \"ClassPrivateMethod\") {\n      node.computed = false;\n    }\n\n    type = \"MethodDefinition\";\n    return this.finishNode(node, type);\n  }\n\n  parseClassProperty(...args) {\n    const propertyNode = super.parseClassProperty(...args);\n    {\n      if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n        return propertyNode;\n      }\n    }\n    propertyNode.type = \"PropertyDefinition\";\n    return propertyNode;\n  }\n\n  parseClassPrivateProperty(...args) {\n    const propertyNode = super.parseClassPrivateProperty(...args);\n    {\n      if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n        return propertyNode;\n      }\n    }\n    propertyNode.type = \"PropertyDefinition\";\n    propertyNode.computed = false;\n    return propertyNode;\n  }\n\n  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n    const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);\n\n    if (node) {\n      node.type = \"Property\";\n      if (node.kind === \"method\") node.kind = \"init\";\n      node.shorthand = false;\n    }\n\n    return node;\n  }\n\n  parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n    const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n\n    if (node) {\n      node.kind = \"init\";\n      node.type = \"Property\";\n    }\n\n    return node;\n  }\n\n  isAssignable(node, isBinding) {\n    if (node != null && this.isObjectProperty(node)) {\n      return this.isAssignable(node.value, isBinding);\n    }\n\n    return super.isAssignable(node, isBinding);\n  }\n\n  toAssignable(node, isLHS = false) {\n    if (node != null && this.isObjectProperty(node)) {\n      const {\n        key,\n        value\n      } = node;\n\n      if (this.isPrivateName(key)) {\n        this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n      }\n\n      this.toAssignable(value, isLHS);\n      return node;\n    }\n\n    return super.toAssignable(node, isLHS);\n  }\n\n  toAssignableObjectExpressionProp(prop, ...args) {\n    if (prop.kind === \"get\" || prop.kind === \"set\") {\n      this.raise(ErrorMessages.PatternHasAccessor, {\n        node: prop.key\n      });\n    } else if (prop.method) {\n      this.raise(ErrorMessages.PatternHasMethod, {\n        node: prop.key\n      });\n    } else {\n      super.toAssignableObjectExpressionProp(prop, ...args);\n    }\n  }\n\n  finishCallExpression(node, optional) {\n    super.finishCallExpression(node, optional);\n\n    if (node.callee.type === \"Import\") {\n      node.type = \"ImportExpression\";\n      node.source = node.arguments[0];\n\n      if (this.hasPlugin(\"importAssertions\")) {\n        var _node$arguments$;\n\n        node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;\n      }\n\n      delete node.arguments;\n      delete node.callee;\n    }\n\n    return node;\n  }\n\n  toReferencedArguments(node) {\n    if (node.type === \"ImportExpression\") {\n      return;\n    }\n\n    super.toReferencedArguments(node);\n  }\n\n  parseExport(node) {\n    super.parseExport(node);\n\n    switch (node.type) {\n      case \"ExportAllDeclaration\":\n        node.exported = null;\n        break;\n\n      case \"ExportNamedDeclaration\":\n        if (node.specifiers.length === 1 && node.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n          node.type = \"ExportAllDeclaration\";\n          node.exported = node.specifiers[0].exported;\n          delete node.specifiers;\n        }\n\n        break;\n    }\n\n    return node;\n  }\n\n  parseSubscript(base, startPos, startLoc, noCalls, state) {\n    const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n    if (state.optionalChainMember) {\n      if (node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\") {\n        node.type = node.type.substring(8);\n      }\n\n      if (state.stop) {\n        const chain = this.startNodeAtNode(node);\n        chain.expression = node;\n        return this.finishNode(chain, \"ChainExpression\");\n      }\n    } else if (node.type === \"MemberExpression\" || node.type === \"CallExpression\") {\n      node.optional = false;\n    }\n\n    return node;\n  }\n\n  hasPropertyAsPrivateName(node) {\n    if (node.type === \"ChainExpression\") {\n      node = node.expression;\n    }\n\n    return super.hasPropertyAsPrivateName(node);\n  }\n\n  isOptionalChain(node) {\n    return node.type === \"ChainExpression\";\n  }\n\n  isObjectProperty(node) {\n    return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n  }\n\n  isObjectMethod(node) {\n    return node.method || node.kind === \"get\" || node.kind === \"set\";\n  }\n\n  finishNodeAt(node, type, endLoc) {\n    return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n  }\n\n  resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n    super.resetEndLocation(node, endLoc);\n    toESTreeLocation(node);\n  }\n\n});\n\nclass TokContext {\n  constructor(token, preserveSpace) {\n    this.token = void 0;\n    this.preserveSpace = void 0;\n    this.token = token;\n    this.preserveSpace = !!preserveSpace;\n  }\n\n}\nconst types = {\n  brace: new TokContext(\"{\"),\n  j_oTag: new TokContext(\"<tag\"),\n  j_cTag: new TokContext(\"</tag\"),\n  j_expr: new TokContext(\"<tag>...</tag>\", true)\n};\n{\n  types.template = new TokContext(\"`\", true);\n}\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n  constructor(label, conf = {}) {\n    this.label = void 0;\n    this.keyword = void 0;\n    this.beforeExpr = void 0;\n    this.startsExpr = void 0;\n    this.rightAssociative = void 0;\n    this.isLoop = void 0;\n    this.isAssign = void 0;\n    this.prefix = void 0;\n    this.postfix = void 0;\n    this.binop = void 0;\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.rightAssociative = !!conf.rightAssociative;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop != null ? conf.binop : null;\n    {\n      this.updateContext = null;\n    }\n  }\n\n}\nconst keywords$1 = new Map();\n\nfunction createKeyword(name, options = {}) {\n  options.keyword = name;\n  const token = createToken(name, options);\n  keywords$1.set(name, token);\n  return token;\n}\n\nfunction createBinop(name, binop) {\n  return createToken(name, {\n    beforeExpr,\n    binop\n  });\n}\n\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\n\nfunction createToken(name, options = {}) {\n  var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n\n  ++tokenTypeCounter;\n  tokenLabels.push(name);\n  tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n  tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n  tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n  tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n  tokenTypes.push(new ExportedTokenType(name, options));\n  return tokenTypeCounter;\n}\n\nfunction createKeywordLike(name, options = {}) {\n  var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n\n  ++tokenTypeCounter;\n  keywords$1.set(name, tokenTypeCounter);\n  tokenLabels.push(name);\n  tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n  tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n  tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n  tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n  tokenTypes.push(new ExportedTokenType(\"name\", options));\n  return tokenTypeCounter;\n}\n\nconst tt = {\n  bracketL: createToken(\"[\", {\n    beforeExpr,\n    startsExpr\n  }),\n  bracketHashL: createToken(\"#[\", {\n    beforeExpr,\n    startsExpr\n  }),\n  bracketBarL: createToken(\"[|\", {\n    beforeExpr,\n    startsExpr\n  }),\n  bracketR: createToken(\"]\"),\n  bracketBarR: createToken(\"|]\"),\n  braceL: createToken(\"{\", {\n    beforeExpr,\n    startsExpr\n  }),\n  braceBarL: createToken(\"{|\", {\n    beforeExpr,\n    startsExpr\n  }),\n  braceHashL: createToken(\"#{\", {\n    beforeExpr,\n    startsExpr\n  }),\n  braceR: createToken(\"}\", {\n    beforeExpr\n  }),\n  braceBarR: createToken(\"|}\"),\n  parenL: createToken(\"(\", {\n    beforeExpr,\n    startsExpr\n  }),\n  parenR: createToken(\")\"),\n  comma: createToken(\",\", {\n    beforeExpr\n  }),\n  semi: createToken(\";\", {\n    beforeExpr\n  }),\n  colon: createToken(\":\", {\n    beforeExpr\n  }),\n  doubleColon: createToken(\"::\", {\n    beforeExpr\n  }),\n  dot: createToken(\".\"),\n  question: createToken(\"?\", {\n    beforeExpr\n  }),\n  questionDot: createToken(\"?.\"),\n  arrow: createToken(\"=>\", {\n    beforeExpr\n  }),\n  template: createToken(\"template\"),\n  ellipsis: createToken(\"...\", {\n    beforeExpr\n  }),\n  backQuote: createToken(\"`\", {\n    startsExpr\n  }),\n  dollarBraceL: createToken(\"${\", {\n    beforeExpr,\n    startsExpr\n  }),\n  templateTail: createToken(\"...`\", {\n    startsExpr\n  }),\n  templateNonTail: createToken(\"...${\", {\n    beforeExpr,\n    startsExpr\n  }),\n  at: createToken(\"@\"),\n  hash: createToken(\"#\", {\n    startsExpr\n  }),\n  interpreterDirective: createToken(\"#!...\"),\n  eq: createToken(\"=\", {\n    beforeExpr,\n    isAssign\n  }),\n  assign: createToken(\"_=\", {\n    beforeExpr,\n    isAssign\n  }),\n  slashAssign: createToken(\"_=\", {\n    beforeExpr,\n    isAssign\n  }),\n  xorAssign: createToken(\"_=\", {\n    beforeExpr,\n    isAssign\n  }),\n  moduloAssign: createToken(\"_=\", {\n    beforeExpr,\n    isAssign\n  }),\n  incDec: createToken(\"++/--\", {\n    prefix,\n    postfix,\n    startsExpr\n  }),\n  bang: createToken(\"!\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  tilde: createToken(\"~\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  doubleCaret: createToken(\"^^\", {\n    startsExpr\n  }),\n  doubleAt: createToken(\"@@\", {\n    startsExpr\n  }),\n  pipeline: createBinop(\"|>\", 0),\n  nullishCoalescing: createBinop(\"??\", 1),\n  logicalOR: createBinop(\"||\", 1),\n  logicalAND: createBinop(\"&&\", 2),\n  bitwiseOR: createBinop(\"|\", 3),\n  bitwiseXOR: createBinop(\"^\", 4),\n  bitwiseAND: createBinop(\"&\", 5),\n  equality: createBinop(\"==/!=/===/!==\", 6),\n  lt: createBinop(\"</>/<=/>=\", 7),\n  gt: createBinop(\"</>/<=/>=\", 7),\n  relational: createBinop(\"</>/<=/>=\", 7),\n  bitShift: createBinop(\"<</>>/>>>\", 8),\n  bitShiftL: createBinop(\"<</>>/>>>\", 8),\n  bitShiftR: createBinop(\"<</>>/>>>\", 8),\n  plusMin: createToken(\"+/-\", {\n    beforeExpr,\n    binop: 9,\n    prefix,\n    startsExpr\n  }),\n  modulo: createToken(\"%\", {\n    binop: 10,\n    startsExpr\n  }),\n  star: createToken(\"*\", {\n    binop: 10\n  }),\n  slash: createBinop(\"/\", 10),\n  exponent: createToken(\"**\", {\n    beforeExpr,\n    binop: 11,\n    rightAssociative: true\n  }),\n  _in: createKeyword(\"in\", {\n    beforeExpr,\n    binop: 7\n  }),\n  _instanceof: createKeyword(\"instanceof\", {\n    beforeExpr,\n    binop: 7\n  }),\n  _break: createKeyword(\"break\"),\n  _case: createKeyword(\"case\", {\n    beforeExpr\n  }),\n  _catch: createKeyword(\"catch\"),\n  _continue: createKeyword(\"continue\"),\n  _debugger: createKeyword(\"debugger\"),\n  _default: createKeyword(\"default\", {\n    beforeExpr\n  }),\n  _else: createKeyword(\"else\", {\n    beforeExpr\n  }),\n  _finally: createKeyword(\"finally\"),\n  _function: createKeyword(\"function\", {\n    startsExpr\n  }),\n  _if: createKeyword(\"if\"),\n  _return: createKeyword(\"return\", {\n    beforeExpr\n  }),\n  _switch: createKeyword(\"switch\"),\n  _throw: createKeyword(\"throw\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  _try: createKeyword(\"try\"),\n  _var: createKeyword(\"var\"),\n  _const: createKeyword(\"const\"),\n  _with: createKeyword(\"with\"),\n  _new: createKeyword(\"new\", {\n    beforeExpr,\n    startsExpr\n  }),\n  _this: createKeyword(\"this\", {\n    startsExpr\n  }),\n  _super: createKeyword(\"super\", {\n    startsExpr\n  }),\n  _class: createKeyword(\"class\", {\n    startsExpr\n  }),\n  _extends: createKeyword(\"extends\", {\n    beforeExpr\n  }),\n  _export: createKeyword(\"export\"),\n  _import: createKeyword(\"import\", {\n    startsExpr\n  }),\n  _null: createKeyword(\"null\", {\n    startsExpr\n  }),\n  _true: createKeyword(\"true\", {\n    startsExpr\n  }),\n  _false: createKeyword(\"false\", {\n    startsExpr\n  }),\n  _typeof: createKeyword(\"typeof\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  _void: createKeyword(\"void\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  _delete: createKeyword(\"delete\", {\n    beforeExpr,\n    prefix,\n    startsExpr\n  }),\n  _do: createKeyword(\"do\", {\n    isLoop,\n    beforeExpr\n  }),\n  _for: createKeyword(\"for\", {\n    isLoop\n  }),\n  _while: createKeyword(\"while\", {\n    isLoop\n  }),\n  _as: createKeywordLike(\"as\", {\n    startsExpr\n  }),\n  _assert: createKeywordLike(\"assert\", {\n    startsExpr\n  }),\n  _async: createKeywordLike(\"async\", {\n    startsExpr\n  }),\n  _await: createKeywordLike(\"await\", {\n    startsExpr\n  }),\n  _from: createKeywordLike(\"from\", {\n    startsExpr\n  }),\n  _get: createKeywordLike(\"get\", {\n    startsExpr\n  }),\n  _let: createKeywordLike(\"let\", {\n    startsExpr\n  }),\n  _meta: createKeywordLike(\"meta\", {\n    startsExpr\n  }),\n  _of: createKeywordLike(\"of\", {\n    startsExpr\n  }),\n  _sent: createKeywordLike(\"sent\", {\n    startsExpr\n  }),\n  _set: createKeywordLike(\"set\", {\n    startsExpr\n  }),\n  _static: createKeywordLike(\"static\", {\n    startsExpr\n  }),\n  _yield: createKeywordLike(\"yield\", {\n    startsExpr\n  }),\n  _asserts: createKeywordLike(\"asserts\", {\n    startsExpr\n  }),\n  _checks: createKeywordLike(\"checks\", {\n    startsExpr\n  }),\n  _exports: createKeywordLike(\"exports\", {\n    startsExpr\n  }),\n  _global: createKeywordLike(\"global\", {\n    startsExpr\n  }),\n  _implements: createKeywordLike(\"implements\", {\n    startsExpr\n  }),\n  _intrinsic: createKeywordLike(\"intrinsic\", {\n    startsExpr\n  }),\n  _infer: createKeywordLike(\"infer\", {\n    startsExpr\n  }),\n  _is: createKeywordLike(\"is\", {\n    startsExpr\n  }),\n  _mixins: createKeywordLike(\"mixins\", {\n    startsExpr\n  }),\n  _proto: createKeywordLike(\"proto\", {\n    startsExpr\n  }),\n  _require: createKeywordLike(\"require\", {\n    startsExpr\n  }),\n  _keyof: createKeywordLike(\"keyof\", {\n    startsExpr\n  }),\n  _readonly: createKeywordLike(\"readonly\", {\n    startsExpr\n  }),\n  _unique: createKeywordLike(\"unique\", {\n    startsExpr\n  }),\n  _abstract: createKeywordLike(\"abstract\", {\n    startsExpr\n  }),\n  _declare: createKeywordLike(\"declare\", {\n    startsExpr\n  }),\n  _enum: createKeywordLike(\"enum\", {\n    startsExpr\n  }),\n  _module: createKeywordLike(\"module\", {\n    startsExpr\n  }),\n  _namespace: createKeywordLike(\"namespace\", {\n    startsExpr\n  }),\n  _interface: createKeywordLike(\"interface\", {\n    startsExpr\n  }),\n  _type: createKeywordLike(\"type\", {\n    startsExpr\n  }),\n  _opaque: createKeywordLike(\"opaque\", {\n    startsExpr\n  }),\n  name: createToken(\"name\", {\n    startsExpr\n  }),\n  string: createToken(\"string\", {\n    startsExpr\n  }),\n  num: createToken(\"num\", {\n    startsExpr\n  }),\n  bigint: createToken(\"bigint\", {\n    startsExpr\n  }),\n  decimal: createToken(\"decimal\", {\n    startsExpr\n  }),\n  regexp: createToken(\"regexp\", {\n    startsExpr\n  }),\n  privateName: createToken(\"#name\", {\n    startsExpr\n  }),\n  eof: createToken(\"eof\"),\n  jsxName: createToken(\"jsxName\"),\n  jsxText: createToken(\"jsxText\", {\n    beforeExpr: true\n  }),\n  jsxTagStart: createToken(\"jsxTagStart\", {\n    startsExpr: true\n  }),\n  jsxTagEnd: createToken(\"jsxTagEnd\"),\n  placeholder: createToken(\"%%\", {\n    startsExpr: true\n  })\n};\nfunction tokenIsIdentifier(token) {\n  return token >= 93 && token <= 128;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n  return token <= 92;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n  return token >= 58 && token <= 128;\n}\nfunction tokenIsLiteralPropertyName(token) {\n  return token >= 58 && token <= 132;\n}\nfunction tokenComesBeforeExpression(token) {\n  return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n  return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n  return token >= 29 && token <= 33;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n  return token >= 125 && token <= 127;\n}\nfunction tokenIsLoop(token) {\n  return token >= 90 && token <= 92;\n}\nfunction tokenIsKeyword(token) {\n  return token >= 58 && token <= 92;\n}\nfunction tokenIsOperator(token) {\n  return token >= 39 && token <= 59;\n}\nfunction tokenIsPostfix(token) {\n  return token === 34;\n}\nfunction tokenIsPrefix(token) {\n  return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n  return token >= 117 && token <= 119;\n}\nfunction tokenIsTSDeclarationStart(token) {\n  return token >= 120 && token <= 126;\n}\nfunction tokenLabelName(token) {\n  return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n  return tokenBinops[token];\n}\nfunction tokenIsRightAssociative(token) {\n  return token === 57;\n}\nfunction tokenIsTemplate(token) {\n  return token >= 24 && token <= 25;\n}\nfunction getExportedToken(token) {\n  return tokenTypes[token];\n}\n{\n  tokenTypes[8].updateContext = context => {\n    context.pop();\n  };\n\n  tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {\n    context.push(types.brace);\n  };\n\n  tokenTypes[22].updateContext = context => {\n    if (context[context.length - 1] === types.template) {\n      context.pop();\n    } else {\n      context.push(types.template);\n    }\n  };\n\n  tokenTypes[138].updateContext = context => {\n    context.push(types.j_expr, types.j_oTag);\n  };\n}\n\nclass Position {\n  constructor(line, col, index) {\n    this.line = void 0;\n    this.column = void 0;\n    this.index = void 0;\n    this.line = line;\n    this.column = col;\n    this.index = index;\n  }\n\n}\nclass SourceLocation {\n  constructor(start, end) {\n    this.start = void 0;\n    this.end = void 0;\n    this.filename = void 0;\n    this.identifierName = void 0;\n    this.start = start;\n    this.end = end;\n  }\n\n}\nfunction createPositionWithColumnOffset(position, columnOffset) {\n  const {\n    line,\n    column,\n    index\n  } = position;\n  return new Position(line, column + columnOffset, index + columnOffset);\n}\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\nfunction isInAstralSet(code, set) {\n  let pos = 0x10000;\n\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n    pos += set[i + 1];\n    if (pos >= code) return true;\n  }\n\n  return false;\n}\n\nfunction isIdentifierStart(code) {\n  if (code < 65) return code === 36;\n  if (code <= 90) return true;\n  if (code < 97) return code === 95;\n  if (code <= 122) return true;\n\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n  }\n\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n  if (code < 48) return code === 36;\n  if (code < 58) return true;\n  if (code < 65) return false;\n  if (code <= 90) return true;\n  if (code < 97) return code === 95;\n  if (code <= 122) return true;\n\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n\n  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\nconst reservedWords = {\n  keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n  strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n  strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n  return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n  return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n  return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n  return keywords.has(word);\n}\n\nfunction isIteratorStart(current, next, next2) {\n  return current === 64 && next === 64 && isIdentifierStart(next2);\n}\nconst reservedWordLikeSet = new Set([\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\", \"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\", \"eval\", \"arguments\", \"enum\", \"await\"]);\nfunction canBeReservedWord(word) {\n  return reservedWordLikeSet.has(word);\n}\n\nconst SCOPE_OTHER = 0b000000000,\n      SCOPE_PROGRAM = 0b000000001,\n      SCOPE_FUNCTION = 0b000000010,\n      SCOPE_ARROW = 0b000000100,\n      SCOPE_SIMPLE_CATCH = 0b000001000,\n      SCOPE_SUPER = 0b000010000,\n      SCOPE_DIRECT_SUPER = 0b000100000,\n      SCOPE_CLASS = 0b001000000,\n      SCOPE_STATIC_BLOCK = 0b010000000,\n      SCOPE_TS_MODULE = 0b100000000,\n      SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;\nconst BIND_KIND_VALUE = 0b000000000001,\n      BIND_KIND_TYPE = 0b000000000010,\n      BIND_SCOPE_VAR = 0b000000000100,\n      BIND_SCOPE_LEXICAL = 0b000000001000,\n      BIND_SCOPE_FUNCTION = 0b000000010000,\n      BIND_FLAGS_NONE = 0b000001000000,\n      BIND_FLAGS_CLASS = 0b000010000000,\n      BIND_FLAGS_TS_ENUM = 0b000100000000,\n      BIND_FLAGS_TS_CONST_ENUM = 0b001000000000,\n      BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000,\n      BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000;\nconst BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS,\n      BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,\n      BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,\n      BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,\n      BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,\n      BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,\n      BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,\n      BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n      BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,\n      BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,\n      BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,\n      BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n      BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;\nconst CLASS_ELEMENT_FLAG_STATIC = 0b100,\n      CLASS_ELEMENT_KIND_GETTER = 0b010,\n      CLASS_ELEMENT_KIND_SETTER = 0b001,\n      CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;\nconst CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,\n      CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,\n      CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,\n      CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,\n      CLASS_ELEMENT_OTHER = 0;\n\nclass Scope {\n  constructor(flags) {\n    this.var = new Set();\n    this.lexical = new Set();\n    this.functions = new Set();\n    this.flags = flags;\n  }\n\n}\nclass ScopeHandler {\n  constructor(raise, inModule) {\n    this.scopeStack = [];\n    this.undefinedExports = new Map();\n    this.raise = raise;\n    this.inModule = inModule;\n  }\n\n  get inFunction() {\n    return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;\n  }\n\n  get allowSuper() {\n    return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;\n  }\n\n  get allowDirectSuper() {\n    return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;\n  }\n\n  get inClass() {\n    return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;\n  }\n\n  get inClassAndNotInNonArrowFunction() {\n    const flags = this.currentThisScopeFlags();\n    return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;\n  }\n\n  get inStaticBlock() {\n    for (let i = this.scopeStack.length - 1;; i--) {\n      const {\n        flags\n      } = this.scopeStack[i];\n\n      if (flags & SCOPE_STATIC_BLOCK) {\n        return true;\n      }\n\n      if (flags & (SCOPE_VAR | SCOPE_CLASS)) {\n        return false;\n      }\n    }\n  }\n\n  get inNonArrowFunction() {\n    return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;\n  }\n\n  get treatFunctionsAsVar() {\n    return this.treatFunctionsAsVarInScope(this.currentScope());\n  }\n\n  createScope(flags) {\n    return new Scope(flags);\n  }\n\n  enter(flags) {\n    this.scopeStack.push(this.createScope(flags));\n  }\n\n  exit() {\n    this.scopeStack.pop();\n  }\n\n  treatFunctionsAsVarInScope(scope) {\n    return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM);\n  }\n\n  declareName(name, bindingType, loc) {\n    let scope = this.currentScope();\n\n    if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n      if (bindingType & BIND_SCOPE_FUNCTION) {\n        scope.functions.add(name);\n      } else {\n        scope.lexical.add(name);\n      }\n\n      if (bindingType & BIND_SCOPE_LEXICAL) {\n        this.maybeExportDefined(scope, name);\n      }\n    } else if (bindingType & BIND_SCOPE_VAR) {\n      for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n        scope = this.scopeStack[i];\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        scope.var.add(name);\n        this.maybeExportDefined(scope, name);\n        if (scope.flags & SCOPE_VAR) break;\n      }\n    }\n\n    if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  maybeExportDefined(scope, name) {\n    if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  checkRedeclarationInScope(scope, name, bindingType, loc) {\n    if (this.isRedeclaredInScope(scope, name, bindingType)) {\n      this.raise(ErrorMessages.VarRedeclaration, {\n        at: loc\n      }, name);\n    }\n  }\n\n  isRedeclaredInScope(scope, name, bindingType) {\n    if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n    if (bindingType & BIND_SCOPE_LEXICAL) {\n      return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name);\n    }\n\n    if (bindingType & BIND_SCOPE_FUNCTION) {\n      return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name);\n    }\n\n    return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);\n  }\n\n  checkLocalExport(id) {\n    const {\n      name\n    } = id;\n    const topLevelScope = this.scopeStack[0];\n\n    if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) {\n      this.undefinedExports.set(name, id.loc.start);\n    }\n  }\n\n  currentScope() {\n    return this.scopeStack[this.scopeStack.length - 1];\n  }\n\n  currentVarScopeFlags() {\n    for (let i = this.scopeStack.length - 1;; i--) {\n      const {\n        flags\n      } = this.scopeStack[i];\n\n      if (flags & SCOPE_VAR) {\n        return flags;\n      }\n    }\n  }\n\n  currentThisScopeFlags() {\n    for (let i = this.scopeStack.length - 1;; i--) {\n      const {\n        flags\n      } = this.scopeStack[i];\n\n      if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {\n        return flags;\n      }\n    }\n  }\n\n}\n\nclass FlowScope extends Scope {\n  constructor(...args) {\n    super(...args);\n    this.declareFunctions = new Set();\n  }\n\n}\n\nclass FlowScopeHandler extends ScopeHandler {\n  createScope(flags) {\n    return new FlowScope(flags);\n  }\n\n  declareName(name, bindingType, loc) {\n    const scope = this.currentScope();\n\n    if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n      this.maybeExportDefined(scope, name);\n      scope.declareFunctions.add(name);\n      return;\n    }\n\n    super.declareName(...arguments);\n  }\n\n  isRedeclaredInScope(scope, name, bindingType) {\n    if (super.isRedeclaredInScope(...arguments)) return true;\n\n    if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {\n      return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));\n    }\n\n    return false;\n  }\n\n  checkLocalExport(id) {\n    if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n      super.checkLocalExport(id);\n    }\n  }\n\n}\n\nconst lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nconst lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code) {\n  switch (code) {\n    case 10:\n    case 13:\n    case 8232:\n    case 8233:\n      return true;\n\n    default:\n      return false;\n  }\n}\nconst skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nconst skipWhiteSpaceInLine = /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/y;\nconst skipWhiteSpaceToLineBreak = new RegExp(\"(?=(\" + skipWhiteSpaceInLine.source + \"))\\\\1\" + /(?=[\\n\\r\\u2028\\u2029]|\\/\\*(?!.*?\\*\\/)|$)/.source, \"y\");\nfunction isWhitespace(code) {\n  switch (code) {\n    case 0x0009:\n    case 0x000b:\n    case 0x000c:\n    case 32:\n    case 160:\n    case 5760:\n    case 0x2000:\n    case 0x2001:\n    case 0x2002:\n    case 0x2003:\n    case 0x2004:\n    case 0x2005:\n    case 0x2006:\n    case 0x2007:\n    case 0x2008:\n    case 0x2009:\n    case 0x200a:\n    case 0x202f:\n    case 0x205f:\n    case 0x3000:\n    case 0xfeff:\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nclass State {\n  constructor() {\n    this.strict = void 0;\n    this.curLine = void 0;\n    this.lineStart = void 0;\n    this.startLoc = void 0;\n    this.endLoc = void 0;\n    this.errors = [];\n    this.potentialArrowAt = -1;\n    this.noArrowAt = [];\n    this.noArrowParamsConversionAt = [];\n    this.maybeInArrowParameters = false;\n    this.inType = false;\n    this.noAnonFunctionType = false;\n    this.hasFlowComment = false;\n    this.isAmbientContext = false;\n    this.inAbstractClass = false;\n    this.topicContext = {\n      maxNumOfResolvableTopics: 0,\n      maxTopicIndex: null\n    };\n    this.soloAwait = false;\n    this.inFSharpPipelineDirectBody = false;\n    this.labels = [];\n    this.decoratorStack = [[]];\n    this.comments = [];\n    this.commentStack = [];\n    this.pos = 0;\n    this.type = 135;\n    this.value = null;\n    this.start = 0;\n    this.end = 0;\n    this.lastTokEndLoc = null;\n    this.lastTokStartLoc = null;\n    this.lastTokStart = 0;\n    this.context = [types.brace];\n    this.canStartJSXElement = true;\n    this.containsEsc = false;\n    this.strictErrors = new Map();\n    this.tokensLength = 0;\n  }\n\n  init({\n    strictMode,\n    sourceType,\n    startLine,\n    startColumn\n  }) {\n    this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === \"module\";\n    this.curLine = startLine;\n    this.lineStart = -startColumn;\n    this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);\n  }\n\n  curPosition() {\n    return new Position(this.curLine, this.pos - this.lineStart, this.pos);\n  }\n\n  clone(skipArrays) {\n    const state = new State();\n    const keys = Object.keys(this);\n\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      let val = this[key];\n\n      if (!skipArrays && Array.isArray(val)) {\n        val = val.slice();\n      }\n\n      state[key] = val;\n    }\n\n    return state;\n  }\n\n}\n\nvar _isDigit = function isDigit(code) {\n  return code >= 48 && code <= 57;\n};\nconst VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: [46, 66, 69, 79, 95, 98, 101, 111],\n  hex: [46, 88, 95, 120]\n};\nconst allowedNumericSeparatorSiblings = {};\nallowedNumericSeparatorSiblings.bin = [48, 49];\nallowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55];\nallowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57];\nallowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102];\nclass Token {\n  constructor(state) {\n    this.type = state.type;\n    this.value = state.value;\n    this.start = state.start;\n    this.end = state.end;\n    this.loc = new SourceLocation(state.startLoc, state.endLoc);\n  }\n\n}\nclass Tokenizer extends ParserError {\n  constructor(options, input) {\n    super();\n    this.isLookahead = void 0;\n    this.tokens = [];\n    this.state = new State();\n    this.state.init(options);\n    this.input = input;\n    this.length = input.length;\n    this.isLookahead = false;\n  }\n\n  pushToken(token) {\n    this.tokens.length = this.state.tokensLength;\n    this.tokens.push(token);\n    ++this.state.tokensLength;\n  }\n\n  next() {\n    this.checkKeywordEscapes();\n\n    if (this.options.tokens) {\n      this.pushToken(new Token(this.state));\n    }\n\n    this.state.lastTokStart = this.state.start;\n    this.state.lastTokEndLoc = this.state.endLoc;\n    this.state.lastTokStartLoc = this.state.startLoc;\n    this.nextToken();\n  }\n\n  eat(type) {\n    if (this.match(type)) {\n      this.next();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  match(type) {\n    return this.state.type === type;\n  }\n\n  createLookaheadState(state) {\n    return {\n      pos: state.pos,\n      value: null,\n      type: state.type,\n      start: state.start,\n      end: state.end,\n      context: [this.curContext()],\n      inType: state.inType,\n      startLoc: state.startLoc,\n      lastTokEndLoc: state.lastTokEndLoc,\n      curLine: state.curLine,\n      lineStart: state.lineStart,\n      curPosition: state.curPosition\n    };\n  }\n\n  lookahead() {\n    const old = this.state;\n    this.state = this.createLookaheadState(old);\n    this.isLookahead = true;\n    this.nextToken();\n    this.isLookahead = false;\n    const curr = this.state;\n    this.state = old;\n    return curr;\n  }\n\n  nextTokenStart() {\n    return this.nextTokenStartSince(this.state.pos);\n  }\n\n  nextTokenStartSince(pos) {\n    skipWhiteSpace.lastIndex = pos;\n    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n  }\n\n  lookaheadCharCode() {\n    return this.input.charCodeAt(this.nextTokenStart());\n  }\n\n  codePointAtPos(pos) {\n    let cp = this.input.charCodeAt(pos);\n\n    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n      const trail = this.input.charCodeAt(pos);\n\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n\n    return cp;\n  }\n\n  setStrict(strict) {\n    this.state.strict = strict;\n\n    if (strict) {\n      this.state.strictErrors.forEach(({\n        message,\n        loc\n      }) => this.raise(message, {\n        at: loc\n      }));\n      this.state.strictErrors.clear();\n    }\n  }\n\n  curContext() {\n    return this.state.context[this.state.context.length - 1];\n  }\n\n  nextToken() {\n    this.skipSpace();\n    this.state.start = this.state.pos;\n    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n\n    if (this.state.pos >= this.length) {\n      this.finishToken(135);\n      return;\n    }\n\n    this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n  }\n\n  skipBlockComment() {\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    const start = this.state.pos;\n    const end = this.input.indexOf(\"*/\", start + 2);\n\n    if (end === -1) {\n      throw this.raise(ErrorMessages.UnterminatedComment, {\n        at: this.state.curPosition()\n      });\n    }\n\n    this.state.pos = end + 2;\n    lineBreakG.lastIndex = start + 2;\n\n    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n      ++this.state.curLine;\n      this.state.lineStart = lineBreakG.lastIndex;\n    }\n\n    if (this.isLookahead) return;\n    const comment = {\n      type: \"CommentBlock\",\n      value: this.input.slice(start + 2, end),\n      start,\n      end: end + 2,\n      loc: new SourceLocation(startLoc, this.state.curPosition())\n    };\n    if (this.options.tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipLineComment(startSkip) {\n    const start = this.state.pos;\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    let ch = this.input.charCodeAt(this.state.pos += startSkip);\n\n    if (this.state.pos < this.length) {\n      while (!isNewLine(ch) && ++this.state.pos < this.length) {\n        ch = this.input.charCodeAt(this.state.pos);\n      }\n    }\n\n    if (this.isLookahead) return;\n    const end = this.state.pos;\n    const value = this.input.slice(start + startSkip, end);\n    const comment = {\n      type: \"CommentLine\",\n      value,\n      start,\n      end,\n      loc: new SourceLocation(startLoc, this.state.curPosition())\n    };\n    if (this.options.tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipSpace() {\n    const spaceStart = this.state.pos;\n    const comments = [];\n\n    loop: while (this.state.pos < this.length) {\n      const ch = this.input.charCodeAt(this.state.pos);\n\n      switch (ch) {\n        case 32:\n        case 160:\n        case 9:\n          ++this.state.pos;\n          break;\n\n        case 13:\n          if (this.input.charCodeAt(this.state.pos + 1) === 10) {\n            ++this.state.pos;\n          }\n\n        case 10:\n        case 8232:\n        case 8233:\n          ++this.state.pos;\n          ++this.state.curLine;\n          this.state.lineStart = this.state.pos;\n          break;\n\n        case 47:\n          switch (this.input.charCodeAt(this.state.pos + 1)) {\n            case 42:\n              {\n                const comment = this.skipBlockComment();\n\n                if (comment !== undefined) {\n                  this.addComment(comment);\n                  if (this.options.attachComment) comments.push(comment);\n                }\n\n                break;\n              }\n\n            case 47:\n              {\n                const comment = this.skipLineComment(2);\n\n                if (comment !== undefined) {\n                  this.addComment(comment);\n                  if (this.options.attachComment) comments.push(comment);\n                }\n\n                break;\n              }\n\n            default:\n              break loop;\n          }\n\n          break;\n\n        default:\n          if (isWhitespace(ch)) {\n            ++this.state.pos;\n          } else if (ch === 45 && !this.inModule) {\n            const pos = this.state.pos;\n\n            if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {\n              const comment = this.skipLineComment(3);\n\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else if (ch === 60 && !this.inModule) {\n            const pos = this.state.pos;\n\n            if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {\n              const comment = this.skipLineComment(4);\n\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else {\n            break loop;\n          }\n\n      }\n    }\n\n    if (comments.length > 0) {\n      const end = this.state.pos;\n      const CommentWhitespace = {\n        start: spaceStart,\n        end,\n        comments,\n        leadingNode: null,\n        trailingNode: null,\n        containingNode: null\n      };\n      this.state.commentStack.push(CommentWhitespace);\n    }\n  }\n\n  finishToken(type, val) {\n    this.state.end = this.state.pos;\n    this.state.endLoc = this.state.curPosition();\n    const prevType = this.state.type;\n    this.state.type = type;\n    this.state.value = val;\n\n    if (!this.isLookahead) {\n      this.updateContext(prevType);\n    }\n  }\n\n  replaceToken(type) {\n    this.state.type = type;\n    this.updateContext();\n  }\n\n  readToken_numberSign() {\n    if (this.state.pos === 0 && this.readToken_interpreter()) {\n      return;\n    }\n\n    const nextPos = this.state.pos + 1;\n    const next = this.codePointAtPos(nextPos);\n\n    if (next >= 48 && next <= 57) {\n      throw this.raise(ErrorMessages.UnexpectedDigitAfterHash, {\n        at: this.state.curPosition()\n      });\n    }\n\n    if (next === 123 || next === 91 && this.hasPlugin(\"recordAndTuple\")) {\n      this.expectPlugin(\"recordAndTuple\");\n\n      if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"hash\") {\n        throw this.raise(next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType, {\n          at: this.state.curPosition()\n        });\n      }\n\n      this.state.pos += 2;\n\n      if (next === 123) {\n        this.finishToken(7);\n      } else {\n        this.finishToken(1);\n      }\n    } else if (isIdentifierStart(next)) {\n      ++this.state.pos;\n      this.finishToken(134, this.readWord1(next));\n    } else if (next === 92) {\n      ++this.state.pos;\n      this.finishToken(134, this.readWord1());\n    } else {\n      this.finishOp(27, 1);\n    }\n  }\n\n  readToken_dot() {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next >= 48 && next <= 57) {\n      this.readNumber(true);\n      return;\n    }\n\n    if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {\n      this.state.pos += 3;\n      this.finishToken(21);\n    } else {\n      ++this.state.pos;\n      this.finishToken(16);\n    }\n  }\n\n  readToken_slash() {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === 61) {\n      this.finishOp(31, 2);\n    } else {\n      this.finishOp(56, 1);\n    }\n  }\n\n  readToken_interpreter() {\n    if (this.state.pos !== 0 || this.length < 2) return false;\n    let ch = this.input.charCodeAt(this.state.pos + 1);\n    if (ch !== 33) return false;\n    const start = this.state.pos;\n    this.state.pos += 1;\n\n    while (!isNewLine(ch) && ++this.state.pos < this.length) {\n      ch = this.input.charCodeAt(this.state.pos);\n    }\n\n    const value = this.input.slice(start + 2, this.state.pos);\n    this.finishToken(28, value);\n    return true;\n  }\n\n  readToken_mult_modulo(code) {\n    let type = code === 42 ? 55 : 54;\n    let width = 1;\n    let next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (code === 42 && next === 42) {\n      width++;\n      next = this.input.charCodeAt(this.state.pos + 2);\n      type = 57;\n    }\n\n    if (next === 61 && !this.state.inType) {\n      width++;\n      type = code === 37 ? 33 : 30;\n    }\n\n    this.finishOp(type, width);\n  }\n\n  readToken_pipe_amp(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      if (this.input.charCodeAt(this.state.pos + 2) === 61) {\n        this.finishOp(30, 3);\n      } else {\n        this.finishOp(code === 124 ? 41 : 42, 2);\n      }\n\n      return;\n    }\n\n    if (code === 124) {\n      if (next === 62) {\n        this.finishOp(39, 2);\n        return;\n      }\n\n      if (this.hasPlugin(\"recordAndTuple\") && next === 125) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType, {\n            at: this.state.curPosition()\n          });\n        }\n\n        this.state.pos += 2;\n        this.finishToken(9);\n        return;\n      }\n\n      if (this.hasPlugin(\"recordAndTuple\") && next === 93) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType, {\n            at: this.state.curPosition()\n          });\n        }\n\n        this.state.pos += 2;\n        this.finishToken(4);\n        return;\n      }\n    }\n\n    if (next === 61) {\n      this.finishOp(30, 2);\n      return;\n    }\n\n    this.finishOp(code === 124 ? 43 : 45, 1);\n  }\n\n  readToken_caret() {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === 61 && !this.state.inType) {\n      this.finishOp(32, 2);\n    } else if (next === 94 && this.hasPlugin([\"pipelineOperator\", {\n      proposal: \"hack\",\n      topicToken: \"^^\"\n    }])) {\n      this.finishOp(37, 2);\n      const lookaheadCh = this.input.codePointAt(this.state.pos);\n\n      if (lookaheadCh === 94) {\n        throw this.unexpected();\n      }\n    } else {\n      this.finishOp(44, 1);\n    }\n  }\n\n  readToken_atSign() {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === 64 && this.hasPlugin([\"pipelineOperator\", {\n      proposal: \"hack\",\n      topicToken: \"@@\"\n    }])) {\n      this.finishOp(38, 2);\n    } else {\n      this.finishOp(26, 1);\n    }\n  }\n\n  readToken_plus_min(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      this.finishOp(34, 2);\n      return;\n    }\n\n    if (next === 61) {\n      this.finishOp(30, 2);\n    } else {\n      this.finishOp(53, 1);\n    }\n  }\n\n  readToken_lt() {\n    const {\n      pos\n    } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === 60) {\n      if (this.input.charCodeAt(pos + 2) === 61) {\n        this.finishOp(30, 3);\n        return;\n      }\n\n      this.finishOp(51, 2);\n      return;\n    }\n\n    if (next === 61) {\n      this.finishOp(49, 2);\n      return;\n    }\n\n    this.finishOp(47, 1);\n  }\n\n  readToken_gt() {\n    const {\n      pos\n    } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === 62) {\n      const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;\n\n      if (this.input.charCodeAt(pos + size) === 61) {\n        this.finishOp(30, size + 1);\n        return;\n      }\n\n      this.finishOp(52, size);\n      return;\n    }\n\n    if (next === 61) {\n      this.finishOp(49, 2);\n      return;\n    }\n\n    this.finishOp(48, 1);\n  }\n\n  readToken_eq_excl(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === 61) {\n      this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);\n      return;\n    }\n\n    if (code === 61 && next === 62) {\n      this.state.pos += 2;\n      this.finishToken(19);\n      return;\n    }\n\n    this.finishOp(code === 61 ? 29 : 35, 1);\n  }\n\n  readToken_question() {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    const next2 = this.input.charCodeAt(this.state.pos + 2);\n\n    if (next === 63) {\n      if (next2 === 61) {\n        this.finishOp(30, 3);\n      } else {\n        this.finishOp(40, 2);\n      }\n    } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {\n      this.state.pos += 2;\n      this.finishToken(18);\n    } else {\n      ++this.state.pos;\n      this.finishToken(17);\n    }\n  }\n\n  getTokenFromCode(code) {\n    switch (code) {\n      case 46:\n        this.readToken_dot();\n        return;\n\n      case 40:\n        ++this.state.pos;\n        this.finishToken(10);\n        return;\n\n      case 41:\n        ++this.state.pos;\n        this.finishToken(11);\n        return;\n\n      case 59:\n        ++this.state.pos;\n        this.finishToken(13);\n        return;\n\n      case 44:\n        ++this.state.pos;\n        this.finishToken(12);\n        return;\n\n      case 91:\n        if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType, {\n              at: this.state.curPosition()\n            });\n          }\n\n          this.state.pos += 2;\n          this.finishToken(2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(0);\n        }\n\n        return;\n\n      case 93:\n        ++this.state.pos;\n        this.finishToken(3);\n        return;\n\n      case 123:\n        if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType, {\n              at: this.state.curPosition()\n            });\n          }\n\n          this.state.pos += 2;\n          this.finishToken(6);\n        } else {\n          ++this.state.pos;\n          this.finishToken(5);\n        }\n\n        return;\n\n      case 125:\n        ++this.state.pos;\n        this.finishToken(8);\n        return;\n\n      case 58:\n        if (this.hasPlugin(\"functionBind\") && this.input.charCodeAt(this.state.pos + 1) === 58) {\n          this.finishOp(15, 2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(14);\n        }\n\n        return;\n\n      case 63:\n        this.readToken_question();\n        return;\n\n      case 96:\n        this.readTemplateToken();\n        return;\n\n      case 48:\n        {\n          const next = this.input.charCodeAt(this.state.pos + 1);\n\n          if (next === 120 || next === 88) {\n            this.readRadixNumber(16);\n            return;\n          }\n\n          if (next === 111 || next === 79) {\n            this.readRadixNumber(8);\n            return;\n          }\n\n          if (next === 98 || next === 66) {\n            this.readRadixNumber(2);\n            return;\n          }\n        }\n\n      case 49:\n      case 50:\n      case 51:\n      case 52:\n      case 53:\n      case 54:\n      case 55:\n      case 56:\n      case 57:\n        this.readNumber(false);\n        return;\n\n      case 34:\n      case 39:\n        this.readString(code);\n        return;\n\n      case 47:\n        this.readToken_slash();\n        return;\n\n      case 37:\n      case 42:\n        this.readToken_mult_modulo(code);\n        return;\n\n      case 124:\n      case 38:\n        this.readToken_pipe_amp(code);\n        return;\n\n      case 94:\n        this.readToken_caret();\n        return;\n\n      case 43:\n      case 45:\n        this.readToken_plus_min(code);\n        return;\n\n      case 60:\n        this.readToken_lt();\n        return;\n\n      case 62:\n        this.readToken_gt();\n        return;\n\n      case 61:\n      case 33:\n        this.readToken_eq_excl(code);\n        return;\n\n      case 126:\n        this.finishOp(36, 1);\n        return;\n\n      case 64:\n        this.readToken_atSign();\n        return;\n\n      case 35:\n        this.readToken_numberSign();\n        return;\n\n      case 92:\n        this.readWord();\n        return;\n\n      default:\n        if (isIdentifierStart(code)) {\n          this.readWord(code);\n          return;\n        }\n\n    }\n\n    throw this.raise(ErrorMessages.InvalidOrUnexpectedToken, {\n      at: this.state.curPosition()\n    }, String.fromCodePoint(code));\n  }\n\n  finishOp(type, size) {\n    const str = this.input.slice(this.state.pos, this.state.pos + size);\n    this.state.pos += size;\n    this.finishToken(type, str);\n  }\n\n  readRegexp() {\n    const startLoc = this.state.startLoc;\n    const start = this.state.start + 1;\n    let escaped, inClass;\n    let {\n      pos\n    } = this.state;\n\n    for (;; ++pos) {\n      if (pos >= this.length) {\n        throw this.raise(ErrorMessages.UnterminatedRegExp, {\n          at: createPositionWithColumnOffset(startLoc, 1)\n        });\n      }\n\n      const ch = this.input.charCodeAt(pos);\n\n      if (isNewLine(ch)) {\n        throw this.raise(ErrorMessages.UnterminatedRegExp, {\n          at: createPositionWithColumnOffset(startLoc, 1)\n        });\n      }\n\n      if (escaped) {\n        escaped = false;\n      } else {\n        if (ch === 91) {\n          inClass = true;\n        } else if (ch === 93 && inClass) {\n          inClass = false;\n        } else if (ch === 47 && !inClass) {\n          break;\n        }\n\n        escaped = ch === 92;\n      }\n    }\n\n    const content = this.input.slice(start, pos);\n    ++pos;\n    let mods = \"\";\n\n    const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n    while (pos < this.length) {\n      const cp = this.codePointAtPos(pos);\n      const char = String.fromCharCode(cp);\n\n      if (VALID_REGEX_FLAGS.has(cp)) {\n        if (cp === 118) {\n          this.expectPlugin(\"regexpUnicodeSets\", nextPos());\n\n          if (mods.includes(\"u\")) {\n            this.raise(ErrorMessages.IncompatibleRegExpUVFlags, {\n              at: nextPos()\n            });\n          }\n        } else if (cp === 117) {\n          if (mods.includes(\"v\")) {\n            this.raise(ErrorMessages.IncompatibleRegExpUVFlags, {\n              at: nextPos()\n            });\n          }\n        }\n\n        if (mods.includes(char)) {\n          this.raise(ErrorMessages.DuplicateRegExpFlags, {\n            at: nextPos()\n          });\n        }\n      } else if (isIdentifierChar(cp) || cp === 92) {\n        this.raise(ErrorMessages.MalformedRegExpFlags, {\n          at: nextPos()\n        });\n      } else {\n        break;\n      }\n\n      ++pos;\n      mods += char;\n    }\n\n    this.state.pos = pos;\n    this.finishToken(133, {\n      pattern: content,\n      flags: mods\n    });\n  }\n\n  readInt(radix, len, forceLen, allowNumSeparator = true) {\n    const start = this.state.pos;\n    const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n    const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin;\n    let invalid = false;\n    let total = 0;\n\n    for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n      const code = this.input.charCodeAt(this.state.pos);\n      let val;\n\n      if (code === 95) {\n        const prev = this.input.charCodeAt(this.state.pos - 1);\n        const next = this.input.charCodeAt(this.state.pos + 1);\n\n        if (allowedSiblings.indexOf(next) === -1) {\n          this.raise(ErrorMessages.UnexpectedNumericSeparator, {\n            at: this.state.curPosition()\n          });\n        } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {\n          this.raise(ErrorMessages.UnexpectedNumericSeparator, {\n            at: this.state.curPosition()\n          });\n        }\n\n        if (!allowNumSeparator) {\n          this.raise(ErrorMessages.NumericSeparatorInEscapeSequence, {\n            at: this.state.curPosition()\n          });\n        }\n\n        ++this.state.pos;\n        continue;\n      }\n\n      if (code >= 97) {\n        val = code - 97 + 10;\n      } else if (code >= 65) {\n        val = code - 65 + 10;\n      } else if (_isDigit(code)) {\n        val = code - 48;\n      } else {\n        val = Infinity;\n      }\n\n      if (val >= radix) {\n        if (this.options.errorRecovery && val <= 9) {\n          val = 0;\n          this.raise(ErrorMessages.InvalidDigit, {\n            at: this.state.curPosition()\n          }, radix);\n        } else if (forceLen) {\n          val = 0;\n          invalid = true;\n        } else {\n          break;\n        }\n      }\n\n      ++this.state.pos;\n      total = total * radix + val;\n    }\n\n    if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) {\n      return null;\n    }\n\n    return total;\n  }\n\n  readRadixNumber(radix) {\n    const startLoc = this.state.curPosition();\n    let isBigInt = false;\n    this.state.pos += 2;\n    const val = this.readInt(radix);\n\n    if (val == null) {\n      this.raise(ErrorMessages.InvalidDigit, {\n        at: createPositionWithColumnOffset(startLoc, 2)\n      }, radix);\n    }\n\n    const next = this.input.charCodeAt(this.state.pos);\n\n    if (next === 110) {\n      ++this.state.pos;\n      isBigInt = true;\n    } else if (next === 109) {\n      throw this.raise(ErrorMessages.InvalidDecimal, {\n        at: startLoc\n      });\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(ErrorMessages.NumberIdentifier, {\n        at: this.state.curPosition()\n      });\n    }\n\n    if (isBigInt) {\n      const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, \"\");\n      this.finishToken(131, str);\n      return;\n    }\n\n    this.finishToken(130, val);\n  }\n\n  readNumber(startsWithDot) {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isFloat = false;\n    let isBigInt = false;\n    let isDecimal = false;\n    let hasExponent = false;\n    let isOctal = false;\n\n    if (!startsWithDot && this.readInt(10) === null) {\n      this.raise(ErrorMessages.InvalidNumber, {\n        at: this.state.curPosition()\n      });\n    }\n\n    const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n\n    if (hasLeadingZero) {\n      const integer = this.input.slice(start, this.state.pos);\n      this.recordStrictModeErrors(ErrorMessages.StrictOctalLiteral, startLoc);\n\n      if (!this.state.strict) {\n        const underscorePos = integer.indexOf(\"_\");\n\n        if (underscorePos > 0) {\n          this.raise(ErrorMessages.ZeroDigitNumericSeparator, {\n            at: createPositionWithColumnOffset(startLoc, underscorePos)\n          });\n        }\n      }\n\n      isOctal = hasLeadingZero && !/[89]/.test(integer);\n    }\n\n    let next = this.input.charCodeAt(this.state.pos);\n\n    if (next === 46 && !isOctal) {\n      ++this.state.pos;\n      this.readInt(10);\n      isFloat = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if ((next === 69 || next === 101) && !isOctal) {\n      next = this.input.charCodeAt(++this.state.pos);\n\n      if (next === 43 || next === 45) {\n        ++this.state.pos;\n      }\n\n      if (this.readInt(10) === null) {\n        this.raise(ErrorMessages.InvalidOrMissingExponent, {\n          at: startLoc\n        });\n      }\n\n      isFloat = true;\n      hasExponent = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (next === 110) {\n      if (isFloat || hasLeadingZero) {\n        this.raise(ErrorMessages.InvalidBigIntLiteral, {\n          at: startLoc\n        });\n      }\n\n      ++this.state.pos;\n      isBigInt = true;\n    }\n\n    if (next === 109) {\n      this.expectPlugin(\"decimal\", this.state.curPosition());\n\n      if (hasExponent || hasLeadingZero) {\n        this.raise(ErrorMessages.InvalidDecimal, {\n          at: startLoc\n        });\n      }\n\n      ++this.state.pos;\n      isDecimal = true;\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(ErrorMessages.NumberIdentifier, {\n        at: this.state.curPosition()\n      });\n    }\n\n    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n    if (isBigInt) {\n      this.finishToken(131, str);\n      return;\n    }\n\n    if (isDecimal) {\n      this.finishToken(132, str);\n      return;\n    }\n\n    const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n    this.finishToken(130, val);\n  }\n\n  readCodePoint(throwOnInvalid) {\n    const ch = this.input.charCodeAt(this.state.pos);\n    let code;\n\n    if (ch === 123) {\n      ++this.state.pos;\n      code = this.readHexChar(this.input.indexOf(\"}\", this.state.pos) - this.state.pos, true, throwOnInvalid);\n      ++this.state.pos;\n\n      if (code !== null && code > 0x10ffff) {\n        if (throwOnInvalid) {\n          this.raise(ErrorMessages.InvalidCodePoint, {\n            at: this.state.curPosition()\n          });\n        } else {\n          return null;\n        }\n      }\n    } else {\n      code = this.readHexChar(4, false, throwOnInvalid);\n    }\n\n    return code;\n  }\n\n  readString(quote) {\n    let out = \"\",\n        chunkStart = ++this.state.pos;\n\n    for (;;) {\n      if (this.state.pos >= this.length) {\n        throw this.raise(ErrorMessages.UnterminatedString, {\n          at: this.state.startLoc\n        });\n      }\n\n      const ch = this.input.charCodeAt(this.state.pos);\n      if (ch === quote) break;\n\n      if (ch === 92) {\n        out += this.input.slice(chunkStart, this.state.pos);\n        out += this.readEscapedChar(false);\n        chunkStart = this.state.pos;\n      } else if (ch === 8232 || ch === 8233) {\n        ++this.state.pos;\n        ++this.state.curLine;\n        this.state.lineStart = this.state.pos;\n      } else if (isNewLine(ch)) {\n        throw this.raise(ErrorMessages.UnterminatedString, {\n          at: this.state.startLoc\n        });\n      } else {\n        ++this.state.pos;\n      }\n    }\n\n    out += this.input.slice(chunkStart, this.state.pos++);\n    this.finishToken(129, out);\n  }\n\n  readTemplateContinuation() {\n    if (!this.match(8)) {\n      this.unexpected(null, 8);\n    }\n\n    this.state.pos--;\n    this.readTemplateToken();\n  }\n\n  readTemplateToken() {\n    let out = \"\",\n        chunkStart = this.state.pos,\n        containsInvalid = false;\n    ++this.state.pos;\n\n    for (;;) {\n      if (this.state.pos >= this.length) {\n        throw this.raise(ErrorMessages.UnterminatedTemplate, {\n          at: createPositionWithColumnOffset(this.state.startLoc, 1)\n        });\n      }\n\n      const ch = this.input.charCodeAt(this.state.pos);\n\n      if (ch === 96) {\n        ++this.state.pos;\n        out += this.input.slice(chunkStart, this.state.pos);\n        this.finishToken(24, containsInvalid ? null : out);\n        return;\n      }\n\n      if (ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) {\n        this.state.pos += 2;\n        out += this.input.slice(chunkStart, this.state.pos);\n        this.finishToken(25, containsInvalid ? null : out);\n        return;\n      }\n\n      if (ch === 92) {\n        out += this.input.slice(chunkStart, this.state.pos);\n        const escaped = this.readEscapedChar(true);\n\n        if (escaped === null) {\n          containsInvalid = true;\n        } else {\n          out += escaped;\n        }\n\n        chunkStart = this.state.pos;\n      } else if (isNewLine(ch)) {\n        out += this.input.slice(chunkStart, this.state.pos);\n        ++this.state.pos;\n\n        switch (ch) {\n          case 13:\n            if (this.input.charCodeAt(this.state.pos) === 10) {\n              ++this.state.pos;\n            }\n\n          case 10:\n            out += \"\\n\";\n            break;\n\n          default:\n            out += String.fromCharCode(ch);\n            break;\n        }\n\n        ++this.state.curLine;\n        this.state.lineStart = this.state.pos;\n        chunkStart = this.state.pos;\n      } else {\n        ++this.state.pos;\n      }\n    }\n  }\n\n  recordStrictModeErrors(message, loc) {\n    if (this.state.strict && !this.state.strictErrors.has(loc.index)) {\n      this.raise(message, {\n        at: loc\n      });\n    } else {\n      this.state.strictErrors.set(loc.index, {\n        loc,\n        message\n      });\n    }\n  }\n\n  readEscapedChar(inTemplate) {\n    const throwOnInvalid = !inTemplate;\n    const ch = this.input.charCodeAt(++this.state.pos);\n    ++this.state.pos;\n\n    switch (ch) {\n      case 110:\n        return \"\\n\";\n\n      case 114:\n        return \"\\r\";\n\n      case 120:\n        {\n          const code = this.readHexChar(2, false, throwOnInvalid);\n          return code === null ? null : String.fromCharCode(code);\n        }\n\n      case 117:\n        {\n          const code = this.readCodePoint(throwOnInvalid);\n          return code === null ? null : String.fromCodePoint(code);\n        }\n\n      case 116:\n        return \"\\t\";\n\n      case 98:\n        return \"\\b\";\n\n      case 118:\n        return \"\\u000b\";\n\n      case 102:\n        return \"\\f\";\n\n      case 13:\n        if (this.input.charCodeAt(this.state.pos) === 10) {\n          ++this.state.pos;\n        }\n\n      case 10:\n        this.state.lineStart = this.state.pos;\n        ++this.state.curLine;\n\n      case 8232:\n      case 8233:\n        return \"\";\n\n      case 56:\n      case 57:\n        if (inTemplate) {\n          return null;\n        } else {\n          this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, createPositionWithColumnOffset(this.state.curPosition(), -1));\n        }\n\n      default:\n        if (ch >= 48 && ch <= 55) {\n          const codePos = createPositionWithColumnOffset(this.state.curPosition(), -1);\n          const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/);\n          let octalStr = match[0];\n          let octal = parseInt(octalStr, 8);\n\n          if (octal > 255) {\n            octalStr = octalStr.slice(0, -1);\n            octal = parseInt(octalStr, 8);\n          }\n\n          this.state.pos += octalStr.length - 1;\n          const next = this.input.charCodeAt(this.state.pos);\n\n          if (octalStr !== \"0\" || next === 56 || next === 57) {\n            if (inTemplate) {\n              return null;\n            } else {\n              this.recordStrictModeErrors(ErrorMessages.StrictNumericEscape, codePos);\n            }\n          }\n\n          return String.fromCharCode(octal);\n        }\n\n        return String.fromCharCode(ch);\n    }\n  }\n\n  readHexChar(len, forceLen, throwOnInvalid) {\n    const codeLoc = this.state.curPosition();\n    const n = this.readInt(16, len, forceLen, false);\n\n    if (n === null) {\n      if (throwOnInvalid) {\n        this.raise(ErrorMessages.InvalidEscapeSequence, {\n          at: codeLoc\n        });\n      } else {\n        this.state.pos = codeLoc.index - 1;\n      }\n    }\n\n    return n;\n  }\n\n  readWord1(firstCode) {\n    this.state.containsEsc = false;\n    let word = \"\";\n    const start = this.state.pos;\n    let chunkStart = this.state.pos;\n\n    if (firstCode !== undefined) {\n      this.state.pos += firstCode <= 0xffff ? 1 : 2;\n    }\n\n    while (this.state.pos < this.length) {\n      const ch = this.codePointAtPos(this.state.pos);\n\n      if (isIdentifierChar(ch)) {\n        this.state.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === 92) {\n        this.state.containsEsc = true;\n        word += this.input.slice(chunkStart, this.state.pos);\n        const escStart = this.state.curPosition();\n        const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n        if (this.input.charCodeAt(++this.state.pos) !== 117) {\n          this.raise(ErrorMessages.MissingUnicodeEscape, {\n            at: this.state.curPosition()\n          });\n          chunkStart = this.state.pos - 1;\n          continue;\n        }\n\n        ++this.state.pos;\n        const esc = this.readCodePoint(true);\n\n        if (esc !== null) {\n          if (!identifierCheck(esc)) {\n            this.raise(ErrorMessages.EscapedCharNotAnIdentifier, {\n              at: escStart\n            });\n          }\n\n          word += String.fromCodePoint(esc);\n        }\n\n        chunkStart = this.state.pos;\n      } else {\n        break;\n      }\n    }\n\n    return word + this.input.slice(chunkStart, this.state.pos);\n  }\n\n  readWord(firstCode) {\n    const word = this.readWord1(firstCode);\n    const type = keywords$1.get(word);\n\n    if (type !== undefined) {\n      this.finishToken(type, tokenLabelName(type));\n    } else {\n      this.finishToken(128, word);\n    }\n  }\n\n  checkKeywordEscapes() {\n    const {\n      type\n    } = this.state;\n\n    if (tokenIsKeyword(type) && this.state.containsEsc) {\n      this.raise(ErrorMessages.InvalidEscapedReservedWord, {\n        at: this.state.startLoc\n      }, tokenLabelName(type));\n    }\n  }\n\n  updateContext(prevType) {}\n\n}\n\nclass ClassScope {\n  constructor() {\n    this.privateNames = new Set();\n    this.loneAccessors = new Map();\n    this.undefinedPrivateNames = new Map();\n  }\n\n}\nclass ClassScopeHandler {\n  constructor(raise) {\n    this.stack = [];\n    this.undefinedPrivateNames = new Map();\n    this.raise = raise;\n  }\n\n  current() {\n    return this.stack[this.stack.length - 1];\n  }\n\n  enter() {\n    this.stack.push(new ClassScope());\n  }\n\n  exit() {\n    const oldClassScope = this.stack.pop();\n    const current = this.current();\n\n    for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n      if (current) {\n        if (!current.undefinedPrivateNames.has(name)) {\n          current.undefinedPrivateNames.set(name, loc);\n        }\n      } else {\n        this.raise(ErrorMessages.InvalidPrivateFieldResolution, {\n          at: loc\n        }, name);\n      }\n    }\n  }\n\n  declarePrivateName(name, elementType, loc) {\n    const {\n      privateNames,\n      loneAccessors,\n      undefinedPrivateNames\n    } = this.current();\n    let redefined = privateNames.has(name);\n\n    if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {\n      const accessor = redefined && loneAccessors.get(name);\n\n      if (accessor) {\n        const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;\n        const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;\n        const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;\n        const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;\n        redefined = oldKind === newKind || oldStatic !== newStatic;\n        if (!redefined) loneAccessors.delete(name);\n      } else if (!redefined) {\n        loneAccessors.set(name, elementType);\n      }\n    }\n\n    if (redefined) {\n      this.raise(ErrorMessages.PrivateNameRedeclaration, {\n        at: loc\n      }, name);\n    }\n\n    privateNames.add(name);\n    undefinedPrivateNames.delete(name);\n  }\n\n  usePrivateName(name, loc) {\n    let classScope;\n\n    for (classScope of this.stack) {\n      if (classScope.privateNames.has(name)) return;\n    }\n\n    if (classScope) {\n      classScope.undefinedPrivateNames.set(name, loc);\n    } else {\n      this.raise(ErrorMessages.InvalidPrivateFieldResolution, {\n        at: loc\n      }, name);\n    }\n  }\n\n}\n\nconst kExpression = 0,\n      kMaybeArrowParameterDeclaration = 1,\n      kMaybeAsyncArrowParameterDeclaration = 2,\n      kParameterDeclaration = 3;\n\nclass ExpressionScope {\n  constructor(type = kExpression) {\n    this.type = void 0;\n    this.type = type;\n  }\n\n  canBeArrowParameterDeclaration() {\n    return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;\n  }\n\n  isCertainlyParameterDeclaration() {\n    return this.type === kParameterDeclaration;\n  }\n\n}\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n  constructor(type) {\n    super(type);\n    this.errors = new Map();\n  }\n\n  recordDeclarationError(message, loc) {\n    this.errors.set(loc.index, {\n      message,\n      loc\n    });\n  }\n\n  clearDeclarationError(loc) {\n    this.errors.delete(loc.index);\n  }\n\n  iterateErrors(iterator) {\n    this.errors.forEach(iterator);\n  }\n\n}\n\nclass ExpressionScopeHandler {\n  constructor(raise) {\n    this.stack = [new ExpressionScope()];\n    this.raise = raise;\n  }\n\n  enter(scope) {\n    this.stack.push(scope);\n  }\n\n  exit() {\n    this.stack.pop();\n  }\n\n  recordParameterInitializerError(loc, template) {\n    const {\n      stack\n    } = this;\n    let i = stack.length - 1;\n    let scope = stack[i];\n\n    while (!scope.isCertainlyParameterDeclaration()) {\n      if (scope.canBeArrowParameterDeclaration()) {\n        scope.recordDeclarationError(template, loc);\n      } else {\n        return;\n      }\n\n      scope = stack[--i];\n    }\n\n    this.raise(template, {\n      at: loc\n    });\n  }\n\n  recordParenthesizedIdentifierError(template, loc) {\n    const {\n      stack\n    } = this;\n    const scope = stack[stack.length - 1];\n\n    if (scope.isCertainlyParameterDeclaration()) {\n      this.raise(template, {\n        at: loc\n      });\n    } else if (scope.canBeArrowParameterDeclaration()) {\n      scope.recordDeclarationError(template, loc);\n    } else {\n      return;\n    }\n  }\n\n  recordAsyncArrowParametersError(template, loc) {\n    const {\n      stack\n    } = this;\n    let i = stack.length - 1;\n    let scope = stack[i];\n\n    while (scope.canBeArrowParameterDeclaration()) {\n      if (scope.type === kMaybeAsyncArrowParameterDeclaration) {\n        scope.recordDeclarationError(template, loc);\n      }\n\n      scope = stack[--i];\n    }\n  }\n\n  validateAsPattern() {\n    const {\n      stack\n    } = this;\n    const currentScope = stack[stack.length - 1];\n    if (!currentScope.canBeArrowParameterDeclaration()) return;\n    currentScope.iterateErrors(({\n      message,\n      loc\n    }) => {\n      this.raise(message, {\n        at: loc\n      });\n      let i = stack.length - 2;\n      let scope = stack[i];\n\n      while (scope.canBeArrowParameterDeclaration()) {\n        scope.clearDeclarationError(loc);\n        scope = stack[--i];\n      }\n    });\n  }\n\n}\nfunction newParameterDeclarationScope() {\n  return new ExpressionScope(kParameterDeclaration);\n}\nfunction newArrowHeadScope() {\n  return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);\n}\nfunction newAsyncArrowScope() {\n  return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);\n}\nfunction newExpressionScope() {\n  return new ExpressionScope();\n}\n\nconst PARAM = 0b0000,\n      PARAM_YIELD = 0b0001,\n      PARAM_AWAIT = 0b0010,\n      PARAM_RETURN = 0b0100,\n      PARAM_IN = 0b1000;\nclass ProductionParameterHandler {\n  constructor() {\n    this.stacks = [];\n  }\n\n  enter(flags) {\n    this.stacks.push(flags);\n  }\n\n  exit() {\n    this.stacks.pop();\n  }\n\n  currentFlags() {\n    return this.stacks[this.stacks.length - 1];\n  }\n\n  get hasAwait() {\n    return (this.currentFlags() & PARAM_AWAIT) > 0;\n  }\n\n  get hasYield() {\n    return (this.currentFlags() & PARAM_YIELD) > 0;\n  }\n\n  get hasReturn() {\n    return (this.currentFlags() & PARAM_RETURN) > 0;\n  }\n\n  get hasIn() {\n    return (this.currentFlags() & PARAM_IN) > 0;\n  }\n\n}\nfunction functionFlags(isAsync, isGenerator) {\n  return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);\n}\n\nclass UtilParser extends Tokenizer {\n  addExtra(node, key, value, enumerable = true) {\n    if (!node) return;\n    const extra = node.extra = node.extra || {};\n\n    if (enumerable) {\n      extra[key] = value;\n    } else {\n      Object.defineProperty(extra, key, {\n        enumerable,\n        value\n      });\n    }\n  }\n\n  isContextual(token) {\n    return this.state.type === token && !this.state.containsEsc;\n  }\n\n  isUnparsedContextual(nameStart, name) {\n    const nameEnd = nameStart + name.length;\n\n    if (this.input.slice(nameStart, nameEnd) === name) {\n      const nextCh = this.input.charCodeAt(nameEnd);\n      return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);\n    }\n\n    return false;\n  }\n\n  isLookaheadContextual(name) {\n    const next = this.nextTokenStart();\n    return this.isUnparsedContextual(next, name);\n  }\n\n  eatContextual(token) {\n    if (this.isContextual(token)) {\n      this.next();\n      return true;\n    }\n\n    return false;\n  }\n\n  expectContextual(token, template) {\n    if (!this.eatContextual(token)) {\n      if (template != null) {\n        throw this.raise(template, {\n          at: this.state.startLoc\n        });\n      }\n\n      throw this.unexpected(null, token);\n    }\n  }\n\n  canInsertSemicolon() {\n    return this.match(135) || this.match(8) || this.hasPrecedingLineBreak();\n  }\n\n  hasPrecedingLineBreak() {\n    return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start));\n  }\n\n  hasFollowingLineBreak() {\n    skipWhiteSpaceToLineBreak.lastIndex = this.state.end;\n    return skipWhiteSpaceToLineBreak.test(this.input);\n  }\n\n  isLineTerminator() {\n    return this.eat(13) || this.canInsertSemicolon();\n  }\n\n  semicolon(allowAsi = true) {\n    if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;\n    this.raise(ErrorMessages.MissingSemicolon, {\n      at: this.state.lastTokEndLoc\n    });\n  }\n\n  expect(type, loc) {\n    this.eat(type) || this.unexpected(loc, type);\n  }\n\n  assertNoSpace(message = \"Unexpected space.\") {\n    if (this.state.start > this.state.lastTokEndLoc.index) {\n      this.raise({\n        code: ErrorCodes.SyntaxError,\n        reasonCode: \"UnexpectedSpace\",\n        template: message\n      }, {\n        at: this.state.lastTokEndLoc\n      });\n    }\n  }\n\n  unexpected(loc, type) {\n    throw this.raise({\n      code: ErrorCodes.SyntaxError,\n      reasonCode: \"UnexpectedToken\",\n      template: type != null ? `Unexpected token, expected \"${tokenLabelName(type)}\"` : \"Unexpected token\"\n    }, {\n      at: loc != null ? loc : this.state.startLoc\n    });\n  }\n\n  getPluginNamesFromConfigs(pluginConfigs) {\n    return pluginConfigs.map(c => {\n      if (typeof c === \"string\") {\n        return c;\n      } else {\n        return c[0];\n      }\n    });\n  }\n\n  expectPlugin(pluginConfig, loc) {\n    if (!this.hasPlugin(pluginConfig)) {\n      throw this.raiseWithData(loc != null ? loc : this.state.startLoc, {\n        missingPlugin: this.getPluginNamesFromConfigs([pluginConfig])\n      }, `This experimental syntax requires enabling the parser plugin: ${JSON.stringify(pluginConfig)}.`);\n    }\n\n    return true;\n  }\n\n  expectOnePlugin(pluginConfigs) {\n    if (!pluginConfigs.some(c => this.hasPlugin(c))) {\n      throw this.raiseWithData(this.state.startLoc, {\n        missingPlugin: this.getPluginNamesFromConfigs(pluginConfigs)\n      }, `This experimental syntax requires enabling one of the following parser plugin(s): ${pluginConfigs.map(c => JSON.stringify(c)).join(\", \")}.`);\n    }\n  }\n\n  tryParse(fn, oldState = this.state.clone()) {\n    const abortSignal = {\n      node: null\n    };\n\n    try {\n      const node = fn((node = null) => {\n        abortSignal.node = node;\n        throw abortSignal;\n      });\n\n      if (this.state.errors.length > oldState.errors.length) {\n        const failState = this.state;\n        this.state = oldState;\n        this.state.tokensLength = failState.tokensLength;\n        return {\n          node,\n          error: failState.errors[oldState.errors.length],\n          thrown: false,\n          aborted: false,\n          failState\n        };\n      }\n\n      return {\n        node,\n        error: null,\n        thrown: false,\n        aborted: false,\n        failState: null\n      };\n    } catch (error) {\n      const failState = this.state;\n      this.state = oldState;\n\n      if (error instanceof SyntaxError) {\n        return {\n          node: null,\n          error,\n          thrown: true,\n          aborted: false,\n          failState\n        };\n      }\n\n      if (error === abortSignal) {\n        return {\n          node: abortSignal.node,\n          error: null,\n          thrown: false,\n          aborted: true,\n          failState\n        };\n      }\n\n      throw error;\n    }\n  }\n\n  checkExpressionErrors(refExpressionErrors, andThrow) {\n    if (!refExpressionErrors) return false;\n    const {\n      shorthandAssignLoc,\n      doubleProtoLoc,\n      privateKeyLoc,\n      optionalParametersLoc\n    } = refExpressionErrors;\n    const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc;\n\n    if (!andThrow) {\n      return hasErrors;\n    }\n\n    if (shorthandAssignLoc != null) {\n      this.raise(ErrorMessages.InvalidCoverInitializedName, {\n        at: shorthandAssignLoc\n      });\n    }\n\n    if (doubleProtoLoc != null) {\n      this.raise(ErrorMessages.DuplicateProto, {\n        at: doubleProtoLoc\n      });\n    }\n\n    if (privateKeyLoc != null) {\n      this.raise(ErrorMessages.UnexpectedPrivateField, {\n        at: privateKeyLoc\n      });\n    }\n\n    if (optionalParametersLoc != null) {\n      this.unexpected(optionalParametersLoc);\n    }\n  }\n\n  isLiteralPropertyName() {\n    return tokenIsLiteralPropertyName(this.state.type);\n  }\n\n  isPrivateName(node) {\n    return node.type === \"PrivateName\";\n  }\n\n  getPrivateNameSV(node) {\n    return node.id.name;\n  }\n\n  hasPropertyAsPrivateName(node) {\n    return (node.type === \"MemberExpression\" || node.type === \"OptionalMemberExpression\") && this.isPrivateName(node.property);\n  }\n\n  isOptionalChain(node) {\n    return node.type === \"OptionalMemberExpression\" || node.type === \"OptionalCallExpression\";\n  }\n\n  isObjectProperty(node) {\n    return node.type === \"ObjectProperty\";\n  }\n\n  isObjectMethod(node) {\n    return node.type === \"ObjectMethod\";\n  }\n\n  initializeScopes(inModule = this.options.sourceType === \"module\") {\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    const oldExportedIdentifiers = this.exportedIdentifiers;\n    this.exportedIdentifiers = new Set();\n    const oldInModule = this.inModule;\n    this.inModule = inModule;\n    const oldScope = this.scope;\n    const ScopeHandler = this.getScopeHandler();\n    this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);\n    const oldProdParam = this.prodParam;\n    this.prodParam = new ProductionParameterHandler();\n    const oldClassScope = this.classScope;\n    this.classScope = new ClassScopeHandler(this.raise.bind(this));\n    const oldExpressionScope = this.expressionScope;\n    this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this));\n    return () => {\n      this.state.labels = oldLabels;\n      this.exportedIdentifiers = oldExportedIdentifiers;\n      this.inModule = oldInModule;\n      this.scope = oldScope;\n      this.prodParam = oldProdParam;\n      this.classScope = oldClassScope;\n      this.expressionScope = oldExpressionScope;\n    };\n  }\n\n  enterInitialScopes() {\n    let paramFlags = PARAM;\n\n    if (this.inModule) {\n      paramFlags |= PARAM_AWAIT;\n    }\n\n    this.scope.enter(SCOPE_PROGRAM);\n    this.prodParam.enter(paramFlags);\n  }\n\n  checkDestructuringPrivate(refExpressionErrors) {\n    const {\n      privateKeyLoc\n    } = refExpressionErrors;\n\n    if (privateKeyLoc !== null) {\n      this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n    }\n  }\n\n}\nclass ExpressionErrors {\n  constructor() {\n    this.shorthandAssignLoc = null;\n    this.doubleProtoLoc = null;\n    this.privateKeyLoc = null;\n    this.optionalParametersLoc = null;\n  }\n\n}\n\nclass Node {\n  constructor(parser, pos, loc) {\n    this.type = \"\";\n    this.start = pos;\n    this.end = 0;\n    this.loc = new SourceLocation(loc);\n    if (parser != null && parser.options.ranges) this.range = [pos, 0];\n    if (parser != null && parser.filename) this.loc.filename = parser.filename;\n  }\n\n}\n\nconst NodePrototype = Node.prototype;\n{\n  NodePrototype.__clone = function () {\n    const newNode = new Node();\n    const keys = Object.keys(this);\n\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n\n      if (key !== \"leadingComments\" && key !== \"trailingComments\" && key !== \"innerComments\") {\n        newNode[key] = this[key];\n      }\n    }\n\n    return newNode;\n  };\n}\n\nfunction clonePlaceholder(node) {\n  return cloneIdentifier(node);\n}\n\nfunction cloneIdentifier(node) {\n  const {\n    type,\n    start,\n    end,\n    loc,\n    range,\n    extra,\n    name\n  } = node;\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  cloned.extra = extra;\n  cloned.name = name;\n\n  if (type === \"Placeholder\") {\n    cloned.expectedNode = node.expectedNode;\n  }\n\n  return cloned;\n}\nfunction cloneStringLiteral(node) {\n  const {\n    type,\n    start,\n    end,\n    loc,\n    range,\n    extra\n  } = node;\n\n  if (type === \"Placeholder\") {\n    return clonePlaceholder(node);\n  }\n\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n\n  if (node.raw !== undefined) {\n    cloned.raw = node.raw;\n  } else {\n    cloned.extra = extra;\n  }\n\n  cloned.value = node.value;\n  return cloned;\n}\nclass NodeUtils extends UtilParser {\n  startNode() {\n    return new Node(this, this.state.start, this.state.startLoc);\n  }\n\n  startNodeAt(pos, loc) {\n    return new Node(this, pos, loc);\n  }\n\n  startNodeAtNode(type) {\n    return this.startNodeAt(type.start, type.loc.start);\n  }\n\n  finishNode(node, type) {\n    return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n  }\n\n  finishNodeAt(node, type, endLoc) {\n\n    node.type = type;\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.options.ranges) node.range[1] = endLoc.index;\n    if (this.options.attachComment) this.processComment(node);\n    return node;\n  }\n\n  resetStartLocation(node, start, startLoc) {\n    node.start = start;\n    node.loc.start = startLoc;\n    if (this.options.ranges) node.range[0] = start;\n  }\n\n  resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.options.ranges) node.range[1] = endLoc.index;\n  }\n\n  resetStartLocationFromNode(node, locationNode) {\n    this.resetStartLocation(node, locationNode.start, locationNode.loc.start);\n  }\n\n}\n\nconst reservedTypes = new Set([\"_\", \"any\", \"bool\", \"boolean\", \"empty\", \"extends\", \"false\", \"interface\", \"mixed\", \"null\", \"number\", \"static\", \"string\", \"true\", \"typeof\", \"void\"]);\nconst FlowErrors = makeErrorTemplates({\n  AmbiguousConditionalArrow: \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n  AmbiguousDeclareModuleKind: \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n  AssignReservedType: \"Cannot overwrite reserved type %0.\",\n  DeclareClassElement: \"The `declare` modifier can only appear on class fields.\",\n  DeclareClassFieldInitializer: \"Initializers are not allowed in fields with the `declare` modifier.\",\n  DuplicateDeclareModuleExports: \"Duplicate `declare module.exports` statement.\",\n  EnumBooleanMemberNotInitialized: \"Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.\",\n  EnumDuplicateMemberName: \"Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.\",\n  EnumInconsistentMemberValues: \"Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.\",\n  EnumInvalidExplicitType: \"Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.\",\n  EnumInvalidExplicitTypeUnknownSupplied: \"Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.\",\n  EnumInvalidMemberInitializerPrimaryType: \"Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.\",\n  EnumInvalidMemberInitializerSymbolType: \"Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.\",\n  EnumInvalidMemberInitializerUnknownType: \"The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.\",\n  EnumInvalidMemberName: \"Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.\",\n  EnumNumberMemberNotInitialized: \"Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.\",\n  EnumStringMemberInconsistentlyInitailized: \"String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.\",\n  GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n  ImportTypeShorthandOnlyInPureImport: \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n  InexactInsideExact: \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n  InexactInsideNonObject: \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n  InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n  InvalidNonTypeImportInDeclareModule: \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n  MissingTypeParamDefault: \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n  NestedDeclareModule: \"`declare module` cannot be used inside another `declare module`.\",\n  NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n  PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n  SpreadVariance: \"Spread properties cannot have variance.\",\n  ThisParamAnnotationRequired: \"A type annotation is required for the `this` parameter.\",\n  ThisParamBannedInConstructor: \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n  ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n  ThisParamMustBeFirst: \"The `this` parameter must be the first function parameter.\",\n  ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n  TypeBeforeInitializer: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeCastInPattern: \"The type cast expression is expected to be wrapped with parenthesis.\",\n  UnexpectedExplicitInexactInObject: \"Explicit inexact syntax must appear at the end of an inexact object.\",\n  UnexpectedReservedType: \"Unexpected reserved type %0.\",\n  UnexpectedReservedUnderscore: \"`_` is only allowed as a type argument to call or new.\",\n  UnexpectedSpaceBetweenModuloChecks: \"Spaces between `%` and `checks` are not allowed here.\",\n  UnexpectedSpreadType: \"Spread operator cannot appear in class or interface definitions.\",\n  UnexpectedSubtractionOperand: 'Unexpected token, expected \"number\" or \"bigint\".',\n  UnexpectedTokenAfterTypeParameter: \"Expected an arrow function after this type parameter declaration.\",\n  UnexpectedTypeParameterBeforeAsyncArrowFunction: \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n  UnsupportedDeclareExportKind: \"`declare export %0` is not supported. Use `%1` instead.\",\n  UnsupportedStatementInDeclareModule: \"Only declares and type imports are allowed inside declare module.\",\n  UnterminatedFlowComment: \"Unterminated flow-comment.\"\n}, ErrorCodes.SyntaxError, \"flow\");\n\nfunction isEsModuleType(bodyElement) {\n  return bodyElement.type === \"DeclareExportAllDeclaration\" || bodyElement.type === \"DeclareExportDeclaration\" && (!bodyElement.declaration || bodyElement.declaration.type !== \"TypeAlias\" && bodyElement.declaration.type !== \"InterfaceDeclaration\");\n}\n\nfunction hasTypeImportKind(node) {\n  return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nfunction isMaybeDefaultImport(type) {\n  return tokenIsKeywordOrIdentifier(type) && type !== 97;\n}\n\nconst exportSuggestions = {\n  const: \"declare export var\",\n  let: \"declare export var\",\n  type: \"export type\",\n  interface: \"export interface\"\n};\n\nfunction partition(list, test) {\n  const list1 = [];\n  const list2 = [];\n\n  for (let i = 0; i < list.length; i++) {\n    (test(list[i], i, list) ? list1 : list2).push(list[i]);\n  }\n\n  return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\nvar flow = (superClass => class extends superClass {\n  constructor(...args) {\n    super(...args);\n    this.flowPragma = undefined;\n  }\n\n  getScopeHandler() {\n    return FlowScopeHandler;\n  }\n\n  shouldParseTypes() {\n    return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n  }\n\n  shouldParseEnums() {\n    return !!this.getPluginOption(\"flow\", \"enums\");\n  }\n\n  finishToken(type, val) {\n    if (type !== 129 && type !== 13 && type !== 28) {\n      if (this.flowPragma === undefined) {\n        this.flowPragma = null;\n      }\n    }\n\n    return super.finishToken(type, val);\n  }\n\n  addComment(comment) {\n    if (this.flowPragma === undefined) {\n      const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n\n      if (!matches) ; else if (matches[1] === \"flow\") {\n        this.flowPragma = \"flow\";\n      } else if (matches[1] === \"noflow\") {\n        this.flowPragma = \"noflow\";\n      } else {\n        throw new Error(\"Unexpected flow pragma\");\n      }\n    }\n\n    return super.addComment(comment);\n  }\n\n  flowParseTypeInitialiser(tok) {\n    const oldInType = this.state.inType;\n    this.state.inType = true;\n    this.expect(tok || 14);\n    const type = this.flowParseType();\n    this.state.inType = oldInType;\n    return type;\n  }\n\n  flowParsePredicate() {\n    const node = this.startNode();\n    const moduloLoc = this.state.startLoc;\n    this.next();\n    this.expectContextual(107);\n\n    if (this.state.lastTokStart > moduloLoc.index + 1) {\n      this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, {\n        at: moduloLoc\n      });\n    }\n\n    if (this.eat(10)) {\n      node.value = this.parseExpression();\n      this.expect(11);\n      return this.finishNode(node, \"DeclaredPredicate\");\n    } else {\n      return this.finishNode(node, \"InferredPredicate\");\n    }\n  }\n\n  flowParseTypeAndPredicateInitialiser() {\n    const oldInType = this.state.inType;\n    this.state.inType = true;\n    this.expect(14);\n    let type = null;\n    let predicate = null;\n\n    if (this.match(54)) {\n      this.state.inType = oldInType;\n      predicate = this.flowParsePredicate();\n    } else {\n      type = this.flowParseType();\n      this.state.inType = oldInType;\n\n      if (this.match(54)) {\n        predicate = this.flowParsePredicate();\n      }\n    }\n\n    return [type, predicate];\n  }\n\n  flowParseDeclareClass(node) {\n    this.next();\n    this.flowParseInterfaceish(node, true);\n    return this.finishNode(node, \"DeclareClass\");\n  }\n\n  flowParseDeclareFunction(node) {\n    this.next();\n    const id = node.id = this.parseIdentifier();\n    const typeNode = this.startNode();\n    const typeContainer = this.startNode();\n\n    if (this.match(47)) {\n      typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n    } else {\n      typeNode.typeParameters = null;\n    }\n\n    this.expect(10);\n    const tmp = this.flowParseFunctionTypeParams();\n    typeNode.params = tmp.params;\n    typeNode.rest = tmp.rest;\n    typeNode.this = tmp._this;\n    this.expect(11);\n    [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n    typeContainer.typeAnnotation = this.finishNode(typeNode, \"FunctionTypeAnnotation\");\n    id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n    this.resetEndLocation(id);\n    this.semicolon();\n    this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.loc.start);\n    return this.finishNode(node, \"DeclareFunction\");\n  }\n\n  flowParseDeclare(node, insideModule) {\n    if (this.match(80)) {\n      return this.flowParseDeclareClass(node);\n    } else if (this.match(68)) {\n      return this.flowParseDeclareFunction(node);\n    } else if (this.match(74)) {\n      return this.flowParseDeclareVariable(node);\n    } else if (this.eatContextual(123)) {\n      if (this.match(16)) {\n        return this.flowParseDeclareModuleExports(node);\n      } else {\n        if (insideModule) {\n          this.raise(FlowErrors.NestedDeclareModule, {\n            at: this.state.lastTokStartLoc\n          });\n        }\n\n        return this.flowParseDeclareModule(node);\n      }\n    } else if (this.isContextual(126)) {\n      return this.flowParseDeclareTypeAlias(node);\n    } else if (this.isContextual(127)) {\n      return this.flowParseDeclareOpaqueType(node);\n    } else if (this.isContextual(125)) {\n      return this.flowParseDeclareInterface(node);\n    } else if (this.match(82)) {\n      return this.flowParseDeclareExportDeclaration(node, insideModule);\n    } else {\n      throw this.unexpected();\n    }\n  }\n\n  flowParseDeclareVariable(node) {\n    this.next();\n    node.id = this.flowParseTypeAnnotatableIdentifier(true);\n    this.scope.declareName(node.id.name, BIND_VAR, node.id.loc.start);\n    this.semicolon();\n    return this.finishNode(node, \"DeclareVariable\");\n  }\n\n  flowParseDeclareModule(node) {\n    this.scope.enter(SCOPE_OTHER);\n\n    if (this.match(129)) {\n      node.id = this.parseExprAtom();\n    } else {\n      node.id = this.parseIdentifier();\n    }\n\n    const bodyNode = node.body = this.startNode();\n    const body = bodyNode.body = [];\n    this.expect(5);\n\n    while (!this.match(8)) {\n      let bodyNode = this.startNode();\n\n      if (this.match(83)) {\n        this.next();\n\n        if (!this.isContextual(126) && !this.match(87)) {\n          this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, {\n            at: this.state.lastTokStartLoc\n          });\n        }\n\n        this.parseImport(bodyNode);\n      } else {\n        this.expectContextual(121, FlowErrors.UnsupportedStatementInDeclareModule);\n        bodyNode = this.flowParseDeclare(bodyNode, true);\n      }\n\n      body.push(bodyNode);\n    }\n\n    this.scope.exit();\n    this.expect(8);\n    this.finishNode(bodyNode, \"BlockStatement\");\n    let kind = null;\n    let hasModuleExport = false;\n    body.forEach(bodyElement => {\n      if (isEsModuleType(bodyElement)) {\n        if (kind === \"CommonJS\") {\n          this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n            node: bodyElement\n          });\n        }\n\n        kind = \"ES\";\n      } else if (bodyElement.type === \"DeclareModuleExports\") {\n        if (hasModuleExport) {\n          this.raise(FlowErrors.DuplicateDeclareModuleExports, {\n            node: bodyElement\n          });\n        }\n\n        if (kind === \"ES\") {\n          this.raise(FlowErrors.AmbiguousDeclareModuleKind, {\n            node: bodyElement\n          });\n        }\n\n        kind = \"CommonJS\";\n        hasModuleExport = true;\n      }\n    });\n    node.kind = kind || \"CommonJS\";\n    return this.finishNode(node, \"DeclareModule\");\n  }\n\n  flowParseDeclareExportDeclaration(node, insideModule) {\n    this.expect(82);\n\n    if (this.eat(65)) {\n      if (this.match(68) || this.match(80)) {\n        node.declaration = this.flowParseDeclare(this.startNode());\n      } else {\n        node.declaration = this.flowParseType();\n        this.semicolon();\n      }\n\n      node.default = true;\n      return this.finishNode(node, \"DeclareExportDeclaration\");\n    } else {\n      if (this.match(75) || this.isLet() || (this.isContextual(126) || this.isContextual(125)) && !insideModule) {\n        const label = this.state.value;\n        const suggestion = exportSuggestions[label];\n        throw this.raise(FlowErrors.UnsupportedDeclareExportKind, {\n          at: this.state.startLoc\n        }, label, suggestion);\n      }\n\n      if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(127)) {\n        node.declaration = this.flowParseDeclare(this.startNode());\n        node.default = false;\n        return this.finishNode(node, \"DeclareExportDeclaration\");\n      } else if (this.match(55) || this.match(5) || this.isContextual(125) || this.isContextual(126) || this.isContextual(127)) {\n        node = this.parseExport(node);\n\n        if (node.type === \"ExportNamedDeclaration\") {\n          node.type = \"ExportDeclaration\";\n          node.default = false;\n          delete node.exportKind;\n        }\n\n        node.type = \"Declare\" + node.type;\n        return node;\n      }\n    }\n\n    throw this.unexpected();\n  }\n\n  flowParseDeclareModuleExports(node) {\n    this.next();\n    this.expectContextual(108);\n    node.typeAnnotation = this.flowParseTypeAnnotation();\n    this.semicolon();\n    return this.finishNode(node, \"DeclareModuleExports\");\n  }\n\n  flowParseDeclareTypeAlias(node) {\n    this.next();\n    this.flowParseTypeAlias(node);\n    node.type = \"DeclareTypeAlias\";\n    return node;\n  }\n\n  flowParseDeclareOpaqueType(node) {\n    this.next();\n    this.flowParseOpaqueType(node, true);\n    node.type = \"DeclareOpaqueType\";\n    return node;\n  }\n\n  flowParseDeclareInterface(node) {\n    this.next();\n    this.flowParseInterfaceish(node);\n    return this.finishNode(node, \"DeclareInterface\");\n  }\n\n  flowParseInterfaceish(node, isClass = false) {\n    node.id = this.flowParseRestrictedIdentifier(!isClass, true);\n    this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start);\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    } else {\n      node.typeParameters = null;\n    }\n\n    node.extends = [];\n    node.implements = [];\n    node.mixins = [];\n\n    if (this.eat(81)) {\n      do {\n        node.extends.push(this.flowParseInterfaceExtends());\n      } while (!isClass && this.eat(12));\n    }\n\n    if (this.isContextual(114)) {\n      this.next();\n\n      do {\n        node.mixins.push(this.flowParseInterfaceExtends());\n      } while (this.eat(12));\n    }\n\n    if (this.isContextual(110)) {\n      this.next();\n\n      do {\n        node.implements.push(this.flowParseInterfaceExtends());\n      } while (this.eat(12));\n    }\n\n    node.body = this.flowParseObjectType({\n      allowStatic: isClass,\n      allowExact: false,\n      allowSpread: false,\n      allowProto: isClass,\n      allowInexact: false\n    });\n  }\n\n  flowParseInterfaceExtends() {\n    const node = this.startNode();\n    node.id = this.flowParseQualifiedTypeIdentifier();\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterInstantiation();\n    } else {\n      node.typeParameters = null;\n    }\n\n    return this.finishNode(node, \"InterfaceExtends\");\n  }\n\n  flowParseInterface(node) {\n    this.flowParseInterfaceish(node);\n    return this.finishNode(node, \"InterfaceDeclaration\");\n  }\n\n  checkNotUnderscore(word) {\n    if (word === \"_\") {\n      this.raise(FlowErrors.UnexpectedReservedUnderscore, {\n        at: this.state.startLoc\n      });\n    }\n  }\n\n  checkReservedType(word, startLoc, declaration) {\n    if (!reservedTypes.has(word)) return;\n    this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, {\n      at: startLoc\n    }, word);\n  }\n\n  flowParseRestrictedIdentifier(liberal, declaration) {\n    this.checkReservedType(this.state.value, this.state.startLoc, declaration);\n    return this.parseIdentifier(liberal);\n  }\n\n  flowParseTypeAlias(node) {\n    node.id = this.flowParseRestrictedIdentifier(false, true);\n    this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    } else {\n      node.typeParameters = null;\n    }\n\n    node.right = this.flowParseTypeInitialiser(29);\n    this.semicolon();\n    return this.finishNode(node, \"TypeAlias\");\n  }\n\n  flowParseOpaqueType(node, declare) {\n    this.expectContextual(126);\n    node.id = this.flowParseRestrictedIdentifier(true, true);\n    this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    } else {\n      node.typeParameters = null;\n    }\n\n    node.supertype = null;\n\n    if (this.match(14)) {\n      node.supertype = this.flowParseTypeInitialiser(14);\n    }\n\n    node.impltype = null;\n\n    if (!declare) {\n      node.impltype = this.flowParseTypeInitialiser(29);\n    }\n\n    this.semicolon();\n    return this.finishNode(node, \"OpaqueType\");\n  }\n\n  flowParseTypeParameter(requireDefault = false) {\n    const nodeStartLoc = this.state.startLoc;\n    const node = this.startNode();\n    const variance = this.flowParseVariance();\n    const ident = this.flowParseTypeAnnotatableIdentifier();\n    node.name = ident.name;\n    node.variance = variance;\n    node.bound = ident.typeAnnotation;\n\n    if (this.match(29)) {\n      this.eat(29);\n      node.default = this.flowParseType();\n    } else {\n      if (requireDefault) {\n        this.raise(FlowErrors.MissingTypeParamDefault, {\n          at: nodeStartLoc\n        });\n      }\n    }\n\n    return this.finishNode(node, \"TypeParameter\");\n  }\n\n  flowParseTypeParameterDeclaration() {\n    const oldInType = this.state.inType;\n    const node = this.startNode();\n    node.params = [];\n    this.state.inType = true;\n\n    if (this.match(47) || this.match(138)) {\n      this.next();\n    } else {\n      this.unexpected();\n    }\n\n    let defaultRequired = false;\n\n    do {\n      const typeParameter = this.flowParseTypeParameter(defaultRequired);\n      node.params.push(typeParameter);\n\n      if (typeParameter.default) {\n        defaultRequired = true;\n      }\n\n      if (!this.match(48)) {\n        this.expect(12);\n      }\n    } while (!this.match(48));\n\n    this.expect(48);\n    this.state.inType = oldInType;\n    return this.finishNode(node, \"TypeParameterDeclaration\");\n  }\n\n  flowParseTypeParameterInstantiation() {\n    const node = this.startNode();\n    const oldInType = this.state.inType;\n    node.params = [];\n    this.state.inType = true;\n    this.expect(47);\n    const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n    this.state.noAnonFunctionType = false;\n\n    while (!this.match(48)) {\n      node.params.push(this.flowParseType());\n\n      if (!this.match(48)) {\n        this.expect(12);\n      }\n    }\n\n    this.state.noAnonFunctionType = oldNoAnonFunctionType;\n    this.expect(48);\n    this.state.inType = oldInType;\n    return this.finishNode(node, \"TypeParameterInstantiation\");\n  }\n\n  flowParseTypeParameterInstantiationCallOrNew() {\n    const node = this.startNode();\n    const oldInType = this.state.inType;\n    node.params = [];\n    this.state.inType = true;\n    this.expect(47);\n\n    while (!this.match(48)) {\n      node.params.push(this.flowParseTypeOrImplicitInstantiation());\n\n      if (!this.match(48)) {\n        this.expect(12);\n      }\n    }\n\n    this.expect(48);\n    this.state.inType = oldInType;\n    return this.finishNode(node, \"TypeParameterInstantiation\");\n  }\n\n  flowParseInterfaceType() {\n    const node = this.startNode();\n    this.expectContextual(125);\n    node.extends = [];\n\n    if (this.eat(81)) {\n      do {\n        node.extends.push(this.flowParseInterfaceExtends());\n      } while (this.eat(12));\n    }\n\n    node.body = this.flowParseObjectType({\n      allowStatic: false,\n      allowExact: false,\n      allowSpread: false,\n      allowProto: false,\n      allowInexact: false\n    });\n    return this.finishNode(node, \"InterfaceTypeAnnotation\");\n  }\n\n  flowParseObjectPropertyKey() {\n    return this.match(130) || this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n  }\n\n  flowParseObjectTypeIndexer(node, isStatic, variance) {\n    node.static = isStatic;\n\n    if (this.lookahead().type === 14) {\n      node.id = this.flowParseObjectPropertyKey();\n      node.key = this.flowParseTypeInitialiser();\n    } else {\n      node.id = null;\n      node.key = this.flowParseType();\n    }\n\n    this.expect(3);\n    node.value = this.flowParseTypeInitialiser();\n    node.variance = variance;\n    return this.finishNode(node, \"ObjectTypeIndexer\");\n  }\n\n  flowParseObjectTypeInternalSlot(node, isStatic) {\n    node.static = isStatic;\n    node.id = this.flowParseObjectPropertyKey();\n    this.expect(3);\n    this.expect(3);\n\n    if (this.match(47) || this.match(10)) {\n      node.method = true;\n      node.optional = false;\n      node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n    } else {\n      node.method = false;\n\n      if (this.eat(17)) {\n        node.optional = true;\n      }\n\n      node.value = this.flowParseTypeInitialiser();\n    }\n\n    return this.finishNode(node, \"ObjectTypeInternalSlot\");\n  }\n\n  flowParseObjectTypeMethodish(node) {\n    node.params = [];\n    node.rest = null;\n    node.typeParameters = null;\n    node.this = null;\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    }\n\n    this.expect(10);\n\n    if (this.match(78)) {\n      node.this = this.flowParseFunctionTypeParam(true);\n      node.this.name = null;\n\n      if (!this.match(11)) {\n        this.expect(12);\n      }\n    }\n\n    while (!this.match(11) && !this.match(21)) {\n      node.params.push(this.flowParseFunctionTypeParam(false));\n\n      if (!this.match(11)) {\n        this.expect(12);\n      }\n    }\n\n    if (this.eat(21)) {\n      node.rest = this.flowParseFunctionTypeParam(false);\n    }\n\n    this.expect(11);\n    node.returnType = this.flowParseTypeInitialiser();\n    return this.finishNode(node, \"FunctionTypeAnnotation\");\n  }\n\n  flowParseObjectTypeCallProperty(node, isStatic) {\n    const valueNode = this.startNode();\n    node.static = isStatic;\n    node.value = this.flowParseObjectTypeMethodish(valueNode);\n    return this.finishNode(node, \"ObjectTypeCallProperty\");\n  }\n\n  flowParseObjectType({\n    allowStatic,\n    allowExact,\n    allowSpread,\n    allowProto,\n    allowInexact\n  }) {\n    const oldInType = this.state.inType;\n    this.state.inType = true;\n    const nodeStart = this.startNode();\n    nodeStart.callProperties = [];\n    nodeStart.properties = [];\n    nodeStart.indexers = [];\n    nodeStart.internalSlots = [];\n    let endDelim;\n    let exact;\n    let inexact = false;\n\n    if (allowExact && this.match(6)) {\n      this.expect(6);\n      endDelim = 9;\n      exact = true;\n    } else {\n      this.expect(5);\n      endDelim = 8;\n      exact = false;\n    }\n\n    nodeStart.exact = exact;\n\n    while (!this.match(endDelim)) {\n      let isStatic = false;\n      let protoStartLoc = null;\n      let inexactStartLoc = null;\n      const node = this.startNode();\n\n      if (allowProto && this.isContextual(115)) {\n        const lookahead = this.lookahead();\n\n        if (lookahead.type !== 14 && lookahead.type !== 17) {\n          this.next();\n          protoStartLoc = this.state.startLoc;\n          allowStatic = false;\n        }\n      }\n\n      if (allowStatic && this.isContextual(104)) {\n        const lookahead = this.lookahead();\n\n        if (lookahead.type !== 14 && lookahead.type !== 17) {\n          this.next();\n          isStatic = true;\n        }\n      }\n\n      const variance = this.flowParseVariance();\n\n      if (this.eat(0)) {\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n\n        if (this.eat(0)) {\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n\n          nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));\n        } else {\n          nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));\n        }\n      } else if (this.match(10) || this.match(47)) {\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n\n        if (variance) {\n          this.unexpected(variance.loc.start);\n        }\n\n        nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));\n      } else {\n        let kind = \"init\";\n\n        if (this.isContextual(98) || this.isContextual(103)) {\n          const lookahead = this.lookahead();\n\n          if (tokenIsLiteralPropertyName(lookahead.type)) {\n            kind = this.state.value;\n            this.next();\n          }\n        }\n\n        const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);\n\n        if (propOrInexact === null) {\n          inexact = true;\n          inexactStartLoc = this.state.lastTokStartLoc;\n        } else {\n          nodeStart.properties.push(propOrInexact);\n        }\n      }\n\n      this.flowObjectTypeSemicolon();\n\n      if (inexactStartLoc && !this.match(8) && !this.match(9)) {\n        this.raise(FlowErrors.UnexpectedExplicitInexactInObject, {\n          at: inexactStartLoc\n        });\n      }\n    }\n\n    this.expect(endDelim);\n\n    if (allowSpread) {\n      nodeStart.inexact = inexact;\n    }\n\n    const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n    this.state.inType = oldInType;\n    return out;\n  }\n\n  flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {\n    if (this.eat(21)) {\n      const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);\n\n      if (isInexactToken) {\n        if (!allowSpread) {\n          this.raise(FlowErrors.InexactInsideNonObject, {\n            at: this.state.lastTokStartLoc\n          });\n        } else if (!allowInexact) {\n          this.raise(FlowErrors.InexactInsideExact, {\n            at: this.state.lastTokStartLoc\n          });\n        }\n\n        if (variance) {\n          this.raise(FlowErrors.InexactVariance, {\n            node: variance\n          });\n        }\n\n        return null;\n      }\n\n      if (!allowSpread) {\n        this.raise(FlowErrors.UnexpectedSpreadType, {\n          at: this.state.lastTokStartLoc\n        });\n      }\n\n      if (protoStartLoc != null) {\n        this.unexpected(protoStartLoc);\n      }\n\n      if (variance) {\n        this.raise(FlowErrors.SpreadVariance, {\n          node: variance\n        });\n      }\n\n      node.argument = this.flowParseType();\n      return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n    } else {\n      node.key = this.flowParseObjectPropertyKey();\n      node.static = isStatic;\n      node.proto = protoStartLoc != null;\n      node.kind = kind;\n      let optional = false;\n\n      if (this.match(47) || this.match(10)) {\n        node.method = true;\n\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n\n        if (variance) {\n          this.unexpected(variance.loc.start);\n        }\n\n        node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));\n\n        if (kind === \"get\" || kind === \"set\") {\n          this.flowCheckGetterSetterParams(node);\n        }\n\n        if (!allowSpread && node.key.name === \"constructor\" && node.value.this) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, {\n            node: node.value.this\n          });\n        }\n      } else {\n        if (kind !== \"init\") this.unexpected();\n        node.method = false;\n\n        if (this.eat(17)) {\n          optional = true;\n        }\n\n        node.value = this.flowParseTypeInitialiser();\n        node.variance = variance;\n      }\n\n      node.optional = optional;\n      return this.finishNode(node, \"ObjectTypeProperty\");\n    }\n  }\n\n  flowCheckGetterSetterParams(property) {\n    const paramCount = property.kind === \"get\" ? 0 : 1;\n    const length = property.value.params.length + (property.value.rest ? 1 : 0);\n\n    if (property.value.this) {\n      this.raise(property.kind === \"get\" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, {\n        node: property.value.this\n      });\n    }\n\n    if (length !== paramCount) {\n      this.raise(property.kind === \"get\" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, {\n        node: property\n      });\n    }\n\n    if (property.kind === \"set\" && property.value.rest) {\n      this.raise(ErrorMessages.BadSetterRestParameter, {\n        node: property\n      });\n    }\n  }\n\n  flowObjectTypeSemicolon() {\n    if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {\n      this.unexpected();\n    }\n  }\n\n  flowParseQualifiedTypeIdentifier(startPos, startLoc, id) {\n    startPos = startPos || this.state.start;\n    startLoc = startLoc || this.state.startLoc;\n    let node = id || this.flowParseRestrictedIdentifier(true);\n\n    while (this.eat(16)) {\n      const node2 = this.startNodeAt(startPos, startLoc);\n      node2.qualification = node;\n      node2.id = this.flowParseRestrictedIdentifier(true);\n      node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n    }\n\n    return node;\n  }\n\n  flowParseGenericType(startPos, startLoc, id) {\n    const node = this.startNodeAt(startPos, startLoc);\n    node.typeParameters = null;\n    node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterInstantiation();\n    }\n\n    return this.finishNode(node, \"GenericTypeAnnotation\");\n  }\n\n  flowParseTypeofType() {\n    const node = this.startNode();\n    this.expect(87);\n    node.argument = this.flowParsePrimaryType();\n    return this.finishNode(node, \"TypeofTypeAnnotation\");\n  }\n\n  flowParseTupleType() {\n    const node = this.startNode();\n    node.types = [];\n    this.expect(0);\n\n    while (this.state.pos < this.length && !this.match(3)) {\n      node.types.push(this.flowParseType());\n      if (this.match(3)) break;\n      this.expect(12);\n    }\n\n    this.expect(3);\n    return this.finishNode(node, \"TupleTypeAnnotation\");\n  }\n\n  flowParseFunctionTypeParam(first) {\n    let name = null;\n    let optional = false;\n    let typeAnnotation = null;\n    const node = this.startNode();\n    const lh = this.lookahead();\n    const isThis = this.state.type === 78;\n\n    if (lh.type === 14 || lh.type === 17) {\n      if (isThis && !first) {\n        this.raise(FlowErrors.ThisParamMustBeFirst, {\n          node\n        });\n      }\n\n      name = this.parseIdentifier(isThis);\n\n      if (this.eat(17)) {\n        optional = true;\n\n        if (isThis) {\n          this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n            node\n          });\n        }\n      }\n\n      typeAnnotation = this.flowParseTypeInitialiser();\n    } else {\n      typeAnnotation = this.flowParseType();\n    }\n\n    node.name = name;\n    node.optional = optional;\n    node.typeAnnotation = typeAnnotation;\n    return this.finishNode(node, \"FunctionTypeParam\");\n  }\n\n  reinterpretTypeAsFunctionTypeParam(type) {\n    const node = this.startNodeAt(type.start, type.loc.start);\n    node.name = null;\n    node.optional = false;\n    node.typeAnnotation = type;\n    return this.finishNode(node, \"FunctionTypeParam\");\n  }\n\n  flowParseFunctionTypeParams(params = []) {\n    let rest = null;\n    let _this = null;\n\n    if (this.match(78)) {\n      _this = this.flowParseFunctionTypeParam(true);\n      _this.name = null;\n\n      if (!this.match(11)) {\n        this.expect(12);\n      }\n    }\n\n    while (!this.match(11) && !this.match(21)) {\n      params.push(this.flowParseFunctionTypeParam(false));\n\n      if (!this.match(11)) {\n        this.expect(12);\n      }\n    }\n\n    if (this.eat(21)) {\n      rest = this.flowParseFunctionTypeParam(false);\n    }\n\n    return {\n      params,\n      rest,\n      _this\n    };\n  }\n\n  flowIdentToTypeAnnotation(startPos, startLoc, node, id) {\n    switch (id.name) {\n      case \"any\":\n        return this.finishNode(node, \"AnyTypeAnnotation\");\n\n      case \"bool\":\n      case \"boolean\":\n        return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n      case \"mixed\":\n        return this.finishNode(node, \"MixedTypeAnnotation\");\n\n      case \"empty\":\n        return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n      case \"number\":\n        return this.finishNode(node, \"NumberTypeAnnotation\");\n\n      case \"string\":\n        return this.finishNode(node, \"StringTypeAnnotation\");\n\n      case \"symbol\":\n        return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n      default:\n        this.checkNotUnderscore(id.name);\n        return this.flowParseGenericType(startPos, startLoc, id);\n    }\n  }\n\n  flowParsePrimaryType() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const node = this.startNode();\n    let tmp;\n    let type;\n    let isGroupedType = false;\n    const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n    switch (this.state.type) {\n      case 5:\n        return this.flowParseObjectType({\n          allowStatic: false,\n          allowExact: false,\n          allowSpread: true,\n          allowProto: false,\n          allowInexact: true\n        });\n\n      case 6:\n        return this.flowParseObjectType({\n          allowStatic: false,\n          allowExact: true,\n          allowSpread: true,\n          allowProto: false,\n          allowInexact: false\n        });\n\n      case 0:\n        this.state.noAnonFunctionType = false;\n        type = this.flowParseTupleType();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n        return type;\n\n      case 47:\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n        this.expect(10);\n        tmp = this.flowParseFunctionTypeParams();\n        node.params = tmp.params;\n        node.rest = tmp.rest;\n        node.this = tmp._this;\n        this.expect(11);\n        this.expect(19);\n        node.returnType = this.flowParseType();\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n      case 10:\n        this.next();\n\n        if (!this.match(11) && !this.match(21)) {\n          if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n            const token = this.lookahead().type;\n            isGroupedType = token !== 17 && token !== 14;\n          } else {\n            isGroupedType = true;\n          }\n        }\n\n        if (isGroupedType) {\n          this.state.noAnonFunctionType = false;\n          type = this.flowParseType();\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n          if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {\n            this.expect(11);\n            return type;\n          } else {\n            this.eat(12);\n          }\n        }\n\n        if (type) {\n          tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);\n        } else {\n          tmp = this.flowParseFunctionTypeParams();\n        }\n\n        node.params = tmp.params;\n        node.rest = tmp.rest;\n        node.this = tmp._this;\n        this.expect(11);\n        this.expect(19);\n        node.returnType = this.flowParseType();\n        node.typeParameters = null;\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n      case 129:\n        return this.parseLiteral(this.state.value, \"StringLiteralTypeAnnotation\");\n\n      case 85:\n      case 86:\n        node.value = this.match(85);\n        this.next();\n        return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n\n      case 53:\n        if (this.state.value === \"-\") {\n          this.next();\n\n          if (this.match(130)) {\n            return this.parseLiteralAtNode(-this.state.value, \"NumberLiteralTypeAnnotation\", node);\n          }\n\n          if (this.match(131)) {\n            return this.parseLiteralAtNode(-this.state.value, \"BigIntLiteralTypeAnnotation\", node);\n          }\n\n          throw this.raise(FlowErrors.UnexpectedSubtractionOperand, {\n            at: this.state.startLoc\n          });\n        }\n\n        throw this.unexpected();\n\n      case 130:\n        return this.parseLiteral(this.state.value, \"NumberLiteralTypeAnnotation\");\n\n      case 131:\n        return this.parseLiteral(this.state.value, \"BigIntLiteralTypeAnnotation\");\n\n      case 88:\n        this.next();\n        return this.finishNode(node, \"VoidTypeAnnotation\");\n\n      case 84:\n        this.next();\n        return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n      case 78:\n        this.next();\n        return this.finishNode(node, \"ThisTypeAnnotation\");\n\n      case 55:\n        this.next();\n        return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n      case 87:\n        return this.flowParseTypeofType();\n\n      default:\n        if (tokenIsKeyword(this.state.type)) {\n          const label = tokenLabelName(this.state.type);\n          this.next();\n          return super.createIdentifier(node, label);\n        } else if (tokenIsIdentifier(this.state.type)) {\n          if (this.isContextual(125)) {\n            return this.flowParseInterfaceType();\n          }\n\n          return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());\n        }\n\n    }\n\n    throw this.unexpected();\n  }\n\n  flowParsePostfixType() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    let type = this.flowParsePrimaryType();\n    let seenOptionalIndexedAccess = false;\n\n    while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt(startPos, startLoc);\n      const optional = this.eat(18);\n      seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n      this.expect(0);\n\n      if (!optional && this.match(3)) {\n        node.elementType = type;\n        this.next();\n        type = this.finishNode(node, \"ArrayTypeAnnotation\");\n      } else {\n        node.objectType = type;\n        node.indexType = this.flowParseType();\n        this.expect(3);\n\n        if (seenOptionalIndexedAccess) {\n          node.optional = optional;\n          type = this.finishNode(node, \"OptionalIndexedAccessType\");\n        } else {\n          type = this.finishNode(node, \"IndexedAccessType\");\n        }\n      }\n    }\n\n    return type;\n  }\n\n  flowParsePrefixType() {\n    const node = this.startNode();\n\n    if (this.eat(17)) {\n      node.typeAnnotation = this.flowParsePrefixType();\n      return this.finishNode(node, \"NullableTypeAnnotation\");\n    } else {\n      return this.flowParsePostfixType();\n    }\n  }\n\n  flowParseAnonFunctionWithoutParens() {\n    const param = this.flowParsePrefixType();\n\n    if (!this.state.noAnonFunctionType && this.eat(19)) {\n      const node = this.startNodeAt(param.start, param.loc.start);\n      node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n      node.rest = null;\n      node.this = null;\n      node.returnType = this.flowParseType();\n      node.typeParameters = null;\n      return this.finishNode(node, \"FunctionTypeAnnotation\");\n    }\n\n    return param;\n  }\n\n  flowParseIntersectionType() {\n    const node = this.startNode();\n    this.eat(45);\n    const type = this.flowParseAnonFunctionWithoutParens();\n    node.types = [type];\n\n    while (this.eat(45)) {\n      node.types.push(this.flowParseAnonFunctionWithoutParens());\n    }\n\n    return node.types.length === 1 ? type : this.finishNode(node, \"IntersectionTypeAnnotation\");\n  }\n\n  flowParseUnionType() {\n    const node = this.startNode();\n    this.eat(43);\n    const type = this.flowParseIntersectionType();\n    node.types = [type];\n\n    while (this.eat(43)) {\n      node.types.push(this.flowParseIntersectionType());\n    }\n\n    return node.types.length === 1 ? type : this.finishNode(node, \"UnionTypeAnnotation\");\n  }\n\n  flowParseType() {\n    const oldInType = this.state.inType;\n    this.state.inType = true;\n    const type = this.flowParseUnionType();\n    this.state.inType = oldInType;\n    return type;\n  }\n\n  flowParseTypeOrImplicitInstantiation() {\n    if (this.state.type === 128 && this.state.value === \"_\") {\n      const startPos = this.state.start;\n      const startLoc = this.state.startLoc;\n      const node = this.parseIdentifier();\n      return this.flowParseGenericType(startPos, startLoc, node);\n    } else {\n      return this.flowParseType();\n    }\n  }\n\n  flowParseTypeAnnotation() {\n    const node = this.startNode();\n    node.typeAnnotation = this.flowParseTypeInitialiser();\n    return this.finishNode(node, \"TypeAnnotation\");\n  }\n\n  flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {\n    const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();\n\n    if (this.match(14)) {\n      ident.typeAnnotation = this.flowParseTypeAnnotation();\n      this.resetEndLocation(ident);\n    }\n\n    return ident;\n  }\n\n  typeCastToParameter(node) {\n    node.expression.typeAnnotation = node.typeAnnotation;\n    this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n    return node.expression;\n  }\n\n  flowParseVariance() {\n    let variance = null;\n\n    if (this.match(53)) {\n      variance = this.startNode();\n\n      if (this.state.value === \"+\") {\n        variance.kind = \"plus\";\n      } else {\n        variance.kind = \"minus\";\n      }\n\n      this.next();\n      this.finishNode(variance, \"Variance\");\n    }\n\n    return variance;\n  }\n\n  parseFunctionBody(node, allowExpressionBody, isMethod = false) {\n    if (allowExpressionBody) {\n      return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));\n    }\n\n    return super.parseFunctionBody(node, false, isMethod);\n  }\n\n  parseFunctionBodyAndFinish(node, type, isMethod = false) {\n    if (this.match(14)) {\n      const typeNode = this.startNode();\n      [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n      node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, \"TypeAnnotation\") : null;\n    }\n\n    super.parseFunctionBodyAndFinish(node, type, isMethod);\n  }\n\n  parseStatement(context, topLevel) {\n    if (this.state.strict && this.isContextual(125)) {\n      const lookahead = this.lookahead();\n\n      if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseInterface(node);\n      }\n    } else if (this.shouldParseEnums() && this.isContextual(122)) {\n      const node = this.startNode();\n      this.next();\n      return this.flowParseEnumDeclaration(node);\n    }\n\n    const stmt = super.parseStatement(context, topLevel);\n\n    if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n      this.flowPragma = null;\n    }\n\n    return stmt;\n  }\n\n  parseExpressionStatement(node, expr) {\n    if (expr.type === \"Identifier\") {\n      if (expr.name === \"declare\") {\n        if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {\n          return this.flowParseDeclare(node);\n        }\n      } else if (tokenIsIdentifier(this.state.type)) {\n        if (expr.name === \"interface\") {\n          return this.flowParseInterface(node);\n        } else if (expr.name === \"type\") {\n          return this.flowParseTypeAlias(node);\n        } else if (expr.name === \"opaque\") {\n          return this.flowParseOpaqueType(node, false);\n        }\n      }\n    }\n\n    return super.parseExpressionStatement(node, expr);\n  }\n\n  shouldParseExportDeclaration() {\n    const {\n      type\n    } = this.state;\n\n    if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n      return !this.state.containsEsc;\n    }\n\n    return super.shouldParseExportDeclaration();\n  }\n\n  isExportDefaultSpecifier() {\n    const {\n      type\n    } = this.state;\n\n    if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 122) {\n      return this.state.containsEsc;\n    }\n\n    return super.isExportDefaultSpecifier();\n  }\n\n  parseExportDefaultExpression() {\n    if (this.shouldParseEnums() && this.isContextual(122)) {\n      const node = this.startNode();\n      this.next();\n      return this.flowParseEnumDeclaration(node);\n    }\n\n    return super.parseExportDefaultExpression();\n  }\n\n  parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n    if (!this.match(17)) return expr;\n\n    if (this.state.maybeInArrowParameters) {\n      const nextCh = this.lookaheadCharCode();\n\n      if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n        this.setOptionalParametersError(refExpressionErrors);\n        return expr;\n      }\n    }\n\n    this.expect(17);\n    const state = this.state.clone();\n    const originalNoArrowAt = this.state.noArrowAt;\n    const node = this.startNodeAt(startPos, startLoc);\n    let {\n      consequent,\n      failed\n    } = this.tryParseConditionalConsequent();\n    let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n    if (failed || invalid.length > 0) {\n      const noArrowAt = [...originalNoArrowAt];\n\n      if (invalid.length > 0) {\n        this.state = state;\n        this.state.noArrowAt = noArrowAt;\n\n        for (let i = 0; i < invalid.length; i++) {\n          noArrowAt.push(invalid[i].start);\n        }\n\n        ({\n          consequent,\n          failed\n        } = this.tryParseConditionalConsequent());\n        [valid, invalid] = this.getArrowLikeExpressions(consequent);\n      }\n\n      if (failed && valid.length > 1) {\n        this.raise(FlowErrors.AmbiguousConditionalArrow, {\n          at: state.startLoc\n        });\n      }\n\n      if (failed && valid.length === 1) {\n        this.state = state;\n        noArrowAt.push(valid[0].start);\n        this.state.noArrowAt = noArrowAt;\n        ({\n          consequent,\n          failed\n        } = this.tryParseConditionalConsequent());\n      }\n    }\n\n    this.getArrowLikeExpressions(consequent, true);\n    this.state.noArrowAt = originalNoArrowAt;\n    this.expect(14);\n    node.test = expr;\n    node.consequent = consequent;\n    node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));\n    return this.finishNode(node, \"ConditionalExpression\");\n  }\n\n  tryParseConditionalConsequent() {\n    this.state.noArrowParamsConversionAt.push(this.state.start);\n    const consequent = this.parseMaybeAssignAllowIn();\n    const failed = !this.match(14);\n    this.state.noArrowParamsConversionAt.pop();\n    return {\n      consequent,\n      failed\n    };\n  }\n\n  getArrowLikeExpressions(node, disallowInvalid) {\n    const stack = [node];\n    const arrows = [];\n\n    while (stack.length !== 0) {\n      const node = stack.pop();\n\n      if (node.type === \"ArrowFunctionExpression\") {\n        if (node.typeParameters || !node.returnType) {\n          this.finishArrowValidation(node);\n        } else {\n          arrows.push(node);\n        }\n\n        stack.push(node.body);\n      } else if (node.type === \"ConditionalExpression\") {\n        stack.push(node.consequent);\n        stack.push(node.alternate);\n      }\n    }\n\n    if (disallowInvalid) {\n      arrows.forEach(node => this.finishArrowValidation(node));\n      return [arrows, []];\n    }\n\n    return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));\n  }\n\n  finishArrowValidation(node) {\n    var _node$extra;\n\n    this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);\n    this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n    super.checkParams(node, false, true);\n    this.scope.exit();\n  }\n\n  forwardNoArrowParamsConversionAt(node, parse) {\n    let result;\n\n    if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n      this.state.noArrowParamsConversionAt.push(this.state.start);\n      result = parse();\n      this.state.noArrowParamsConversionAt.pop();\n    } else {\n      result = parse();\n    }\n\n    return result;\n  }\n\n  parseParenItem(node, startPos, startLoc) {\n    node = super.parseParenItem(node, startPos, startLoc);\n\n    if (this.eat(17)) {\n      node.optional = true;\n      this.resetEndLocation(node);\n    }\n\n    if (this.match(14)) {\n      const typeCastNode = this.startNodeAt(startPos, startLoc);\n      typeCastNode.expression = node;\n      typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n      return this.finishNode(typeCastNode, \"TypeCastExpression\");\n    }\n\n    return node;\n  }\n\n  assertModuleNodeAllowed(node) {\n    if (node.type === \"ImportDeclaration\" && (node.importKind === \"type\" || node.importKind === \"typeof\") || node.type === \"ExportNamedDeclaration\" && node.exportKind === \"type\" || node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\") {\n      return;\n    }\n\n    super.assertModuleNodeAllowed(node);\n  }\n\n  parseExport(node) {\n    const decl = super.parseExport(node);\n\n    if (decl.type === \"ExportNamedDeclaration\" || decl.type === \"ExportAllDeclaration\") {\n      decl.exportKind = decl.exportKind || \"value\";\n    }\n\n    return decl;\n  }\n\n  parseExportDeclaration(node) {\n    if (this.isContextual(126)) {\n      node.exportKind = \"type\";\n      const declarationNode = this.startNode();\n      this.next();\n\n      if (this.match(5)) {\n        node.specifiers = this.parseExportSpecifiers(true);\n        this.parseExportFrom(node);\n        return null;\n      } else {\n        return this.flowParseTypeAlias(declarationNode);\n      }\n    } else if (this.isContextual(127)) {\n      node.exportKind = \"type\";\n      const declarationNode = this.startNode();\n      this.next();\n      return this.flowParseOpaqueType(declarationNode, false);\n    } else if (this.isContextual(125)) {\n      node.exportKind = \"type\";\n      const declarationNode = this.startNode();\n      this.next();\n      return this.flowParseInterface(declarationNode);\n    } else if (this.shouldParseEnums() && this.isContextual(122)) {\n      node.exportKind = \"value\";\n      const declarationNode = this.startNode();\n      this.next();\n      return this.flowParseEnumDeclaration(declarationNode);\n    } else {\n      return super.parseExportDeclaration(node);\n    }\n  }\n\n  eatExportStar(node) {\n    if (super.eatExportStar(...arguments)) return true;\n\n    if (this.isContextual(126) && this.lookahead().type === 55) {\n      node.exportKind = \"type\";\n      this.next();\n      this.next();\n      return true;\n    }\n\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(node) {\n    const {\n      startLoc\n    } = this.state;\n    const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n\n    if (hasNamespace && node.exportKind === \"type\") {\n      this.unexpected(startLoc);\n    }\n\n    return hasNamespace;\n  }\n\n  parseClassId(node, isStatement, optionalId) {\n    super.parseClassId(node, isStatement, optionalId);\n\n    if (this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    }\n  }\n\n  parseClassMember(classBody, member, state) {\n    const {\n      startLoc\n    } = this.state;\n\n    if (this.isContextual(121)) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        return;\n      }\n\n      member.declare = true;\n    }\n\n    super.parseClassMember(classBody, member, state);\n\n    if (member.declare) {\n      if (member.type !== \"ClassProperty\" && member.type !== \"ClassPrivateProperty\" && member.type !== \"PropertyDefinition\") {\n        this.raise(FlowErrors.DeclareClassElement, {\n          at: startLoc\n        });\n      } else if (member.value) {\n        this.raise(FlowErrors.DeclareClassFieldInitializer, {\n          node: member.value\n        });\n      }\n    }\n  }\n\n  isIterator(word) {\n    return word === \"iterator\" || word === \"asyncIterator\";\n  }\n\n  readIterator() {\n    const word = super.readWord1();\n    const fullWord = \"@@\" + word;\n\n    if (!this.isIterator(word) || !this.state.inType) {\n      this.raise(ErrorMessages.InvalidIdentifier, {\n        at: this.state.curPosition()\n      }, fullWord);\n    }\n\n    this.finishToken(128, fullWord);\n  }\n\n  getTokenFromCode(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (code === 123 && next === 124) {\n      return this.finishOp(6, 2);\n    } else if (this.state.inType && (code === 62 || code === 60)) {\n      return this.finishOp(code === 62 ? 48 : 47, 1);\n    } else if (this.state.inType && code === 63) {\n      if (next === 46) {\n        return this.finishOp(18, 2);\n      }\n\n      return this.finishOp(17, 1);\n    } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {\n      this.state.pos += 2;\n      return this.readIterator();\n    } else {\n      return super.getTokenFromCode(code);\n    }\n  }\n\n  isAssignable(node, isBinding) {\n    if (node.type === \"TypeCastExpression\") {\n      return this.isAssignable(node.expression, isBinding);\n    } else {\n      return super.isAssignable(node, isBinding);\n    }\n  }\n\n  toAssignable(node, isLHS = false) {\n    if (node.type === \"TypeCastExpression\") {\n      return super.toAssignable(this.typeCastToParameter(node), isLHS);\n    } else {\n      return super.toAssignable(node, isLHS);\n    }\n  }\n\n  toAssignableList(exprList, trailingCommaLoc, isLHS) {\n    for (let i = 0; i < exprList.length; i++) {\n      const expr = exprList[i];\n\n      if ((expr == null ? void 0 : expr.type) === \"TypeCastExpression\") {\n        exprList[i] = this.typeCastToParameter(expr);\n      }\n    }\n\n    return super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n  }\n\n  toReferencedList(exprList, isParenthesizedExpr) {\n    for (let i = 0; i < exprList.length; i++) {\n      var _expr$extra;\n\n      const expr = exprList[i];\n\n      if (expr && expr.type === \"TypeCastExpression\" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {\n        this.raise(FlowErrors.TypeCastInPattern, {\n          node: expr.typeAnnotation\n        });\n      }\n    }\n\n    return exprList;\n  }\n\n  parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n    const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors);\n\n    if (canBePattern && !this.state.maybeInArrowParameters) {\n      this.toReferencedList(node.elements);\n    }\n\n    return node;\n  }\n\n  checkLVal(expr, ...args) {\n    if (expr.type !== \"TypeCastExpression\") {\n      return super.checkLVal(expr, ...args);\n    }\n  }\n\n  parseClassProperty(node) {\n    if (this.match(14)) {\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n    }\n\n    return super.parseClassProperty(node);\n  }\n\n  parseClassPrivateProperty(node) {\n    if (this.match(14)) {\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n    }\n\n    return super.parseClassPrivateProperty(node);\n  }\n\n  isClassMethod() {\n    return this.match(47) || super.isClassMethod();\n  }\n\n  isClassProperty() {\n    return this.match(14) || super.isClassProperty();\n  }\n\n  isNonstaticConstructor(method) {\n    return !this.match(14) && super.isNonstaticConstructor(method);\n  }\n\n  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n    if (method.variance) {\n      this.unexpected(method.variance.loc.start);\n    }\n\n    delete method.variance;\n\n    if (this.match(47)) {\n      method.typeParameters = this.flowParseTypeParameterDeclaration();\n    }\n\n    super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n\n    if (method.params && isConstructor) {\n      const params = method.params;\n\n      if (params.length > 0 && this.isThisParam(params[0])) {\n        this.raise(FlowErrors.ThisParamBannedInConstructor, {\n          node: method\n        });\n      }\n    } else if (method.type === \"MethodDefinition\" && isConstructor && method.value.params) {\n      const params = method.value.params;\n\n      if (params.length > 0 && this.isThisParam(params[0])) {\n        this.raise(FlowErrors.ThisParamBannedInConstructor, {\n          node: method\n        });\n      }\n    }\n  }\n\n  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n    if (method.variance) {\n      this.unexpected(method.variance.loc.start);\n    }\n\n    delete method.variance;\n\n    if (this.match(47)) {\n      method.typeParameters = this.flowParseTypeParameterDeclaration();\n    }\n\n    super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n  }\n\n  parseClassSuper(node) {\n    super.parseClassSuper(node);\n\n    if (node.superClass && this.match(47)) {\n      node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n    }\n\n    if (this.isContextual(110)) {\n      this.next();\n      const implemented = node.implements = [];\n\n      do {\n        const node = this.startNode();\n        node.id = this.flowParseRestrictedIdentifier(true);\n\n        if (this.match(47)) {\n          node.typeParameters = this.flowParseTypeParameterInstantiation();\n        } else {\n          node.typeParameters = null;\n        }\n\n        implemented.push(this.finishNode(node, \"ClassImplements\"));\n      } while (this.eat(12));\n    }\n  }\n\n  checkGetterSetterParams(method) {\n    super.checkGetterSetterParams(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length > 0) {\n      const param = params[0];\n\n      if (this.isThisParam(param) && method.kind === \"get\") {\n        this.raise(FlowErrors.GetterMayNotHaveThisParam, {\n          node: param\n        });\n      } else if (this.isThisParam(param)) {\n        this.raise(FlowErrors.SetterMayNotHaveThisParam, {\n          node: param\n        });\n      }\n    }\n  }\n\n  parsePropertyNamePrefixOperator(node) {\n    node.variance = this.flowParseVariance();\n  }\n\n  parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n    if (prop.variance) {\n      this.unexpected(prop.variance.loc.start);\n    }\n\n    delete prop.variance;\n    let typeParameters;\n\n    if (this.match(47) && !isAccessor) {\n      typeParameters = this.flowParseTypeParameterDeclaration();\n      if (!this.match(10)) this.unexpected();\n    }\n\n    super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n\n    if (typeParameters) {\n      (prop.value || prop).typeParameters = typeParameters;\n    }\n  }\n\n  parseAssignableListItemTypes(param) {\n    if (this.eat(17)) {\n      if (param.type !== \"Identifier\") {\n        this.raise(FlowErrors.PatternIsOptional, {\n          node: param\n        });\n      }\n\n      if (this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamMayNotBeOptional, {\n          node: param\n        });\n      }\n\n      param.optional = true;\n    }\n\n    if (this.match(14)) {\n      param.typeAnnotation = this.flowParseTypeAnnotation();\n    } else if (this.isThisParam(param)) {\n      this.raise(FlowErrors.ThisParamAnnotationRequired, {\n        node: param\n      });\n    }\n\n    if (this.match(29) && this.isThisParam(param)) {\n      this.raise(FlowErrors.ThisParamNoDefault, {\n        node: param\n      });\n    }\n\n    this.resetEndLocation(param);\n    return param;\n  }\n\n  parseMaybeDefault(startPos, startLoc, left) {\n    const node = super.parseMaybeDefault(startPos, startLoc, left);\n\n    if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n      this.raise(FlowErrors.TypeBeforeInitializer, {\n        node: node.typeAnnotation\n      });\n    }\n\n    return node;\n  }\n\n  shouldParseDefaultImport(node) {\n    if (!hasTypeImportKind(node)) {\n      return super.shouldParseDefaultImport(node);\n    }\n\n    return isMaybeDefaultImport(this.state.type);\n  }\n\n  parseImportSpecifierLocal(node, specifier, type, contextDescription) {\n    specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();\n    this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);\n    node.specifiers.push(this.finishNode(specifier, type));\n  }\n\n  maybeParseDefaultImportSpecifier(node) {\n    node.importKind = \"value\";\n    let kind = null;\n\n    if (this.match(87)) {\n      kind = \"typeof\";\n    } else if (this.isContextual(126)) {\n      kind = \"type\";\n    }\n\n    if (kind) {\n      const lh = this.lookahead();\n      const {\n        type\n      } = lh;\n\n      if (kind === \"type\" && type === 55) {\n        this.unexpected(null, lh.type);\n      }\n\n      if (isMaybeDefaultImport(type) || type === 5 || type === 55) {\n        this.next();\n        node.importKind = kind;\n      }\n    }\n\n    return super.maybeParseDefaultImportSpecifier(node);\n  }\n\n  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n    const firstIdent = specifier.imported;\n    let specifierTypeKind = null;\n\n    if (firstIdent.type === \"Identifier\") {\n      if (firstIdent.name === \"type\") {\n        specifierTypeKind = \"type\";\n      } else if (firstIdent.name === \"typeof\") {\n        specifierTypeKind = \"typeof\";\n      }\n    }\n\n    let isBinding = false;\n\n    if (this.isContextual(93) && !this.isLookaheadContextual(\"as\")) {\n      const as_ident = this.parseIdentifier(true);\n\n      if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {\n        specifier.imported = as_ident;\n        specifier.importKind = specifierTypeKind;\n        specifier.local = cloneIdentifier(as_ident);\n      } else {\n        specifier.imported = firstIdent;\n        specifier.importKind = null;\n        specifier.local = this.parseIdentifier();\n      }\n    } else {\n      if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {\n        specifier.imported = this.parseIdentifier(true);\n        specifier.importKind = specifierTypeKind;\n      } else {\n        if (importedIsString) {\n          throw this.raise(ErrorMessages.ImportBindingIsString, {\n            node: specifier\n          }, firstIdent.value);\n        }\n\n        specifier.imported = firstIdent;\n        specifier.importKind = null;\n      }\n\n      if (this.eatContextual(93)) {\n        specifier.local = this.parseIdentifier();\n      } else {\n        isBinding = true;\n        specifier.local = cloneIdentifier(specifier.imported);\n      }\n    }\n\n    const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n    if (isInTypeOnlyImport && specifierIsTypeImport) {\n      this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, {\n        node: specifier\n      });\n    }\n\n    if (isInTypeOnlyImport || specifierIsTypeImport) {\n      this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);\n    }\n\n    if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n      this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);\n    }\n\n    this.checkLVal(specifier.local, \"import specifier\", BIND_LEXICAL);\n    return this.finishNode(specifier, \"ImportSpecifier\");\n  }\n\n  parseBindingAtom() {\n    switch (this.state.type) {\n      case 78:\n        return this.parseIdentifier(true);\n\n      default:\n        return super.parseBindingAtom();\n    }\n  }\n\n  parseFunctionParams(node, allowModifiers) {\n    const kind = node.kind;\n\n    if (kind !== \"get\" && kind !== \"set\" && this.match(47)) {\n      node.typeParameters = this.flowParseTypeParameterDeclaration();\n    }\n\n    super.parseFunctionParams(node, allowModifiers);\n  }\n\n  parseVarId(decl, kind) {\n    super.parseVarId(decl, kind);\n\n    if (this.match(14)) {\n      decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n      this.resetEndLocation(decl.id);\n    }\n  }\n\n  parseAsyncArrowFromCallExpression(node, call) {\n    if (this.match(14)) {\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n      this.state.noAnonFunctionType = true;\n      node.returnType = this.flowParseTypeAnnotation();\n      this.state.noAnonFunctionType = oldNoAnonFunctionType;\n    }\n\n    return super.parseAsyncArrowFromCallExpression(node, call);\n  }\n\n  shouldParseAsyncArrow() {\n    return this.match(14) || super.shouldParseAsyncArrow();\n  }\n\n  parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n    var _jsx;\n\n    let state = null;\n    let jsx;\n\n    if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n      state = this.state.clone();\n      jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n      if (!jsx.error) return jsx.node;\n      const {\n        context\n      } = this.state;\n      const currentContext = context[context.length - 1];\n\n      if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n        context.pop();\n      }\n    }\n\n    if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {\n      var _jsx2, _jsx3;\n\n      state = state || this.state.clone();\n      let typeParameters;\n      const arrow = this.tryParse(abort => {\n        var _arrowExpression$extr;\n\n        typeParameters = this.flowParseTypeParameterDeclaration();\n        const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {\n          const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n          this.resetStartLocationFromNode(result, typeParameters);\n          return result;\n        });\n        if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();\n        const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n        if (expr.type !== \"ArrowFunctionExpression\") abort();\n        expr.typeParameters = typeParameters;\n        this.resetStartLocationFromNode(expr, typeParameters);\n        return arrowExpression;\n      }, state);\n      let arrowExpression = null;\n\n      if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === \"ArrowFunctionExpression\") {\n        if (!arrow.error && !arrow.aborted) {\n          if (arrow.node.async) {\n            this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, {\n              node: typeParameters\n            });\n          }\n\n          return arrow.node;\n        }\n\n        arrowExpression = arrow.node;\n      }\n\n      if ((_jsx2 = jsx) != null && _jsx2.node) {\n        this.state = jsx.failState;\n        return jsx.node;\n      }\n\n      if (arrowExpression) {\n        this.state = arrow.failState;\n        return arrowExpression;\n      }\n\n      if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n      if (arrow.thrown) throw arrow.error;\n      throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, {\n        node: typeParameters\n      });\n    }\n\n    return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n  }\n\n  parseArrow(node) {\n    if (this.match(14)) {\n      const result = this.tryParse(() => {\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = true;\n        const typeNode = this.startNode();\n        [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n        if (this.canInsertSemicolon()) this.unexpected();\n        if (!this.match(19)) this.unexpected();\n        return typeNode;\n      });\n      if (result.thrown) return null;\n      if (result.error) this.state = result.failState;\n      node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, \"TypeAnnotation\") : null;\n    }\n\n    return super.parseArrow(node);\n  }\n\n  shouldParseArrow(params) {\n    return this.match(14) || super.shouldParseArrow(params);\n  }\n\n  setArrowFunctionParameters(node, params) {\n    if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n      node.params = params;\n    } else {\n      super.setArrowFunctionParameters(node, params);\n    }\n  }\n\n  checkParams(node, allowDuplicates, isArrowFunction) {\n    if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n      return;\n    }\n\n    for (let i = 0; i < node.params.length; i++) {\n      if (this.isThisParam(node.params[i]) && i > 0) {\n        this.raise(FlowErrors.ThisParamMustBeFirst, {\n          node: node.params[i]\n        });\n      }\n    }\n\n    return super.checkParams(...arguments);\n  }\n\n  parseParenAndDistinguishExpression(canBeArrow) {\n    return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);\n  }\n\n  parseSubscripts(base, startPos, startLoc, noCalls) {\n    if (base.type === \"Identifier\" && base.name === \"async\" && this.state.noArrowAt.indexOf(startPos) !== -1) {\n      this.next();\n      const node = this.startNodeAt(startPos, startLoc);\n      node.callee = base;\n      node.arguments = this.parseCallExpressionArguments(11, false);\n      base = this.finishNode(node, \"CallExpression\");\n    } else if (base.type === \"Identifier\" && base.name === \"async\" && this.match(47)) {\n      const state = this.state.clone();\n      const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state);\n      if (!arrow.error && !arrow.aborted) return arrow.node;\n      const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state);\n      if (result.node && !result.error) return result.node;\n\n      if (arrow.node) {\n        this.state = arrow.failState;\n        return arrow.node;\n      }\n\n      if (result.node) {\n        this.state = result.failState;\n        return result.node;\n      }\n\n      throw arrow.error || result.error;\n    }\n\n    return super.parseSubscripts(base, startPos, startLoc, noCalls);\n  }\n\n  parseSubscript(base, startPos, startLoc, noCalls, subscriptState) {\n    if (this.match(18) && this.isLookaheadToken_lt()) {\n      subscriptState.optionalChainMember = true;\n\n      if (noCalls) {\n        subscriptState.stop = true;\n        return base;\n      }\n\n      this.next();\n      const node = this.startNodeAt(startPos, startLoc);\n      node.callee = base;\n      node.typeArguments = this.flowParseTypeParameterInstantiation();\n      this.expect(10);\n      node.arguments = this.parseCallExpressionArguments(11, false);\n      node.optional = true;\n      return this.finishCallExpression(node, true);\n    } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {\n      const node = this.startNodeAt(startPos, startLoc);\n      node.callee = base;\n      const result = this.tryParse(() => {\n        node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n        this.expect(10);\n        node.arguments = this.parseCallExpressionArguments(11, false);\n        if (subscriptState.optionalChainMember) node.optional = false;\n        return this.finishCallExpression(node, subscriptState.optionalChainMember);\n      });\n\n      if (result.node) {\n        if (result.error) this.state = result.failState;\n        return result.node;\n      }\n    }\n\n    return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState);\n  }\n\n  parseNewArguments(node) {\n    let targs = null;\n\n    if (this.shouldParseTypes() && this.match(47)) {\n      targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;\n    }\n\n    node.typeArguments = targs;\n    super.parseNewArguments(node);\n  }\n\n  parseAsyncArrowWithTypeParameters(startPos, startLoc) {\n    const node = this.startNodeAt(startPos, startLoc);\n    this.parseFunctionParams(node);\n    if (!this.parseArrow(node)) return;\n    return this.parseArrowExpression(node, undefined, true);\n  }\n\n  readToken_mult_modulo(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (code === 42 && next === 47 && this.state.hasFlowComment) {\n      this.state.hasFlowComment = false;\n      this.state.pos += 2;\n      this.nextToken();\n      return;\n    }\n\n    super.readToken_mult_modulo(code);\n  }\n\n  readToken_pipe_amp(code) {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (code === 124 && next === 125) {\n      this.finishOp(9, 2);\n      return;\n    }\n\n    super.readToken_pipe_amp(code);\n  }\n\n  parseTopLevel(file, program) {\n    const fileNode = super.parseTopLevel(file, program);\n\n    if (this.state.hasFlowComment) {\n      this.raise(FlowErrors.UnterminatedFlowComment, {\n        at: this.state.curPosition()\n      });\n    }\n\n    return fileNode;\n  }\n\n  skipBlockComment() {\n    if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n      if (this.state.hasFlowComment) {\n        throw this.raise(FlowErrors.NestedFlowComment, {\n          at: this.state.startLoc\n        });\n      }\n\n      this.hasFlowCommentCompletion();\n      this.state.pos += this.skipFlowComment();\n      this.state.hasFlowComment = true;\n      return;\n    }\n\n    if (this.state.hasFlowComment) {\n      const end = this.input.indexOf(\"*-/\", this.state.pos + 2);\n\n      if (end === -1) {\n        throw this.raise(ErrorMessages.UnterminatedComment, {\n          at: this.state.curPosition()\n        });\n      }\n\n      this.state.pos = end + 2 + 3;\n      return;\n    }\n\n    return super.skipBlockComment();\n  }\n\n  skipFlowComment() {\n    const {\n      pos\n    } = this.state;\n    let shiftToFirstNonWhiteSpace = 2;\n\n    while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {\n      shiftToFirstNonWhiteSpace++;\n    }\n\n    const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n    const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n    if (ch2 === 58 && ch3 === 58) {\n      return shiftToFirstNonWhiteSpace + 2;\n    }\n\n    if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === \"flow-include\") {\n      return shiftToFirstNonWhiteSpace + 12;\n    }\n\n    if (ch2 === 58 && ch3 !== 58) {\n      return shiftToFirstNonWhiteSpace;\n    }\n\n    return false;\n  }\n\n  hasFlowCommentCompletion() {\n    const end = this.input.indexOf(\"*/\", this.state.pos);\n\n    if (end === -1) {\n      throw this.raise(ErrorMessages.UnterminatedComment, {\n        at: this.state.curPosition()\n      });\n    }\n  }\n\n  flowEnumErrorBooleanMemberNotInitialized(loc, {\n    enumName,\n    memberName\n  }) {\n    this.raise(FlowErrors.EnumBooleanMemberNotInitialized, {\n      at: loc\n    }, memberName, enumName);\n  }\n\n  flowEnumErrorInvalidExplicitType(loc, {\n    enumName,\n    suppliedType\n  }) {\n    return this.raise(suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, {\n      at: loc\n    }, enumName, suppliedType);\n  }\n\n  flowEnumErrorInvalidMemberInitializer(loc, {\n    enumName,\n    explicitType,\n    memberName\n  }) {\n    return this.raise(explicitType === \"boolean\" || explicitType === \"number\" || explicitType === \"string\" ? FlowErrors.EnumInvalidMemberInitializerPrimaryType : explicitType === \"symbol\" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerUnknownType, {\n      at: loc\n    }, enumName, memberName, explicitType);\n  }\n\n  flowEnumErrorNumberMemberNotInitialized(loc, {\n    enumName,\n    memberName\n  }) {\n    this.raise(FlowErrors.EnumNumberMemberNotInitialized, {\n      at: loc\n    }, enumName, memberName);\n  }\n\n  flowEnumErrorStringMemberInconsistentlyInitailized(node, {\n    enumName\n  }) {\n    this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, {\n      node\n    }, enumName);\n  }\n\n  flowEnumMemberInit() {\n    const startLoc = this.state.startLoc;\n\n    const endOfInit = () => this.match(12) || this.match(8);\n\n    switch (this.state.type) {\n      case 130:\n        {\n          const literal = this.parseNumericLiteral(this.state.value);\n\n          if (endOfInit()) {\n            return {\n              type: \"number\",\n              loc: literal.loc.start,\n              value: literal\n            };\n          }\n\n          return {\n            type: \"invalid\",\n            loc: startLoc\n          };\n        }\n\n      case 129:\n        {\n          const literal = this.parseStringLiteral(this.state.value);\n\n          if (endOfInit()) {\n            return {\n              type: \"string\",\n              loc: literal.loc.start,\n              value: literal\n            };\n          }\n\n          return {\n            type: \"invalid\",\n            loc: startLoc\n          };\n        }\n\n      case 85:\n      case 86:\n        {\n          const literal = this.parseBooleanLiteral(this.match(85));\n\n          if (endOfInit()) {\n            return {\n              type: \"boolean\",\n              loc: literal.loc.start,\n              value: literal\n            };\n          }\n\n          return {\n            type: \"invalid\",\n            loc: startLoc\n          };\n        }\n\n      default:\n        return {\n          type: \"invalid\",\n          loc: startLoc\n        };\n    }\n  }\n\n  flowEnumMemberRaw() {\n    const loc = this.state.startLoc;\n    const id = this.parseIdentifier(true);\n    const init = this.eat(29) ? this.flowEnumMemberInit() : {\n      type: \"none\",\n      loc\n    };\n    return {\n      id,\n      init\n    };\n  }\n\n  flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {\n    const {\n      explicitType\n    } = context;\n\n    if (explicitType === null) {\n      return;\n    }\n\n    if (explicitType !== expectedType) {\n      this.flowEnumErrorInvalidMemberInitializer(loc, context);\n    }\n  }\n\n  flowEnumMembers({\n    enumName,\n    explicitType\n  }) {\n    const seenNames = new Set();\n    const members = {\n      booleanMembers: [],\n      numberMembers: [],\n      stringMembers: [],\n      defaultedMembers: []\n    };\n    let hasUnknownMembers = false;\n\n    while (!this.match(8)) {\n      if (this.eat(21)) {\n        hasUnknownMembers = true;\n        break;\n      }\n\n      const memberNode = this.startNode();\n      const {\n        id,\n        init\n      } = this.flowEnumMemberRaw();\n      const memberName = id.name;\n\n      if (memberName === \"\") {\n        continue;\n      }\n\n      if (/^[a-z]/.test(memberName)) {\n        this.raise(FlowErrors.EnumInvalidMemberName, {\n          node: id\n        }, memberName, memberName[0].toUpperCase() + memberName.slice(1), enumName);\n      }\n\n      if (seenNames.has(memberName)) {\n        this.raise(FlowErrors.EnumDuplicateMemberName, {\n          node: id\n        }, memberName, enumName);\n      }\n\n      seenNames.add(memberName);\n      const context = {\n        enumName,\n        explicitType,\n        memberName\n      };\n      memberNode.id = id;\n\n      switch (init.type) {\n        case \"boolean\":\n          {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"boolean\");\n            memberNode.init = init.value;\n            members.booleanMembers.push(this.finishNode(memberNode, \"EnumBooleanMember\"));\n            break;\n          }\n\n        case \"number\":\n          {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n            memberNode.init = init.value;\n            members.numberMembers.push(this.finishNode(memberNode, \"EnumNumberMember\"));\n            break;\n          }\n\n        case \"string\":\n          {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n            memberNode.init = init.value;\n            members.stringMembers.push(this.finishNode(memberNode, \"EnumStringMember\"));\n            break;\n          }\n\n        case \"invalid\":\n          {\n            throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n          }\n\n        case \"none\":\n          {\n            switch (explicitType) {\n              case \"boolean\":\n                this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);\n                break;\n\n              case \"number\":\n                this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n                break;\n\n              default:\n                members.defaultedMembers.push(this.finishNode(memberNode, \"EnumDefaultedMember\"));\n            }\n          }\n      }\n\n      if (!this.match(8)) {\n        this.expect(12);\n      }\n    }\n\n    return {\n      members,\n      hasUnknownMembers\n    };\n  }\n\n  flowEnumStringMembers(initializedMembers, defaultedMembers, {\n    enumName\n  }) {\n    if (initializedMembers.length === 0) {\n      return defaultedMembers;\n    } else if (defaultedMembers.length === 0) {\n      return initializedMembers;\n    } else if (defaultedMembers.length > initializedMembers.length) {\n      for (const member of initializedMembers) {\n        this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n          enumName\n        });\n      }\n\n      return defaultedMembers;\n    } else {\n      for (const member of defaultedMembers) {\n        this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {\n          enumName\n        });\n      }\n\n      return initializedMembers;\n    }\n  }\n\n  flowEnumParseExplicitType({\n    enumName\n  }) {\n    if (this.eatContextual(101)) {\n      if (!tokenIsIdentifier(this.state.type)) {\n        throw this.flowEnumErrorInvalidExplicitType(this.state.startLoc, {\n          enumName,\n          suppliedType: null\n        });\n      }\n\n      const {\n        value\n      } = this.state;\n      this.next();\n\n      if (value !== \"boolean\" && value !== \"number\" && value !== \"string\" && value !== \"symbol\") {\n        this.flowEnumErrorInvalidExplicitType(this.state.startLoc, {\n          enumName,\n          suppliedType: value\n        });\n      }\n\n      return value;\n    }\n\n    return null;\n  }\n\n  flowEnumBody(node, id) {\n    const enumName = id.name;\n    const nameLoc = id.loc.start;\n    const explicitType = this.flowEnumParseExplicitType({\n      enumName\n    });\n    this.expect(5);\n    const {\n      members,\n      hasUnknownMembers\n    } = this.flowEnumMembers({\n      enumName,\n      explicitType\n    });\n    node.hasUnknownMembers = hasUnknownMembers;\n\n    switch (explicitType) {\n      case \"boolean\":\n        node.explicitType = true;\n        node.members = members.booleanMembers;\n        this.expect(8);\n        return this.finishNode(node, \"EnumBooleanBody\");\n\n      case \"number\":\n        node.explicitType = true;\n        node.members = members.numberMembers;\n        this.expect(8);\n        return this.finishNode(node, \"EnumNumberBody\");\n\n      case \"string\":\n        node.explicitType = true;\n        node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n          enumName\n        });\n        this.expect(8);\n        return this.finishNode(node, \"EnumStringBody\");\n\n      case \"symbol\":\n        node.members = members.defaultedMembers;\n        this.expect(8);\n        return this.finishNode(node, \"EnumSymbolBody\");\n\n      default:\n        {\n          const empty = () => {\n            node.members = [];\n            this.expect(8);\n            return this.finishNode(node, \"EnumStringBody\");\n          };\n\n          node.explicitType = false;\n          const boolsLen = members.booleanMembers.length;\n          const numsLen = members.numberMembers.length;\n          const strsLen = members.stringMembers.length;\n          const defaultedLen = members.defaultedMembers.length;\n\n          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n            return empty();\n          } else if (!boolsLen && !numsLen) {\n            node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n              enumName\n            });\n            this.expect(8);\n            return this.finishNode(node, \"EnumStringBody\");\n          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name\n              });\n            }\n\n            node.members = members.booleanMembers;\n            this.expect(8);\n            return this.finishNode(node, \"EnumBooleanBody\");\n          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name\n              });\n            }\n\n            node.members = members.numberMembers;\n            this.expect(8);\n            return this.finishNode(node, \"EnumNumberBody\");\n          } else {\n            this.raise(FlowErrors.EnumInconsistentMemberValues, {\n              at: nameLoc\n            }, enumName);\n            return empty();\n          }\n        }\n    }\n  }\n\n  flowParseEnumDeclaration(node) {\n    const id = this.parseIdentifier();\n    node.id = id;\n    node.body = this.flowEnumBody(this.startNode(), id);\n    return this.finishNode(node, \"EnumDeclaration\");\n  }\n\n  isLookaheadToken_lt() {\n    const next = this.nextTokenStart();\n\n    if (this.input.charCodeAt(next) === 60) {\n      const afterNext = this.input.charCodeAt(next + 1);\n      return afterNext !== 60 && afterNext !== 61;\n    }\n\n    return false;\n  }\n\n  maybeUnwrapTypeCastExpression(node) {\n    return node.type === \"TypeCastExpression\" ? node.expression : node;\n  }\n\n});\n\nconst entities = {\n  quot: \"\\u0022\",\n  amp: \"&\",\n  apos: \"\\u0027\",\n  lt: \"<\",\n  gt: \">\",\n  nbsp: \"\\u00A0\",\n  iexcl: \"\\u00A1\",\n  cent: \"\\u00A2\",\n  pound: \"\\u00A3\",\n  curren: \"\\u00A4\",\n  yen: \"\\u00A5\",\n  brvbar: \"\\u00A6\",\n  sect: \"\\u00A7\",\n  uml: \"\\u00A8\",\n  copy: \"\\u00A9\",\n  ordf: \"\\u00AA\",\n  laquo: \"\\u00AB\",\n  not: \"\\u00AC\",\n  shy: \"\\u00AD\",\n  reg: \"\\u00AE\",\n  macr: \"\\u00AF\",\n  deg: \"\\u00B0\",\n  plusmn: \"\\u00B1\",\n  sup2: \"\\u00B2\",\n  sup3: \"\\u00B3\",\n  acute: \"\\u00B4\",\n  micro: \"\\u00B5\",\n  para: \"\\u00B6\",\n  middot: \"\\u00B7\",\n  cedil: \"\\u00B8\",\n  sup1: \"\\u00B9\",\n  ordm: \"\\u00BA\",\n  raquo: \"\\u00BB\",\n  frac14: \"\\u00BC\",\n  frac12: \"\\u00BD\",\n  frac34: \"\\u00BE\",\n  iquest: \"\\u00BF\",\n  Agrave: \"\\u00C0\",\n  Aacute: \"\\u00C1\",\n  Acirc: \"\\u00C2\",\n  Atilde: \"\\u00C3\",\n  Auml: \"\\u00C4\",\n  Aring: \"\\u00C5\",\n  AElig: \"\\u00C6\",\n  Ccedil: \"\\u00C7\",\n  Egrave: \"\\u00C8\",\n  Eacute: \"\\u00C9\",\n  Ecirc: \"\\u00CA\",\n  Euml: \"\\u00CB\",\n  Igrave: \"\\u00CC\",\n  Iacute: \"\\u00CD\",\n  Icirc: \"\\u00CE\",\n  Iuml: \"\\u00CF\",\n  ETH: \"\\u00D0\",\n  Ntilde: \"\\u00D1\",\n  Ograve: \"\\u00D2\",\n  Oacute: \"\\u00D3\",\n  Ocirc: \"\\u00D4\",\n  Otilde: \"\\u00D5\",\n  Ouml: \"\\u00D6\",\n  times: \"\\u00D7\",\n  Oslash: \"\\u00D8\",\n  Ugrave: \"\\u00D9\",\n  Uacute: \"\\u00DA\",\n  Ucirc: \"\\u00DB\",\n  Uuml: \"\\u00DC\",\n  Yacute: \"\\u00DD\",\n  THORN: \"\\u00DE\",\n  szlig: \"\\u00DF\",\n  agrave: \"\\u00E0\",\n  aacute: \"\\u00E1\",\n  acirc: \"\\u00E2\",\n  atilde: \"\\u00E3\",\n  auml: \"\\u00E4\",\n  aring: \"\\u00E5\",\n  aelig: \"\\u00E6\",\n  ccedil: \"\\u00E7\",\n  egrave: \"\\u00E8\",\n  eacute: \"\\u00E9\",\n  ecirc: \"\\u00EA\",\n  euml: \"\\u00EB\",\n  igrave: \"\\u00EC\",\n  iacute: \"\\u00ED\",\n  icirc: \"\\u00EE\",\n  iuml: \"\\u00EF\",\n  eth: \"\\u00F0\",\n  ntilde: \"\\u00F1\",\n  ograve: \"\\u00F2\",\n  oacute: \"\\u00F3\",\n  ocirc: \"\\u00F4\",\n  otilde: \"\\u00F5\",\n  ouml: \"\\u00F6\",\n  divide: \"\\u00F7\",\n  oslash: \"\\u00F8\",\n  ugrave: \"\\u00F9\",\n  uacute: \"\\u00FA\",\n  ucirc: \"\\u00FB\",\n  uuml: \"\\u00FC\",\n  yacute: \"\\u00FD\",\n  thorn: \"\\u00FE\",\n  yuml: \"\\u00FF\",\n  OElig: \"\\u0152\",\n  oelig: \"\\u0153\",\n  Scaron: \"\\u0160\",\n  scaron: \"\\u0161\",\n  Yuml: \"\\u0178\",\n  fnof: \"\\u0192\",\n  circ: \"\\u02C6\",\n  tilde: \"\\u02DC\",\n  Alpha: \"\\u0391\",\n  Beta: \"\\u0392\",\n  Gamma: \"\\u0393\",\n  Delta: \"\\u0394\",\n  Epsilon: \"\\u0395\",\n  Zeta: \"\\u0396\",\n  Eta: \"\\u0397\",\n  Theta: \"\\u0398\",\n  Iota: \"\\u0399\",\n  Kappa: \"\\u039A\",\n  Lambda: \"\\u039B\",\n  Mu: \"\\u039C\",\n  Nu: \"\\u039D\",\n  Xi: \"\\u039E\",\n  Omicron: \"\\u039F\",\n  Pi: \"\\u03A0\",\n  Rho: \"\\u03A1\",\n  Sigma: \"\\u03A3\",\n  Tau: \"\\u03A4\",\n  Upsilon: \"\\u03A5\",\n  Phi: \"\\u03A6\",\n  Chi: \"\\u03A7\",\n  Psi: \"\\u03A8\",\n  Omega: \"\\u03A9\",\n  alpha: \"\\u03B1\",\n  beta: \"\\u03B2\",\n  gamma: \"\\u03B3\",\n  delta: \"\\u03B4\",\n  epsilon: \"\\u03B5\",\n  zeta: \"\\u03B6\",\n  eta: \"\\u03B7\",\n  theta: \"\\u03B8\",\n  iota: \"\\u03B9\",\n  kappa: \"\\u03BA\",\n  lambda: \"\\u03BB\",\n  mu: \"\\u03BC\",\n  nu: \"\\u03BD\",\n  xi: \"\\u03BE\",\n  omicron: \"\\u03BF\",\n  pi: \"\\u03C0\",\n  rho: \"\\u03C1\",\n  sigmaf: \"\\u03C2\",\n  sigma: \"\\u03C3\",\n  tau: \"\\u03C4\",\n  upsilon: \"\\u03C5\",\n  phi: \"\\u03C6\",\n  chi: \"\\u03C7\",\n  psi: \"\\u03C8\",\n  omega: \"\\u03C9\",\n  thetasym: \"\\u03D1\",\n  upsih: \"\\u03D2\",\n  piv: \"\\u03D6\",\n  ensp: \"\\u2002\",\n  emsp: \"\\u2003\",\n  thinsp: \"\\u2009\",\n  zwnj: \"\\u200C\",\n  zwj: \"\\u200D\",\n  lrm: \"\\u200E\",\n  rlm: \"\\u200F\",\n  ndash: \"\\u2013\",\n  mdash: \"\\u2014\",\n  lsquo: \"\\u2018\",\n  rsquo: \"\\u2019\",\n  sbquo: \"\\u201A\",\n  ldquo: \"\\u201C\",\n  rdquo: \"\\u201D\",\n  bdquo: \"\\u201E\",\n  dagger: \"\\u2020\",\n  Dagger: \"\\u2021\",\n  bull: \"\\u2022\",\n  hellip: \"\\u2026\",\n  permil: \"\\u2030\",\n  prime: \"\\u2032\",\n  Prime: \"\\u2033\",\n  lsaquo: \"\\u2039\",\n  rsaquo: \"\\u203A\",\n  oline: \"\\u203E\",\n  frasl: \"\\u2044\",\n  euro: \"\\u20AC\",\n  image: \"\\u2111\",\n  weierp: \"\\u2118\",\n  real: \"\\u211C\",\n  trade: \"\\u2122\",\n  alefsym: \"\\u2135\",\n  larr: \"\\u2190\",\n  uarr: \"\\u2191\",\n  rarr: \"\\u2192\",\n  darr: \"\\u2193\",\n  harr: \"\\u2194\",\n  crarr: \"\\u21B5\",\n  lArr: \"\\u21D0\",\n  uArr: \"\\u21D1\",\n  rArr: \"\\u21D2\",\n  dArr: \"\\u21D3\",\n  hArr: \"\\u21D4\",\n  forall: \"\\u2200\",\n  part: \"\\u2202\",\n  exist: \"\\u2203\",\n  empty: \"\\u2205\",\n  nabla: \"\\u2207\",\n  isin: \"\\u2208\",\n  notin: \"\\u2209\",\n  ni: \"\\u220B\",\n  prod: \"\\u220F\",\n  sum: \"\\u2211\",\n  minus: \"\\u2212\",\n  lowast: \"\\u2217\",\n  radic: \"\\u221A\",\n  prop: \"\\u221D\",\n  infin: \"\\u221E\",\n  ang: \"\\u2220\",\n  and: \"\\u2227\",\n  or: \"\\u2228\",\n  cap: \"\\u2229\",\n  cup: \"\\u222A\",\n  int: \"\\u222B\",\n  there4: \"\\u2234\",\n  sim: \"\\u223C\",\n  cong: \"\\u2245\",\n  asymp: \"\\u2248\",\n  ne: \"\\u2260\",\n  equiv: \"\\u2261\",\n  le: \"\\u2264\",\n  ge: \"\\u2265\",\n  sub: \"\\u2282\",\n  sup: \"\\u2283\",\n  nsub: \"\\u2284\",\n  sube: \"\\u2286\",\n  supe: \"\\u2287\",\n  oplus: \"\\u2295\",\n  otimes: \"\\u2297\",\n  perp: \"\\u22A5\",\n  sdot: \"\\u22C5\",\n  lceil: \"\\u2308\",\n  rceil: \"\\u2309\",\n  lfloor: \"\\u230A\",\n  rfloor: \"\\u230B\",\n  lang: \"\\u2329\",\n  rang: \"\\u232A\",\n  loz: \"\\u25CA\",\n  spades: \"\\u2660\",\n  clubs: \"\\u2663\",\n  hearts: \"\\u2665\",\n  diams: \"\\u2666\"\n};\n\nconst HEX_NUMBER = /^[\\da-fA-F]+$/;\nconst DECIMAL_NUMBER = /^\\d+$/;\nconst JsxErrors = makeErrorTemplates({\n  AttributeIsEmpty: \"JSX attributes must only be assigned a non-empty expression.\",\n  MissingClosingTagElement: \"Expected corresponding JSX closing tag for <%0>.\",\n  MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n  UnexpectedSequenceExpression: \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n  UnsupportedJsxValue: \"JSX value should be either an expression or a quoted JSX text.\",\n  UnterminatedJsxContent: \"Unterminated JSX contents.\",\n  UnwrappedAdjacentJSXElements: \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\"\n}, ErrorCodes.SyntaxError, \"jsx\");\n\nfunction isFragment(object) {\n  return object ? object.type === \"JSXOpeningFragment\" || object.type === \"JSXClosingFragment\" : false;\n}\n\nfunction getQualifiedJSXName(object) {\n  if (object.type === \"JSXIdentifier\") {\n    return object.name;\n  }\n\n  if (object.type === \"JSXNamespacedName\") {\n    return object.namespace.name + \":\" + object.name.name;\n  }\n\n  if (object.type === \"JSXMemberExpression\") {\n    return getQualifiedJSXName(object.object) + \".\" + getQualifiedJSXName(object.property);\n  }\n\n  throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nvar jsx = (superClass => class extends superClass {\n  jsxReadToken() {\n    let out = \"\";\n    let chunkStart = this.state.pos;\n\n    for (;;) {\n      if (this.state.pos >= this.length) {\n        throw this.raise(JsxErrors.UnterminatedJsxContent, {\n          at: this.state.startLoc\n        });\n      }\n\n      const ch = this.input.charCodeAt(this.state.pos);\n\n      switch (ch) {\n        case 60:\n        case 123:\n          if (this.state.pos === this.state.start) {\n            if (ch === 60 && this.state.canStartJSXElement) {\n              ++this.state.pos;\n              return this.finishToken(138);\n            }\n\n            return super.getTokenFromCode(ch);\n          }\n\n          out += this.input.slice(chunkStart, this.state.pos);\n          return this.finishToken(137, out);\n\n        case 38:\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadEntity();\n          chunkStart = this.state.pos;\n          break;\n\n        case 62:\n        case 125:\n\n        default:\n          if (isNewLine(ch)) {\n            out += this.input.slice(chunkStart, this.state.pos);\n            out += this.jsxReadNewLine(true);\n            chunkStart = this.state.pos;\n          } else {\n            ++this.state.pos;\n          }\n\n      }\n    }\n  }\n\n  jsxReadNewLine(normalizeCRLF) {\n    const ch = this.input.charCodeAt(this.state.pos);\n    let out;\n    ++this.state.pos;\n\n    if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {\n      ++this.state.pos;\n      out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n    } else {\n      out = String.fromCharCode(ch);\n    }\n\n    ++this.state.curLine;\n    this.state.lineStart = this.state.pos;\n    return out;\n  }\n\n  jsxReadString(quote) {\n    let out = \"\";\n    let chunkStart = ++this.state.pos;\n\n    for (;;) {\n      if (this.state.pos >= this.length) {\n        throw this.raise(ErrorMessages.UnterminatedString, {\n          at: this.state.startLoc\n        });\n      }\n\n      const ch = this.input.charCodeAt(this.state.pos);\n      if (ch === quote) break;\n\n      if (ch === 38) {\n        out += this.input.slice(chunkStart, this.state.pos);\n        out += this.jsxReadEntity();\n        chunkStart = this.state.pos;\n      } else if (isNewLine(ch)) {\n        out += this.input.slice(chunkStart, this.state.pos);\n        out += this.jsxReadNewLine(false);\n        chunkStart = this.state.pos;\n      } else {\n        ++this.state.pos;\n      }\n    }\n\n    out += this.input.slice(chunkStart, this.state.pos++);\n    return this.finishToken(129, out);\n  }\n\n  jsxReadEntity() {\n    let str = \"\";\n    let count = 0;\n    let entity;\n    let ch = this.input[this.state.pos];\n    const startPos = ++this.state.pos;\n\n    while (this.state.pos < this.length && count++ < 10) {\n      ch = this.input[this.state.pos++];\n\n      if (ch === \";\") {\n        if (str[0] === \"#\") {\n          if (str[1] === \"x\") {\n            str = str.substr(2);\n\n            if (HEX_NUMBER.test(str)) {\n              entity = String.fromCodePoint(parseInt(str, 16));\n            }\n          } else {\n            str = str.substr(1);\n\n            if (DECIMAL_NUMBER.test(str)) {\n              entity = String.fromCodePoint(parseInt(str, 10));\n            }\n          }\n        } else {\n          entity = entities[str];\n        }\n\n        break;\n      }\n\n      str += ch;\n    }\n\n    if (!entity) {\n      this.state.pos = startPos;\n      return \"&\";\n    }\n\n    return entity;\n  }\n\n  jsxReadWord() {\n    let ch;\n    const start = this.state.pos;\n\n    do {\n      ch = this.input.charCodeAt(++this.state.pos);\n    } while (isIdentifierChar(ch) || ch === 45);\n\n    return this.finishToken(136, this.input.slice(start, this.state.pos));\n  }\n\n  jsxParseIdentifier() {\n    const node = this.startNode();\n\n    if (this.match(136)) {\n      node.name = this.state.value;\n    } else if (tokenIsKeyword(this.state.type)) {\n      node.name = tokenLabelName(this.state.type);\n    } else {\n      this.unexpected();\n    }\n\n    this.next();\n    return this.finishNode(node, \"JSXIdentifier\");\n  }\n\n  jsxParseNamespacedName() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const name = this.jsxParseIdentifier();\n    if (!this.eat(14)) return name;\n    const node = this.startNodeAt(startPos, startLoc);\n    node.namespace = name;\n    node.name = this.jsxParseIdentifier();\n    return this.finishNode(node, \"JSXNamespacedName\");\n  }\n\n  jsxParseElementName() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    let node = this.jsxParseNamespacedName();\n\n    if (node.type === \"JSXNamespacedName\") {\n      return node;\n    }\n\n    while (this.eat(16)) {\n      const newNode = this.startNodeAt(startPos, startLoc);\n      newNode.object = node;\n      newNode.property = this.jsxParseIdentifier();\n      node = this.finishNode(newNode, \"JSXMemberExpression\");\n    }\n\n    return node;\n  }\n\n  jsxParseAttributeValue() {\n    let node;\n\n    switch (this.state.type) {\n      case 5:\n        node = this.startNode();\n        this.setContext(types.brace);\n        this.next();\n        node = this.jsxParseExpressionContainer(node, types.j_oTag);\n\n        if (node.expression.type === \"JSXEmptyExpression\") {\n          this.raise(JsxErrors.AttributeIsEmpty, {\n            node\n          });\n        }\n\n        return node;\n\n      case 138:\n      case 129:\n        return this.parseExprAtom();\n\n      default:\n        throw this.raise(JsxErrors.UnsupportedJsxValue, {\n          at: this.state.startLoc\n        });\n    }\n  }\n\n  jsxParseEmptyExpression() {\n    const node = this.startNodeAt(this.state.lastTokEndLoc.index, this.state.lastTokEndLoc);\n    return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n  }\n\n  jsxParseSpreadChild(node) {\n    this.next();\n    node.expression = this.parseExpression();\n    this.setContext(types.j_oTag);\n    this.expect(8);\n    return this.finishNode(node, \"JSXSpreadChild\");\n  }\n\n  jsxParseExpressionContainer(node, previousContext) {\n    if (this.match(8)) {\n      node.expression = this.jsxParseEmptyExpression();\n    } else {\n      const expression = this.parseExpression();\n      node.expression = expression;\n    }\n\n    this.setContext(previousContext);\n    this.expect(8);\n    return this.finishNode(node, \"JSXExpressionContainer\");\n  }\n\n  jsxParseAttribute() {\n    const node = this.startNode();\n\n    if (this.match(5)) {\n      this.setContext(types.brace);\n      this.next();\n      this.expect(21);\n      node.argument = this.parseMaybeAssignAllowIn();\n      this.setContext(types.j_oTag);\n      this.expect(8);\n      return this.finishNode(node, \"JSXSpreadAttribute\");\n    }\n\n    node.name = this.jsxParseNamespacedName();\n    node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;\n    return this.finishNode(node, \"JSXAttribute\");\n  }\n\n  jsxParseOpeningElementAt(startPos, startLoc) {\n    const node = this.startNodeAt(startPos, startLoc);\n\n    if (this.match(139)) {\n      this.expect(139);\n      return this.finishNode(node, \"JSXOpeningFragment\");\n    }\n\n    node.name = this.jsxParseElementName();\n    return this.jsxParseOpeningElementAfterName(node);\n  }\n\n  jsxParseOpeningElementAfterName(node) {\n    const attributes = [];\n\n    while (!this.match(56) && !this.match(139)) {\n      attributes.push(this.jsxParseAttribute());\n    }\n\n    node.attributes = attributes;\n    node.selfClosing = this.eat(56);\n    this.expect(139);\n    return this.finishNode(node, \"JSXOpeningElement\");\n  }\n\n  jsxParseClosingElementAt(startPos, startLoc) {\n    const node = this.startNodeAt(startPos, startLoc);\n\n    if (this.match(139)) {\n      this.expect(139);\n      return this.finishNode(node, \"JSXClosingFragment\");\n    }\n\n    node.name = this.jsxParseElementName();\n    this.expect(139);\n    return this.finishNode(node, \"JSXClosingElement\");\n  }\n\n  jsxParseElementAt(startPos, startLoc) {\n    const node = this.startNodeAt(startPos, startLoc);\n    const children = [];\n    const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);\n    let closingElement = null;\n\n    if (!openingElement.selfClosing) {\n      contents: for (;;) {\n        switch (this.state.type) {\n          case 138:\n            startPos = this.state.start;\n            startLoc = this.state.startLoc;\n            this.next();\n\n            if (this.eat(56)) {\n              closingElement = this.jsxParseClosingElementAt(startPos, startLoc);\n              break contents;\n            }\n\n            children.push(this.jsxParseElementAt(startPos, startLoc));\n            break;\n\n          case 137:\n            children.push(this.parseExprAtom());\n            break;\n\n          case 5:\n            {\n              const node = this.startNode();\n              this.setContext(types.brace);\n              this.next();\n\n              if (this.match(21)) {\n                children.push(this.jsxParseSpreadChild(node));\n              } else {\n                children.push(this.jsxParseExpressionContainer(node, types.j_expr));\n              }\n\n              break;\n            }\n\n          default:\n            throw this.unexpected();\n        }\n      }\n\n      if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {\n        this.raise(JsxErrors.MissingClosingTagFragment, {\n          node: closingElement\n        });\n      } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n        this.raise(JsxErrors.MissingClosingTagElement, {\n          node: closingElement\n        }, getQualifiedJSXName(openingElement.name));\n      } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n        if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n          this.raise(JsxErrors.MissingClosingTagElement, {\n            node: closingElement\n          }, getQualifiedJSXName(openingElement.name));\n        }\n      }\n    }\n\n    if (isFragment(openingElement)) {\n      node.openingFragment = openingElement;\n      node.closingFragment = closingElement;\n    } else {\n      node.openingElement = openingElement;\n      node.closingElement = closingElement;\n    }\n\n    node.children = children;\n\n    if (this.match(47)) {\n      throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, {\n        at: this.state.startLoc\n      });\n    }\n\n    return isFragment(openingElement) ? this.finishNode(node, \"JSXFragment\") : this.finishNode(node, \"JSXElement\");\n  }\n\n  jsxParseElement() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    this.next();\n    return this.jsxParseElementAt(startPos, startLoc);\n  }\n\n  setContext(newContext) {\n    const {\n      context\n    } = this.state;\n    context[context.length - 1] = newContext;\n  }\n\n  parseExprAtom(refExpressionErrors) {\n    if (this.match(137)) {\n      return this.parseLiteral(this.state.value, \"JSXText\");\n    } else if (this.match(138)) {\n      return this.jsxParseElement();\n    } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {\n      this.replaceToken(138);\n      return this.jsxParseElement();\n    } else {\n      return super.parseExprAtom(refExpressionErrors);\n    }\n  }\n\n  skipSpace() {\n    const curContext = this.curContext();\n    if (!curContext.preserveSpace) super.skipSpace();\n  }\n\n  getTokenFromCode(code) {\n    const context = this.curContext();\n\n    if (context === types.j_expr) {\n      return this.jsxReadToken();\n    }\n\n    if (context === types.j_oTag || context === types.j_cTag) {\n      if (isIdentifierStart(code)) {\n        return this.jsxReadWord();\n      }\n\n      if (code === 62) {\n        ++this.state.pos;\n        return this.finishToken(139);\n      }\n\n      if ((code === 34 || code === 39) && context === types.j_oTag) {\n        return this.jsxReadString(code);\n      }\n    }\n\n    if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {\n      ++this.state.pos;\n      return this.finishToken(138);\n    }\n\n    return super.getTokenFromCode(code);\n  }\n\n  updateContext(prevType) {\n    const {\n      context,\n      type\n    } = this.state;\n\n    if (type === 56 && prevType === 138) {\n      context.splice(-2, 2, types.j_cTag);\n      this.state.canStartJSXElement = false;\n    } else if (type === 138) {\n      context.push(types.j_oTag);\n    } else if (type === 139) {\n      const out = context[context.length - 1];\n\n      if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {\n        context.pop();\n        this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;\n      } else {\n        this.setContext(types.j_expr);\n        this.state.canStartJSXElement = true;\n      }\n    } else {\n      this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n    }\n  }\n\n});\n\nclass TypeScriptScope extends Scope {\n  constructor(...args) {\n    super(...args);\n    this.types = new Set();\n    this.enums = new Set();\n    this.constEnums = new Set();\n    this.classes = new Set();\n    this.exportOnlyBindings = new Set();\n  }\n\n}\n\nclass TypeScriptScopeHandler extends ScopeHandler {\n  createScope(flags) {\n    return new TypeScriptScope(flags);\n  }\n\n  declareName(name, bindingType, loc) {\n    const scope = this.currentScope();\n\n    if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {\n      this.maybeExportDefined(scope, name);\n      scope.exportOnlyBindings.add(name);\n      return;\n    }\n\n    super.declareName(...arguments);\n\n    if (bindingType & BIND_KIND_TYPE) {\n      if (!(bindingType & BIND_KIND_VALUE)) {\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        this.maybeExportDefined(scope, name);\n      }\n\n      scope.types.add(name);\n    }\n\n    if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);\n    if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);\n    if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);\n  }\n\n  isRedeclaredInScope(scope, name, bindingType) {\n    if (scope.enums.has(name)) {\n      if (bindingType & BIND_FLAGS_TS_ENUM) {\n        const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);\n        const wasConst = scope.constEnums.has(name);\n        return isConst !== wasConst;\n      }\n\n      return true;\n    }\n\n    if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {\n      if (scope.lexical.has(name)) {\n        return !!(bindingType & BIND_KIND_VALUE);\n      } else {\n        return false;\n      }\n    }\n\n    if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {\n      return true;\n    }\n\n    return super.isRedeclaredInScope(...arguments);\n  }\n\n  checkLocalExport(id) {\n    const topLevelScope = this.scopeStack[0];\n    const {\n      name\n    } = id;\n\n    if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) {\n      super.checkLocalExport(id);\n    }\n  }\n\n}\n\nfunction nonNull(x) {\n  if (x == null) {\n    throw new Error(`Unexpected ${x} value.`);\n  }\n\n  return x;\n}\n\nfunction assert(x) {\n  if (!x) {\n    throw new Error(\"Assert fail\");\n  }\n}\n\nconst TSErrors = makeErrorTemplates({\n  AbstractMethodHasImplementation: \"Method '%0' cannot have an implementation because it is marked abstract.\",\n  AbstractPropertyHasInitializer: \"Property '%0' cannot have an initializer because it is marked abstract.\",\n  AccesorCannotDeclareThisParameter: \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n  AccesorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n  ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n  ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n  ConstructorHasTypeParameters: \"Type parameters cannot appear on a constructor declaration.\",\n  DeclareAccessor: \"'declare' is not allowed in %0ters.\",\n  DeclareClassFieldHasInitializer: \"Initializers are not allowed in ambient contexts.\",\n  DeclareFunctionHasImplementation: \"An implementation cannot be declared in ambient contexts.\",\n  DuplicateAccessibilityModifier: \"Accessibility modifier already seen.\",\n  DuplicateModifier: \"Duplicate modifier: '%0'.\",\n  EmptyHeritageClauseType: \"'%0' list cannot be empty.\",\n  EmptyTypeArguments: \"Type argument list cannot be empty.\",\n  EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n  ExpectedAmbientAfterExportDeclare: \"'export declare' must be followed by an ambient declaration.\",\n  ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n  IncompatibleModifiers: \"'%0' modifier cannot be used with '%1' modifier.\",\n  IndexSignatureHasAbstract: \"Index signatures cannot have the 'abstract' modifier.\",\n  IndexSignatureHasAccessibility: \"Index signatures cannot have an accessibility modifier ('%0').\",\n  IndexSignatureHasDeclare: \"Index signatures cannot have the 'declare' modifier.\",\n  IndexSignatureHasOverride: \"'override' modifier cannot appear on an index signature.\",\n  IndexSignatureHasStatic: \"Index signatures cannot have the 'static' modifier.\",\n  InvalidModifierOnTypeMember: \"'%0' modifier cannot appear on a type member.\",\n  InvalidModifiersOrder: \"'%0' modifier must precede '%1' modifier.\",\n  InvalidTupleMemberLabel: \"Tuple members must be labeled with a simple identifier.\",\n  MissingInterfaceName: \"'interface' declarations must be followed by an identifier.\",\n  MixedLabeledAndUnlabeledElements: \"Tuple members must all have names or all not have names.\",\n  NonAbstractClassHasAbstractMethod: \"Abstract methods can only appear within an abstract class.\",\n  NonClassMethodPropertyHasAbstractModifer: \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n  OptionalTypeBeforeRequired: \"A required element cannot follow an optional element.\",\n  OverrideNotInSubClass: \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n  PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  PrivateElementHasAbstract: \"Private elements cannot have the 'abstract' modifier.\",\n  PrivateElementHasAccessibility: \"Private elements cannot have an accessibility modifier ('%0').\",\n  ReadonlyForMethodSignature: \"'readonly' modifier can only appear on a property declaration or index signature.\",\n  ReservedArrowTypeParam: \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n  ReservedTypeAssertion: \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n  SetAccesorCannotHaveOptionalParameter: \"A 'set' accessor cannot have an optional parameter.\",\n  SetAccesorCannotHaveRestParameter: \"A 'set' accessor cannot have rest parameter.\",\n  SetAccesorCannotHaveReturnType: \"A 'set' accessor cannot have a return type annotation.\",\n  StaticBlockCannotHaveModifier: \"Static class blocks cannot have any modifier.\",\n  TypeAnnotationAfterAssign: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeImportCannotSpecifyDefaultAndNamed: \"A type-only import can specify a default import or named bindings, but not both.\",\n  TypeModifierIsUsedInTypeExports: \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n  TypeModifierIsUsedInTypeImports: \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n  UnexpectedParameterModifier: \"A parameter property is only allowed in a constructor implementation.\",\n  UnexpectedReadonly: \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n  UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n  UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n  UnsupportedImportTypeArgument: \"Argument in a type import must be a string literal.\",\n  UnsupportedParameterPropertyKind: \"A parameter property may not be declared using a binding pattern.\",\n  UnsupportedSignatureParameterKind: \"Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0.\"\n}, ErrorCodes.SyntaxError, \"typescript\");\n\nfunction keywordTypeFromName(value) {\n  switch (value) {\n    case \"any\":\n      return \"TSAnyKeyword\";\n\n    case \"boolean\":\n      return \"TSBooleanKeyword\";\n\n    case \"bigint\":\n      return \"TSBigIntKeyword\";\n\n    case \"never\":\n      return \"TSNeverKeyword\";\n\n    case \"number\":\n      return \"TSNumberKeyword\";\n\n    case \"object\":\n      return \"TSObjectKeyword\";\n\n    case \"string\":\n      return \"TSStringKeyword\";\n\n    case \"symbol\":\n      return \"TSSymbolKeyword\";\n\n    case \"undefined\":\n      return \"TSUndefinedKeyword\";\n\n    case \"unknown\":\n      return \"TSUnknownKeyword\";\n\n    default:\n      return undefined;\n  }\n}\n\nfunction tsIsAccessModifier(modifier) {\n  return modifier === \"private\" || modifier === \"public\" || modifier === \"protected\";\n}\n\nvar typescript = (superClass => class extends superClass {\n  getScopeHandler() {\n    return TypeScriptScopeHandler;\n  }\n\n  tsIsIdentifier() {\n    return tokenIsIdentifier(this.state.type);\n  }\n\n  tsTokenCanFollowModifier() {\n    return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(134) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();\n  }\n\n  tsNextTokenCanFollowModifier() {\n    this.next();\n    return this.tsTokenCanFollowModifier();\n  }\n\n  tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {\n    if (!tokenIsIdentifier(this.state.type)) {\n      return undefined;\n    }\n\n    const modifier = this.state.value;\n\n    if (allowedModifiers.indexOf(modifier) !== -1) {\n      if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n        return undefined;\n      }\n\n      if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n        return modifier;\n      }\n    }\n\n    return undefined;\n  }\n\n  tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate, stopOnStartOfClassStaticBlock) {\n    const enforceOrder = (loc, modifier, before, after) => {\n      if (modifier === before && modified[after]) {\n        this.raise(TSErrors.InvalidModifiersOrder, {\n          at: loc\n        }, before, after);\n      }\n    };\n\n    const incompatible = (loc, modifier, mod1, mod2) => {\n      if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {\n        this.raise(TSErrors.IncompatibleModifiers, {\n          at: loc\n        }, mod1, mod2);\n      }\n    };\n\n    for (;;) {\n      const {\n        startLoc\n      } = this.state;\n      const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);\n      if (!modifier) break;\n\n      if (tsIsAccessModifier(modifier)) {\n        if (modified.accessibility) {\n          this.raise(TSErrors.DuplicateAccessibilityModifier, {\n            at: startLoc\n          });\n        } else {\n          enforceOrder(startLoc, modifier, modifier, \"override\");\n          enforceOrder(startLoc, modifier, modifier, \"static\");\n          enforceOrder(startLoc, modifier, modifier, \"readonly\");\n          modified.accessibility = modifier;\n        }\n      } else {\n        if (Object.hasOwnProperty.call(modified, modifier)) {\n          this.raise(TSErrors.DuplicateModifier, {\n            at: startLoc\n          }, modifier);\n        } else {\n          enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n          enforceOrder(startLoc, modifier, \"static\", \"override\");\n          enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n          enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n          incompatible(startLoc, modifier, \"declare\", \"override\");\n          incompatible(startLoc, modifier, \"static\", \"abstract\");\n        }\n\n        modified[modifier] = true;\n      }\n\n      if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {\n        this.raise(errorTemplate, {\n          at: startLoc\n        }, modifier);\n      }\n    }\n  }\n\n  tsIsListTerminator(kind) {\n    switch (kind) {\n      case \"EnumMembers\":\n      case \"TypeMembers\":\n        return this.match(8);\n\n      case \"HeritageClauseElement\":\n        return this.match(5);\n\n      case \"TupleElementTypes\":\n        return this.match(3);\n\n      case \"TypeParametersOrArguments\":\n        return this.match(48);\n    }\n\n    throw new Error(\"Unreachable\");\n  }\n\n  tsParseList(kind, parseElement) {\n    const result = [];\n\n    while (!this.tsIsListTerminator(kind)) {\n      result.push(parseElement());\n    }\n\n    return result;\n  }\n\n  tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {\n    return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));\n  }\n\n  tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {\n    const result = [];\n    let trailingCommaPos = -1;\n\n    for (;;) {\n      if (this.tsIsListTerminator(kind)) {\n        break;\n      }\n\n      trailingCommaPos = -1;\n      const element = parseElement();\n\n      if (element == null) {\n        return undefined;\n      }\n\n      result.push(element);\n\n      if (this.eat(12)) {\n        trailingCommaPos = this.state.lastTokStart;\n        continue;\n      }\n\n      if (this.tsIsListTerminator(kind)) {\n        break;\n      }\n\n      if (expectSuccess) {\n        this.expect(12);\n      }\n\n      return undefined;\n    }\n\n    if (refTrailingCommaPos) {\n      refTrailingCommaPos.value = trailingCommaPos;\n    }\n\n    return result;\n  }\n\n  tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {\n    if (!skipFirstToken) {\n      if (bracket) {\n        this.expect(0);\n      } else {\n        this.expect(47);\n      }\n    }\n\n    const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);\n\n    if (bracket) {\n      this.expect(3);\n    } else {\n      this.expect(48);\n    }\n\n    return result;\n  }\n\n  tsParseImportType() {\n    const node = this.startNode();\n    this.expect(83);\n    this.expect(10);\n\n    if (!this.match(129)) {\n      this.raise(TSErrors.UnsupportedImportTypeArgument, {\n        at: this.state.startLoc\n      });\n    }\n\n    node.argument = this.parseExprAtom();\n    this.expect(11);\n\n    if (this.eat(16)) {\n      node.qualifier = this.tsParseEntityName(true);\n    }\n\n    if (this.match(47)) {\n      node.typeParameters = this.tsParseTypeArguments();\n    }\n\n    return this.finishNode(node, \"TSImportType\");\n  }\n\n  tsParseEntityName(allowReservedWords) {\n    let entity = this.parseIdentifier();\n\n    while (this.eat(16)) {\n      const node = this.startNodeAtNode(entity);\n      node.left = entity;\n      node.right = this.parseIdentifier(allowReservedWords);\n      entity = this.finishNode(node, \"TSQualifiedName\");\n    }\n\n    return entity;\n  }\n\n  tsParseTypeReference() {\n    const node = this.startNode();\n    node.typeName = this.tsParseEntityName(false);\n\n    if (!this.hasPrecedingLineBreak() && this.match(47)) {\n      node.typeParameters = this.tsParseTypeArguments();\n    }\n\n    return this.finishNode(node, \"TSTypeReference\");\n  }\n\n  tsParseThisTypePredicate(lhs) {\n    this.next();\n    const node = this.startNodeAtNode(lhs);\n    node.parameterName = lhs;\n    node.typeAnnotation = this.tsParseTypeAnnotation(false);\n    node.asserts = false;\n    return this.finishNode(node, \"TSTypePredicate\");\n  }\n\n  tsParseThisTypeNode() {\n    const node = this.startNode();\n    this.next();\n    return this.finishNode(node, \"TSThisType\");\n  }\n\n  tsParseTypeQuery() {\n    const node = this.startNode();\n    this.expect(87);\n\n    if (this.match(83)) {\n      node.exprName = this.tsParseImportType();\n    } else {\n      node.exprName = this.tsParseEntityName(true);\n    }\n\n    return this.finishNode(node, \"TSTypeQuery\");\n  }\n\n  tsParseTypeParameter() {\n    const node = this.startNode();\n    node.name = this.tsParseTypeParameterName();\n    node.constraint = this.tsEatThenParseType(81);\n    node.default = this.tsEatThenParseType(29);\n    return this.finishNode(node, \"TSTypeParameter\");\n  }\n\n  tsTryParseTypeParameters() {\n    if (this.match(47)) {\n      return this.tsParseTypeParameters();\n    }\n  }\n\n  tsParseTypeParameters() {\n    const node = this.startNode();\n\n    if (this.match(47) || this.match(138)) {\n      this.next();\n    } else {\n      this.unexpected();\n    }\n\n    const refTrailingCommaPos = {\n      value: -1\n    };\n    node.params = this.tsParseBracketedList(\"TypeParametersOrArguments\", this.tsParseTypeParameter.bind(this), false, true, refTrailingCommaPos);\n\n    if (node.params.length === 0) {\n      this.raise(TSErrors.EmptyTypeParameters, {\n        node\n      });\n    }\n\n    if (refTrailingCommaPos.value !== -1) {\n      this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n    }\n\n    return this.finishNode(node, \"TSTypeParameterDeclaration\");\n  }\n\n  tsTryNextParseConstantContext() {\n    if (this.lookahead().type === 75) {\n      this.next();\n      return this.tsParseTypeReference();\n    }\n\n    return null;\n  }\n\n  tsFillSignature(returnToken, signature) {\n    const returnTokenRequired = returnToken === 19;\n    const paramsKey = \"parameters\";\n    const returnTypeKey = \"typeAnnotation\";\n    signature.typeParameters = this.tsTryParseTypeParameters();\n    this.expect(10);\n    signature[paramsKey] = this.tsParseBindingListForSignature();\n\n    if (returnTokenRequired) {\n      signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n    } else if (this.match(returnToken)) {\n      signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n    }\n  }\n\n  tsParseBindingListForSignature() {\n    return this.parseBindingList(11, 41).map(pattern => {\n      if (pattern.type !== \"Identifier\" && pattern.type !== \"RestElement\" && pattern.type !== \"ObjectPattern\" && pattern.type !== \"ArrayPattern\") {\n        this.raise(TSErrors.UnsupportedSignatureParameterKind, {\n          node: pattern\n        }, pattern.type);\n      }\n\n      return pattern;\n    });\n  }\n\n  tsParseTypeMemberSemicolon() {\n    if (!this.eat(12) && !this.isLineTerminator()) {\n      this.expect(13);\n    }\n  }\n\n  tsParseSignatureMember(kind, node) {\n    this.tsFillSignature(14, node);\n    this.tsParseTypeMemberSemicolon();\n    return this.finishNode(node, kind);\n  }\n\n  tsIsUnambiguouslyIndexSignature() {\n    this.next();\n\n    if (tokenIsIdentifier(this.state.type)) {\n      this.next();\n      return this.match(14);\n    }\n\n    return false;\n  }\n\n  tsTryParseIndexSignature(node) {\n    if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {\n      return undefined;\n    }\n\n    this.expect(0);\n    const id = this.parseIdentifier();\n    id.typeAnnotation = this.tsParseTypeAnnotation();\n    this.resetEndLocation(id);\n    this.expect(3);\n    node.parameters = [id];\n    const type = this.tsTryParseTypeAnnotation();\n    if (type) node.typeAnnotation = type;\n    this.tsParseTypeMemberSemicolon();\n    return this.finishNode(node, \"TSIndexSignature\");\n  }\n\n  tsParsePropertyOrMethodSignature(node, readonly) {\n    if (this.eat(17)) node.optional = true;\n    const nodeAny = node;\n\n    if (this.match(10) || this.match(47)) {\n      if (readonly) {\n        this.raise(TSErrors.ReadonlyForMethodSignature, {\n          node\n        });\n      }\n\n      const method = nodeAny;\n\n      if (method.kind && this.match(47)) {\n        this.raise(TSErrors.AccesorCannotHaveTypeParameters, {\n          at: this.state.curPosition()\n        });\n      }\n\n      this.tsFillSignature(14, method);\n      this.tsParseTypeMemberSemicolon();\n      const paramsKey = \"parameters\";\n      const returnTypeKey = \"typeAnnotation\";\n\n      if (method.kind === \"get\") {\n        if (method[paramsKey].length > 0) {\n          this.raise(ErrorMessages.BadGetterArity, {\n            at: this.state.curPosition()\n          });\n\n          if (this.isThisParam(method[paramsKey][0])) {\n            this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n              at: this.state.curPosition()\n            });\n          }\n        }\n      } else if (method.kind === \"set\") {\n        if (method[paramsKey].length !== 1) {\n          this.raise(ErrorMessages.BadSetterArity, {\n            at: this.state.curPosition()\n          });\n        } else {\n          const firstParameter = method[paramsKey][0];\n\n          if (this.isThisParam(firstParameter)) {\n            this.raise(TSErrors.AccesorCannotDeclareThisParameter, {\n              at: this.state.curPosition()\n            });\n          }\n\n          if (firstParameter.type === \"Identifier\" && firstParameter.optional) {\n            this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, {\n              at: this.state.curPosition()\n            });\n          }\n\n          if (firstParameter.type === \"RestElement\") {\n            this.raise(TSErrors.SetAccesorCannotHaveRestParameter, {\n              at: this.state.curPosition()\n            });\n          }\n        }\n\n        if (method[returnTypeKey]) {\n          this.raise(TSErrors.SetAccesorCannotHaveReturnType, {\n            node: method[returnTypeKey]\n          });\n        }\n      } else {\n        method.kind = \"method\";\n      }\n\n      return this.finishNode(method, \"TSMethodSignature\");\n    } else {\n      const property = nodeAny;\n      if (readonly) property.readonly = true;\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) property.typeAnnotation = type;\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(property, \"TSPropertySignature\");\n    }\n  }\n\n  tsParseTypeMember() {\n    const node = this.startNode();\n\n    if (this.match(10) || this.match(47)) {\n      return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n    }\n\n    if (this.match(77)) {\n      const id = this.startNode();\n      this.next();\n\n      if (this.match(10) || this.match(47)) {\n        return this.tsParseSignatureMember(\"TSConstructSignatureDeclaration\", node);\n      } else {\n        node.key = this.createIdentifier(id, \"new\");\n        return this.tsParsePropertyOrMethodSignature(node, false);\n      }\n    }\n\n    this.tsParseModifiers(node, [\"readonly\"], [\"declare\", \"abstract\", \"private\", \"protected\", \"public\", \"static\", \"override\"], TSErrors.InvalidModifierOnTypeMember);\n    const idx = this.tsTryParseIndexSignature(node);\n\n    if (idx) {\n      return idx;\n    }\n\n    this.parsePropertyName(node);\n\n    if (!node.computed && node.key.type === \"Identifier\" && (node.key.name === \"get\" || node.key.name === \"set\") && this.tsTokenCanFollowModifier()) {\n      node.kind = node.key.name;\n      this.parsePropertyName(node);\n    }\n\n    return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n  }\n\n  tsParseTypeLiteral() {\n    const node = this.startNode();\n    node.members = this.tsParseObjectTypeMembers();\n    return this.finishNode(node, \"TSTypeLiteral\");\n  }\n\n  tsParseObjectTypeMembers() {\n    this.expect(5);\n    const members = this.tsParseList(\"TypeMembers\", this.tsParseTypeMember.bind(this));\n    this.expect(8);\n    return members;\n  }\n\n  tsIsStartOfMappedType() {\n    this.next();\n\n    if (this.eat(53)) {\n      return this.isContextual(118);\n    }\n\n    if (this.isContextual(118)) {\n      this.next();\n    }\n\n    if (!this.match(0)) {\n      return false;\n    }\n\n    this.next();\n\n    if (!this.tsIsIdentifier()) {\n      return false;\n    }\n\n    this.next();\n    return this.match(58);\n  }\n\n  tsParseMappedTypeParameter() {\n    const node = this.startNode();\n    node.name = this.tsParseTypeParameterName();\n    node.constraint = this.tsExpectThenParseType(58);\n    return this.finishNode(node, \"TSTypeParameter\");\n  }\n\n  tsParseMappedType() {\n    const node = this.startNode();\n    this.expect(5);\n\n    if (this.match(53)) {\n      node.readonly = this.state.value;\n      this.next();\n      this.expectContextual(118);\n    } else if (this.eatContextual(118)) {\n      node.readonly = true;\n    }\n\n    this.expect(0);\n    node.typeParameter = this.tsParseMappedTypeParameter();\n    node.nameType = this.eatContextual(93) ? this.tsParseType() : null;\n    this.expect(3);\n\n    if (this.match(53)) {\n      node.optional = this.state.value;\n      this.next();\n      this.expect(17);\n    } else if (this.eat(17)) {\n      node.optional = true;\n    }\n\n    node.typeAnnotation = this.tsTryParseType();\n    this.semicolon();\n    this.expect(8);\n    return this.finishNode(node, \"TSMappedType\");\n  }\n\n  tsParseTupleType() {\n    const node = this.startNode();\n    node.elementTypes = this.tsParseBracketedList(\"TupleElementTypes\", this.tsParseTupleElementType.bind(this), true, false);\n    let seenOptionalElement = false;\n    let labeledElements = null;\n    node.elementTypes.forEach(elementNode => {\n      var _labeledElements;\n\n      let {\n        type\n      } = elementNode;\n\n      if (seenOptionalElement && type !== \"TSRestType\" && type !== \"TSOptionalType\" && !(type === \"TSNamedTupleMember\" && elementNode.optional)) {\n        this.raise(TSErrors.OptionalTypeBeforeRequired, {\n          node: elementNode\n        });\n      }\n\n      seenOptionalElement = seenOptionalElement || type === \"TSNamedTupleMember\" && elementNode.optional || type === \"TSOptionalType\";\n\n      if (type === \"TSRestType\") {\n        elementNode = elementNode.typeAnnotation;\n        type = elementNode.type;\n      }\n\n      const isLabeled = type === \"TSNamedTupleMember\";\n      labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled;\n\n      if (labeledElements !== isLabeled) {\n        this.raise(TSErrors.MixedLabeledAndUnlabeledElements, {\n          node: elementNode\n        });\n      }\n    });\n    return this.finishNode(node, \"TSTupleType\");\n  }\n\n  tsParseTupleElementType() {\n    const {\n      start: startPos,\n      startLoc\n    } = this.state;\n    const rest = this.eat(21);\n    let type = this.tsParseType();\n    const optional = this.eat(17);\n    const labeled = this.eat(14);\n\n    if (labeled) {\n      const labeledNode = this.startNodeAtNode(type);\n      labeledNode.optional = optional;\n\n      if (type.type === \"TSTypeReference\" && !type.typeParameters && type.typeName.type === \"Identifier\") {\n        labeledNode.label = type.typeName;\n      } else {\n        this.raise(TSErrors.InvalidTupleMemberLabel, {\n          node: type\n        });\n        labeledNode.label = type;\n      }\n\n      labeledNode.elementType = this.tsParseType();\n      type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n    } else if (optional) {\n      const optionalTypeNode = this.startNodeAtNode(type);\n      optionalTypeNode.typeAnnotation = type;\n      type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n    }\n\n    if (rest) {\n      const restNode = this.startNodeAt(startPos, startLoc);\n      restNode.typeAnnotation = type;\n      type = this.finishNode(restNode, \"TSRestType\");\n    }\n\n    return type;\n  }\n\n  tsParseParenthesizedType() {\n    const node = this.startNode();\n    this.expect(10);\n    node.typeAnnotation = this.tsParseType();\n    this.expect(11);\n    return this.finishNode(node, \"TSParenthesizedType\");\n  }\n\n  tsParseFunctionOrConstructorType(type, abstract) {\n    const node = this.startNode();\n\n    if (type === \"TSConstructorType\") {\n      node.abstract = !!abstract;\n      if (abstract) this.next();\n      this.next();\n    }\n\n    this.tsFillSignature(19, node);\n    return this.finishNode(node, type);\n  }\n\n  tsParseLiteralTypeNode() {\n    const node = this.startNode();\n\n    node.literal = (() => {\n      switch (this.state.type) {\n        case 130:\n        case 131:\n        case 129:\n        case 85:\n        case 86:\n          return this.parseExprAtom();\n\n        default:\n          throw this.unexpected();\n      }\n    })();\n\n    return this.finishNode(node, \"TSLiteralType\");\n  }\n\n  tsParseTemplateLiteralType() {\n    const node = this.startNode();\n    node.literal = this.parseTemplate(false);\n    return this.finishNode(node, \"TSLiteralType\");\n  }\n\n  parseTemplateSubstitution() {\n    if (this.state.inType) return this.tsParseType();\n    return super.parseTemplateSubstitution();\n  }\n\n  tsParseThisTypeOrThisTypePredicate() {\n    const thisKeyword = this.tsParseThisTypeNode();\n\n    if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n      return this.tsParseThisTypePredicate(thisKeyword);\n    } else {\n      return thisKeyword;\n    }\n  }\n\n  tsParseNonArrayType() {\n    switch (this.state.type) {\n      case 129:\n      case 130:\n      case 131:\n      case 85:\n      case 86:\n        return this.tsParseLiteralTypeNode();\n\n      case 53:\n        if (this.state.value === \"-\") {\n          const node = this.startNode();\n          const nextToken = this.lookahead();\n\n          if (nextToken.type !== 130 && nextToken.type !== 131) {\n            throw this.unexpected();\n          }\n\n          node.literal = this.parseMaybeUnary();\n          return this.finishNode(node, \"TSLiteralType\");\n        }\n\n        break;\n\n      case 78:\n        return this.tsParseThisTypeOrThisTypePredicate();\n\n      case 87:\n        return this.tsParseTypeQuery();\n\n      case 83:\n        return this.tsParseImportType();\n\n      case 5:\n        return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();\n\n      case 0:\n        return this.tsParseTupleType();\n\n      case 10:\n        return this.tsParseParenthesizedType();\n\n      case 25:\n      case 24:\n        return this.tsParseTemplateLiteralType();\n\n      default:\n        {\n          const {\n            type\n          } = this.state;\n\n          if (tokenIsIdentifier(type) || type === 88 || type === 84) {\n            const nodeType = type === 88 ? \"TSVoidKeyword\" : type === 84 ? \"TSNullKeyword\" : keywordTypeFromName(this.state.value);\n\n            if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {\n              const node = this.startNode();\n              this.next();\n              return this.finishNode(node, nodeType);\n            }\n\n            return this.tsParseTypeReference();\n          }\n        }\n    }\n\n    throw this.unexpected();\n  }\n\n  tsParseArrayTypeOrHigher() {\n    let type = this.tsParseNonArrayType();\n\n    while (!this.hasPrecedingLineBreak() && this.eat(0)) {\n      if (this.match(3)) {\n        const node = this.startNodeAtNode(type);\n        node.elementType = type;\n        this.expect(3);\n        type = this.finishNode(node, \"TSArrayType\");\n      } else {\n        const node = this.startNodeAtNode(type);\n        node.objectType = type;\n        node.indexType = this.tsParseType();\n        this.expect(3);\n        type = this.finishNode(node, \"TSIndexedAccessType\");\n      }\n    }\n\n    return type;\n  }\n\n  tsParseTypeOperator() {\n    const node = this.startNode();\n    const operator = this.state.value;\n    this.next();\n    node.operator = operator;\n    node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n    if (operator === \"readonly\") {\n      this.tsCheckTypeAnnotationForReadOnly(node);\n    }\n\n    return this.finishNode(node, \"TSTypeOperator\");\n  }\n\n  tsCheckTypeAnnotationForReadOnly(node) {\n    switch (node.typeAnnotation.type) {\n      case \"TSTupleType\":\n      case \"TSArrayType\":\n        return;\n\n      default:\n        this.raise(TSErrors.UnexpectedReadonly, {\n          node\n        });\n    }\n  }\n\n  tsParseInferType() {\n    const node = this.startNode();\n    this.expectContextual(112);\n    const typeParameter = this.startNode();\n    typeParameter.name = this.tsParseTypeParameterName();\n    node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n    return this.finishNode(node, \"TSInferType\");\n  }\n\n  tsParseTypeOperatorOrHigher() {\n    const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n    return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(112) ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();\n  }\n\n  tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {\n    const node = this.startNode();\n    const hasLeadingOperator = this.eat(operator);\n    const types = [];\n\n    do {\n      types.push(parseConstituentType());\n    } while (this.eat(operator));\n\n    if (types.length === 1 && !hasLeadingOperator) {\n      return types[0];\n    }\n\n    node.types = types;\n    return this.finishNode(node, kind);\n  }\n\n  tsParseIntersectionTypeOrHigher() {\n    return this.tsParseUnionOrIntersectionType(\"TSIntersectionType\", this.tsParseTypeOperatorOrHigher.bind(this), 45);\n  }\n\n  tsParseUnionTypeOrHigher() {\n    return this.tsParseUnionOrIntersectionType(\"TSUnionType\", this.tsParseIntersectionTypeOrHigher.bind(this), 43);\n  }\n\n  tsIsStartOfFunctionType() {\n    if (this.match(47)) {\n      return true;\n    }\n\n    return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));\n  }\n\n  tsSkipParameterStart() {\n    if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n      this.next();\n      return true;\n    }\n\n    if (this.match(5)) {\n      let braceStackCounter = 1;\n      this.next();\n\n      while (braceStackCounter > 0) {\n        if (this.match(5)) {\n          ++braceStackCounter;\n        } else if (this.match(8)) {\n          --braceStackCounter;\n        }\n\n        this.next();\n      }\n\n      return true;\n    }\n\n    if (this.match(0)) {\n      let braceStackCounter = 1;\n      this.next();\n\n      while (braceStackCounter > 0) {\n        if (this.match(0)) {\n          ++braceStackCounter;\n        } else if (this.match(3)) {\n          --braceStackCounter;\n        }\n\n        this.next();\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  tsIsUnambiguouslyStartOfFunctionType() {\n    this.next();\n\n    if (this.match(11) || this.match(21)) {\n      return true;\n    }\n\n    if (this.tsSkipParameterStart()) {\n      if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {\n        return true;\n      }\n\n      if (this.match(11)) {\n        this.next();\n\n        if (this.match(19)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  tsParseTypeOrTypePredicateAnnotation(returnToken) {\n    return this.tsInType(() => {\n      const t = this.startNode();\n      this.expect(returnToken);\n      const node = this.startNode();\n      const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));\n\n      if (asserts && this.match(78)) {\n        let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n\n        if (thisTypePredicate.type === \"TSThisType\") {\n          node.parameterName = thisTypePredicate;\n          node.asserts = true;\n          node.typeAnnotation = null;\n          thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n        } else {\n          this.resetStartLocationFromNode(thisTypePredicate, node);\n          thisTypePredicate.asserts = true;\n        }\n\n        t.typeAnnotation = thisTypePredicate;\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      }\n\n      const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n      if (!typePredicateVariable) {\n        if (!asserts) {\n          return this.tsParseTypeAnnotation(false, t);\n        }\n\n        node.parameterName = this.parseIdentifier();\n        node.asserts = asserts;\n        node.typeAnnotation = null;\n        t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      }\n\n      const type = this.tsParseTypeAnnotation(false);\n      node.parameterName = typePredicateVariable;\n      node.typeAnnotation = type;\n      node.asserts = asserts;\n      t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n      return this.finishNode(t, \"TSTypeAnnotation\");\n    });\n  }\n\n  tsTryParseTypeOrTypePredicateAnnotation() {\n    return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined;\n  }\n\n  tsTryParseTypeAnnotation() {\n    return this.match(14) ? this.tsParseTypeAnnotation() : undefined;\n  }\n\n  tsTryParseType() {\n    return this.tsEatThenParseType(14);\n  }\n\n  tsParseTypePredicatePrefix() {\n    const id = this.parseIdentifier();\n\n    if (this.isContextual(113) && !this.hasPrecedingLineBreak()) {\n      this.next();\n      return id;\n    }\n  }\n\n  tsParseTypePredicateAsserts() {\n    if (this.state.type !== 106) {\n      return false;\n    }\n\n    const containsEsc = this.state.containsEsc;\n    this.next();\n\n    if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {\n      return false;\n    }\n\n    if (containsEsc) {\n      this.raise(ErrorMessages.InvalidEscapedReservedWord, {\n        at: this.state.lastTokStartLoc\n      }, \"asserts\");\n    }\n\n    return true;\n  }\n\n  tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {\n    this.tsInType(() => {\n      if (eatColon) this.expect(14);\n      t.typeAnnotation = this.tsParseType();\n    });\n    return this.finishNode(t, \"TSTypeAnnotation\");\n  }\n\n  tsParseType() {\n    assert(this.state.inType);\n    const type = this.tsParseNonConditionalType();\n\n    if (this.hasPrecedingLineBreak() || !this.eat(81)) {\n      return type;\n    }\n\n    const node = this.startNodeAtNode(type);\n    node.checkType = type;\n    node.extendsType = this.tsParseNonConditionalType();\n    this.expect(17);\n    node.trueType = this.tsParseType();\n    this.expect(14);\n    node.falseType = this.tsParseType();\n    return this.finishNode(node, \"TSConditionalType\");\n  }\n\n  isAbstractConstructorSignature() {\n    return this.isContextual(120) && this.lookahead().type === 77;\n  }\n\n  tsParseNonConditionalType() {\n    if (this.tsIsStartOfFunctionType()) {\n      return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n    }\n\n    if (this.match(77)) {\n      return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n    } else if (this.isAbstractConstructorSignature()) {\n      return this.tsParseFunctionOrConstructorType(\"TSConstructorType\", true);\n    }\n\n    return this.tsParseUnionTypeOrHigher();\n  }\n\n  tsParseTypeAssertion() {\n    if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n      this.raise(TSErrors.ReservedTypeAssertion, {\n        at: this.state.startLoc\n      });\n    }\n\n    const node = this.startNode();\n\n    const _const = this.tsTryNextParseConstantContext();\n\n    node.typeAnnotation = _const || this.tsNextThenParseType();\n    this.expect(48);\n    node.expression = this.parseMaybeUnary();\n    return this.finishNode(node, \"TSTypeAssertion\");\n  }\n\n  tsParseHeritageClause(descriptor) {\n    const originalStartLoc = this.state.startLoc;\n    const delimitedList = this.tsParseDelimitedList(\"HeritageClauseElement\", this.tsParseExpressionWithTypeArguments.bind(this));\n\n    if (!delimitedList.length) {\n      this.raise(TSErrors.EmptyHeritageClauseType, {\n        at: originalStartLoc\n      }, descriptor);\n    }\n\n    return delimitedList;\n  }\n\n  tsParseExpressionWithTypeArguments() {\n    const node = this.startNode();\n    node.expression = this.tsParseEntityName(false);\n\n    if (this.match(47)) {\n      node.typeParameters = this.tsParseTypeArguments();\n    }\n\n    return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n  }\n\n  tsParseInterfaceDeclaration(node) {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n      this.checkLVal(node.id, \"typescript interface declaration\", BIND_TS_INTERFACE);\n    } else {\n      node.id = null;\n      this.raise(TSErrors.MissingInterfaceName, {\n        at: this.state.startLoc\n      });\n    }\n\n    node.typeParameters = this.tsTryParseTypeParameters();\n\n    if (this.eat(81)) {\n      node.extends = this.tsParseHeritageClause(\"extends\");\n    }\n\n    const body = this.startNode();\n    body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n    node.body = this.finishNode(body, \"TSInterfaceBody\");\n    return this.finishNode(node, \"TSInterfaceDeclaration\");\n  }\n\n  tsParseTypeAliasDeclaration(node) {\n    node.id = this.parseIdentifier();\n    this.checkLVal(node.id, \"typescript type alias\", BIND_TS_TYPE);\n    node.typeParameters = this.tsTryParseTypeParameters();\n    node.typeAnnotation = this.tsInType(() => {\n      this.expect(29);\n\n      if (this.isContextual(111) && this.lookahead().type !== 16) {\n        const node = this.startNode();\n        this.next();\n        return this.finishNode(node, \"TSIntrinsicKeyword\");\n      }\n\n      return this.tsParseType();\n    });\n    this.semicolon();\n    return this.finishNode(node, \"TSTypeAliasDeclaration\");\n  }\n\n  tsInNoContext(cb) {\n    const oldContext = this.state.context;\n    this.state.context = [oldContext[0]];\n\n    try {\n      return cb();\n    } finally {\n      this.state.context = oldContext;\n    }\n  }\n\n  tsInType(cb) {\n    const oldInType = this.state.inType;\n    this.state.inType = true;\n\n    try {\n      return cb();\n    } finally {\n      this.state.inType = oldInType;\n    }\n  }\n\n  tsEatThenParseType(token) {\n    return !this.match(token) ? undefined : this.tsNextThenParseType();\n  }\n\n  tsExpectThenParseType(token) {\n    return this.tsDoThenParseType(() => this.expect(token));\n  }\n\n  tsNextThenParseType() {\n    return this.tsDoThenParseType(() => this.next());\n  }\n\n  tsDoThenParseType(cb) {\n    return this.tsInType(() => {\n      cb();\n      return this.tsParseType();\n    });\n  }\n\n  tsParseEnumMember() {\n    const node = this.startNode();\n    node.id = this.match(129) ? this.parseExprAtom() : this.parseIdentifier(true);\n\n    if (this.eat(29)) {\n      node.initializer = this.parseMaybeAssignAllowIn();\n    }\n\n    return this.finishNode(node, \"TSEnumMember\");\n  }\n\n  tsParseEnumDeclaration(node, isConst) {\n    if (isConst) node.const = true;\n    node.id = this.parseIdentifier();\n    this.checkLVal(node.id, \"typescript enum declaration\", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);\n    this.expect(5);\n    node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n    this.expect(8);\n    return this.finishNode(node, \"TSEnumDeclaration\");\n  }\n\n  tsParseModuleBlock() {\n    const node = this.startNode();\n    this.scope.enter(SCOPE_OTHER);\n    this.expect(5);\n    this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);\n    this.scope.exit();\n    return this.finishNode(node, \"TSModuleBlock\");\n  }\n\n  tsParseModuleOrNamespaceDeclaration(node, nested = false) {\n    node.id = this.parseIdentifier();\n\n    if (!nested) {\n      this.checkLVal(node.id, \"module or namespace declaration\", BIND_TS_NAMESPACE);\n    }\n\n    if (this.eat(16)) {\n      const inner = this.startNode();\n      this.tsParseModuleOrNamespaceDeclaration(inner, true);\n      node.body = inner;\n    } else {\n      this.scope.enter(SCOPE_TS_MODULE);\n      this.prodParam.enter(PARAM);\n      node.body = this.tsParseModuleBlock();\n      this.prodParam.exit();\n      this.scope.exit();\n    }\n\n    return this.finishNode(node, \"TSModuleDeclaration\");\n  }\n\n  tsParseAmbientExternalModuleDeclaration(node) {\n    if (this.isContextual(109)) {\n      node.global = true;\n      node.id = this.parseIdentifier();\n    } else if (this.match(129)) {\n      node.id = this.parseExprAtom();\n    } else {\n      this.unexpected();\n    }\n\n    if (this.match(5)) {\n      this.scope.enter(SCOPE_TS_MODULE);\n      this.prodParam.enter(PARAM);\n      node.body = this.tsParseModuleBlock();\n      this.prodParam.exit();\n      this.scope.exit();\n    } else {\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"TSModuleDeclaration\");\n  }\n\n  tsParseImportEqualsDeclaration(node, isExport) {\n    node.isExport = isExport || false;\n    node.id = this.parseIdentifier();\n    this.checkLVal(node.id, \"import equals declaration\", BIND_LEXICAL);\n    this.expect(29);\n    const moduleReference = this.tsParseModuleReference();\n\n    if (node.importKind === \"type\" && moduleReference.type !== \"TSExternalModuleReference\") {\n      this.raise(TSErrors.ImportAliasHasImportType, {\n        node: moduleReference\n      });\n    }\n\n    node.moduleReference = moduleReference;\n    this.semicolon();\n    return this.finishNode(node, \"TSImportEqualsDeclaration\");\n  }\n\n  tsIsExternalModuleReference() {\n    return this.isContextual(116) && this.lookaheadCharCode() === 40;\n  }\n\n  tsParseModuleReference() {\n    return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);\n  }\n\n  tsParseExternalModuleReference() {\n    const node = this.startNode();\n    this.expectContextual(116);\n    this.expect(10);\n\n    if (!this.match(129)) {\n      throw this.unexpected();\n    }\n\n    node.expression = this.parseExprAtom();\n    this.expect(11);\n    return this.finishNode(node, \"TSExternalModuleReference\");\n  }\n\n  tsLookAhead(f) {\n    const state = this.state.clone();\n    const res = f();\n    this.state = state;\n    return res;\n  }\n\n  tsTryParseAndCatch(f) {\n    const result = this.tryParse(abort => f() || abort());\n    if (result.aborted || !result.node) return undefined;\n    if (result.error) this.state = result.failState;\n    return result.node;\n  }\n\n  tsTryParse(f) {\n    const state = this.state.clone();\n    const result = f();\n\n    if (result !== undefined && result !== false) {\n      return result;\n    } else {\n      this.state = state;\n      return undefined;\n    }\n  }\n\n  tsTryParseDeclare(nany) {\n    if (this.isLineTerminator()) {\n      return;\n    }\n\n    let starttype = this.state.type;\n    let kind;\n\n    if (this.isContextual(99)) {\n      starttype = 74;\n      kind = \"let\";\n    }\n\n    return this.tsInAmbientContext(() => {\n      switch (starttype) {\n        case 68:\n          nany.declare = true;\n          return this.parseFunctionStatement(nany, false, true);\n\n        case 80:\n          nany.declare = true;\n          return this.parseClass(nany, true, false);\n\n        case 75:\n          if (this.match(75) && this.isLookaheadContextual(\"enum\")) {\n            this.expect(75);\n            this.expectContextual(122);\n            return this.tsParseEnumDeclaration(nany, true);\n          }\n\n        case 74:\n          kind = kind || this.state.value;\n          return this.parseVarStatement(nany, kind);\n\n        case 109:\n          return this.tsParseAmbientExternalModuleDeclaration(nany);\n\n        default:\n          {\n            if (tokenIsIdentifier(starttype)) {\n              return this.tsParseDeclaration(nany, this.state.value, true);\n            }\n          }\n      }\n    });\n  }\n\n  tsTryParseExportDeclaration() {\n    return this.tsParseDeclaration(this.startNode(), this.state.value, true);\n  }\n\n  tsParseExpressionStatement(node, expr) {\n    switch (expr.name) {\n      case \"declare\":\n        {\n          const declaration = this.tsTryParseDeclare(node);\n\n          if (declaration) {\n            declaration.declare = true;\n            return declaration;\n          }\n\n          break;\n        }\n\n      case \"global\":\n        if (this.match(5)) {\n          this.scope.enter(SCOPE_TS_MODULE);\n          this.prodParam.enter(PARAM);\n          const mod = node;\n          mod.global = true;\n          mod.id = expr;\n          mod.body = this.tsParseModuleBlock();\n          this.scope.exit();\n          this.prodParam.exit();\n          return this.finishNode(mod, \"TSModuleDeclaration\");\n        }\n\n        break;\n\n      default:\n        return this.tsParseDeclaration(node, expr.name, false);\n    }\n  }\n\n  tsParseDeclaration(node, value, next) {\n    switch (value) {\n      case \"abstract\":\n        if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {\n          return this.tsParseAbstractDeclaration(node);\n        }\n\n        break;\n\n      case \"enum\":\n        if (next || tokenIsIdentifier(this.state.type)) {\n          if (next) this.next();\n          return this.tsParseEnumDeclaration(node, false);\n        }\n\n        break;\n\n      case \"interface\":\n        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n          return this.tsParseInterfaceDeclaration(node);\n        }\n\n        break;\n\n      case \"module\":\n        if (this.tsCheckLineTerminator(next)) {\n          if (this.match(129)) {\n            return this.tsParseAmbientExternalModuleDeclaration(node);\n          } else if (tokenIsIdentifier(this.state.type)) {\n            return this.tsParseModuleOrNamespaceDeclaration(node);\n          }\n        }\n\n        break;\n\n      case \"namespace\":\n        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n          return this.tsParseModuleOrNamespaceDeclaration(node);\n        }\n\n        break;\n\n      case \"type\":\n        if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n          return this.tsParseTypeAliasDeclaration(node);\n        }\n\n        break;\n    }\n  }\n\n  tsCheckLineTerminator(next) {\n    if (next) {\n      if (this.hasFollowingLineBreak()) return false;\n      this.next();\n      return true;\n    }\n\n    return !this.isLineTerminator();\n  }\n\n  tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {\n    if (!this.match(47)) {\n      return undefined;\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = true;\n    const res = this.tsTryParseAndCatch(() => {\n      const node = this.startNodeAt(startPos, startLoc);\n      node.typeParameters = this.tsParseTypeParameters();\n      super.parseFunctionParams(node);\n      node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n      this.expect(19);\n      return node;\n    });\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    if (!res) {\n      return undefined;\n    }\n\n    return this.parseArrowExpression(res, null, true);\n  }\n\n  tsParseTypeArgumentsInExpression() {\n    if (this.reScan_lt() !== 47) {\n      return undefined;\n    }\n\n    return this.tsParseTypeArguments();\n  }\n\n  tsParseTypeArguments() {\n    const node = this.startNode();\n    node.params = this.tsInType(() => this.tsInNoContext(() => {\n      this.expect(47);\n      return this.tsParseDelimitedList(\"TypeParametersOrArguments\", this.tsParseType.bind(this));\n    }));\n\n    if (node.params.length === 0) {\n      this.raise(TSErrors.EmptyTypeArguments, {\n        node\n      });\n    }\n\n    this.expect(48);\n    return this.finishNode(node, \"TSTypeParameterInstantiation\");\n  }\n\n  tsIsDeclarationStart() {\n    return tokenIsTSDeclarationStart(this.state.type);\n  }\n\n  isExportDefaultSpecifier() {\n    if (this.tsIsDeclarationStart()) return false;\n    return super.isExportDefaultSpecifier();\n  }\n\n  parseAssignableListItem(allowModifiers, decorators) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    let accessibility;\n    let readonly = false;\n    let override = false;\n\n    if (allowModifiers !== undefined) {\n      const modified = {};\n      this.tsParseModifiers(modified, [\"public\", \"private\", \"protected\", \"override\", \"readonly\"]);\n      accessibility = modified.accessibility;\n      override = modified.override;\n      readonly = modified.readonly;\n\n      if (allowModifiers === false && (accessibility || readonly || override)) {\n        this.raise(TSErrors.UnexpectedParameterModifier, {\n          at: startLoc\n        });\n      }\n    }\n\n    const left = this.parseMaybeDefault();\n    this.parseAssignableListItemTypes(left);\n    const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n    if (accessibility || readonly || override) {\n      const pp = this.startNodeAt(startPos, startLoc);\n\n      if (decorators.length) {\n        pp.decorators = decorators;\n      }\n\n      if (accessibility) pp.accessibility = accessibility;\n      if (readonly) pp.readonly = readonly;\n      if (override) pp.override = override;\n\n      if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n        this.raise(TSErrors.UnsupportedParameterPropertyKind, {\n          node: pp\n        });\n      }\n\n      pp.parameter = elt;\n      return this.finishNode(pp, \"TSParameterProperty\");\n    }\n\n    if (decorators.length) {\n      left.decorators = decorators;\n    }\n\n    return elt;\n  }\n\n  parseFunctionBodyAndFinish(node, type, isMethod = false) {\n    if (this.match(14)) {\n      node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n    }\n\n    const bodilessType = type === \"FunctionDeclaration\" ? \"TSDeclareFunction\" : type === \"ClassMethod\" || type === \"ClassPrivateMethod\" ? \"TSDeclareMethod\" : undefined;\n\n    if (bodilessType && !this.match(5) && this.isLineTerminator()) {\n      this.finishNode(node, bodilessType);\n      return;\n    }\n\n    if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n      this.raise(TSErrors.DeclareFunctionHasImplementation, {\n        node\n      });\n\n      if (node.declare) {\n        super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n        return;\n      }\n    }\n\n    super.parseFunctionBodyAndFinish(node, type, isMethod);\n  }\n\n  registerFunctionStatementId(node) {\n    if (!node.body && node.id) {\n      this.checkLVal(node.id, \"function name\", BIND_TS_AMBIENT);\n    } else {\n      super.registerFunctionStatementId(...arguments);\n    }\n  }\n\n  tsCheckForInvalidTypeCasts(items) {\n    items.forEach(node => {\n      if ((node == null ? void 0 : node.type) === \"TSTypeCastExpression\") {\n        this.raise(TSErrors.UnexpectedTypeAnnotation, {\n          node: node.typeAnnotation\n        });\n      }\n    });\n  }\n\n  toReferencedList(exprList, isInParens) {\n    this.tsCheckForInvalidTypeCasts(exprList);\n    return exprList;\n  }\n\n  parseArrayLike(...args) {\n    const node = super.parseArrayLike(...args);\n\n    if (node.type === \"ArrayExpression\") {\n      this.tsCheckForInvalidTypeCasts(node.elements);\n    }\n\n    return node;\n  }\n\n  parseSubscript(base, startPos, startLoc, noCalls, state) {\n    if (!this.hasPrecedingLineBreak() && this.match(35)) {\n      this.state.canStartJSXElement = false;\n      this.next();\n      const nonNullExpression = this.startNodeAt(startPos, startLoc);\n      nonNullExpression.expression = base;\n      return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n    }\n\n    let isOptionalCall = false;\n\n    if (this.match(18) && this.lookaheadCharCode() === 60) {\n      if (noCalls) {\n        state.stop = true;\n        return base;\n      }\n\n      state.optionalChainMember = isOptionalCall = true;\n      this.next();\n    }\n\n    if (this.match(47) || this.match(51)) {\n      let missingParenErrorLoc;\n      const result = this.tsTryParseAndCatch(() => {\n        if (!noCalls && this.atPossibleAsyncArrow(base)) {\n          const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc);\n\n          if (asyncArrowFn) {\n            return asyncArrowFn;\n          }\n        }\n\n        const node = this.startNodeAt(startPos, startLoc);\n        node.callee = base;\n        const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n        if (typeArguments) {\n          if (isOptionalCall && !this.match(10)) {\n            missingParenErrorLoc = this.state.curPosition();\n            this.unexpected();\n          }\n\n          if (!noCalls && this.eat(10)) {\n            node.arguments = this.parseCallExpressionArguments(11, false);\n            this.tsCheckForInvalidTypeCasts(node.arguments);\n            node.typeParameters = typeArguments;\n\n            if (state.optionalChainMember) {\n              node.optional = isOptionalCall;\n            }\n\n            return this.finishCallExpression(node, state.optionalChainMember);\n          } else if (tokenIsTemplate(this.state.type)) {\n            const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n            result.typeParameters = typeArguments;\n            return result;\n          }\n        }\n\n        this.unexpected();\n      });\n\n      if (missingParenErrorLoc) {\n        this.unexpected(missingParenErrorLoc, 10);\n      }\n\n      if (result) return result;\n    }\n\n    return super.parseSubscript(base, startPos, startLoc, noCalls, state);\n  }\n\n  parseNewArguments(node) {\n    if (this.match(47) || this.match(51)) {\n      const typeParameters = this.tsTryParseAndCatch(() => {\n        const args = this.tsParseTypeArgumentsInExpression();\n        if (!this.match(10)) this.unexpected();\n        return args;\n      });\n\n      if (typeParameters) {\n        node.typeParameters = typeParameters;\n      }\n    }\n\n    super.parseNewArguments(node);\n  }\n\n  parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n    if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual(93)) {\n      const node = this.startNodeAt(leftStartPos, leftStartLoc);\n      node.expression = left;\n\n      const _const = this.tsTryNextParseConstantContext();\n\n      if (_const) {\n        node.typeAnnotation = _const;\n      } else {\n        node.typeAnnotation = this.tsNextThenParseType();\n      }\n\n      this.finishNode(node, \"TSAsExpression\");\n      this.reScan_lt_gt();\n      return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n    }\n\n    return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec);\n  }\n\n  checkReservedWord(word, startLoc, checkKeywords, isBinding) {}\n\n  checkDuplicateExports() {}\n\n  parseImport(node) {\n    node.importKind = \"value\";\n\n    if (tokenIsIdentifier(this.state.type) || this.match(55) || this.match(5)) {\n      let ahead = this.lookahead();\n\n      if (this.isContextual(126) && ahead.type !== 12 && ahead.type !== 97 && ahead.type !== 29) {\n        node.importKind = \"type\";\n        this.next();\n        ahead = this.lookahead();\n      }\n\n      if (tokenIsIdentifier(this.state.type) && ahead.type === 29) {\n        return this.tsParseImportEqualsDeclaration(node);\n      }\n    }\n\n    const importNode = super.parseImport(node);\n\n    if (importNode.importKind === \"type\" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === \"ImportDefaultSpecifier\") {\n      this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, {\n        node: importNode\n      });\n    }\n\n    return importNode;\n  }\n\n  parseExport(node) {\n    if (this.match(83)) {\n      this.next();\n\n      if (this.isContextual(126) && this.lookaheadCharCode() !== 61) {\n        node.importKind = \"type\";\n        this.next();\n      } else {\n        node.importKind = \"value\";\n      }\n\n      return this.tsParseImportEqualsDeclaration(node, true);\n    } else if (this.eat(29)) {\n      const assign = node;\n      assign.expression = this.parseExpression();\n      this.semicolon();\n      return this.finishNode(assign, \"TSExportAssignment\");\n    } else if (this.eatContextual(93)) {\n      const decl = node;\n      this.expectContextual(124);\n      decl.id = this.parseIdentifier();\n      this.semicolon();\n      return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n    } else {\n      if (this.isContextual(126) && this.lookahead().type === 5) {\n        this.next();\n        node.exportKind = \"type\";\n      } else {\n        node.exportKind = \"value\";\n      }\n\n      return super.parseExport(node);\n    }\n  }\n\n  isAbstractClass() {\n    return this.isContextual(120) && this.lookahead().type === 80;\n  }\n\n  parseExportDefaultExpression() {\n    if (this.isAbstractClass()) {\n      const cls = this.startNode();\n      this.next();\n      cls.abstract = true;\n      this.parseClass(cls, true, true);\n      return cls;\n    }\n\n    if (this.match(125)) {\n      const interfaceNode = this.startNode();\n      this.next();\n      const result = this.tsParseInterfaceDeclaration(interfaceNode);\n      if (result) return result;\n    }\n\n    return super.parseExportDefaultExpression();\n  }\n\n  parseStatementContent(context, topLevel) {\n    if (this.state.type === 75) {\n      const ahead = this.lookahead();\n\n      if (ahead.type === 122) {\n        const node = this.startNode();\n        this.next();\n        this.expectContextual(122);\n        return this.tsParseEnumDeclaration(node, true);\n      }\n    }\n\n    return super.parseStatementContent(context, topLevel);\n  }\n\n  parseAccessModifier() {\n    return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n  }\n\n  tsHasSomeModifiers(member, modifiers) {\n    return modifiers.some(modifier => {\n      if (tsIsAccessModifier(modifier)) {\n        return member.accessibility === modifier;\n      }\n\n      return !!member[modifier];\n    });\n  }\n\n  tsIsStartOfStaticBlocks() {\n    return this.isContextual(104) && this.lookaheadCharCode() === 123;\n  }\n\n  parseClassMember(classBody, member, state) {\n    const modifiers = [\"declare\", \"private\", \"public\", \"protected\", \"override\", \"abstract\", \"readonly\", \"static\"];\n    this.tsParseModifiers(member, modifiers, undefined, undefined, true);\n\n    const callParseClassMemberWithIsStatic = () => {\n      if (this.tsIsStartOfStaticBlocks()) {\n        this.next();\n        this.next();\n\n        if (this.tsHasSomeModifiers(member, modifiers)) {\n          this.raise(TSErrors.StaticBlockCannotHaveModifier, {\n            at: this.state.curPosition()\n          });\n        }\n\n        this.parseClassStaticBlock(classBody, member);\n      } else {\n        this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);\n      }\n    };\n\n    if (member.declare) {\n      this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n    } else {\n      callParseClassMemberWithIsStatic();\n    }\n  }\n\n  parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n    const idx = this.tsTryParseIndexSignature(member);\n\n    if (idx) {\n      classBody.body.push(idx);\n\n      if (member.abstract) {\n        this.raise(TSErrors.IndexSignatureHasAbstract, {\n          node: member\n        });\n      }\n\n      if (member.accessibility) {\n        this.raise(TSErrors.IndexSignatureHasAccessibility, {\n          node: member\n        }, member.accessibility);\n      }\n\n      if (member.declare) {\n        this.raise(TSErrors.IndexSignatureHasDeclare, {\n          node: member\n        });\n      }\n\n      if (member.override) {\n        this.raise(TSErrors.IndexSignatureHasOverride, {\n          node: member\n        });\n      }\n\n      return;\n    }\n\n    if (!this.state.inAbstractClass && member.abstract) {\n      this.raise(TSErrors.NonAbstractClassHasAbstractMethod, {\n        node: member\n      });\n    }\n\n    if (member.override) {\n      if (!state.hadSuperClass) {\n        this.raise(TSErrors.OverrideNotInSubClass, {\n          node: member\n        });\n      }\n    }\n\n    super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parsePostMemberNameModifiers(methodOrProp) {\n    const optional = this.eat(17);\n    if (optional) methodOrProp.optional = true;\n\n    if (methodOrProp.readonly && this.match(10)) {\n      this.raise(TSErrors.ClassMethodHasReadonly, {\n        node: methodOrProp\n      });\n    }\n\n    if (methodOrProp.declare && this.match(10)) {\n      this.raise(TSErrors.ClassMethodHasDeclare, {\n        node: methodOrProp\n      });\n    }\n  }\n\n  parseExpressionStatement(node, expr) {\n    const decl = expr.type === \"Identifier\" ? this.tsParseExpressionStatement(node, expr) : undefined;\n    return decl || super.parseExpressionStatement(node, expr);\n  }\n\n  shouldParseExportDeclaration() {\n    if (this.tsIsDeclarationStart()) return true;\n    return super.shouldParseExportDeclaration();\n  }\n\n  parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n    if (!this.state.maybeInArrowParameters || !this.match(17)) {\n      return super.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n    }\n\n    const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc));\n\n    if (!result.node) {\n      if (result.error) {\n        super.setOptionalParametersError(refExpressionErrors, result.error);\n      }\n\n      return expr;\n    }\n\n    if (result.error) this.state = result.failState;\n    return result.node;\n  }\n\n  parseParenItem(node, startPos, startLoc) {\n    node = super.parseParenItem(node, startPos, startLoc);\n\n    if (this.eat(17)) {\n      node.optional = true;\n      this.resetEndLocation(node);\n    }\n\n    if (this.match(14)) {\n      const typeCastNode = this.startNodeAt(startPos, startLoc);\n      typeCastNode.expression = node;\n      typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n      return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n    }\n\n    return node;\n  }\n\n  parseExportDeclaration(node) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const isDeclare = this.eatContextual(121);\n\n    if (isDeclare && (this.isContextual(121) || !this.shouldParseExportDeclaration())) {\n      throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, {\n        at: this.state.startLoc\n      });\n    }\n\n    let declaration;\n\n    if (tokenIsIdentifier(this.state.type)) {\n      declaration = this.tsTryParseExportDeclaration();\n    }\n\n    if (!declaration) {\n      declaration = super.parseExportDeclaration(node);\n    }\n\n    if (declaration && (declaration.type === \"TSInterfaceDeclaration\" || declaration.type === \"TSTypeAliasDeclaration\" || isDeclare)) {\n      node.exportKind = \"type\";\n    }\n\n    if (declaration && isDeclare) {\n      this.resetStartLocation(declaration, startPos, startLoc);\n      declaration.declare = true;\n    }\n\n    return declaration;\n  }\n\n  parseClassId(node, isStatement, optionalId) {\n    if ((!isStatement || optionalId) && this.isContextual(110)) {\n      return;\n    }\n\n    super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);\n    const typeParameters = this.tsTryParseTypeParameters();\n    if (typeParameters) node.typeParameters = typeParameters;\n  }\n\n  parseClassPropertyAnnotation(node) {\n    if (!node.optional && this.eat(35)) {\n      node.definite = true;\n    }\n\n    const type = this.tsTryParseTypeAnnotation();\n    if (type) node.typeAnnotation = type;\n  }\n\n  parseClassProperty(node) {\n    this.parseClassPropertyAnnotation(node);\n\n    if (this.state.isAmbientContext && this.match(29)) {\n      this.raise(TSErrors.DeclareClassFieldHasInitializer, {\n        at: this.state.startLoc\n      });\n    }\n\n    if (node.abstract && this.match(29)) {\n      const {\n        key\n      } = node;\n      this.raise(TSErrors.AbstractPropertyHasInitializer, {\n        at: this.state.startLoc\n      }, key.type === \"Identifier\" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);\n    }\n\n    return super.parseClassProperty(node);\n  }\n\n  parseClassPrivateProperty(node) {\n    if (node.abstract) {\n      this.raise(TSErrors.PrivateElementHasAbstract, {\n        node\n      });\n    }\n\n    if (node.accessibility) {\n      this.raise(TSErrors.PrivateElementHasAccessibility, {\n        node\n      }, node.accessibility);\n    }\n\n    this.parseClassPropertyAnnotation(node);\n    return super.parseClassPrivateProperty(node);\n  }\n\n  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n    const typeParameters = this.tsTryParseTypeParameters();\n\n    if (typeParameters && isConstructor) {\n      this.raise(TSErrors.ConstructorHasTypeParameters, {\n        node: typeParameters\n      });\n    }\n\n    if (method.declare && (method.kind === \"get\" || method.kind === \"set\")) {\n      this.raise(TSErrors.DeclareAccessor, {\n        node: method\n      }, method.kind);\n    }\n\n    if (typeParameters) method.typeParameters = typeParameters;\n    super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n  }\n\n  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n    const typeParameters = this.tsTryParseTypeParameters();\n    if (typeParameters) method.typeParameters = typeParameters;\n    super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n  }\n\n  declareClassPrivateMethodInScope(node, kind) {\n    if (node.type === \"TSDeclareMethod\") return;\n    if (node.type === \"MethodDefinition\" && !node.value.body) return;\n    super.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  parseClassSuper(node) {\n    super.parseClassSuper(node);\n\n    if (node.superClass && (this.match(47) || this.match(51))) {\n      node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n    }\n\n    if (this.eatContextual(110)) {\n      node.implements = this.tsParseHeritageClause(\"implements\");\n    }\n  }\n\n  parseObjPropValue(prop, ...args) {\n    const typeParameters = this.tsTryParseTypeParameters();\n    if (typeParameters) prop.typeParameters = typeParameters;\n    super.parseObjPropValue(prop, ...args);\n  }\n\n  parseFunctionParams(node, allowModifiers) {\n    const typeParameters = this.tsTryParseTypeParameters();\n    if (typeParameters) node.typeParameters = typeParameters;\n    super.parseFunctionParams(node, allowModifiers);\n  }\n\n  parseVarId(decl, kind) {\n    super.parseVarId(decl, kind);\n\n    if (decl.id.type === \"Identifier\" && !this.hasPrecedingLineBreak() && this.eat(35)) {\n      decl.definite = true;\n    }\n\n    const type = this.tsTryParseTypeAnnotation();\n\n    if (type) {\n      decl.id.typeAnnotation = type;\n      this.resetEndLocation(decl.id);\n    }\n  }\n\n  parseAsyncArrowFromCallExpression(node, call) {\n    if (this.match(14)) {\n      node.returnType = this.tsParseTypeAnnotation();\n    }\n\n    return super.parseAsyncArrowFromCallExpression(node, call);\n  }\n\n  parseMaybeAssign(...args) {\n    var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3;\n\n    let state;\n    let jsx;\n    let typeCast;\n\n    if (this.hasPlugin(\"jsx\") && (this.match(138) || this.match(47))) {\n      state = this.state.clone();\n      jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);\n      if (!jsx.error) return jsx.node;\n      const {\n        context\n      } = this.state;\n      const currentContext = context[context.length - 1];\n\n      if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n        context.pop();\n      }\n    }\n\n    if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {\n      return super.parseMaybeAssign(...args);\n    }\n\n    let typeParameters;\n    state = state || this.state.clone();\n    const arrow = this.tryParse(abort => {\n      var _expr$extra, _typeParameters;\n\n      typeParameters = this.tsParseTypeParameters();\n      const expr = super.parseMaybeAssign(...args);\n\n      if (expr.type !== \"ArrowFunctionExpression\" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {\n        abort();\n      }\n\n      if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {\n        this.resetStartLocationFromNode(expr, typeParameters);\n      }\n\n      expr.typeParameters = typeParameters;\n      return expr;\n    }, state);\n\n    if (!arrow.error && !arrow.aborted) {\n      if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n      return arrow.node;\n    }\n\n    if (!jsx) {\n      assert(!this.hasPlugin(\"jsx\"));\n      typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);\n      if (!typeCast.error) return typeCast.node;\n    }\n\n    if ((_jsx2 = jsx) != null && _jsx2.node) {\n      this.state = jsx.failState;\n      return jsx.node;\n    }\n\n    if (arrow.node) {\n      this.state = arrow.failState;\n      if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n      return arrow.node;\n    }\n\n    if ((_typeCast = typeCast) != null && _typeCast.node) {\n      this.state = typeCast.failState;\n      return typeCast.node;\n    }\n\n    if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n    if (arrow.thrown) throw arrow.error;\n    if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error;\n    throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error);\n  }\n\n  reportReservedArrowTypeParam(node) {\n    var _node$extra;\n\n    if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n      this.raise(TSErrors.ReservedArrowTypeParam, {\n        node\n      });\n    }\n  }\n\n  parseMaybeUnary(refExpressionErrors) {\n    if (!this.hasPlugin(\"jsx\") && this.match(47)) {\n      return this.tsParseTypeAssertion();\n    } else {\n      return super.parseMaybeUnary(refExpressionErrors);\n    }\n  }\n\n  parseArrow(node) {\n    if (this.match(14)) {\n      const result = this.tryParse(abort => {\n        const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n        if (this.canInsertSemicolon() || !this.match(19)) abort();\n        return returnType;\n      });\n      if (result.aborted) return;\n\n      if (!result.thrown) {\n        if (result.error) this.state = result.failState;\n        node.returnType = result.node;\n      }\n    }\n\n    return super.parseArrow(node);\n  }\n\n  parseAssignableListItemTypes(param) {\n    if (this.eat(17)) {\n      if (param.type !== \"Identifier\" && !this.state.isAmbientContext && !this.state.inType) {\n        this.raise(TSErrors.PatternIsOptional, {\n          node: param\n        });\n      }\n\n      param.optional = true;\n    }\n\n    const type = this.tsTryParseTypeAnnotation();\n    if (type) param.typeAnnotation = type;\n    this.resetEndLocation(param);\n    return param;\n  }\n\n  isAssignable(node, isBinding) {\n    switch (node.type) {\n      case \"TSTypeCastExpression\":\n        return this.isAssignable(node.expression, isBinding);\n\n      case \"TSParameterProperty\":\n        return true;\n\n      default:\n        return super.isAssignable(node, isBinding);\n    }\n  }\n\n  toAssignable(node, isLHS = false) {\n    switch (node.type) {\n      case \"TSTypeCastExpression\":\n        return super.toAssignable(this.typeCastToParameter(node), isLHS);\n\n      case \"TSParameterProperty\":\n        return super.toAssignable(node, isLHS);\n\n      case \"ParenthesizedExpression\":\n        return this.toAssignableParenthesizedExpression(node, isLHS);\n\n      case \"TSAsExpression\":\n      case \"TSNonNullExpression\":\n      case \"TSTypeAssertion\":\n        node.expression = this.toAssignable(node.expression, isLHS);\n        return node;\n\n      default:\n        return super.toAssignable(node, isLHS);\n    }\n  }\n\n  toAssignableParenthesizedExpression(node, isLHS) {\n    switch (node.expression.type) {\n      case \"TSAsExpression\":\n      case \"TSNonNullExpression\":\n      case \"TSTypeAssertion\":\n      case \"ParenthesizedExpression\":\n        node.expression = this.toAssignable(node.expression, isLHS);\n        return node;\n\n      default:\n        return super.toAssignable(node, isLHS);\n    }\n  }\n\n  checkLVal(expr, contextDescription, ...args) {\n    var _expr$extra2;\n\n    switch (expr.type) {\n      case \"TSTypeCastExpression\":\n        return;\n\n      case \"TSParameterProperty\":\n        this.checkLVal(expr.parameter, \"parameter property\", ...args);\n        return;\n\n      case \"TSAsExpression\":\n      case \"TSTypeAssertion\":\n        if (!args[0] && contextDescription !== \"parenthesized expression\" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) {\n          this.raise(ErrorMessages.InvalidLhs, {\n            node: expr\n          }, contextDescription);\n          break;\n        }\n\n        this.checkLVal(expr.expression, \"parenthesized expression\", ...args);\n        return;\n\n      case \"TSNonNullExpression\":\n        this.checkLVal(expr.expression, contextDescription, ...args);\n        return;\n\n      default:\n        super.checkLVal(expr, contextDescription, ...args);\n        return;\n    }\n  }\n\n  parseBindingAtom() {\n    switch (this.state.type) {\n      case 78:\n        return this.parseIdentifier(true);\n\n      default:\n        return super.parseBindingAtom();\n    }\n  }\n\n  parseMaybeDecoratorArguments(expr) {\n    if (this.match(47) || this.match(51)) {\n      const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n      if (this.match(10)) {\n        const call = super.parseMaybeDecoratorArguments(expr);\n        call.typeParameters = typeArguments;\n        return call;\n      }\n\n      this.unexpected(null, 10);\n    }\n\n    return super.parseMaybeDecoratorArguments(expr);\n  }\n\n  checkCommaAfterRest(close) {\n    if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {\n      this.next();\n      return false;\n    } else {\n      return super.checkCommaAfterRest(close);\n    }\n  }\n\n  isClassMethod() {\n    return this.match(47) || super.isClassMethod();\n  }\n\n  isClassProperty() {\n    return this.match(35) || this.match(14) || super.isClassProperty();\n  }\n\n  parseMaybeDefault(...args) {\n    const node = super.parseMaybeDefault(...args);\n\n    if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n      this.raise(TSErrors.TypeAnnotationAfterAssign, {\n        node: node.typeAnnotation\n      });\n    }\n\n    return node;\n  }\n\n  getTokenFromCode(code) {\n    if (this.state.inType) {\n      if (code === 62) {\n        return this.finishOp(48, 1);\n      }\n\n      if (code === 60) {\n        return this.finishOp(47, 1);\n      }\n    }\n\n    return super.getTokenFromCode(code);\n  }\n\n  reScan_lt_gt() {\n    const {\n      type\n    } = this.state;\n\n    if (type === 47) {\n      this.state.pos -= 1;\n      this.readToken_lt();\n    } else if (type === 48) {\n      this.state.pos -= 1;\n      this.readToken_gt();\n    }\n  }\n\n  reScan_lt() {\n    const {\n      type\n    } = this.state;\n\n    if (type === 51) {\n      this.state.pos -= 2;\n      this.finishOp(47, 1);\n      return 47;\n    }\n\n    return type;\n  }\n\n  toAssignableList(exprList) {\n    for (let i = 0; i < exprList.length; i++) {\n      const expr = exprList[i];\n      if (!expr) continue;\n\n      switch (expr.type) {\n        case \"TSTypeCastExpression\":\n          exprList[i] = this.typeCastToParameter(expr);\n          break;\n\n        case \"TSAsExpression\":\n        case \"TSTypeAssertion\":\n          if (!this.state.maybeInArrowParameters) {\n            exprList[i] = this.typeCastToParameter(expr);\n          } else {\n            this.raise(TSErrors.UnexpectedTypeCastInParameter, {\n              node: expr\n            });\n          }\n\n          break;\n      }\n    }\n\n    return super.toAssignableList(...arguments);\n  }\n\n  typeCastToParameter(node) {\n    node.expression.typeAnnotation = node.typeAnnotation;\n    this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n    return node.expression;\n  }\n\n  shouldParseArrow(params) {\n    if (this.match(14)) {\n      return params.every(expr => this.isAssignable(expr, true));\n    }\n\n    return super.shouldParseArrow(params);\n  }\n\n  shouldParseAsyncArrow() {\n    return this.match(14) || super.shouldParseAsyncArrow();\n  }\n\n  canHaveLeadingDecorator() {\n    return super.canHaveLeadingDecorator() || this.isAbstractClass();\n  }\n\n  jsxParseOpeningElementAfterName(node) {\n    if (this.match(47) || this.match(51)) {\n      const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());\n      if (typeArguments) node.typeParameters = typeArguments;\n    }\n\n    return super.jsxParseOpeningElementAfterName(node);\n  }\n\n  getGetterSetterExpectedParamCount(method) {\n    const baseCount = super.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n    const firstParam = params[0];\n    const hasContextParam = firstParam && this.isThisParam(firstParam);\n    return hasContextParam ? baseCount + 1 : baseCount;\n  }\n\n  parseCatchClauseParam() {\n    const param = super.parseCatchClauseParam();\n    const type = this.tsTryParseTypeAnnotation();\n\n    if (type) {\n      param.typeAnnotation = type;\n      this.resetEndLocation(param);\n    }\n\n    return param;\n  }\n\n  tsInAmbientContext(cb) {\n    const oldIsAmbientContext = this.state.isAmbientContext;\n    this.state.isAmbientContext = true;\n\n    try {\n      return cb();\n    } finally {\n      this.state.isAmbientContext = oldIsAmbientContext;\n    }\n  }\n\n  parseClass(node, ...args) {\n    const oldInAbstractClass = this.state.inAbstractClass;\n    this.state.inAbstractClass = !!node.abstract;\n\n    try {\n      return super.parseClass(node, ...args);\n    } finally {\n      this.state.inAbstractClass = oldInAbstractClass;\n    }\n  }\n\n  tsParseAbstractDeclaration(node) {\n    if (this.match(80)) {\n      node.abstract = true;\n      return this.parseClass(node, true, false);\n    } else if (this.isContextual(125)) {\n      if (!this.hasFollowingLineBreak()) {\n        node.abstract = true;\n        this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, {\n          node\n        });\n        this.next();\n        return this.tsParseInterfaceDeclaration(node);\n      }\n    } else {\n      this.unexpected(null, 80);\n    }\n  }\n\n  parseMethod(...args) {\n    const method = super.parseMethod(...args);\n\n    if (method.abstract) {\n      const hasBody = this.hasPlugin(\"estree\") ? !!method.value.body : !!method.body;\n\n      if (hasBody) {\n        const {\n          key\n        } = method;\n        this.raise(TSErrors.AbstractMethodHasImplementation, {\n          node: method\n        }, key.type === \"Identifier\" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);\n      }\n    }\n\n    return method;\n  }\n\n  tsParseTypeParameterName() {\n    const typeName = this.parseIdentifier();\n    return typeName.name;\n  }\n\n  shouldParseAsAmbientContext() {\n    return !!this.getPluginOption(\"typescript\", \"dts\");\n  }\n\n  parse() {\n    if (this.shouldParseAsAmbientContext()) {\n      this.state.isAmbientContext = true;\n    }\n\n    return super.parse();\n  }\n\n  getExpression() {\n    if (this.shouldParseAsAmbientContext()) {\n      this.state.isAmbientContext = true;\n    }\n\n    return super.getExpression();\n  }\n\n  parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n    if (!isString && isMaybeTypeOnly) {\n      this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);\n      return this.finishNode(node, \"ExportSpecifier\");\n    }\n\n    node.exportKind = \"value\";\n    return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);\n  }\n\n  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n    if (!importedIsString && isMaybeTypeOnly) {\n      this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);\n      return this.finishNode(specifier, \"ImportSpecifier\");\n    }\n\n    specifier.importKind = \"value\";\n    return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly);\n  }\n\n  parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {\n    const leftOfAsKey = isImport ? \"imported\" : \"local\";\n    const rightOfAsKey = isImport ? \"local\" : \"exported\";\n    let leftOfAs = node[leftOfAsKey];\n    let rightOfAs;\n    let hasTypeSpecifier = false;\n    let canParseAsKeyword = true;\n    const loc = leftOfAs.loc.start;\n\n    if (this.isContextual(93)) {\n      const firstAs = this.parseIdentifier();\n\n      if (this.isContextual(93)) {\n        const secondAs = this.parseIdentifier();\n\n        if (tokenIsKeywordOrIdentifier(this.state.type)) {\n          hasTypeSpecifier = true;\n          leftOfAs = firstAs;\n          rightOfAs = this.parseIdentifier();\n          canParseAsKeyword = false;\n        } else {\n          rightOfAs = secondAs;\n          canParseAsKeyword = false;\n        }\n      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n        canParseAsKeyword = false;\n        rightOfAs = this.parseIdentifier();\n      } else {\n        hasTypeSpecifier = true;\n        leftOfAs = firstAs;\n      }\n    } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n      hasTypeSpecifier = true;\n      leftOfAs = this.parseIdentifier();\n    }\n\n    if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n      this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, {\n        at: loc\n      });\n    }\n\n    node[leftOfAsKey] = leftOfAs;\n    node[rightOfAsKey] = rightOfAs;\n    const kindKey = isImport ? \"importKind\" : \"exportKind\";\n    node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n    if (canParseAsKeyword && this.eatContextual(93)) {\n      node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n    }\n\n    if (!node[rightOfAsKey]) {\n      node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n    }\n\n    if (isImport) {\n      this.checkLVal(node[rightOfAsKey], \"import specifier\", BIND_LEXICAL);\n    }\n  }\n\n});\n\nconst PlaceholderErrors = makeErrorTemplates({\n  ClassNameIsRequired: \"A class name is required.\"\n}, ErrorCodes.SyntaxError, \"placeholders\");\nvar placeholders = (superClass => class extends superClass {\n  parsePlaceholder(expectedNode) {\n    if (this.match(140)) {\n      const node = this.startNode();\n      this.next();\n      this.assertNoSpace(\"Unexpected space in placeholder.\");\n      node.name = super.parseIdentifier(true);\n      this.assertNoSpace(\"Unexpected space in placeholder.\");\n      this.expect(140);\n      return this.finishPlaceholder(node, expectedNode);\n    }\n  }\n\n  finishPlaceholder(node, expectedNode) {\n    const isFinished = !!(node.expectedNode && node.type === \"Placeholder\");\n    node.expectedNode = expectedNode;\n    return isFinished ? node : this.finishNode(node, \"Placeholder\");\n  }\n\n  getTokenFromCode(code) {\n    if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {\n      return this.finishOp(140, 2);\n    }\n\n    return super.getTokenFromCode(...arguments);\n  }\n\n  parseExprAtom() {\n    return this.parsePlaceholder(\"Expression\") || super.parseExprAtom(...arguments);\n  }\n\n  parseIdentifier() {\n    return this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(...arguments);\n  }\n\n  checkReservedWord(word) {\n    if (word !== undefined) super.checkReservedWord(...arguments);\n  }\n\n  parseBindingAtom() {\n    return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom(...arguments);\n  }\n\n  checkLVal(expr) {\n    if (expr.type !== \"Placeholder\") super.checkLVal(...arguments);\n  }\n\n  toAssignable(node) {\n    if (node && node.type === \"Placeholder\" && node.expectedNode === \"Expression\") {\n      node.expectedNode = \"Pattern\";\n      return node;\n    }\n\n    return super.toAssignable(...arguments);\n  }\n\n  isLet(context) {\n    if (super.isLet(context)) {\n      return true;\n    }\n\n    if (!this.isContextual(99)) {\n      return false;\n    }\n\n    if (context) return false;\n    const nextToken = this.lookahead();\n\n    if (nextToken.type === 140) {\n      return true;\n    }\n\n    return false;\n  }\n\n  verifyBreakContinue(node) {\n    if (node.label && node.label.type === \"Placeholder\") return;\n    super.verifyBreakContinue(...arguments);\n  }\n\n  parseExpressionStatement(node, expr) {\n    if (expr.type !== \"Placeholder\" || expr.extra && expr.extra.parenthesized) {\n      return super.parseExpressionStatement(...arguments);\n    }\n\n    if (this.match(14)) {\n      const stmt = node;\n      stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n      this.next();\n      stmt.body = this.parseStatement(\"label\");\n      return this.finishNode(stmt, \"LabeledStatement\");\n    }\n\n    this.semicolon();\n    node.name = expr.name;\n    return this.finishPlaceholder(node, \"Statement\");\n  }\n\n  parseBlock() {\n    return this.parsePlaceholder(\"BlockStatement\") || super.parseBlock(...arguments);\n  }\n\n  parseFunctionId() {\n    return this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(...arguments);\n  }\n\n  parseClass(node, isStatement, optionalId) {\n    const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n    this.next();\n    this.takeDecorators(node);\n    const oldStrict = this.state.strict;\n    const placeholder = this.parsePlaceholder(\"Identifier\");\n\n    if (placeholder) {\n      if (this.match(81) || this.match(140) || this.match(5)) {\n        node.id = placeholder;\n      } else if (optionalId || !isStatement) {\n        node.id = null;\n        node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n        return this.finishNode(node, type);\n      } else {\n        throw this.raise(PlaceholderErrors.ClassNameIsRequired, {\n          at: this.state.startLoc\n        });\n      }\n    } else {\n      this.parseClassId(node, isStatement, optionalId);\n    }\n\n    this.parseClassSuper(node);\n    node.body = this.parsePlaceholder(\"ClassBody\") || this.parseClassBody(!!node.superClass, oldStrict);\n    return this.finishNode(node, type);\n  }\n\n  parseExport(node) {\n    const placeholder = this.parsePlaceholder(\"Identifier\");\n    if (!placeholder) return super.parseExport(...arguments);\n\n    if (!this.isContextual(97) && !this.match(12)) {\n      node.specifiers = [];\n      node.source = null;\n      node.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n      return this.finishNode(node, \"ExportNamedDeclaration\");\n    }\n\n    this.expectPlugin(\"exportDefaultFrom\");\n    const specifier = this.startNode();\n    specifier.exported = placeholder;\n    node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n    return super.parseExport(node);\n  }\n\n  isExportDefaultSpecifier() {\n    if (this.match(65)) {\n      const next = this.nextTokenStart();\n\n      if (this.isUnparsedContextual(next, \"from\")) {\n        if (this.input.startsWith(tokenLabelName(140), this.nextTokenStartSince(next + 4))) {\n          return true;\n        }\n      }\n    }\n\n    return super.isExportDefaultSpecifier();\n  }\n\n  maybeParseExportDefaultSpecifier(node) {\n    if (node.specifiers && node.specifiers.length > 0) {\n      return true;\n    }\n\n    return super.maybeParseExportDefaultSpecifier(...arguments);\n  }\n\n  checkExport(node) {\n    const {\n      specifiers\n    } = node;\n\n    if (specifiers != null && specifiers.length) {\n      node.specifiers = specifiers.filter(node => node.exported.type === \"Placeholder\");\n    }\n\n    super.checkExport(node);\n    node.specifiers = specifiers;\n  }\n\n  parseImport(node) {\n    const placeholder = this.parsePlaceholder(\"Identifier\");\n    if (!placeholder) return super.parseImport(...arguments);\n    node.specifiers = [];\n\n    if (!this.isContextual(97) && !this.match(12)) {\n      node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n      this.semicolon();\n      return this.finishNode(node, \"ImportDeclaration\");\n    }\n\n    const specifier = this.startNodeAtNode(placeholder);\n    specifier.local = placeholder;\n    this.finishNode(specifier, \"ImportDefaultSpecifier\");\n    node.specifiers.push(specifier);\n\n    if (this.eat(12)) {\n      const hasStarImport = this.maybeParseStarImportSpecifier(node);\n      if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n    }\n\n    this.expectContextual(97);\n    node.source = this.parseImportSource();\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource() {\n    return this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource(...arguments);\n  }\n\n});\n\nvar v8intrinsic = (superClass => class extends superClass {\n  parseV8Intrinsic() {\n    if (this.match(54)) {\n      const v8IntrinsicStartLoc = this.state.startLoc;\n      const node = this.startNode();\n      this.next();\n\n      if (tokenIsIdentifier(this.state.type)) {\n        const name = this.parseIdentifierName(this.state.start);\n        const identifier = this.createIdentifier(node, name);\n        identifier.type = \"V8IntrinsicIdentifier\";\n\n        if (this.match(10)) {\n          return identifier;\n        }\n      }\n\n      this.unexpected(v8IntrinsicStartLoc);\n    }\n  }\n\n  parseExprAtom() {\n    return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);\n  }\n\n});\n\nfunction hasPlugin(plugins, expectedConfig) {\n  const [expectedName, expectedOptions] = typeof expectedConfig === \"string\" ? [expectedConfig, {}] : expectedConfig;\n  const expectedKeys = Object.keys(expectedOptions);\n  const expectedOptionsIsEmpty = expectedKeys.length === 0;\n  return plugins.some(p => {\n    if (typeof p === \"string\") {\n      return expectedOptionsIsEmpty && p === expectedName;\n    } else {\n      const [pluginName, pluginOptions] = p;\n\n      if (pluginName !== expectedName) {\n        return false;\n      }\n\n      for (const key of expectedKeys) {\n        if (pluginOptions[key] !== expectedOptions[key]) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n  });\n}\nfunction getPluginOption(plugins, name, option) {\n  const plugin = plugins.find(plugin => {\n    if (Array.isArray(plugin)) {\n      return plugin[0] === name;\n    } else {\n      return plugin === name;\n    }\n  });\n\n  if (plugin && Array.isArray(plugin)) {\n    return plugin[1][option];\n  }\n\n  return null;\n}\nconst PIPELINE_PROPOSALS = [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\nconst RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\nfunction validatePlugins(plugins) {\n  if (hasPlugin(plugins, \"decorators\")) {\n    if (hasPlugin(plugins, \"decorators-legacy\")) {\n      throw new Error(\"Cannot use the decorators and decorators-legacy plugin together\");\n    }\n\n    const decoratorsBeforeExport = getPluginOption(plugins, \"decorators\", \"decoratorsBeforeExport\");\n\n    if (decoratorsBeforeExport == null) {\n      throw new Error(\"The 'decorators' plugin requires a 'decoratorsBeforeExport' option,\" + \" whose value must be a boolean. If you are migrating from\" + \" Babylon/Babel 6 or want to use the old decorators proposal, you\" + \" should use the 'decorators-legacy' plugin instead of 'decorators'.\");\n    } else if (typeof decoratorsBeforeExport !== \"boolean\") {\n      throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n    }\n  }\n\n  if (hasPlugin(plugins, \"flow\") && hasPlugin(plugins, \"typescript\")) {\n    throw new Error(\"Cannot combine flow and typescript plugins.\");\n  }\n\n  if (hasPlugin(plugins, \"placeholders\") && hasPlugin(plugins, \"v8intrinsic\")) {\n    throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n  }\n\n  if (hasPlugin(plugins, \"pipelineOperator\")) {\n    const proposal = getPluginOption(plugins, \"pipelineOperator\", \"proposal\");\n\n    if (!PIPELINE_PROPOSALS.includes(proposal)) {\n      const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n      throw new Error(`\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`);\n    }\n\n    const tupleSyntaxIsHash = hasPlugin(plugins, [\"recordAndTuple\", {\n      syntaxType: \"hash\"\n    }]);\n\n    if (proposal === \"hack\") {\n      if (hasPlugin(plugins, \"placeholders\")) {\n        throw new Error(\"Cannot combine placeholders plugin and Hack-style pipes.\");\n      }\n\n      if (hasPlugin(plugins, \"v8intrinsic\")) {\n        throw new Error(\"Cannot combine v8intrinsic plugin and Hack-style pipes.\");\n      }\n\n      const topicToken = getPluginOption(plugins, \"pipelineOperator\", \"topicToken\");\n\n      if (!TOPIC_TOKENS.includes(topicToken)) {\n        const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n        throw new Error(`\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`);\n      }\n\n      if (topicToken === \"#\" && tupleSyntaxIsHash) {\n        throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n      }\n    } else if (proposal === \"smart\" && tupleSyntaxIsHash) {\n      throw new Error('Plugin conflict between `[\"pipelineOperator\", { proposal: \"smart\" }]` and `[\"recordAndtuple\", { syntaxType: \"hash\"}]`.');\n    }\n  }\n\n  if (hasPlugin(plugins, \"moduleAttributes\")) {\n    {\n      if (hasPlugin(plugins, \"importAssertions\")) {\n        throw new Error(\"Cannot combine importAssertions and moduleAttributes plugins.\");\n      }\n\n      const moduleAttributesVerionPluginOption = getPluginOption(plugins, \"moduleAttributes\", \"version\");\n\n      if (moduleAttributesVerionPluginOption !== \"may-2020\") {\n        throw new Error(\"The 'moduleAttributes' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is 'may-2020'.\");\n      }\n    }\n  }\n\n  if (hasPlugin(plugins, \"recordAndTuple\") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, \"recordAndTuple\", \"syntaxType\"))) {\n    throw new Error(\"'recordAndTuple' requires 'syntaxType' option whose value should be one of: \" + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"));\n  }\n\n  if (hasPlugin(plugins, \"asyncDoExpressions\") && !hasPlugin(plugins, \"doExpressions\")) {\n    const error = new Error(\"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\");\n    error.missingPlugins = \"doExpressions\";\n    throw error;\n  }\n}\nconst mixinPlugins = {\n  estree,\n  jsx,\n  flow,\n  typescript,\n  v8intrinsic,\n  placeholders\n};\nconst mixinPluginNames = Object.keys(mixinPlugins);\n\nconst defaultOptions = {\n  sourceType: \"script\",\n  sourceFilename: undefined,\n  startColumn: 0,\n  startLine: 1,\n  allowAwaitOutsideFunction: false,\n  allowReturnOutsideFunction: false,\n  allowImportExportEverywhere: false,\n  allowSuperOutsideMethod: false,\n  allowUndeclaredExports: false,\n  plugins: [],\n  strictMode: null,\n  ranges: false,\n  tokens: false,\n  createParenthesizedExpressions: false,\n  errorRecovery: false,\n  attachComment: true\n};\nfunction getOptions(opts) {\n  const options = {};\n\n  for (const key of Object.keys(defaultOptions)) {\n    options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];\n  }\n\n  return options;\n}\n\nconst unwrapParenthesizedExpression = node => {\n  return node.type === \"ParenthesizedExpression\" ? unwrapParenthesizedExpression(node.expression) : node;\n};\n\nclass LValParser extends NodeUtils {\n  toAssignable(node, isLHS = false) {\n    var _node$extra, _node$extra3;\n\n    let parenthesized = undefined;\n\n    if (node.type === \"ParenthesizedExpression\" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {\n      parenthesized = unwrapParenthesizedExpression(node);\n\n      if (isLHS) {\n        if (parenthesized.type === \"Identifier\") {\n          this.expressionScope.recordParenthesizedIdentifierError(ErrorMessages.InvalidParenthesizedAssignment, node.loc.start);\n        } else if (parenthesized.type !== \"MemberExpression\") {\n          this.raise(ErrorMessages.InvalidParenthesizedAssignment, {\n            node\n          });\n        }\n      } else {\n        this.raise(ErrorMessages.InvalidParenthesizedAssignment, {\n          node\n        });\n      }\n    }\n\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break;\n\n      case \"ObjectExpression\":\n        node.type = \"ObjectPattern\";\n\n        for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {\n          var _node$extra2;\n\n          const prop = node.properties[i];\n          const isLast = i === last;\n          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n          if (isLast && prop.type === \"RestElement\" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {\n            this.raise(ErrorMessages.RestTrailingComma, {\n              at: node.extra.trailingCommaLoc\n            });\n          }\n        }\n\n        break;\n\n      case \"ObjectProperty\":\n        {\n          const {\n            key,\n            value\n          } = node;\n\n          if (this.isPrivateName(key)) {\n            this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n          }\n\n          this.toAssignable(value, isLHS);\n          break;\n        }\n\n      case \"SpreadElement\":\n        {\n          this.checkToRestConversion(node);\n          node.type = \"RestElement\";\n          const arg = node.argument;\n          this.toAssignable(arg, isLHS);\n          break;\n        }\n\n      case \"ArrayExpression\":\n        node.type = \"ArrayPattern\";\n        this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);\n        break;\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") {\n          this.raise(ErrorMessages.MissingEqInAssignment, {\n            at: node.left.loc.end\n          });\n        }\n\n        node.type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isLHS);\n        break;\n\n      case \"ParenthesizedExpression\":\n        this.toAssignable(parenthesized, isLHS);\n        break;\n    }\n\n    return node;\n  }\n\n  toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n    if (prop.type === \"ObjectMethod\") {\n      this.raise(prop.kind === \"get\" || prop.kind === \"set\" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod, {\n        node: prop.key\n      });\n    } else if (prop.type === \"SpreadElement\" && !isLast) {\n      this.raise(ErrorMessages.RestTrailingComma, {\n        node: prop\n      });\n    } else {\n      this.toAssignable(prop, isLHS);\n    }\n  }\n\n  toAssignableList(exprList, trailingCommaLoc, isLHS) {\n    let end = exprList.length;\n\n    if (end) {\n      const last = exprList[end - 1];\n\n      if ((last == null ? void 0 : last.type) === \"RestElement\") {\n        --end;\n      } else if ((last == null ? void 0 : last.type) === \"SpreadElement\") {\n        last.type = \"RestElement\";\n        let arg = last.argument;\n        this.toAssignable(arg, isLHS);\n        arg = unwrapParenthesizedExpression(arg);\n\n        if (arg.type !== \"Identifier\" && arg.type !== \"MemberExpression\" && arg.type !== \"ArrayPattern\" && arg.type !== \"ObjectPattern\") {\n          this.unexpected(arg.start);\n        }\n\n        if (trailingCommaLoc) {\n          this.raise(ErrorMessages.RestTrailingComma, {\n            at: trailingCommaLoc\n          });\n        }\n\n        --end;\n      }\n    }\n\n    for (let i = 0; i < end; i++) {\n      const elt = exprList[i];\n\n      if (elt) {\n        this.toAssignable(elt, isLHS);\n\n        if (elt.type === \"RestElement\") {\n          this.raise(ErrorMessages.RestTrailingComma, {\n            node: elt\n          });\n        }\n      }\n    }\n\n    return exprList;\n  }\n\n  isAssignable(node, isBinding) {\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        return true;\n\n      case \"ObjectExpression\":\n        {\n          const last = node.properties.length - 1;\n          return node.properties.every((prop, i) => {\n            return prop.type !== \"ObjectMethod\" && (i === last || prop.type !== \"SpreadElement\") && this.isAssignable(prop);\n          });\n        }\n\n      case \"ObjectProperty\":\n        return this.isAssignable(node.value);\n\n      case \"SpreadElement\":\n        return this.isAssignable(node.argument);\n\n      case \"ArrayExpression\":\n        return node.elements.every(element => element === null || this.isAssignable(element));\n\n      case \"AssignmentExpression\":\n        return node.operator === \"=\";\n\n      case \"ParenthesizedExpression\":\n        return this.isAssignable(node.expression);\n\n      case \"MemberExpression\":\n      case \"OptionalMemberExpression\":\n        return !isBinding;\n\n      default:\n        return false;\n    }\n  }\n\n  toReferencedList(exprList, isParenthesizedExpr) {\n    return exprList;\n  }\n\n  toReferencedListDeep(exprList, isParenthesizedExpr) {\n    this.toReferencedList(exprList, isParenthesizedExpr);\n\n    for (const expr of exprList) {\n      if ((expr == null ? void 0 : expr.type) === \"ArrayExpression\") {\n        this.toReferencedListDeep(expr.elements);\n      }\n    }\n  }\n\n  parseSpread(refExpressionErrors, refNeedsArrowPos) {\n    const node = this.startNode();\n    this.next();\n    node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos);\n    return this.finishNode(node, \"SpreadElement\");\n  }\n\n  parseRestBinding() {\n    const node = this.startNode();\n    this.next();\n    node.argument = this.parseBindingAtom();\n    return this.finishNode(node, \"RestElement\");\n  }\n\n  parseBindingAtom() {\n    switch (this.state.type) {\n      case 0:\n        {\n          const node = this.startNode();\n          this.next();\n          node.elements = this.parseBindingList(3, 93, true);\n          return this.finishNode(node, \"ArrayPattern\");\n        }\n\n      case 5:\n        return this.parseObjectLike(8, true);\n    }\n\n    return this.parseIdentifier();\n  }\n\n  parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) {\n    const elts = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12);\n      }\n\n      if (allowEmpty && this.match(12)) {\n        elts.push(null);\n      } else if (this.eat(close)) {\n        break;\n      } else if (this.match(21)) {\n        elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));\n\n        if (!this.checkCommaAfterRest(closeCharCode)) {\n          this.expect(close);\n          break;\n        }\n      } else {\n        const decorators = [];\n\n        if (this.match(26) && this.hasPlugin(\"decorators\")) {\n          this.raise(ErrorMessages.UnsupportedParameterDecorator, {\n            at: this.state.startLoc\n          });\n        }\n\n        while (this.match(26)) {\n          decorators.push(this.parseDecorator());\n        }\n\n        elts.push(this.parseAssignableListItem(allowModifiers, decorators));\n      }\n    }\n\n    return elts;\n  }\n\n  parseBindingRestProperty(prop) {\n    this.next();\n    prop.argument = this.parseIdentifier();\n    this.checkCommaAfterRest(125);\n    return this.finishNode(prop, \"RestElement\");\n  }\n\n  parseBindingProperty() {\n    const prop = this.startNode();\n    const {\n      type,\n      start: startPos,\n      startLoc\n    } = this.state;\n\n    if (type === 21) {\n      return this.parseBindingRestProperty(prop);\n    } else if (type === 134) {\n      this.expectPlugin(\"destructuringPrivate\", startLoc);\n      this.classScope.usePrivateName(this.state.value, startLoc);\n      prop.key = this.parsePrivateName();\n    } else {\n      this.parsePropertyName(prop);\n    }\n\n    prop.method = false;\n    this.parseObjPropValue(prop, startPos, startLoc, false, false, true, false);\n    return prop;\n  }\n\n  parseAssignableListItem(allowModifiers, decorators) {\n    const left = this.parseMaybeDefault();\n    this.parseAssignableListItemTypes(left);\n    const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n\n    if (decorators.length) {\n      left.decorators = decorators;\n    }\n\n    return elt;\n  }\n\n  parseAssignableListItemTypes(param) {\n    return param;\n  }\n\n  parseMaybeDefault(startPos, startLoc, left) {\n    var _startLoc, _startPos, _left;\n\n    startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc;\n    startPos = (_startPos = startPos) != null ? _startPos : this.state.start;\n    left = (_left = left) != null ? _left : this.parseBindingAtom();\n    if (!this.eat(29)) return left;\n    const node = this.startNodeAt(startPos, startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssignAllowIn();\n    return this.finishNode(node, \"AssignmentPattern\");\n  }\n\n  checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) {\n    switch (expr.type) {\n      case \"Identifier\":\n        {\n          const {\n            name\n          } = expr;\n\n          if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) {\n            this.raise(bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, {\n              node: expr\n            }, name);\n          }\n\n          if (checkClashes) {\n            if (checkClashes.has(name)) {\n              this.raise(ErrorMessages.ParamDupe, {\n                node: expr\n              });\n            } else {\n              checkClashes.add(name);\n            }\n          }\n\n          if (disallowLetBinding && name === \"let\") {\n            this.raise(ErrorMessages.LetInLexicalBinding, {\n              node: expr\n            });\n          }\n\n          if (!(bindingType & BIND_NONE)) {\n            this.scope.declareName(name, bindingType, expr.loc.start);\n          }\n\n          break;\n        }\n\n      case \"MemberExpression\":\n        if (bindingType !== BIND_NONE) {\n          this.raise(ErrorMessages.InvalidPropertyBindingPattern, {\n            node: expr\n          });\n        }\n\n        break;\n\n      case \"ObjectPattern\":\n        for (let prop of expr.properties) {\n          if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue;\n          this.checkLVal(prop, \"object destructuring pattern\", bindingType, checkClashes, disallowLetBinding);\n        }\n\n        break;\n\n      case \"ArrayPattern\":\n        for (const elem of expr.elements) {\n          if (elem) {\n            this.checkLVal(elem, \"array destructuring pattern\", bindingType, checkClashes, disallowLetBinding);\n          }\n        }\n\n        break;\n\n      case \"AssignmentPattern\":\n        this.checkLVal(expr.left, \"assignment pattern\", bindingType, checkClashes);\n        break;\n\n      case \"RestElement\":\n        this.checkLVal(expr.argument, \"rest element\", bindingType, checkClashes);\n        break;\n\n      case \"ParenthesizedExpression\":\n        this.checkLVal(expr.expression, \"parenthesized expression\", bindingType, checkClashes);\n        break;\n\n      default:\n        {\n          this.raise(bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, {\n            node: expr\n          }, contextDescription);\n        }\n    }\n  }\n\n  checkToRestConversion(node) {\n    if (node.argument.type !== \"Identifier\" && node.argument.type !== \"MemberExpression\") {\n      this.raise(ErrorMessages.InvalidRestAssignmentPattern, {\n        node: node.argument\n      });\n    }\n  }\n\n  checkCommaAfterRest(close) {\n    if (!this.match(12)) {\n      return false;\n    }\n\n    this.raise(this.lookaheadCharCode() === close ? ErrorMessages.RestTrailingComma : ErrorMessages.ElementAfterRest, {\n      at: this.state.startLoc\n    });\n    return true;\n  }\n\n}\n\nconst invalidHackPipeBodies = new Map([[\"ArrowFunctionExpression\", \"arrow function\"], [\"AssignmentExpression\", \"assignment\"], [\"ConditionalExpression\", \"conditional\"], [\"YieldExpression\", \"yield\"]]);\nclass ExpressionParser extends LValParser {\n  checkProto(prop, isRecord, protoRef, refExpressionErrors) {\n    if (prop.type === \"SpreadElement\" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {\n      return;\n    }\n\n    const key = prop.key;\n    const name = key.type === \"Identifier\" ? key.name : key.value;\n\n    if (name === \"__proto__\") {\n      if (isRecord) {\n        this.raise(ErrorMessages.RecordNoProto, {\n          node: key\n        });\n        return;\n      }\n\n      if (protoRef.used) {\n        if (refExpressionErrors) {\n          if (refExpressionErrors.doubleProtoLoc === null) {\n            refExpressionErrors.doubleProtoLoc = key.loc.start;\n          }\n        } else {\n          this.raise(ErrorMessages.DuplicateProto, {\n            node: key\n          });\n        }\n      }\n\n      protoRef.used = true;\n    }\n  }\n\n  shouldExitDescending(expr, potentialArrowAt) {\n    return expr.type === \"ArrowFunctionExpression\" && expr.start === potentialArrowAt;\n  }\n\n  getExpression() {\n    this.enterInitialScopes();\n    this.nextToken();\n    const expr = this.parseExpression();\n\n    if (!this.match(135)) {\n      this.unexpected();\n    }\n\n    this.finalizeRemainingComments();\n    expr.comments = this.state.comments;\n    expr.errors = this.state.errors;\n\n    if (this.options.tokens) {\n      expr.tokens = this.tokens;\n    }\n\n    return expr;\n  }\n\n  parseExpression(disallowIn, refExpressionErrors) {\n    if (disallowIn) {\n      return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n    }\n\n    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n  }\n\n  parseExpressionBase(refExpressionErrors) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const expr = this.parseMaybeAssign(refExpressionErrors);\n\n    if (this.match(12)) {\n      const node = this.startNodeAt(startPos, startLoc);\n      node.expressions = [expr];\n\n      while (this.eat(12)) {\n        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n      }\n\n      this.toReferencedList(node.expressions);\n      return this.finishNode(node, \"SequenceExpression\");\n    }\n\n    return expr;\n  }\n\n  parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {\n    return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n  }\n\n  parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {\n    return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n  }\n\n  setOptionalParametersError(refExpressionErrors, resultError) {\n    var _resultError$loc;\n\n    refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc;\n  }\n\n  parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n\n    if (this.isContextual(105)) {\n      if (this.prodParam.hasYield) {\n        let left = this.parseYield();\n\n        if (afterLeftParse) {\n          left = afterLeftParse.call(this, left, startPos, startLoc);\n        }\n\n        return left;\n      }\n    }\n\n    let ownExpressionErrors;\n\n    if (refExpressionErrors) {\n      ownExpressionErrors = false;\n    } else {\n      refExpressionErrors = new ExpressionErrors();\n      ownExpressionErrors = true;\n    }\n\n    const {\n      type\n    } = this.state;\n\n    if (type === 10 || tokenIsIdentifier(type)) {\n      this.state.potentialArrowAt = this.state.start;\n    }\n\n    let left = this.parseMaybeConditional(refExpressionErrors);\n\n    if (afterLeftParse) {\n      left = afterLeftParse.call(this, left, startPos, startLoc);\n    }\n\n    if (tokenIsAssignment(this.state.type)) {\n      const node = this.startNodeAt(startPos, startLoc);\n      const operator = this.state.value;\n      node.operator = operator;\n\n      if (this.match(29)) {\n        node.left = this.toAssignable(left, true);\n\n        if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startPos) {\n          refExpressionErrors.doubleProtoLoc = null;\n        }\n\n        if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startPos) {\n          refExpressionErrors.shorthandAssignLoc = null;\n        }\n\n        if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startPos) {\n          this.checkDestructuringPrivate(refExpressionErrors);\n          refExpressionErrors.privateKeyLoc = null;\n        }\n      } else {\n        node.left = left;\n      }\n\n      this.checkLVal(left, \"assignment expression\");\n      this.next();\n      node.right = this.parseMaybeAssign();\n      return this.finishNode(node, \"AssignmentExpression\");\n    } else if (ownExpressionErrors) {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    return left;\n  }\n\n  parseMaybeConditional(refExpressionErrors) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprOps(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseConditional(expr, startPos, startLoc, refExpressionErrors);\n  }\n\n  parseConditional(expr, startPos, startLoc, refExpressionErrors) {\n    if (this.eat(17)) {\n      const node = this.startNodeAt(startPos, startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssignAllowIn();\n      this.expect(14);\n      node.alternate = this.parseMaybeAssign();\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n\n    return expr;\n  }\n\n  parseMaybeUnaryOrPrivate(refExpressionErrors) {\n    return this.match(134) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);\n  }\n\n  parseExprOps(refExpressionErrors) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseExprOp(expr, startPos, startLoc, -1);\n  }\n\n  parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {\n    if (this.isPrivateName(left)) {\n      const value = this.getPrivateNameSV(left);\n\n      if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {\n        this.raise(ErrorMessages.PrivateInExpectedIn, {\n          node: left\n        }, value);\n      }\n\n      this.classScope.usePrivateName(value, left.loc.start);\n    }\n\n    const op = this.state.type;\n\n    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {\n      let prec = tokenOperatorPrecedence(op);\n\n      if (prec > minPrec) {\n        if (op === 39) {\n          this.expectPlugin(\"pipelineOperator\");\n\n          if (this.state.inFSharpPipelineDirectBody) {\n            return left;\n          }\n\n          this.checkPipelineAtInfixOperator(left, leftStartLoc);\n        }\n\n        const node = this.startNodeAt(leftStartPos, leftStartLoc);\n        node.left = left;\n        node.operator = this.state.value;\n        const logical = op === 41 || op === 42;\n        const coalesce = op === 40;\n\n        if (coalesce) {\n          prec = tokenOperatorPrecedence(42);\n        }\n\n        this.next();\n\n        if (op === 39 && this.hasPlugin([\"pipelineOperator\", {\n          proposal: \"minimal\"\n        }])) {\n          if (this.state.type === 96 && this.prodParam.hasAwait) {\n            throw this.raise(ErrorMessages.UnexpectedAwaitAfterPipelineBody, {\n              at: this.state.startLoc\n            });\n          }\n        }\n\n        node.right = this.parseExprOpRightExpr(op, prec);\n        this.finishNode(node, logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\");\n        const nextOp = this.state.type;\n\n        if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {\n          throw this.raise(ErrorMessages.MixingCoalesceWithLogical, {\n            at: this.state.startLoc\n          });\n        }\n\n        return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);\n      }\n    }\n\n    return left;\n  }\n\n  parseExprOpRightExpr(op, prec) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n\n    switch (op) {\n      case 39:\n        switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n          case \"hack\":\n            return this.withTopicBindingContext(() => {\n              return this.parseHackPipeBody();\n            });\n\n          case \"smart\":\n            return this.withTopicBindingContext(() => {\n              if (this.prodParam.hasYield && this.isContextual(105)) {\n                throw this.raise(ErrorMessages.PipeBodyIsTighter, {\n                  at: this.state.startLoc\n                }, this.state.value);\n              }\n\n              return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc);\n            });\n\n          case \"fsharp\":\n            return this.withSoloAwaitPermittingContext(() => {\n              return this.parseFSharpPipelineBody(prec);\n            });\n        }\n\n      default:\n        return this.parseExprOpBaseRightExpr(op, prec);\n    }\n  }\n\n  parseExprOpBaseRightExpr(op, prec) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);\n  }\n\n  parseHackPipeBody() {\n    var _body$extra;\n\n    const {\n      startLoc\n    } = this.state;\n    const body = this.parseMaybeAssign();\n\n    if (invalidHackPipeBodies.has(body.type) && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {\n      this.raise(ErrorMessages.PipeUnparenthesizedBody, {\n        at: startLoc\n      }, invalidHackPipeBodies.get(body.type));\n    }\n\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(ErrorMessages.PipeTopicUnused, {\n        at: startLoc\n      });\n    }\n\n    return body;\n  }\n\n  checkExponentialAfterUnary(node) {\n    if (this.match(57)) {\n      this.raise(ErrorMessages.UnexpectedTokenUnaryExponentiation, {\n        node: node.argument\n      });\n    }\n  }\n\n  parseMaybeUnary(refExpressionErrors, sawUnary) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const isAwait = this.isContextual(96);\n\n    if (isAwait && this.isAwaitAllowed()) {\n      this.next();\n      const expr = this.parseAwait(startPos, startLoc);\n      if (!sawUnary) this.checkExponentialAfterUnary(expr);\n      return expr;\n    }\n\n    const update = this.match(34);\n    const node = this.startNode();\n\n    if (tokenIsPrefix(this.state.type)) {\n      node.operator = this.state.value;\n      node.prefix = true;\n\n      if (this.match(72)) {\n        this.expectPlugin(\"throwExpressions\");\n      }\n\n      const isDelete = this.match(89);\n      this.next();\n      node.argument = this.parseMaybeUnary(null, true);\n      this.checkExpressionErrors(refExpressionErrors, true);\n\n      if (this.state.strict && isDelete) {\n        const arg = node.argument;\n\n        if (arg.type === \"Identifier\") {\n          this.raise(ErrorMessages.StrictDelete, {\n            node\n          });\n        } else if (this.hasPropertyAsPrivateName(arg)) {\n          this.raise(ErrorMessages.DeletePrivateField, {\n            node\n          });\n        }\n      }\n\n      if (!update) {\n        if (!sawUnary) this.checkExponentialAfterUnary(node);\n        return this.finishNode(node, \"UnaryExpression\");\n      }\n    }\n\n    const expr = this.parseUpdate(node, update, refExpressionErrors);\n\n    if (isAwait) {\n      const {\n        type\n      } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);\n\n      if (startsExpr && !this.isAmbiguousAwait()) {\n        this.raiseOverwrite(startLoc, ErrorMessages.AwaitNotInAsyncContext);\n        return this.parseAwait(startPos, startLoc);\n      }\n    }\n\n    return expr;\n  }\n\n  parseUpdate(node, update, refExpressionErrors) {\n    if (update) {\n      this.checkLVal(node.argument, \"prefix operation\");\n      return this.finishNode(node, \"UpdateExpression\");\n    }\n\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    let expr = this.parseExprSubscripts(refExpressionErrors);\n    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n\n    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt(startPos, startLoc);\n      node.operator = this.state.value;\n      node.prefix = false;\n      node.argument = expr;\n      this.checkLVal(expr, \"postfix operation\");\n      this.next();\n      expr = this.finishNode(node, \"UpdateExpression\");\n    }\n\n    return expr;\n  }\n\n  parseExprSubscripts(refExpressionErrors) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprAtom(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseSubscripts(expr, startPos, startLoc);\n  }\n\n  parseSubscripts(base, startPos, startLoc, noCalls) {\n    const state = {\n      optionalChainMember: false,\n      maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n      stop: false\n    };\n\n    do {\n      base = this.parseSubscript(base, startPos, startLoc, noCalls, state);\n      state.maybeAsyncArrow = false;\n    } while (!state.stop);\n\n    return base;\n  }\n\n  parseSubscript(base, startPos, startLoc, noCalls, state) {\n    const {\n      type\n    } = this.state;\n\n    if (!noCalls && type === 15) {\n      return this.parseBind(base, startPos, startLoc, noCalls, state);\n    } else if (tokenIsTemplate(type)) {\n      return this.parseTaggedTemplateExpression(base, startPos, startLoc, state);\n    }\n\n    let optional = false;\n\n    if (type === 18) {\n      if (noCalls && this.lookaheadCharCode() === 40) {\n        state.stop = true;\n        return base;\n      }\n\n      state.optionalChainMember = optional = true;\n      this.next();\n    }\n\n    if (!noCalls && this.match(10)) {\n      return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional);\n    } else {\n      const computed = this.eat(0);\n\n      if (computed || optional || this.eat(16)) {\n        return this.parseMember(base, startPos, startLoc, state, computed, optional);\n      } else {\n        state.stop = true;\n        return base;\n      }\n    }\n  }\n\n  parseMember(base, startPos, startLoc, state, computed, optional) {\n    const node = this.startNodeAt(startPos, startLoc);\n    node.object = base;\n    node.computed = computed;\n\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(3);\n    } else if (this.match(134)) {\n      if (base.type === \"Super\") {\n        this.raise(ErrorMessages.SuperPrivateField, {\n          at: startLoc\n        });\n      }\n\n      this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n      node.property = this.parsePrivateName();\n    } else {\n      node.property = this.parseIdentifier(true);\n    }\n\n    if (state.optionalChainMember) {\n      node.optional = optional;\n      return this.finishNode(node, \"OptionalMemberExpression\");\n    } else {\n      return this.finishNode(node, \"MemberExpression\");\n    }\n  }\n\n  parseBind(base, startPos, startLoc, noCalls, state) {\n    const node = this.startNodeAt(startPos, startLoc);\n    node.object = base;\n    this.next();\n    node.callee = this.parseNoCallExpr();\n    state.stop = true;\n    return this.parseSubscripts(this.finishNode(node, \"BindExpression\"), startPos, startLoc, noCalls);\n  }\n\n  parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) {\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    let refExpressionErrors = null;\n    this.state.maybeInArrowParameters = true;\n    this.next();\n    let node = this.startNodeAt(startPos, startLoc);\n    node.callee = base;\n    const {\n      maybeAsyncArrow,\n      optionalChainMember\n    } = state;\n\n    if (maybeAsyncArrow) {\n      this.expressionScope.enter(newAsyncArrowScope());\n      refExpressionErrors = new ExpressionErrors();\n    }\n\n    if (optionalChainMember) {\n      node.optional = optional;\n    }\n\n    if (optional) {\n      node.arguments = this.parseCallExpressionArguments(11);\n    } else {\n      node.arguments = this.parseCallExpressionArguments(11, base.type === \"Import\", base.type !== \"Super\", node, refExpressionErrors);\n    }\n\n    this.finishCallExpression(node, optionalChainMember);\n\n    if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n      state.stop = true;\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);\n    } else {\n      if (maybeAsyncArrow) {\n        this.checkExpressionErrors(refExpressionErrors, true);\n        this.expressionScope.exit();\n      }\n\n      this.toReferencedArguments(node);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node;\n  }\n\n  toReferencedArguments(node, isParenthesizedExpr) {\n    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n  }\n\n  parseTaggedTemplateExpression(base, startPos, startLoc, state) {\n    const node = this.startNodeAt(startPos, startLoc);\n    node.tag = base;\n    node.quasi = this.parseTemplate(true);\n\n    if (state.optionalChainMember) {\n      this.raise(ErrorMessages.OptionalChainingNoTemplate, {\n        at: startLoc\n      });\n    }\n\n    return this.finishNode(node, \"TaggedTemplateExpression\");\n  }\n\n  atPossibleAsyncArrow(base) {\n    return base.type === \"Identifier\" && base.name === \"async\" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;\n  }\n\n  finishCallExpression(node, optional) {\n    if (node.callee.type === \"Import\") {\n      if (node.arguments.length === 2) {\n        {\n          if (!this.hasPlugin(\"moduleAttributes\")) {\n            this.expectPlugin(\"importAssertions\");\n          }\n        }\n      }\n\n      if (node.arguments.length === 0 || node.arguments.length > 2) {\n        this.raise(ErrorMessages.ImportCallArity, {\n          node\n        }, this.hasPlugin(\"importAssertions\") || this.hasPlugin(\"moduleAttributes\") ? \"one or two arguments\" : \"one argument\");\n      } else {\n        for (const arg of node.arguments) {\n          if (arg.type === \"SpreadElement\") {\n            this.raise(ErrorMessages.ImportCallSpreadArgument, {\n              node: arg\n            });\n          }\n        }\n      }\n    }\n\n    return this.finishNode(node, optional ? \"OptionalCallExpression\" : \"CallExpression\");\n  }\n\n  parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {\n    const elts = [];\n    let first = true;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12);\n\n        if (this.match(close)) {\n          if (dynamicImport && !this.hasPlugin(\"importAssertions\") && !this.hasPlugin(\"moduleAttributes\")) {\n            this.raise(ErrorMessages.ImportCallArgumentTrailingComma, {\n              at: this.state.lastTokStartLoc\n            });\n          }\n\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));\n    }\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return elts;\n  }\n\n  shouldParseAsyncArrow() {\n    return this.match(19) && !this.canInsertSemicolon();\n  }\n\n  parseAsyncArrowFromCallExpression(node, call) {\n    var _call$extra;\n\n    this.resetPreviousNodeTrailingComments(call);\n    this.expect(19);\n    this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);\n\n    if (call.innerComments) {\n      setInnerComments(node, call.innerComments);\n    }\n\n    if (call.callee.trailingComments) {\n      setInnerComments(node, call.callee.trailingComments);\n    }\n\n    return node;\n  }\n\n  parseNoCallExpr() {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n  }\n\n  parseExprAtom(refExpressionErrors) {\n    let node;\n    const {\n      type\n    } = this.state;\n\n    switch (type) {\n      case 79:\n        return this.parseSuper();\n\n      case 83:\n        node = this.startNode();\n        this.next();\n\n        if (this.match(16)) {\n          return this.parseImportMetaProperty(node);\n        }\n\n        if (!this.match(10)) {\n          this.raise(ErrorMessages.UnsupportedImport, {\n            at: this.state.lastTokStartLoc\n          });\n        }\n\n        return this.finishNode(node, \"Import\");\n\n      case 78:\n        node = this.startNode();\n        this.next();\n        return this.finishNode(node, \"ThisExpression\");\n\n      case 90:\n        {\n          return this.parseDo(this.startNode(), false);\n        }\n\n      case 56:\n      case 31:\n        {\n          this.readRegexp();\n          return this.parseRegExpLiteral(this.state.value);\n        }\n\n      case 130:\n        return this.parseNumericLiteral(this.state.value);\n\n      case 131:\n        return this.parseBigIntLiteral(this.state.value);\n\n      case 132:\n        return this.parseDecimalLiteral(this.state.value);\n\n      case 129:\n        return this.parseStringLiteral(this.state.value);\n\n      case 84:\n        return this.parseNullLiteral();\n\n      case 85:\n        return this.parseBooleanLiteral(true);\n\n      case 86:\n        return this.parseBooleanLiteral(false);\n\n      case 10:\n        {\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          return this.parseParenAndDistinguishExpression(canBeArrow);\n        }\n\n      case 2:\n      case 1:\n        {\n          return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);\n        }\n\n      case 0:\n        {\n          return this.parseArrayLike(3, true, false, refExpressionErrors);\n        }\n\n      case 6:\n      case 7:\n        {\n          return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);\n        }\n\n      case 5:\n        {\n          return this.parseObjectLike(8, false, false, refExpressionErrors);\n        }\n\n      case 68:\n        return this.parseFunctionOrFunctionSent();\n\n      case 26:\n        this.parseDecorators();\n\n      case 80:\n        node = this.startNode();\n        this.takeDecorators(node);\n        return this.parseClass(node, false);\n\n      case 77:\n        return this.parseNewOrNewTarget();\n\n      case 25:\n      case 24:\n        return this.parseTemplate(false);\n\n      case 15:\n        {\n          node = this.startNode();\n          this.next();\n          node.object = null;\n          const callee = node.callee = this.parseNoCallExpr();\n\n          if (callee.type === \"MemberExpression\") {\n            return this.finishNode(node, \"BindExpression\");\n          } else {\n            throw this.raise(ErrorMessages.UnsupportedBind, {\n              node: callee\n            });\n          }\n        }\n\n      case 134:\n        {\n          this.raise(ErrorMessages.PrivateInExpectedIn, {\n            at: this.state.startLoc\n          }, this.state.value);\n          return this.parsePrivateName();\n        }\n\n      case 33:\n        {\n          return this.parseTopicReferenceThenEqualsSign(54, \"%\");\n        }\n\n      case 32:\n        {\n          return this.parseTopicReferenceThenEqualsSign(44, \"^\");\n        }\n\n      case 37:\n      case 38:\n        {\n          return this.parseTopicReference(\"hack\");\n        }\n\n      case 44:\n      case 54:\n      case 27:\n        {\n          const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n          if (pipeProposal) {\n            return this.parseTopicReference(pipeProposal);\n          } else {\n            throw this.unexpected();\n          }\n        }\n\n      case 47:\n        {\n          const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n\n          if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {\n            this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n            break;\n          } else {\n            throw this.unexpected();\n          }\n        }\n\n      default:\n        if (tokenIsIdentifier(type)) {\n          if (this.isContextual(123) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) {\n            return this.parseModuleExpression();\n          }\n\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          const containsEsc = this.state.containsEsc;\n          const id = this.parseIdentifier();\n\n          if (!containsEsc && id.name === \"async\" && !this.canInsertSemicolon()) {\n            const {\n              type\n            } = this.state;\n\n            if (type === 68) {\n              this.resetPreviousNodeTrailingComments(id);\n              this.next();\n              return this.parseFunction(this.startNodeAtNode(id), undefined, true);\n            } else if (tokenIsIdentifier(type)) {\n              if (this.lookaheadCharCode() === 61) {\n                return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));\n              } else {\n                return id;\n              }\n            } else if (type === 90) {\n              this.resetPreviousNodeTrailingComments(id);\n              return this.parseDo(this.startNodeAtNode(id), true);\n            }\n          }\n\n          if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {\n            this.next();\n            return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);\n          }\n\n          return id;\n        } else {\n          throw this.unexpected();\n        }\n\n    }\n  }\n\n  parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {\n    const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n    if (pipeProposal) {\n      this.state.type = topicTokenType;\n      this.state.value = topicTokenValue;\n      this.state.pos--;\n      this.state.end--;\n      this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n      return this.parseTopicReference(pipeProposal);\n    } else {\n      throw this.unexpected();\n    }\n  }\n\n  parseTopicReference(pipeProposal) {\n    const node = this.startNode();\n    const startLoc = this.state.startLoc;\n    const tokenType = this.state.type;\n    this.next();\n    return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n  }\n\n  finishTopicReference(node, startLoc, pipeProposal, tokenType) {\n    if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {\n      const nodeType = pipeProposal === \"smart\" ? \"PipelinePrimaryTopicReference\" : \"TopicReference\";\n\n      if (!this.topicReferenceIsAllowedInCurrentContext()) {\n        this.raise(pipeProposal === \"smart\" ? ErrorMessages.PrimaryTopicNotAllowed : ErrorMessages.PipeTopicUnbound, {\n          at: startLoc\n        });\n      }\n\n      this.registerTopicReference();\n      return this.finishNode(node, nodeType);\n    } else {\n      throw this.raise(ErrorMessages.PipeTopicUnconfiguredToken, {\n        at: startLoc\n      }, tokenLabelName(tokenType));\n    }\n  }\n\n  testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {\n    switch (pipeProposal) {\n      case \"hack\":\n        {\n          return this.hasPlugin([\"pipelineOperator\", {\n            topicToken: tokenLabelName(tokenType)\n          }]);\n        }\n\n      case \"smart\":\n        return tokenType === 27;\n\n      default:\n        throw this.raise(ErrorMessages.PipeTopicRequiresHackPipes, {\n          at: startLoc\n        });\n    }\n  }\n\n  parseAsyncArrowUnaryFunction(node) {\n    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n    const params = [this.parseIdentifier()];\n    this.prodParam.exit();\n\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(ErrorMessages.LineTerminatorBeforeArrow, {\n        at: this.state.curPosition()\n      });\n    }\n\n    this.expect(19);\n    this.parseArrowExpression(node, params, true);\n    return node;\n  }\n\n  parseDo(node, isAsync) {\n    this.expectPlugin(\"doExpressions\");\n\n    if (isAsync) {\n      this.expectPlugin(\"asyncDoExpressions\");\n    }\n\n    node.async = isAsync;\n    this.next();\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n\n    if (isAsync) {\n      this.prodParam.enter(PARAM_AWAIT);\n      node.body = this.parseBlock();\n      this.prodParam.exit();\n    } else {\n      node.body = this.parseBlock();\n    }\n\n    this.state.labels = oldLabels;\n    return this.finishNode(node, \"DoExpression\");\n  }\n\n  parseSuper() {\n    const node = this.startNode();\n    this.next();\n\n    if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {\n      this.raise(ErrorMessages.SuperNotAllowed, {\n        node\n      });\n    } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {\n      this.raise(ErrorMessages.UnexpectedSuper, {\n        node\n      });\n    }\n\n    if (!this.match(10) && !this.match(0) && !this.match(16)) {\n      this.raise(ErrorMessages.UnsupportedSuper, {\n        node\n      });\n    }\n\n    return this.finishNode(node, \"Super\");\n  }\n\n  parsePrivateName() {\n    const node = this.startNode();\n    const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart, this.state.start + 1));\n    const name = this.state.value;\n    this.next();\n    node.id = this.createIdentifier(id, name);\n    return this.finishNode(node, \"PrivateName\");\n  }\n\n  parseFunctionOrFunctionSent() {\n    const node = this.startNode();\n    this.next();\n\n    if (this.prodParam.hasYield && this.match(16)) {\n      const meta = this.createIdentifier(this.startNodeAtNode(node), \"function\");\n      this.next();\n\n      if (this.match(102)) {\n        this.expectPlugin(\"functionSent\");\n      } else if (!this.hasPlugin(\"functionSent\")) {\n        this.unexpected();\n      }\n\n      return this.parseMetaProperty(node, meta, \"sent\");\n    }\n\n    return this.parseFunction(node);\n  }\n\n  parseMetaProperty(node, meta, propertyName) {\n    node.meta = meta;\n    const containsEsc = this.state.containsEsc;\n    node.property = this.parseIdentifier(true);\n\n    if (node.property.name !== propertyName || containsEsc) {\n      this.raise(ErrorMessages.UnsupportedMetaProperty, {\n        node: node.property\n      }, meta.name, propertyName);\n    }\n\n    return this.finishNode(node, \"MetaProperty\");\n  }\n\n  parseImportMetaProperty(node) {\n    const id = this.createIdentifier(this.startNodeAtNode(node), \"import\");\n    this.next();\n\n    if (this.isContextual(100)) {\n      if (!this.inModule) {\n        this.raise(SourceTypeModuleErrorMessages.ImportMetaOutsideModule, {\n          node: id\n        });\n      }\n\n      this.sawUnambiguousESM = true;\n    }\n\n    return this.parseMetaProperty(node, id, \"meta\");\n  }\n\n  parseLiteralAtNode(value, type, node) {\n    this.addExtra(node, \"rawValue\", value);\n    this.addExtra(node, \"raw\", this.input.slice(node.start, this.state.end));\n    node.value = value;\n    this.next();\n    return this.finishNode(node, type);\n  }\n\n  parseLiteral(value, type) {\n    const node = this.startNode();\n    return this.parseLiteralAtNode(value, type, node);\n  }\n\n  parseStringLiteral(value) {\n    return this.parseLiteral(value, \"StringLiteral\");\n  }\n\n  parseNumericLiteral(value) {\n    return this.parseLiteral(value, \"NumericLiteral\");\n  }\n\n  parseBigIntLiteral(value) {\n    return this.parseLiteral(value, \"BigIntLiteral\");\n  }\n\n  parseDecimalLiteral(value) {\n    return this.parseLiteral(value, \"DecimalLiteral\");\n  }\n\n  parseRegExpLiteral(value) {\n    const node = this.parseLiteral(value.value, \"RegExpLiteral\");\n    node.pattern = value.pattern;\n    node.flags = value.flags;\n    return node;\n  }\n\n  parseBooleanLiteral(value) {\n    const node = this.startNode();\n    node.value = value;\n    this.next();\n    return this.finishNode(node, \"BooleanLiteral\");\n  }\n\n  parseNullLiteral() {\n    const node = this.startNode();\n    this.next();\n    return this.finishNode(node, \"NullLiteral\");\n  }\n\n  parseParenAndDistinguishExpression(canBeArrow) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    let val;\n    this.next();\n    this.expressionScope.enter(newArrowHeadScope());\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.maybeInArrowParameters = true;\n    this.state.inFSharpPipelineDirectBody = false;\n    const innerStartPos = this.state.start;\n    const innerStartLoc = this.state.startLoc;\n    const exprList = [];\n    const refExpressionErrors = new ExpressionErrors();\n    let first = true;\n    let spreadStartLoc;\n    let optionalCommaStartLoc;\n\n    while (!this.match(11)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);\n\n        if (this.match(11)) {\n          optionalCommaStartLoc = this.state.startLoc;\n          break;\n        }\n      }\n\n      if (this.match(21)) {\n        const spreadNodeStartPos = this.state.start;\n        const spreadNodeStartLoc = this.state.startLoc;\n        spreadStartLoc = this.state.startLoc;\n        exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));\n\n        if (!this.checkCommaAfterRest(41)) {\n          break;\n        }\n      } else {\n        exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));\n      }\n    }\n\n    const innerEndLoc = this.state.lastTokEndLoc;\n    this.expect(11);\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let arrowNode = this.startNodeAt(startPos, startLoc);\n\n    if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      this.parseArrowExpression(arrowNode, exprList, false);\n      return arrowNode;\n    }\n\n    this.expressionScope.exit();\n\n    if (!exprList.length) {\n      this.unexpected(this.state.lastTokStartLoc);\n    }\n\n    if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n    if (spreadStartLoc) this.unexpected(spreadStartLoc);\n    this.checkExpressionErrors(refExpressionErrors, true);\n    this.toReferencedListDeep(exprList, true);\n\n    if (exprList.length > 1) {\n      val = this.startNodeAt(innerStartPos, innerStartLoc);\n      val.expressions = exprList;\n      this.finishNode(val, \"SequenceExpression\");\n      this.resetEndLocation(val, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n\n    if (!this.options.createParenthesizedExpressions) {\n      this.addExtra(val, \"parenthesized\", true);\n      this.addExtra(val, \"parenStart\", startPos);\n      this.takeSurroundingComments(val, startPos, this.state.lastTokEndLoc.index);\n      return val;\n    }\n\n    const parenExpression = this.startNodeAt(startPos, startLoc);\n    parenExpression.expression = val;\n    this.finishNode(parenExpression, \"ParenthesizedExpression\");\n    return parenExpression;\n  }\n\n  shouldParseArrow(params) {\n    return !this.canInsertSemicolon();\n  }\n\n  parseArrow(node) {\n    if (this.eat(19)) {\n      return node;\n    }\n  }\n\n  parseParenItem(node, startPos, startLoc) {\n    return node;\n  }\n\n  parseNewOrNewTarget() {\n    const node = this.startNode();\n    this.next();\n\n    if (this.match(16)) {\n      const meta = this.createIdentifier(this.startNodeAtNode(node), \"new\");\n      this.next();\n      const metaProp = this.parseMetaProperty(node, meta, \"target\");\n\n      if (!this.scope.inNonArrowFunction && !this.scope.inClass) {\n        this.raise(ErrorMessages.UnexpectedNewTarget, {\n          node: metaProp\n        });\n      }\n\n      return metaProp;\n    }\n\n    return this.parseNew(node);\n  }\n\n  parseNew(node) {\n    node.callee = this.parseNoCallExpr();\n\n    if (node.callee.type === \"Import\") {\n      this.raise(ErrorMessages.ImportCallNotNewExpression, {\n        node: node.callee\n      });\n    } else if (this.isOptionalChain(node.callee)) {\n      this.raise(ErrorMessages.OptionalChainingNoNew, {\n        at: this.state.lastTokEndLoc\n      });\n    } else if (this.eat(18)) {\n      this.raise(ErrorMessages.OptionalChainingNoNew, {\n        at: this.state.startLoc\n      });\n    }\n\n    this.parseNewArguments(node);\n    return this.finishNode(node, \"NewExpression\");\n  }\n\n  parseNewArguments(node) {\n    if (this.eat(10)) {\n      const args = this.parseExprList(11);\n      this.toReferencedList(args);\n      node.arguments = args;\n    } else {\n      node.arguments = [];\n    }\n  }\n\n  parseTemplateElement(isTagged) {\n    const {\n      start,\n      startLoc,\n      end,\n      value\n    } = this.state;\n    const elemStart = start + 1;\n    const elem = this.startNodeAt(elemStart, createPositionWithColumnOffset(startLoc, 1));\n\n    if (value === null) {\n      if (!isTagged) {\n        this.raise(ErrorMessages.InvalidEscapeSequenceTemplate, {\n          at: createPositionWithColumnOffset(startLoc, 2)\n        });\n      }\n    }\n\n    const isTail = this.match(24);\n    const endOffset = isTail ? -1 : -2;\n    const elemEnd = end + endOffset;\n    elem.value = {\n      raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: value === null ? null : value.slice(1, endOffset)\n    };\n    elem.tail = isTail;\n    this.next();\n    this.finishNode(elem, \"TemplateElement\");\n    this.resetEndLocation(elem, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));\n    return elem;\n  }\n\n  parseTemplate(isTagged) {\n    const node = this.startNode();\n    node.expressions = [];\n    let curElt = this.parseTemplateElement(isTagged);\n    node.quasis = [curElt];\n\n    while (!curElt.tail) {\n      node.expressions.push(this.parseTemplateSubstitution());\n      this.readTemplateContinuation();\n      node.quasis.push(curElt = this.parseTemplateElement(isTagged));\n    }\n\n    return this.finishNode(node, \"TemplateLiteral\");\n  }\n\n  parseTemplateSubstitution() {\n    return this.parseExpression();\n  }\n\n  parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {\n    if (isRecord) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const propHash = Object.create(null);\n    let first = true;\n    const node = this.startNode();\n    node.properties = [];\n    this.next();\n\n    while (!this.match(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12);\n\n        if (this.match(close)) {\n          this.addTrailingCommaExtraToNode(node);\n          break;\n        }\n      }\n\n      let prop;\n\n      if (isPattern) {\n        prop = this.parseBindingProperty();\n      } else {\n        prop = this.parsePropertyDefinition(refExpressionErrors);\n        this.checkProto(prop, isRecord, propHash, refExpressionErrors);\n      }\n\n      if (isRecord && !this.isObjectProperty(prop) && prop.type !== \"SpreadElement\") {\n        this.raise(ErrorMessages.InvalidRecordProperty, {\n          node: prop\n        });\n      }\n\n      if (prop.shorthand) {\n        this.addExtra(prop, \"shorthand\", true);\n      }\n\n      node.properties.push(prop);\n    }\n\n    this.next();\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let type = \"ObjectExpression\";\n\n    if (isPattern) {\n      type = \"ObjectPattern\";\n    } else if (isRecord) {\n      type = \"RecordExpression\";\n    }\n\n    return this.finishNode(node, type);\n  }\n\n  addTrailingCommaExtraToNode(node) {\n    this.addExtra(node, \"trailingComma\", this.state.lastTokStart);\n    this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n  }\n\n  maybeAsyncOrAccessorProp(prop) {\n    return !prop.computed && prop.key.type === \"Identifier\" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));\n  }\n\n  parsePropertyDefinition(refExpressionErrors) {\n    let decorators = [];\n\n    if (this.match(26)) {\n      if (this.hasPlugin(\"decorators\")) {\n        this.raise(ErrorMessages.UnsupportedPropertyDecorator, {\n          at: this.state.startLoc\n        });\n      }\n\n      while (this.match(26)) {\n        decorators.push(this.parseDecorator());\n      }\n    }\n\n    const prop = this.startNode();\n    let isAsync = false;\n    let isAccessor = false;\n    let startPos;\n    let startLoc;\n\n    if (this.match(21)) {\n      if (decorators.length) this.unexpected();\n      return this.parseSpread();\n    }\n\n    if (decorators.length) {\n      prop.decorators = decorators;\n      decorators = [];\n    }\n\n    prop.method = false;\n\n    if (refExpressionErrors) {\n      startPos = this.state.start;\n      startLoc = this.state.startLoc;\n    }\n\n    let isGenerator = this.eat(55);\n    this.parsePropertyNamePrefixOperator(prop);\n    const containsEsc = this.state.containsEsc;\n    const key = this.parsePropertyName(prop, refExpressionErrors);\n\n    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n      const keyName = key.name;\n\n      if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n        isAsync = true;\n        this.resetPreviousNodeTrailingComments(key);\n        isGenerator = this.eat(55);\n        this.parsePropertyName(prop);\n      }\n\n      if (keyName === \"get\" || keyName === \"set\") {\n        isAccessor = true;\n        this.resetPreviousNodeTrailingComments(key);\n        prop.kind = keyName;\n\n        if (this.match(55)) {\n          isGenerator = true;\n          this.raise(ErrorMessages.AccessorIsGenerator, {\n            at: this.state.curPosition()\n          }, keyName);\n          this.next();\n        }\n\n        this.parsePropertyName(prop);\n      }\n    }\n\n    this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);\n    return prop;\n  }\n\n  getGetterSetterExpectedParamCount(method) {\n    return method.kind === \"get\" ? 0 : 1;\n  }\n\n  getObjectOrClassMethodParams(method) {\n    return method.params;\n  }\n\n  checkGetterSetterParams(method) {\n    var _params;\n\n    const paramCount = this.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length !== paramCount) {\n      this.raise(method.kind === \"get\" ? ErrorMessages.BadGetterArity : ErrorMessages.BadSetterArity, {\n        node: method\n      });\n    }\n\n    if (method.kind === \"set\" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === \"RestElement\") {\n      this.raise(ErrorMessages.BadSetterRestParameter, {\n        node: method\n      });\n    }\n  }\n\n  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n    if (isAccessor) {\n      this.parseMethod(prop, isGenerator, false, false, false, \"ObjectMethod\");\n      this.checkGetterSetterParams(prop);\n      return prop;\n    }\n\n    if (isAsync || isGenerator || this.match(10)) {\n      if (isPattern) this.unexpected();\n      prop.kind = \"method\";\n      prop.method = true;\n      return this.parseMethod(prop, isGenerator, isAsync, false, false, \"ObjectMethod\");\n    }\n  }\n\n  parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n    prop.shorthand = false;\n\n    if (this.eat(14)) {\n      prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n\n    if (!prop.computed && prop.key.type === \"Identifier\") {\n      this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n      } else if (this.match(29)) {\n        const shorthandAssignLoc = this.state.startLoc;\n\n        if (refExpressionErrors != null) {\n          if (refExpressionErrors.shorthandAssignLoc === null) {\n            refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n          }\n        } else {\n          this.raise(ErrorMessages.InvalidCoverInitializedName, {\n            at: shorthandAssignLoc\n          });\n        }\n\n        prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));\n      } else {\n        prop.value = cloneIdentifier(prop.key);\n      }\n\n      prop.shorthand = true;\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n  }\n\n  parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n    const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);\n    if (!node) this.unexpected();\n    return node;\n  }\n\n  parsePropertyName(prop, refExpressionErrors) {\n    if (this.eat(0)) {\n      prop.computed = true;\n      prop.key = this.parseMaybeAssignAllowIn();\n      this.expect(3);\n    } else {\n      const {\n        type,\n        value\n      } = this.state;\n      let key;\n\n      if (tokenIsKeywordOrIdentifier(type)) {\n        key = this.parseIdentifier(true);\n      } else {\n        switch (type) {\n          case 130:\n            key = this.parseNumericLiteral(value);\n            break;\n\n          case 129:\n            key = this.parseStringLiteral(value);\n            break;\n\n          case 131:\n            key = this.parseBigIntLiteral(value);\n            break;\n\n          case 132:\n            key = this.parseDecimalLiteral(value);\n            break;\n\n          case 134:\n            {\n              const privateKeyLoc = this.state.startLoc;\n\n              if (refExpressionErrors != null) {\n                if (refExpressionErrors.privateKeyLoc === null) {\n                  refExpressionErrors.privateKeyLoc = privateKeyLoc;\n                }\n              } else {\n                this.raise(ErrorMessages.UnexpectedPrivateField, {\n                  at: privateKeyLoc\n                });\n              }\n\n              key = this.parsePrivateName();\n              break;\n            }\n\n          default:\n            throw this.unexpected();\n        }\n      }\n\n      prop.key = key;\n\n      if (type !== 134) {\n        prop.computed = false;\n      }\n    }\n\n    return prop.key;\n  }\n\n  initFunction(node, isAsync) {\n    node.id = null;\n    node.generator = false;\n    node.async = !!isAsync;\n  }\n\n  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n    this.initFunction(node, isAsync);\n    node.generator = !!isGenerator;\n    const allowModifiers = isConstructor;\n    this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n    this.parseFunctionParams(node, allowModifiers);\n    this.parseFunctionBodyAndFinish(node, type, true);\n    this.prodParam.exit();\n    this.scope.exit();\n    return node;\n  }\n\n  parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {\n    if (isTuple) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const node = this.startNode();\n    this.next();\n    node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return this.finishNode(node, isTuple ? \"TupleExpression\" : \"ArrayExpression\");\n  }\n\n  parseArrowExpression(node, params, isAsync, trailingCommaLoc) {\n    this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);\n    let flags = functionFlags(isAsync, false);\n\n    if (!this.match(5) && this.prodParam.hasIn) {\n      flags |= PARAM_IN;\n    }\n\n    this.prodParam.enter(flags);\n    this.initFunction(node, isAsync);\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n    if (params) {\n      this.state.maybeInArrowParameters = true;\n      this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n    }\n\n    this.state.maybeInArrowParameters = false;\n    this.parseFunctionBody(node, true);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return this.finishNode(node, \"ArrowFunctionExpression\");\n  }\n\n  setArrowFunctionParameters(node, params, trailingCommaLoc) {\n    node.params = this.toAssignableList(params, trailingCommaLoc, false);\n  }\n\n  parseFunctionBodyAndFinish(node, type, isMethod = false) {\n    this.parseFunctionBody(node, false, isMethod);\n    this.finishNode(node, type);\n  }\n\n  parseFunctionBody(node, allowExpression, isMethod = false) {\n    const isExpression = allowExpression && !this.match(5);\n    this.expressionScope.enter(newExpressionScope());\n\n    if (isExpression) {\n      node.body = this.parseMaybeAssign();\n      this.checkParams(node, false, allowExpression, false);\n    } else {\n      const oldStrict = this.state.strict;\n      const oldLabels = this.state.labels;\n      this.state.labels = [];\n      this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);\n      node.body = this.parseBlock(true, false, hasStrictModeDirective => {\n        const nonSimple = !this.isSimpleParamList(node.params);\n\n        if (hasStrictModeDirective && nonSimple) {\n          const errorOrigin = (node.kind === \"method\" || node.kind === \"constructor\") && !!node.key ? {\n            at: node.key.loc.end\n          } : {\n            node\n          };\n          this.raise(ErrorMessages.IllegalLanguageModeDirective, errorOrigin);\n        }\n\n        const strictModeChanged = !oldStrict && this.state.strict;\n        this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);\n\n        if (this.state.strict && node.id) {\n          this.checkLVal(node.id, \"function name\", BIND_OUTSIDE, undefined, undefined, strictModeChanged);\n        }\n      });\n      this.prodParam.exit();\n      this.state.labels = oldLabels;\n    }\n\n    this.expressionScope.exit();\n  }\n\n  isSimpleParamList(params) {\n    for (let i = 0, len = params.length; i < len; i++) {\n      if (params[i].type !== \"Identifier\") return false;\n    }\n\n    return true;\n  }\n\n  checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n    const checkClashes = new Set();\n\n    for (const param of node.params) {\n      this.checkLVal(param, \"function parameter list\", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged);\n    }\n  }\n\n  parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {\n    const elts = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12);\n\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n    }\n\n    return elts;\n  }\n\n  parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {\n    let elt;\n\n    if (this.match(12)) {\n      if (!allowEmpty) {\n        this.raise(ErrorMessages.UnexpectedToken, {\n          at: this.state.curPosition()\n        }, \",\");\n      }\n\n      elt = null;\n    } else if (this.match(21)) {\n      const spreadNodeStartPos = this.state.start;\n      const spreadNodeStartLoc = this.state.startLoc;\n      elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc);\n    } else if (this.match(17)) {\n      this.expectPlugin(\"partialApplication\");\n\n      if (!allowPlaceholder) {\n        this.raise(ErrorMessages.UnexpectedArgumentPlaceholder, {\n          at: this.state.startLoc\n        });\n      }\n\n      const node = this.startNode();\n      this.next();\n      elt = this.finishNode(node, \"ArgumentPlaceholder\");\n    } else {\n      elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);\n    }\n\n    return elt;\n  }\n\n  parseIdentifier(liberal) {\n    const node = this.startNode();\n    const name = this.parseIdentifierName(node.start, liberal);\n    return this.createIdentifier(node, name);\n  }\n\n  createIdentifier(node, name) {\n    node.name = name;\n    node.loc.identifierName = name;\n    return this.finishNode(node, \"Identifier\");\n  }\n\n  parseIdentifierName(pos, liberal) {\n    let name;\n    const {\n      startLoc,\n      type\n    } = this.state;\n\n    if (tokenIsKeywordOrIdentifier(type)) {\n      name = this.state.value;\n    } else {\n      throw this.unexpected();\n    }\n\n    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n    if (liberal) {\n      if (tokenIsKeyword) {\n        this.replaceToken(128);\n      }\n    } else {\n      this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n    }\n\n    this.next();\n    return name;\n  }\n\n  checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n    if (word.length > 10) {\n      return;\n    }\n\n    if (!canBeReservedWord(word)) {\n      return;\n    }\n\n    if (word === \"yield\") {\n      if (this.prodParam.hasYield) {\n        this.raise(ErrorMessages.YieldBindingIdentifier, {\n          at: startLoc\n        });\n        return;\n      }\n    } else if (word === \"await\") {\n      if (this.prodParam.hasAwait) {\n        this.raise(ErrorMessages.AwaitBindingIdentifier, {\n          at: startLoc\n        });\n        return;\n      }\n\n      if (this.scope.inStaticBlock) {\n        this.raise(ErrorMessages.AwaitBindingIdentifierInStaticBlock, {\n          at: startLoc\n        });\n        return;\n      }\n\n      this.expressionScope.recordAsyncArrowParametersError(ErrorMessages.AwaitBindingIdentifier, startLoc);\n    } else if (word === \"arguments\") {\n      if (this.scope.inClassAndNotInNonArrowFunction) {\n        this.raise(ErrorMessages.ArgumentsInClass, {\n          at: startLoc\n        });\n        return;\n      }\n    }\n\n    if (checkKeywords && isKeyword(word)) {\n      this.raise(ErrorMessages.UnexpectedKeyword, {\n        at: startLoc\n      }, word);\n      return;\n    }\n\n    const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;\n\n    if (reservedTest(word, this.inModule)) {\n      this.raise(ErrorMessages.UnexpectedReservedWord, {\n        at: startLoc\n      }, word);\n    }\n  }\n\n  isAwaitAllowed() {\n    if (this.prodParam.hasAwait) return true;\n\n    if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {\n      return true;\n    }\n\n    return false;\n  }\n\n  parseAwait(startPos, startLoc) {\n    const node = this.startNodeAt(startPos, startLoc);\n    this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.AwaitExpressionFormalParameter);\n\n    if (this.eat(55)) {\n      this.raise(ErrorMessages.ObsoleteAwaitStar, {\n        node\n      });\n    }\n\n    if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n      if (this.isAmbiguousAwait()) {\n        this.ambiguousScriptDifferentAst = true;\n      } else {\n        this.sawUnambiguousESM = true;\n      }\n    }\n\n    if (!this.state.soloAwait) {\n      node.argument = this.parseMaybeUnary(null, true);\n    }\n\n    return this.finishNode(node, \"AwaitExpression\");\n  }\n\n  isAmbiguousAwait() {\n    if (this.hasPrecedingLineBreak()) return true;\n    const {\n      type\n    } = this.state;\n    return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 133 || type === 56 || this.hasPlugin(\"v8intrinsic\") && type === 54;\n  }\n\n  parseYield() {\n    const node = this.startNode();\n    this.expressionScope.recordParameterInitializerError(node.loc.start, ErrorMessages.YieldInParameter);\n    this.next();\n    let delegating = false;\n    let argument = null;\n\n    if (!this.hasPrecedingLineBreak()) {\n      delegating = this.eat(55);\n\n      switch (this.state.type) {\n        case 13:\n        case 135:\n        case 8:\n        case 11:\n        case 3:\n        case 9:\n        case 14:\n        case 12:\n          if (!delegating) break;\n\n        default:\n          argument = this.parseMaybeAssign();\n      }\n    }\n\n    node.delegate = delegating;\n    node.argument = argument;\n    return this.finishNode(node, \"YieldExpression\");\n  }\n\n  checkPipelineAtInfixOperator(left, leftStartLoc) {\n    if (this.hasPlugin([\"pipelineOperator\", {\n      proposal: \"smart\"\n    }])) {\n      if (left.type === \"SequenceExpression\") {\n        this.raise(ErrorMessages.PipelineHeadSequenceExpression, {\n          at: leftStartLoc\n        });\n      }\n    }\n  }\n\n  parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) {\n    const bodyNode = this.startNodeAt(startPos, startLoc);\n\n    if (this.isSimpleReference(childExpr)) {\n      bodyNode.callee = childExpr;\n      return this.finishNode(bodyNode, \"PipelineBareFunction\");\n    } else {\n      this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n      bodyNode.expression = childExpr;\n      return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n    }\n  }\n\n  isSimpleReference(expression) {\n    switch (expression.type) {\n      case \"MemberExpression\":\n        return !expression.computed && this.isSimpleReference(expression.object);\n\n      case \"Identifier\":\n        return true;\n\n      default:\n        return false;\n    }\n  }\n\n  checkSmartPipeTopicBodyEarlyErrors(startLoc) {\n    if (this.match(19)) {\n      throw this.raise(ErrorMessages.PipelineBodyNoArrow, {\n        at: this.state.startLoc\n      });\n    }\n\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(ErrorMessages.PipelineTopicUnused, {\n        at: startLoc\n      });\n    }\n  }\n\n  withTopicBindingContext(callback) {\n    const outerContextTopicState = this.state.topicContext;\n    this.state.topicContext = {\n      maxNumOfResolvableTopics: 1,\n      maxTopicIndex: null\n    };\n\n    try {\n      return callback();\n    } finally {\n      this.state.topicContext = outerContextTopicState;\n    }\n  }\n\n  withSmartMixTopicForbiddingContext(callback) {\n    if (this.hasPlugin([\"pipelineOperator\", {\n      proposal: \"smart\"\n    }])) {\n      const outerContextTopicState = this.state.topicContext;\n      this.state.topicContext = {\n        maxNumOfResolvableTopics: 0,\n        maxTopicIndex: null\n      };\n\n      try {\n        return callback();\n      } finally {\n        this.state.topicContext = outerContextTopicState;\n      }\n    } else {\n      return callback();\n    }\n  }\n\n  withSoloAwaitPermittingContext(callback) {\n    const outerContextSoloAwaitState = this.state.soloAwait;\n    this.state.soloAwait = true;\n\n    try {\n      return callback();\n    } finally {\n      this.state.soloAwait = outerContextSoloAwaitState;\n    }\n  }\n\n  allowInAnd(callback) {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToSet = PARAM_IN & ~flags;\n\n    if (prodParamToSet) {\n      this.prodParam.enter(flags | PARAM_IN);\n\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n\n    return callback();\n  }\n\n  disallowInAnd(callback) {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToClear = PARAM_IN & flags;\n\n    if (prodParamToClear) {\n      this.prodParam.enter(flags & ~PARAM_IN);\n\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n\n    return callback();\n  }\n\n  registerTopicReference() {\n    this.state.topicContext.maxTopicIndex = 0;\n  }\n\n  topicReferenceIsAllowedInCurrentContext() {\n    return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n  }\n\n  topicReferenceWasUsedInCurrentContext() {\n    return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;\n  }\n\n  parseFSharpPipelineBody(prec) {\n    const startPos = this.state.start;\n    const startLoc = this.state.startLoc;\n    this.state.potentialArrowAt = this.state.start;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = true;\n    const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, prec);\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return ret;\n  }\n\n  parseModuleExpression() {\n    this.expectPlugin(\"moduleBlocks\");\n    const node = this.startNode();\n    this.next();\n    this.eat(5);\n    const revertScopes = this.initializeScopes(true);\n    this.enterInitialScopes();\n    const program = this.startNode();\n\n    try {\n      node.body = this.parseProgram(program, 8, \"module\");\n    } finally {\n      revertScopes();\n    }\n\n    this.eat(8);\n    return this.finishNode(node, \"ModuleExpression\");\n  }\n\n  parsePropertyNamePrefixOperator(prop) {}\n\n}\n\nconst loopLabel = {\n  kind: \"loop\"\n},\n      switchLabel = {\n  kind: \"switch\"\n};\nconst FUNC_NO_FLAGS = 0b000,\n      FUNC_STATEMENT = 0b001,\n      FUNC_HANGING_STATEMENT = 0b010,\n      FUNC_NULLABLE_ID = 0b100;\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\nfunction babel7CompatTokens(tokens, input) {\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    const {\n      type\n    } = token;\n\n    if (typeof type === \"number\") {\n      {\n        if (type === 134) {\n          const {\n            loc,\n            start,\n            value,\n            end\n          } = token;\n          const hashEndPos = start + 1;\n          const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          tokens.splice(i, 1, new Token({\n            type: getExportedToken(27),\n            value: \"#\",\n            start: start,\n            end: hashEndPos,\n            startLoc: loc.start,\n            endLoc: hashEndLoc\n          }), new Token({\n            type: getExportedToken(128),\n            value: value,\n            start: hashEndPos,\n            end: end,\n            startLoc: hashEndLoc,\n            endLoc: loc.end\n          }));\n          i++;\n          continue;\n        }\n\n        if (tokenIsTemplate(type)) {\n          const {\n            loc,\n            start,\n            value,\n            end\n          } = token;\n          const backquoteEnd = start + 1;\n          const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          let startToken;\n\n          if (input.charCodeAt(start) === 96) {\n            startToken = new Token({\n              type: getExportedToken(22),\n              value: \"`\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc\n            });\n          } else {\n            startToken = new Token({\n              type: getExportedToken(8),\n              value: \"}\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc\n            });\n          }\n\n          let templateValue, templateElementEnd, templateElementEndLoc, endToken;\n\n          if (type === 24) {\n            templateElementEnd = end - 1;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n            templateValue = value === null ? null : value.slice(1, -1);\n            endToken = new Token({\n              type: getExportedToken(22),\n              value: \"`\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end\n            });\n          } else {\n            templateElementEnd = end - 2;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n            templateValue = value === null ? null : value.slice(1, -2);\n            endToken = new Token({\n              type: getExportedToken(23),\n              value: \"${\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end\n            });\n          }\n\n          tokens.splice(i, 1, startToken, new Token({\n            type: getExportedToken(20),\n            value: templateValue,\n            start: backquoteEnd,\n            end: templateElementEnd,\n            startLoc: backquoteEndLoc,\n            endLoc: templateElementEndLoc\n          }), endToken);\n          i += 2;\n          continue;\n        }\n      }\n      token.type = getExportedToken(type);\n    }\n  }\n\n  return tokens;\n}\n\nclass StatementParser extends ExpressionParser {\n  parseTopLevel(file, program) {\n    file.program = this.parseProgram(program);\n    file.comments = this.state.comments;\n\n    if (this.options.tokens) {\n      file.tokens = babel7CompatTokens(this.tokens, this.input);\n    }\n\n    return this.finishNode(file, \"File\");\n  }\n\n  parseProgram(program, end = 135, sourceType = this.options.sourceType) {\n    program.sourceType = sourceType;\n    program.interpreter = this.parseInterpreterDirective();\n    this.parseBlockBody(program, true, true, end);\n\n    if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {\n      for (const [name, loc] of Array.from(this.scope.undefinedExports)) {\n        this.raise(ErrorMessages.ModuleExportUndefined, {\n          at: loc\n        }, name);\n      }\n    }\n\n    return this.finishNode(program, \"Program\");\n  }\n\n  stmtToDirective(stmt) {\n    const directive = stmt;\n    directive.type = \"Directive\";\n    directive.value = directive.expression;\n    delete directive.expression;\n    const directiveLiteral = directive.value;\n    const expressionValue = directiveLiteral.value;\n    const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);\n    const val = directiveLiteral.value = raw.slice(1, -1);\n    this.addExtra(directiveLiteral, \"raw\", raw);\n    this.addExtra(directiveLiteral, \"rawValue\", val);\n    this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n    directiveLiteral.type = \"DirectiveLiteral\";\n    return directive;\n  }\n\n  parseInterpreterDirective() {\n    if (!this.match(28)) {\n      return null;\n    }\n\n    const node = this.startNode();\n    node.value = this.state.value;\n    this.next();\n    return this.finishNode(node, \"InterpreterDirective\");\n  }\n\n  isLet(context) {\n    if (!this.isContextual(99)) {\n      return false;\n    }\n\n    return this.isLetKeyword(context);\n  }\n\n  isLetKeyword(context) {\n    const next = this.nextTokenStart();\n    const nextCh = this.codePointAtPos(next);\n\n    if (nextCh === 92 || nextCh === 91) {\n      return true;\n    }\n\n    if (context) return false;\n    if (nextCh === 123) return true;\n\n    if (isIdentifierStart(nextCh)) {\n      keywordRelationalOperator.lastIndex = next;\n\n      if (keywordRelationalOperator.test(this.input)) {\n        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n\n        if (!isIdentifierChar(endCh) && endCh !== 92) {\n          return false;\n        }\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  parseStatement(context, topLevel) {\n    if (this.match(26)) {\n      this.parseDecorators(true);\n    }\n\n    return this.parseStatementContent(context, topLevel);\n  }\n\n  parseStatementContent(context, topLevel) {\n    let starttype = this.state.type;\n    const node = this.startNode();\n    let kind;\n\n    if (this.isLet(context)) {\n      starttype = 74;\n      kind = \"let\";\n    }\n\n    switch (starttype) {\n      case 60:\n        return this.parseBreakContinueStatement(node, true);\n\n      case 63:\n        return this.parseBreakContinueStatement(node, false);\n\n      case 64:\n        return this.parseDebuggerStatement(node);\n\n      case 90:\n        return this.parseDoStatement(node);\n\n      case 91:\n        return this.parseForStatement(node);\n\n      case 68:\n        if (this.lookaheadCharCode() === 46) break;\n\n        if (context) {\n          if (this.state.strict) {\n            this.raise(ErrorMessages.StrictFunction, {\n              at: this.state.startLoc\n            });\n          } else if (context !== \"if\" && context !== \"label\") {\n            this.raise(ErrorMessages.SloppyFunction, {\n              at: this.state.startLoc\n            });\n          }\n        }\n\n        return this.parseFunctionStatement(node, false, !context);\n\n      case 80:\n        if (context) this.unexpected();\n        return this.parseClass(node, true);\n\n      case 69:\n        return this.parseIfStatement(node);\n\n      case 70:\n        return this.parseReturnStatement(node);\n\n      case 71:\n        return this.parseSwitchStatement(node);\n\n      case 72:\n        return this.parseThrowStatement(node);\n\n      case 73:\n        return this.parseTryStatement(node);\n\n      case 75:\n      case 74:\n        kind = kind || this.state.value;\n\n        if (context && kind !== \"var\") {\n          this.raise(ErrorMessages.UnexpectedLexicalDeclaration, {\n            at: this.state.startLoc\n          });\n        }\n\n        return this.parseVarStatement(node, kind);\n\n      case 92:\n        return this.parseWhileStatement(node);\n\n      case 76:\n        return this.parseWithStatement(node);\n\n      case 5:\n        return this.parseBlock();\n\n      case 13:\n        return this.parseEmptyStatement(node);\n\n      case 83:\n        {\n          const nextTokenCharCode = this.lookaheadCharCode();\n\n          if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {\n            break;\n          }\n        }\n\n      case 82:\n        {\n          if (!this.options.allowImportExportEverywhere && !topLevel) {\n            this.raise(ErrorMessages.UnexpectedImportExport, {\n              at: this.state.startLoc\n            });\n          }\n\n          this.next();\n          let result;\n\n          if (starttype === 83) {\n            result = this.parseImport(node);\n\n            if (result.type === \"ImportDeclaration\" && (!result.importKind || result.importKind === \"value\")) {\n              this.sawUnambiguousESM = true;\n            }\n          } else {\n            result = this.parseExport(node);\n\n            if (result.type === \"ExportNamedDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportAllDeclaration\" && (!result.exportKind || result.exportKind === \"value\") || result.type === \"ExportDefaultDeclaration\") {\n              this.sawUnambiguousESM = true;\n            }\n          }\n\n          this.assertModuleNodeAllowed(node);\n          return result;\n        }\n\n      default:\n        {\n          if (this.isAsyncFunction()) {\n            if (context) {\n              this.raise(ErrorMessages.AsyncFunctionInSingleStatementContext, {\n                at: this.state.startLoc\n              });\n            }\n\n            this.next();\n            return this.parseFunctionStatement(node, true, !context);\n          }\n        }\n    }\n\n    const maybeName = this.state.value;\n    const expr = this.parseExpression();\n\n    if (tokenIsIdentifier(starttype) && expr.type === \"Identifier\" && this.eat(14)) {\n      return this.parseLabeledStatement(node, maybeName, expr, context);\n    } else {\n      return this.parseExpressionStatement(node, expr);\n    }\n  }\n\n  assertModuleNodeAllowed(node) {\n    if (!this.options.allowImportExportEverywhere && !this.inModule) {\n      this.raise(SourceTypeModuleErrorMessages.ImportOutsideModule, {\n        node\n      });\n    }\n  }\n\n  takeDecorators(node) {\n    const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n    if (decorators.length) {\n      node.decorators = decorators;\n      this.resetStartLocationFromNode(node, decorators[0]);\n      this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];\n    }\n  }\n\n  canHaveLeadingDecorator() {\n    return this.match(80);\n  }\n\n  parseDecorators(allowExport) {\n    const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n    while (this.match(26)) {\n      const decorator = this.parseDecorator();\n      currentContextDecorators.push(decorator);\n    }\n\n    if (this.match(82)) {\n      if (!allowExport) {\n        this.unexpected();\n      }\n\n      if (this.hasPlugin(\"decorators\") && !this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n        this.raise(ErrorMessages.DecoratorExportClass, {\n          at: this.state.startLoc\n        });\n      }\n    } else if (!this.canHaveLeadingDecorator()) {\n      throw this.raise(ErrorMessages.UnexpectedLeadingDecorator, {\n        at: this.state.startLoc\n      });\n    }\n  }\n\n  parseDecorator() {\n    this.expectOnePlugin([\"decorators-legacy\", \"decorators\"]);\n    const node = this.startNode();\n    this.next();\n\n    if (this.hasPlugin(\"decorators\")) {\n      this.state.decoratorStack.push([]);\n      const startPos = this.state.start;\n      const startLoc = this.state.startLoc;\n      let expr;\n\n      if (this.eat(10)) {\n        expr = this.parseExpression();\n        this.expect(11);\n      } else {\n        expr = this.parseIdentifier(false);\n\n        while (this.eat(16)) {\n          const node = this.startNodeAt(startPos, startLoc);\n          node.object = expr;\n          node.property = this.parseIdentifier(true);\n          node.computed = false;\n          expr = this.finishNode(node, \"MemberExpression\");\n        }\n      }\n\n      node.expression = this.parseMaybeDecoratorArguments(expr);\n      this.state.decoratorStack.pop();\n    } else {\n      node.expression = this.parseExprSubscripts();\n    }\n\n    return this.finishNode(node, \"Decorator\");\n  }\n\n  parseMaybeDecoratorArguments(expr) {\n    if (this.eat(10)) {\n      const node = this.startNodeAtNode(expr);\n      node.callee = expr;\n      node.arguments = this.parseCallExpressionArguments(11, false);\n      this.toReferencedList(node.arguments);\n      return this.finishNode(node, \"CallExpression\");\n    }\n\n    return expr;\n  }\n\n  parseBreakContinueStatement(node, isBreak) {\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.label = null;\n    } else {\n      node.label = this.parseIdentifier();\n      this.semicolon();\n    }\n\n    this.verifyBreakContinue(node, isBreak);\n    return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n  }\n\n  verifyBreakContinue(node, isBreak) {\n    let i;\n\n    for (i = 0; i < this.state.labels.length; ++i) {\n      const lab = this.state.labels[i];\n\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n        if (node.label && isBreak) break;\n      }\n    }\n\n    if (i === this.state.labels.length) {\n      this.raise(ErrorMessages.IllegalBreakContinue, {\n        node\n      }, isBreak ? \"break\" : \"continue\");\n    }\n  }\n\n  parseDebuggerStatement(node) {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\");\n  }\n\n  parseHeaderExpression() {\n    this.expect(10);\n    const val = this.parseExpression();\n    this.expect(11);\n    return val;\n  }\n\n  parseDoStatement(node) {\n    this.next();\n    this.state.labels.push(loopLabel);\n    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"do\"));\n    this.state.labels.pop();\n    this.expect(92);\n    node.test = this.parseHeaderExpression();\n    this.eat(13);\n    return this.finishNode(node, \"DoWhileStatement\");\n  }\n\n  parseForStatement(node) {\n    this.next();\n    this.state.labels.push(loopLabel);\n    let awaitAt = null;\n\n    if (this.isAwaitAllowed() && this.eatContextual(96)) {\n      awaitAt = this.state.lastTokStartLoc;\n    }\n\n    this.scope.enter(SCOPE_OTHER);\n    this.expect(10);\n\n    if (this.match(13)) {\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n\n      return this.parseFor(node, null);\n    }\n\n    const startsWithLet = this.isContextual(99);\n    const isLet = startsWithLet && this.isLetKeyword();\n\n    if (this.match(74) || this.match(75) || isLet) {\n      const init = this.startNode();\n      const kind = isLet ? \"let\" : this.state.value;\n      this.next();\n      this.parseVar(init, true, kind);\n      this.finishNode(init, \"VariableDeclaration\");\n\n      if ((this.match(58) || this.isContextual(101)) && init.declarations.length === 1) {\n        return this.parseForIn(node, init, awaitAt);\n      }\n\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n\n      return this.parseFor(node, init);\n    }\n\n    const startsWithAsync = this.isContextual(95);\n    const refExpressionErrors = new ExpressionErrors();\n    const init = this.parseExpression(true, refExpressionErrors);\n    const isForOf = this.isContextual(101);\n\n    if (isForOf) {\n      if (startsWithLet) {\n        this.raise(ErrorMessages.ForOfLet, {\n          node: init\n        });\n      }\n\n      if (awaitAt === null && startsWithAsync && init.type === \"Identifier\") {\n        this.raise(ErrorMessages.ForOfAsync, {\n          node: init\n        });\n      }\n    }\n\n    if (isForOf || this.match(58)) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.toAssignable(init, true);\n      const description = isForOf ? \"for-of statement\" : \"for-in statement\";\n      this.checkLVal(init, description);\n      return this.parseForIn(node, init, awaitAt);\n    } else {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    if (awaitAt !== null) {\n      this.unexpected(awaitAt);\n    }\n\n    return this.parseFor(node, init);\n  }\n\n  parseFunctionStatement(node, isAsync, declarationPosition) {\n    this.next();\n    return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync);\n  }\n\n  parseIfStatement(node) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    node.consequent = this.parseStatement(\"if\");\n    node.alternate = this.eat(66) ? this.parseStatement(\"if\") : null;\n    return this.finishNode(node, \"IfStatement\");\n  }\n\n  parseReturnStatement(node) {\n    if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {\n      this.raise(ErrorMessages.IllegalReturn, {\n        at: this.state.startLoc\n      });\n    }\n\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.argument = null;\n    } else {\n      node.argument = this.parseExpression();\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"ReturnStatement\");\n  }\n\n  parseSwitchStatement(node) {\n    this.next();\n    node.discriminant = this.parseHeaderExpression();\n    const cases = node.cases = [];\n    this.expect(5);\n    this.state.labels.push(switchLabel);\n    this.scope.enter(SCOPE_OTHER);\n    let cur;\n\n    for (let sawDefault; !this.match(8);) {\n      if (this.match(61) || this.match(65)) {\n        const isCase = this.match(61);\n        if (cur) this.finishNode(cur, \"SwitchCase\");\n        cases.push(cur = this.startNode());\n        cur.consequent = [];\n        this.next();\n\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) {\n            this.raise(ErrorMessages.MultipleDefaultsInSwitch, {\n              at: this.state.lastTokStartLoc\n            });\n          }\n\n          sawDefault = true;\n          cur.test = null;\n        }\n\n        this.expect(14);\n      } else {\n        if (cur) {\n          cur.consequent.push(this.parseStatement(null));\n        } else {\n          this.unexpected();\n        }\n      }\n    }\n\n    this.scope.exit();\n    if (cur) this.finishNode(cur, \"SwitchCase\");\n    this.next();\n    this.state.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\");\n  }\n\n  parseThrowStatement(node) {\n    this.next();\n\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(ErrorMessages.NewlineAfterThrow, {\n        at: this.state.lastTokEndLoc\n      });\n    }\n\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\");\n  }\n\n  parseCatchClauseParam() {\n    const param = this.parseBindingAtom();\n    const simple = param.type === \"Identifier\";\n    this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);\n    this.checkLVal(param, \"catch clause\", BIND_LEXICAL);\n    return param;\n  }\n\n  parseTryStatement(node) {\n    this.next();\n    node.block = this.parseBlock();\n    node.handler = null;\n\n    if (this.match(62)) {\n      const clause = this.startNode();\n      this.next();\n\n      if (this.match(10)) {\n        this.expect(10);\n        clause.param = this.parseCatchClauseParam();\n        this.expect(11);\n      } else {\n        clause.param = null;\n        this.scope.enter(SCOPE_OTHER);\n      }\n\n      clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));\n      this.scope.exit();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n\n    node.finalizer = this.eat(67) ? this.parseBlock() : null;\n\n    if (!node.handler && !node.finalizer) {\n      this.raise(ErrorMessages.NoCatchOrFinally, {\n        node\n      });\n    }\n\n    return this.finishNode(node, \"TryStatement\");\n  }\n\n  parseVarStatement(node, kind) {\n    this.next();\n    this.parseVar(node, false, kind);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\");\n  }\n\n  parseWhileStatement(node) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    this.state.labels.push(loopLabel);\n    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"while\"));\n    this.state.labels.pop();\n    return this.finishNode(node, \"WhileStatement\");\n  }\n\n  parseWithStatement(node) {\n    if (this.state.strict) {\n      this.raise(ErrorMessages.StrictWith, {\n        at: this.state.startLoc\n      });\n    }\n\n    this.next();\n    node.object = this.parseHeaderExpression();\n    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"with\"));\n    return this.finishNode(node, \"WithStatement\");\n  }\n\n  parseEmptyStatement(node) {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\");\n  }\n\n  parseLabeledStatement(node, maybeName, expr, context) {\n    for (const label of this.state.labels) {\n      if (label.name === maybeName) {\n        this.raise(ErrorMessages.LabelRedeclaration, {\n          node: expr\n        }, maybeName);\n      }\n    }\n\n    const kind = tokenIsLoop(this.state.type) ? \"loop\" : this.match(71) ? \"switch\" : null;\n\n    for (let i = this.state.labels.length - 1; i >= 0; i--) {\n      const label = this.state.labels[i];\n\n      if (label.statementStart === node.start) {\n        label.statementStart = this.state.start;\n        label.kind = kind;\n      } else {\n        break;\n      }\n    }\n\n    this.state.labels.push({\n      name: maybeName,\n      kind: kind,\n      statementStart: this.state.start\n    });\n    node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n    this.state.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\");\n  }\n\n  parseExpressionStatement(node, expr) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\");\n  }\n\n  parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {\n    const node = this.startNode();\n\n    if (allowDirectives) {\n      this.state.strictErrors.clear();\n    }\n\n    this.expect(5);\n\n    if (createNewLexicalScope) {\n      this.scope.enter(SCOPE_OTHER);\n    }\n\n    this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);\n\n    if (createNewLexicalScope) {\n      this.scope.exit();\n    }\n\n    return this.finishNode(node, \"BlockStatement\");\n  }\n\n  isValidDirective(stmt) {\n    return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"StringLiteral\" && !stmt.expression.extra.parenthesized;\n  }\n\n  parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n    const body = node.body = [];\n    const directives = node.directives = [];\n    this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);\n  }\n\n  parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {\n    const oldStrict = this.state.strict;\n    let hasStrictModeDirective = false;\n    let parsedNonDirective = false;\n\n    while (!this.match(end)) {\n      const stmt = this.parseStatement(null, topLevel);\n\n      if (directives && !parsedNonDirective) {\n        if (this.isValidDirective(stmt)) {\n          const directive = this.stmtToDirective(stmt);\n          directives.push(directive);\n\n          if (!hasStrictModeDirective && directive.value.value === \"use strict\") {\n            hasStrictModeDirective = true;\n            this.setStrict(true);\n          }\n\n          continue;\n        }\n\n        parsedNonDirective = true;\n        this.state.strictErrors.clear();\n      }\n\n      body.push(stmt);\n    }\n\n    if (afterBlockParse) {\n      afterBlockParse.call(this, hasStrictModeDirective);\n    }\n\n    if (!oldStrict) {\n      this.setStrict(false);\n    }\n\n    this.next();\n  }\n\n  parseFor(node, init) {\n    node.init = init;\n    this.semicolon(false);\n    node.test = this.match(13) ? null : this.parseExpression();\n    this.semicolon(false);\n    node.update = this.match(11) ? null : this.parseExpression();\n    this.expect(11);\n    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n    this.scope.exit();\n    this.state.labels.pop();\n    return this.finishNode(node, \"ForStatement\");\n  }\n\n  parseForIn(node, init, awaitAt) {\n    const isForIn = this.match(58);\n    this.next();\n\n    if (isForIn) {\n      if (awaitAt !== null) this.unexpected(awaitAt);\n    } else {\n      node.await = awaitAt !== null;\n    }\n\n    if (init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== \"var\" || init.declarations[0].id.type !== \"Identifier\")) {\n      this.raise(ErrorMessages.ForInOfLoopInitializer, {\n        node: init\n      }, isForIn ? \"for-in\" : \"for-of\");\n    }\n\n    if (init.type === \"AssignmentPattern\") {\n      this.raise(ErrorMessages.InvalidLhs, {\n        node: init\n      }, \"for-loop\");\n    }\n\n    node.left = init;\n    node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();\n    this.expect(11);\n    node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement(\"for\"));\n    this.scope.exit();\n    this.state.labels.pop();\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n  }\n\n  parseVar(node, isFor, kind) {\n    const declarations = node.declarations = [];\n    const isTypescript = this.hasPlugin(\"typescript\");\n    node.kind = kind;\n\n    for (;;) {\n      const decl = this.startNode();\n      this.parseVarId(decl, kind);\n\n      if (this.eat(29)) {\n        decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();\n      } else {\n        if (kind === \"const\" && !(this.match(58) || this.isContextual(101))) {\n          if (!isTypescript) {\n            this.raise(ErrorMessages.DeclarationMissingInitializer, {\n              at: this.state.lastTokEndLoc\n            }, \"Const declarations\");\n          }\n        } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.match(58) || this.isContextual(101)))) {\n          this.raise(ErrorMessages.DeclarationMissingInitializer, {\n            at: this.state.lastTokEndLoc\n          }, \"Complex binding patterns\");\n        }\n\n        decl.init = null;\n      }\n\n      declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(12)) break;\n    }\n\n    return node;\n  }\n\n  parseVarId(decl, kind) {\n    decl.id = this.parseBindingAtom();\n    this.checkLVal(decl.id, \"variable declaration\", kind === \"var\" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== \"var\");\n  }\n\n  parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) {\n    const isStatement = statement & FUNC_STATEMENT;\n    const isHangingStatement = statement & FUNC_HANGING_STATEMENT;\n    const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);\n    this.initFunction(node, isAsync);\n\n    if (this.match(55) && isHangingStatement) {\n      this.raise(ErrorMessages.GeneratorInSingleStatementContext, {\n        at: this.state.startLoc\n      });\n    }\n\n    node.generator = this.eat(55);\n\n    if (isStatement) {\n      node.id = this.parseFunctionId(requireId);\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = false;\n    this.scope.enter(SCOPE_FUNCTION);\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n    if (!isStatement) {\n      node.id = this.parseFunctionId();\n    }\n\n    this.parseFunctionParams(node, false);\n    this.withSmartMixTopicForbiddingContext(() => {\n      this.parseFunctionBodyAndFinish(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n    });\n    this.prodParam.exit();\n    this.scope.exit();\n\n    if (isStatement && !isHangingStatement) {\n      this.registerFunctionStatementId(node);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node;\n  }\n\n  parseFunctionId(requireId) {\n    return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;\n  }\n\n  parseFunctionParams(node, allowModifiers) {\n    this.expect(10);\n    this.expressionScope.enter(newParameterDeclarationScope());\n    node.params = this.parseBindingList(11, 41, false, allowModifiers);\n    this.expressionScope.exit();\n  }\n\n  registerFunctionStatementId(node) {\n    if (!node.id) return;\n    this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.loc.start);\n  }\n\n  parseClass(node, isStatement, optionalId) {\n    this.next();\n    this.takeDecorators(node);\n    const oldStrict = this.state.strict;\n    this.state.strict = true;\n    this.parseClassId(node, isStatement, optionalId);\n    this.parseClassSuper(node);\n    node.body = this.parseClassBody(!!node.superClass, oldStrict);\n    return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n  }\n\n  isClassProperty() {\n    return this.match(29) || this.match(13) || this.match(8);\n  }\n\n  isClassMethod() {\n    return this.match(10);\n  }\n\n  isNonstaticConstructor(method) {\n    return !method.computed && !method.static && (method.key.name === \"constructor\" || method.key.value === \"constructor\");\n  }\n\n  parseClassBody(hadSuperClass, oldStrict) {\n    this.classScope.enter();\n    const state = {\n      hadConstructor: false,\n      hadSuperClass\n    };\n    let decorators = [];\n    const classBody = this.startNode();\n    classBody.body = [];\n    this.expect(5);\n    this.withSmartMixTopicForbiddingContext(() => {\n      while (!this.match(8)) {\n        if (this.eat(13)) {\n          if (decorators.length > 0) {\n            throw this.raise(ErrorMessages.DecoratorSemicolon, {\n              at: this.state.lastTokEndLoc\n            });\n          }\n\n          continue;\n        }\n\n        if (this.match(26)) {\n          decorators.push(this.parseDecorator());\n          continue;\n        }\n\n        const member = this.startNode();\n\n        if (decorators.length) {\n          member.decorators = decorators;\n          this.resetStartLocationFromNode(member, decorators[0]);\n          decorators = [];\n        }\n\n        this.parseClassMember(classBody, member, state);\n\n        if (member.kind === \"constructor\" && member.decorators && member.decorators.length > 0) {\n          this.raise(ErrorMessages.DecoratorConstructor, {\n            node: member\n          });\n        }\n      }\n    });\n    this.state.strict = oldStrict;\n    this.next();\n\n    if (decorators.length) {\n      throw this.raise(ErrorMessages.TrailingDecorator, {\n        at: this.state.startLoc\n      });\n    }\n\n    this.classScope.exit();\n    return this.finishNode(classBody, \"ClassBody\");\n  }\n\n  parseClassMemberFromModifier(classBody, member) {\n    const key = this.parseIdentifier(true);\n\n    if (this.isClassMethod()) {\n      const method = member;\n      method.kind = \"method\";\n      method.computed = false;\n      method.key = key;\n      method.static = false;\n      this.pushClassMethod(classBody, method, false, false, false, false);\n      return true;\n    } else if (this.isClassProperty()) {\n      const prop = member;\n      prop.computed = false;\n      prop.key = key;\n      prop.static = false;\n      classBody.body.push(this.parseClassProperty(prop));\n      return true;\n    }\n\n    this.resetPreviousNodeTrailingComments(key);\n    return false;\n  }\n\n  parseClassMember(classBody, member, state) {\n    const isStatic = this.isContextual(104);\n\n    if (isStatic) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        return;\n      }\n\n      if (this.eat(5)) {\n        this.parseClassStaticBlock(classBody, member);\n        return;\n      }\n    }\n\n    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n    const publicMethod = member;\n    const privateMethod = member;\n    const publicProp = member;\n    const privateProp = member;\n    const accessorProp = member;\n    const method = publicMethod;\n    const publicMember = publicMethod;\n    member.static = isStatic;\n    this.parsePropertyNamePrefixOperator(member);\n\n    if (this.eat(55)) {\n      method.kind = \"method\";\n      const isPrivateName = this.match(134);\n      this.parseClassElementName(method);\n\n      if (isPrivateName) {\n        this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n        return;\n      }\n\n      if (this.isNonstaticConstructor(publicMethod)) {\n        this.raise(ErrorMessages.ConstructorIsGenerator, {\n          node: publicMethod.key\n        });\n      }\n\n      this.pushClassMethod(classBody, publicMethod, true, false, false, false);\n      return;\n    }\n\n    const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;\n    const isPrivate = this.match(134);\n    const key = this.parseClassElementName(member);\n    const maybeQuestionTokenStartLoc = this.state.startLoc;\n    this.parsePostMemberNameModifiers(publicMember);\n\n    if (this.isClassMethod()) {\n      method.kind = \"method\";\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n        return;\n      }\n\n      const isConstructor = this.isNonstaticConstructor(publicMethod);\n      let allowsDirectSuper = false;\n\n      if (isConstructor) {\n        publicMethod.kind = \"constructor\";\n\n        if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n          this.raise(ErrorMessages.DuplicateConstructor, {\n            node: key\n          });\n        }\n\n        if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n          this.raise(ErrorMessages.OverrideOnConstructor, {\n            node: key\n          });\n        }\n\n        state.hadConstructor = true;\n        allowsDirectSuper = state.hadSuperClass;\n      }\n\n      this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);\n    } else if (this.isClassProperty()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else if (isContextual && key.name === \"async\" && !this.isLineTerminator()) {\n      this.resetPreviousNodeTrailingComments(key);\n      const isGenerator = this.eat(55);\n\n      if (publicMember.optional) {\n        this.unexpected(maybeQuestionTokenStartLoc);\n      }\n\n      method.kind = \"method\";\n      const isPrivate = this.match(134);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(publicMember);\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(ErrorMessages.ConstructorIsAsync, {\n            node: publicMethod.key\n          });\n        }\n\n        this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);\n      }\n    } else if (isContextual && (key.name === \"get\" || key.name === \"set\") && !(this.match(55) && this.isLineTerminator())) {\n      this.resetPreviousNodeTrailingComments(key);\n      method.kind = key.name;\n      const isPrivate = this.match(134);\n      this.parseClassElementName(publicMethod);\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(ErrorMessages.ConstructorIsAccessor, {\n            node: publicMethod.key\n          });\n        }\n\n        this.pushClassMethod(classBody, publicMethod, false, false, false, false);\n      }\n\n      this.checkGetterSetterParams(publicMethod);\n    } else if (isContextual && key.name === \"accessor\" && !this.isLineTerminator()) {\n      this.expectPlugin(\"decoratorAutoAccessors\");\n      this.resetPreviousNodeTrailingComments(key);\n      const isPrivate = this.match(134);\n      this.parseClassElementName(publicProp);\n      this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n    } else if (this.isLineTerminator()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else {\n      this.unexpected();\n    }\n  }\n\n  parseClassElementName(member) {\n    const {\n      type,\n      value\n    } = this.state;\n\n    if ((type === 128 || type === 129) && member.static && value === \"prototype\") {\n      this.raise(ErrorMessages.StaticPrototype, {\n        at: this.state.startLoc\n      });\n    }\n\n    if (type === 134) {\n      if (value === \"constructor\") {\n        this.raise(ErrorMessages.ConstructorClassPrivateField, {\n          at: this.state.startLoc\n        });\n      }\n\n      const key = this.parsePrivateName();\n      member.key = key;\n      return key;\n    }\n\n    return this.parsePropertyName(member);\n  }\n\n  parseClassStaticBlock(classBody, member) {\n    var _member$decorators;\n\n    this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    this.prodParam.enter(PARAM);\n    const body = member.body = [];\n    this.parseBlockOrModuleBlockBody(body, undefined, false, 8);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.labels = oldLabels;\n    classBody.body.push(this.finishNode(member, \"StaticBlock\"));\n\n    if ((_member$decorators = member.decorators) != null && _member$decorators.length) {\n      this.raise(ErrorMessages.DecoratorStaticBlock, {\n        node: member\n      });\n    }\n  }\n\n  pushClassProperty(classBody, prop) {\n    if (!prop.computed && (prop.key.name === \"constructor\" || prop.key.value === \"constructor\")) {\n      this.raise(ErrorMessages.ConstructorClassField, {\n        node: prop.key\n      });\n    }\n\n    classBody.body.push(this.parseClassProperty(prop));\n  }\n\n  pushClassPrivateProperty(classBody, prop) {\n    const node = this.parseClassPrivateProperty(prop);\n    classBody.body.push(node);\n    this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n  }\n\n  pushClassAccessorProperty(classBody, prop, isPrivate) {\n    if (!isPrivate && !prop.computed) {\n      const key = prop.key;\n\n      if (key.name === \"constructor\" || key.value === \"constructor\") {\n        this.raise(ErrorMessages.ConstructorClassField, {\n          node: key\n        });\n      }\n    }\n\n    const node = this.parseClassAccessorProperty(prop);\n    classBody.body.push(node);\n\n    if (isPrivate) {\n      this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);\n    }\n  }\n\n  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n    classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true));\n  }\n\n  pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n    const node = this.parseMethod(method, isGenerator, isAsync, false, false, \"ClassPrivateMethod\", true);\n    classBody.body.push(node);\n    const kind = node.kind === \"get\" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === \"set\" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;\n    this.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  declareClassPrivateMethodInScope(node, kind) {\n    this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);\n  }\n\n  parsePostMemberNameModifiers(methodOrProp) {}\n\n  parseClassPrivateProperty(node) {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassPrivateProperty\");\n  }\n\n  parseClassProperty(node) {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassProperty\");\n  }\n\n  parseClassAccessorProperty(node) {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassAccessorProperty\");\n  }\n\n  parseInitializer(node) {\n    this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n    this.expressionScope.enter(newExpressionScope());\n    this.prodParam.enter(PARAM);\n    node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;\n    this.expressionScope.exit();\n    this.prodParam.exit();\n    this.scope.exit();\n  }\n\n  parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n\n      if (isStatement) {\n        this.checkLVal(node.id, \"class name\", bindingType);\n      }\n    } else {\n      if (optionalId || !isStatement) {\n        node.id = null;\n      } else {\n        throw this.raise(ErrorMessages.MissingClassName, {\n          at: this.state.startLoc\n        });\n      }\n    }\n  }\n\n  parseClassSuper(node) {\n    node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;\n  }\n\n  parseExport(node) {\n    const hasDefault = this.maybeParseExportDefaultSpecifier(node);\n    const parseAfterDefault = !hasDefault || this.eat(12);\n    const hasStar = parseAfterDefault && this.eatExportStar(node);\n    const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);\n    const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));\n    const isFromRequired = hasDefault || hasStar;\n\n    if (hasStar && !hasNamespace) {\n      if (hasDefault) this.unexpected();\n      this.parseExportFrom(node, true);\n      return this.finishNode(node, \"ExportAllDeclaration\");\n    }\n\n    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) {\n      throw this.unexpected(null, 5);\n    }\n\n    let hasDeclaration;\n\n    if (isFromRequired || hasSpecifiers) {\n      hasDeclaration = false;\n      this.parseExportFrom(node, isFromRequired);\n    } else {\n      hasDeclaration = this.maybeParseExportDeclaration(node);\n    }\n\n    if (isFromRequired || hasSpecifiers || hasDeclaration) {\n      this.checkExport(node, true, false, !!node.source);\n      return this.finishNode(node, \"ExportNamedDeclaration\");\n    }\n\n    if (this.eat(65)) {\n      node.declaration = this.parseExportDefaultExpression();\n      this.checkExport(node, true, true);\n      return this.finishNode(node, \"ExportDefaultDeclaration\");\n    }\n\n    throw this.unexpected(null, 5);\n  }\n\n  eatExportStar(node) {\n    return this.eat(55);\n  }\n\n  maybeParseExportDefaultSpecifier(node) {\n    if (this.isExportDefaultSpecifier()) {\n      this.expectPlugin(\"exportDefaultFrom\");\n      const specifier = this.startNode();\n      specifier.exported = this.parseIdentifier(true);\n      node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n      return true;\n    }\n\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(node) {\n    if (this.isContextual(93)) {\n      if (!node.specifiers) node.specifiers = [];\n      const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);\n      this.next();\n      specifier.exported = this.parseModuleExportName();\n      node.specifiers.push(this.finishNode(specifier, \"ExportNamespaceSpecifier\"));\n      return true;\n    }\n\n    return false;\n  }\n\n  maybeParseExportNamedSpecifiers(node) {\n    if (this.match(5)) {\n      if (!node.specifiers) node.specifiers = [];\n      const isTypeExport = node.exportKind === \"type\";\n      node.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n      node.source = null;\n      node.declaration = null;\n\n      if (this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  maybeParseExportDeclaration(node) {\n    if (this.shouldParseExportDeclaration()) {\n      node.specifiers = [];\n      node.source = null;\n\n      if (this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      }\n\n      node.declaration = this.parseExportDeclaration(node);\n      return true;\n    }\n\n    return false;\n  }\n\n  isAsyncFunction() {\n    if (!this.isContextual(95)) return false;\n    const next = this.nextTokenStart();\n    return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, \"function\");\n  }\n\n  parseExportDefaultExpression() {\n    const expr = this.startNode();\n    const isAsync = this.isAsyncFunction();\n\n    if (this.match(68) || isAsync) {\n      this.next();\n\n      if (isAsync) {\n        this.next();\n      }\n\n      return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);\n    }\n\n    if (this.match(80)) {\n      return this.parseClass(expr, true, true);\n    }\n\n    if (this.match(26)) {\n      if (this.hasPlugin(\"decorators\") && this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n        this.raise(ErrorMessages.DecoratorBeforeExport, {\n          at: this.state.startLoc\n        });\n      }\n\n      this.parseDecorators(false);\n      return this.parseClass(expr, true, true);\n    }\n\n    if (this.match(75) || this.match(74) || this.isLet()) {\n      throw this.raise(ErrorMessages.UnsupportedDefaultExport, {\n        at: this.state.startLoc\n      });\n    }\n\n    const res = this.parseMaybeAssignAllowIn();\n    this.semicolon();\n    return res;\n  }\n\n  parseExportDeclaration(node) {\n    return this.parseStatement(null);\n  }\n\n  isExportDefaultSpecifier() {\n    const {\n      type\n    } = this.state;\n\n    if (tokenIsIdentifier(type)) {\n      if (type === 95 && !this.state.containsEsc || type === 99) {\n        return false;\n      }\n\n      if ((type === 126 || type === 125) && !this.state.containsEsc) {\n        const {\n          type: nextType\n        } = this.lookahead();\n\n        if (tokenIsIdentifier(nextType) && nextType !== 97 || nextType === 5) {\n          this.expectOnePlugin([\"flow\", \"typescript\"]);\n          return false;\n        }\n      }\n    } else if (!this.match(65)) {\n      return false;\n    }\n\n    const next = this.nextTokenStart();\n    const hasFrom = this.isUnparsedContextual(next, \"from\");\n\n    if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {\n      return true;\n    }\n\n    if (this.match(65) && hasFrom) {\n      const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));\n      return nextAfterFrom === 34 || nextAfterFrom === 39;\n    }\n\n    return false;\n  }\n\n  parseExportFrom(node, expect) {\n    if (this.eatContextual(97)) {\n      node.source = this.parseImportSource();\n      this.checkExport(node);\n      const assertions = this.maybeParseImportAssertions();\n\n      if (assertions) {\n        node.assertions = assertions;\n      }\n    } else if (expect) {\n      this.unexpected();\n    }\n\n    this.semicolon();\n  }\n\n  shouldParseExportDeclaration() {\n    const {\n      type\n    } = this.state;\n\n    if (type === 26) {\n      this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n      if (this.hasPlugin(\"decorators\")) {\n        if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n          throw this.raise(ErrorMessages.DecoratorBeforeExport, {\n            at: this.state.startLoc\n          });\n        }\n\n        return true;\n      }\n    }\n\n    return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();\n  }\n\n  checkExport(node, checkNames, isDefault, isFrom) {\n    if (checkNames) {\n      if (isDefault) {\n        this.checkDuplicateExports(node, \"default\");\n\n        if (this.hasPlugin(\"exportDefaultFrom\")) {\n          var _declaration$extra;\n\n          const declaration = node.declaration;\n\n          if (declaration.type === \"Identifier\" && declaration.name === \"from\" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {\n            this.raise(ErrorMessages.ExportDefaultFromAsIdentifier, {\n              node: declaration\n            });\n          }\n        }\n      } else if (node.specifiers && node.specifiers.length) {\n        for (const specifier of node.specifiers) {\n          const {\n            exported\n          } = specifier;\n          const exportedName = exported.type === \"Identifier\" ? exported.name : exported.value;\n          this.checkDuplicateExports(specifier, exportedName);\n\n          if (!isFrom && specifier.local) {\n            const {\n              local\n            } = specifier;\n\n            if (local.type !== \"Identifier\") {\n              this.raise(ErrorMessages.ExportBindingIsString, {\n                node: specifier\n              }, local.value, exportedName);\n            } else {\n              this.checkReservedWord(local.name, local.loc.start, true, false);\n              this.scope.checkLocalExport(local);\n            }\n          }\n        }\n      } else if (node.declaration) {\n        if (node.declaration.type === \"FunctionDeclaration\" || node.declaration.type === \"ClassDeclaration\") {\n          const id = node.declaration.id;\n          if (!id) throw new Error(\"Assertion failure\");\n          this.checkDuplicateExports(node, id.name);\n        } else if (node.declaration.type === \"VariableDeclaration\") {\n          for (const declaration of node.declaration.declarations) {\n            this.checkDeclaration(declaration.id);\n          }\n        }\n      }\n    }\n\n    const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];\n\n    if (currentContextDecorators.length) {\n      throw this.raise(ErrorMessages.UnsupportedDecoratorExport, {\n        node\n      });\n    }\n  }\n\n  checkDeclaration(node) {\n    if (node.type === \"Identifier\") {\n      this.checkDuplicateExports(node, node.name);\n    } else if (node.type === \"ObjectPattern\") {\n      for (const prop of node.properties) {\n        this.checkDeclaration(prop);\n      }\n    } else if (node.type === \"ArrayPattern\") {\n      for (const elem of node.elements) {\n        if (elem) {\n          this.checkDeclaration(elem);\n        }\n      }\n    } else if (node.type === \"ObjectProperty\") {\n      this.checkDeclaration(node.value);\n    } else if (node.type === \"RestElement\") {\n      this.checkDeclaration(node.argument);\n    } else if (node.type === \"AssignmentPattern\") {\n      this.checkDeclaration(node.left);\n    }\n  }\n\n  checkDuplicateExports(node, name) {\n    if (this.exportedIdentifiers.has(name)) {\n      this.raise(name === \"default\" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, {\n        node\n      }, name);\n    }\n\n    this.exportedIdentifiers.add(name);\n  }\n\n  parseExportSpecifiers(isInTypeExport) {\n    const nodes = [];\n    let first = true;\n    this.expect(5);\n\n    while (!this.eat(8)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(12);\n        if (this.eat(8)) break;\n      }\n\n      const isMaybeTypeOnly = this.isContextual(126);\n      const isString = this.match(129);\n      const node = this.startNode();\n      node.local = this.parseModuleExportName();\n      nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));\n    }\n\n    return nodes;\n  }\n\n  parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n    if (this.eatContextual(93)) {\n      node.exported = this.parseModuleExportName();\n    } else if (isString) {\n      node.exported = cloneStringLiteral(node.local);\n    } else if (!node.exported) {\n      node.exported = cloneIdentifier(node.local);\n    }\n\n    return this.finishNode(node, \"ExportSpecifier\");\n  }\n\n  parseModuleExportName() {\n    if (this.match(129)) {\n      const result = this.parseStringLiteral(this.state.value);\n      const surrogate = result.value.match(loneSurrogate);\n\n      if (surrogate) {\n        this.raise(ErrorMessages.ModuleExportNameHasLoneSurrogate, {\n          node: result\n        }, surrogate[0].charCodeAt(0).toString(16));\n      }\n\n      return result;\n    }\n\n    return this.parseIdentifier(true);\n  }\n\n  parseImport(node) {\n    node.specifiers = [];\n\n    if (!this.match(129)) {\n      const hasDefault = this.maybeParseDefaultImportSpecifier(node);\n      const parseNext = !hasDefault || this.eat(12);\n      const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n      if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n      this.expectContextual(97);\n    }\n\n    node.source = this.parseImportSource();\n    const assertions = this.maybeParseImportAssertions();\n\n    if (assertions) {\n      node.assertions = assertions;\n    } else {\n      const attributes = this.maybeParseModuleAttributes();\n\n      if (attributes) {\n        node.attributes = attributes;\n      }\n    }\n\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource() {\n    if (!this.match(129)) this.unexpected();\n    return this.parseExprAtom();\n  }\n\n  shouldParseDefaultImport(node) {\n    return tokenIsIdentifier(this.state.type);\n  }\n\n  parseImportSpecifierLocal(node, specifier, type, contextDescription) {\n    specifier.local = this.parseIdentifier();\n    this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);\n    node.specifiers.push(this.finishNode(specifier, type));\n  }\n\n  parseAssertEntries() {\n    const attrs = [];\n    const attrNames = new Set();\n\n    do {\n      if (this.match(8)) {\n        break;\n      }\n\n      const node = this.startNode();\n      const keyName = this.state.value;\n\n      if (attrNames.has(keyName)) {\n        this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, {\n          at: this.state.startLoc\n        }, keyName);\n      }\n\n      attrNames.add(keyName);\n\n      if (this.match(129)) {\n        node.key = this.parseStringLiteral(keyName);\n      } else {\n        node.key = this.parseIdentifier(true);\n      }\n\n      this.expect(14);\n\n      if (!this.match(129)) {\n        throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, {\n          at: this.state.startLoc\n        });\n      }\n\n      node.value = this.parseStringLiteral(this.state.value);\n      this.finishNode(node, \"ImportAttribute\");\n      attrs.push(node);\n    } while (this.eat(12));\n\n    return attrs;\n  }\n\n  maybeParseModuleAttributes() {\n    if (this.match(76) && !this.hasPrecedingLineBreak()) {\n      this.expectPlugin(\"moduleAttributes\");\n      this.next();\n    } else {\n      if (this.hasPlugin(\"moduleAttributes\")) return [];\n      return null;\n    }\n\n    const attrs = [];\n    const attributes = new Set();\n\n    do {\n      const node = this.startNode();\n      node.key = this.parseIdentifier(true);\n\n      if (node.key.name !== \"type\") {\n        this.raise(ErrorMessages.ModuleAttributeDifferentFromType, {\n          node: node.key\n        }, node.key.name);\n      }\n\n      if (attributes.has(node.key.name)) {\n        this.raise(ErrorMessages.ModuleAttributesWithDuplicateKeys, {\n          node: node.key\n        }, node.key.name);\n      }\n\n      attributes.add(node.key.name);\n      this.expect(14);\n\n      if (!this.match(129)) {\n        throw this.raise(ErrorMessages.ModuleAttributeInvalidValue, {\n          at: this.state.startLoc\n        });\n      }\n\n      node.value = this.parseStringLiteral(this.state.value);\n      this.finishNode(node, \"ImportAttribute\");\n      attrs.push(node);\n    } while (this.eat(12));\n\n    return attrs;\n  }\n\n  maybeParseImportAssertions() {\n    if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {\n      this.expectPlugin(\"importAssertions\");\n      this.next();\n    } else {\n      if (this.hasPlugin(\"importAssertions\")) return [];\n      return null;\n    }\n\n    this.eat(5);\n    const attrs = this.parseAssertEntries();\n    this.eat(8);\n    return attrs;\n  }\n\n  maybeParseDefaultImportSpecifier(node) {\n    if (this.shouldParseDefaultImport(node)) {\n      this.parseImportSpecifierLocal(node, this.startNode(), \"ImportDefaultSpecifier\", \"default import specifier\");\n      return true;\n    }\n\n    return false;\n  }\n\n  maybeParseStarImportSpecifier(node) {\n    if (this.match(55)) {\n      const specifier = this.startNode();\n      this.next();\n      this.expectContextual(93);\n      this.parseImportSpecifierLocal(node, specifier, \"ImportNamespaceSpecifier\", \"import namespace specifier\");\n      return true;\n    }\n\n    return false;\n  }\n\n  parseNamedImportSpecifiers(node) {\n    let first = true;\n    this.expect(5);\n\n    while (!this.eat(8)) {\n      if (first) {\n        first = false;\n      } else {\n        if (this.eat(14)) {\n          throw this.raise(ErrorMessages.DestructureNamedImport, {\n            at: this.state.startLoc\n          });\n        }\n\n        this.expect(12);\n        if (this.eat(8)) break;\n      }\n\n      const specifier = this.startNode();\n      const importedIsString = this.match(129);\n      const isMaybeTypeOnly = this.isContextual(126);\n      specifier.imported = this.parseModuleExportName();\n      const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === \"type\" || node.importKind === \"typeof\", isMaybeTypeOnly);\n      node.specifiers.push(importSpecifier);\n    }\n  }\n\n  parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {\n    if (this.eatContextual(93)) {\n      specifier.local = this.parseIdentifier();\n    } else {\n      const {\n        imported\n      } = specifier;\n\n      if (importedIsString) {\n        throw this.raise(ErrorMessages.ImportBindingIsString, {\n          node: specifier\n        }, imported.value);\n      }\n\n      this.checkReservedWord(imported.name, specifier.loc.start, true, true);\n\n      if (!specifier.local) {\n        specifier.local = cloneIdentifier(imported);\n      }\n    }\n\n    this.checkLVal(specifier.local, \"import specifier\", BIND_LEXICAL);\n    return this.finishNode(specifier, \"ImportSpecifier\");\n  }\n\n  isThisParam(param) {\n    return param.type === \"Identifier\" && param.name === \"this\";\n  }\n\n}\n\nclass Parser extends StatementParser {\n  constructor(options, input) {\n    options = getOptions(options);\n    super(options, input);\n    this.options = options;\n    this.initializeScopes();\n    this.plugins = pluginsMap(this.options.plugins);\n    this.filename = options.sourceFilename;\n  }\n\n  getScopeHandler() {\n    return ScopeHandler;\n  }\n\n  parse() {\n    this.enterInitialScopes();\n    const file = this.startNode();\n    const program = this.startNode();\n    this.nextToken();\n    file.errors = null;\n    this.parseTopLevel(file, program);\n    file.errors = this.state.errors;\n    return file;\n  }\n\n}\n\nfunction pluginsMap(plugins) {\n  const pluginMap = new Map();\n\n  for (const plugin of plugins) {\n    const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];\n    if (!pluginMap.has(name)) pluginMap.set(name, options || {});\n  }\n\n  return pluginMap;\n}\n\nfunction parse(input, options) {\n  var _options;\n\n  if (((_options = options) == null ? void 0 : _options.sourceType) === \"unambiguous\") {\n    options = Object.assign({}, options);\n\n    try {\n      options.sourceType = \"module\";\n      const parser = getParser(options, input);\n      const ast = parser.parse();\n\n      if (parser.sawUnambiguousESM) {\n        return ast;\n      }\n\n      if (parser.ambiguousScriptDifferentAst) {\n        try {\n          options.sourceType = \"script\";\n          return getParser(options, input).parse();\n        } catch (_unused) {}\n      } else {\n        ast.program.sourceType = \"script\";\n      }\n\n      return ast;\n    } catch (moduleError) {\n      try {\n        options.sourceType = \"script\";\n        return getParser(options, input).parse();\n      } catch (_unused2) {}\n\n      throw moduleError;\n    }\n  } else {\n    return getParser(options, input).parse();\n  }\n}\nfunction parseExpression(input, options) {\n  const parser = getParser(options, input);\n\n  if (parser.options.strictMode) {\n    parser.state.strict = true;\n  }\n\n  return parser.getExpression();\n}\n\nfunction generateExportedTokenTypes(internalTokenTypes) {\n  const tokenTypes = {};\n\n  for (const typeName of Object.keys(internalTokenTypes)) {\n    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n  }\n\n  return tokenTypes;\n}\n\nconst tokTypes = generateExportedTokenTypes(tt);\n\nfunction getParser(options, input) {\n  let cls = Parser;\n\n  if (options != null && options.plugins) {\n    validatePlugins(options.plugins);\n    cls = getParserClass(options.plugins);\n  }\n\n  return new cls(options, input);\n}\n\nconst parserClassCache = {};\n\nfunction getParserClass(pluginsFromOptions) {\n  const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name));\n  const key = pluginList.join(\"/\");\n  let cls = parserClassCache[key];\n\n  if (!cls) {\n    cls = Parser;\n\n    for (const plugin of pluginList) {\n      cls = mixinPlugins[plugin](cls);\n    }\n\n    parserClassCache[key] = cls;\n  }\n\n  return cls;\n}\n\nexports.parse = parse;\nexports.parseExpression = parseExpression;\nexports.tokTypes = tokTypes;\n//# sourceMappingURL=index.js.map\n\n\n//# sourceURL=webpack:///./node_modules/@babel/parser/lib/index.js?");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&":
/*!***********************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***!
  \***********************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\"));\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\n\nvar _throttleDebounce = __webpack_require__(/*! throttle-debounce */ \"./node_modules/throttle-debounce/index.umd.js\");\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\n\nvar _FormDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/FormDrawer */ \"./src/views/infra/build/FormDrawer.vue\"));\n\nvar _JsonDrawer = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/JsonDrawer */ \"./src/views/infra/build/JsonDrawer.vue\"));\n\nvar _RightPanel = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/RightPanel */ \"./src/views/infra/build/RightPanel.vue\"));\n\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\n\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\n\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\n\nvar _drawingDefalut = _interopRequireDefault(__webpack_require__(/*! @/components/generator/drawingDefalut */ \"./src/components/generator/drawingDefalut.js\"));\n\nvar _logo = _interopRequireDefault(__webpack_require__(/*! @/assets/logo/logo.png */ \"./src/assets/logo/logo.png\"));\n\nvar _CodeTypeDialog = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/CodeTypeDialog */ \"./src/views/infra/build/CodeTypeDialog.vue\"));\n\nvar _DraggableItem = _interopRequireDefault(__webpack_require__(/*! @/views/infra/build/DraggableItem */ \"./src/views/infra/build/DraggableItem.vue\"));\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\nvar _constants = __webpack_require__(/*! @/utils/constants */ \"./src/utils/constants.js\");\n\nvar _form = __webpack_require__(/*! @/api/bpm/form */ \"./src/api/bpm/form.js\");\n\nvar _formGenerator = __webpack_require__(/*! @/utils/formGenerator */ \"./src/utils/formGenerator.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar beautifier;\nvar emptyActiveData = {\n  style: {},\n  autosize: {}\n};\nvar oldActiveId;\nvar tempActiveData;\nvar drawingListInDB = (0, _db.getDrawingList)();\nvar formConfInDB = (0, _db.getFormConf)();\nvar idGlobal = (0, _db.getIdGlobal)();\nvar _default = {\n  components: {\n    draggable: _vuedraggable.default,\n    render: _render.default,\n    FormDrawer: _FormDrawer.default,\n    JsonDrawer: _JsonDrawer.default,\n    RightPanel: _RightPanel.default,\n    CodeTypeDialog: _CodeTypeDialog.default,\n    DraggableItem: _DraggableItem.default\n  },\n  data: function data() {\n    return {\n      logo: _logo.default,\n      idGlobal: idGlobal,\n      formConf: _config.formConf,\n      inputComponents: _config.inputComponents,\n      selectComponents: _config.selectComponents,\n      layoutComponents: _config.layoutComponents,\n      labelWidth: 100,\n      // drawingList: drawingDefalut,\n      drawingData: {},\n      // 生成后的表单数据\n      activeId: _drawingDefalut.default[0].__config__.formId,\n      drawingList: [],\n      // 表单项的数组\n      // activeId: undefined,\n      // activeData: {},\n      drawerVisible: false,\n      formData: {},\n      dialogVisible: false,\n      jsonDrawerVisible: false,\n      generateConf: null,\n      showFileName: false,\n      activeData: _drawingDefalut.default[0],\n      // 右边编辑器激活的表单项\n      saveDrawingListDebounce: (0, _throttleDebounce.debounce)(340, _db.saveDrawingList),\n      saveIdGlobalDebounce: (0, _throttleDebounce.debounce)(340, _db.saveIdGlobal),\n      leftComponents: [{\n        title: '输入型组件',\n        list: _config.inputComponents\n      }, {\n        title: '选择型组件',\n        list: _config.selectComponents\n      }, {\n        title: '布局型组件',\n        list: _config.layoutComponents\n      }],\n      // 表单参数\n      form: {\n        status: _constants.CommonStatusEnum.ENABLE\n      },\n      // 表单校验\n      rules: {\n        name: [{\n          required: true,\n          message: \"表单名不能为空\",\n          trigger: \"blur\"\n        }],\n        status: [{\n          required: true,\n          message: \"开启状态不能为空\",\n          trigger: \"blur\"\n        }]\n      }\n    };\n  },\n  computed: {},\n  watch: {\n    // eslint-disable-next-line func-names\n    'activeData.__config__.label': function activeData__config__Label(val, oldVal) {\n      if (this.activeData.placeholder === undefined || !this.activeData.__config__.tag || oldActiveId !== this.activeId) {\n        return;\n      }\n\n      this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val;\n    },\n    activeId: {\n      handler: function handler(val) {\n        oldActiveId = val;\n      },\n      immediate: true\n    },\n    drawingList: {\n      handler: function handler(val) {\n        this.saveDrawingListDebounce(val);\n        if (val.length === 0) this.idGlobal = 100;\n      },\n      deep: true\n    },\n    idGlobal: {\n      handler: function handler(val) {\n        this.saveIdGlobalDebounce(val);\n      },\n      immediate: true\n    }\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // 【add by 芋道源码】不读缓存\n    // if (Array.isArray(drawingListInDB) && drawingListInDB.length > 0) {\n    //   this.drawingList = drawingListInDB\n    // } else {\n    //   this.drawingList = drawingDefalut\n    // }\n    // this.activeFormItem(this.drawingList[0])\n    // if (formConfInDB) {\n    //   this.formConf = formConfInDB\n    // }\n    (0, _loadBeautifier.default)(function (btf) {\n      beautifier = btf;\n    });\n    var clipboard = new _clipboard.default('#copyNode', {\n      text: function text(trigger) {\n        var codeStr = _this.generateCode();\n\n        _this.$notify({\n          title: '成功',\n          message: '代码已复制到剪切板，可粘贴。',\n          type: 'success'\n        });\n\n        return codeStr;\n      }\n    });\n    clipboard.on('error', function (e) {\n      _this.$message.error('代码复制失败');\n    });\n  },\n  created: function created() {\n    var _this2 = this;\n\n    // 读取表单配置\n    var formId = this.$route.query && this.$route.query.formId;\n\n    if (formId) {\n      (0, _form.getForm)(formId).then(function (response) {\n        var data = response.data;\n        _this2.form = {\n          id: data.id,\n          name: data.name,\n          status: data.status,\n          remark: data.remark\n        };\n        _this2.formConf = JSON.parse(data.conf);\n        _this2.drawingList = (0, _formGenerator.decodeFields)(data.fields); // 设置激活的表单项\n\n        _this2.activeData = _this2.drawingList[0];\n        _this2.activeId = _this2.activeData.__config__.formId; // 设置 idGlobal，避免重复\n\n        _this2.idGlobal += _this2.drawingList.length;\n      });\n    }\n  },\n  methods: {\n    setObjectValueReduce: function setObjectValueReduce(obj, strKeys, data) {\n      var arr = strKeys.split('.');\n      arr.reduce(function (pre, item, i) {\n        if (arr.length === i + 1) {\n          pre[item] = data;\n        } else if (!(0, _index.isObjectObject)(pre[item])) {\n          pre[item] = {};\n        }\n\n        return pre[item];\n      }, obj);\n    },\n    setRespData: function setRespData(component, resp) {\n      var _component$__config__ = component.__config__,\n          dataPath = _component$__config__.dataPath,\n          renderKey = _component$__config__.renderKey,\n          dataConsumer = _component$__config__.dataConsumer;\n      if (!dataPath || !dataConsumer) return;\n      var respData = dataPath.split('.').reduce(function (pre, item) {\n        return pre[item];\n      }, resp); // 将请求回来的数据，赋值到指定属性。\n      // 以el-tabel为例，根据Element文档，应该将数据赋值给el-tabel的data属性，所以dataConsumer的值应为'data';\n      // 此时赋值代码可写成 component[dataConsumer] = respData；\n      // 但为支持更深层级的赋值（如：dataConsumer的值为'options.data'）,使用setObjectValueReduce\n\n      this.setObjectValueReduce(component, dataConsumer, respData);\n      var i = this.drawingList.findIndex(function (item) {\n        return item.__config__.renderKey === renderKey;\n      });\n      if (i > -1) this.$set(this.drawingList, i, component);\n    },\n    fetchData: function fetchData(component) {\n      var _this3 = this;\n\n      var _component$__config__2 = component.__config__,\n          dataType = _component$__config__2.dataType,\n          method = _component$__config__2.method,\n          url = _component$__config__2.url;\n\n      if (dataType === 'dynamic' && method && url) {\n        this.setLoading(component, true);\n        this.$axios({\n          method: method,\n          url: url\n        }).then(function (resp) {\n          _this3.setLoading(component, false);\n\n          _this3.setRespData(component, resp.data);\n        });\n      }\n    },\n    setLoading: function setLoading(component, val) {\n      var directives = component.directives;\n\n      if (Array.isArray(directives)) {\n        var t = directives.find(function (d) {\n          return d.name === 'loading';\n        });\n        if (t) t.value = val;\n      }\n    },\n    activeFormItem: function activeFormItem(currentItem) {\n      this.activeData = currentItem;\n      this.activeId = currentItem.__config__.formId;\n    },\n    onEnd: function onEnd(obj) {\n      if (obj.from !== obj.to) {\n        this.fetchData(tempActiveData);\n        this.activeData = tempActiveData;\n        this.activeId = this.idGlobal;\n      }\n    },\n    addComponent: function addComponent(item) {\n      var clone = this.cloneComponent(item);\n      this.fetchData(clone);\n      this.drawingList.push(clone);\n      this.activeFormItem(clone);\n    },\n    cloneComponent: function cloneComponent(origin) {\n      var clone = (0, _index.deepClone)(origin);\n      var config = clone.__config__;\n      config.span = this.formConf.span; // 生成代码时，会根据span做精简判断\n\n      this.createIdAndKey(clone);\n      clone.placeholder !== undefined && (clone.placeholder += config.label);\n      tempActiveData = clone;\n      return tempActiveData;\n    },\n    createIdAndKey: function createIdAndKey(item) {\n      var _this4 = this;\n\n      var config = item.__config__;\n      config.formId = ++this.idGlobal;\n      config.renderKey = \"\".concat(config.formId).concat(+new Date()); // 改变renderKey后可以实现强制更新组件\n\n      if (config.layout === 'colFormItem') {\n        item.__vModel__ = \"field\".concat(this.idGlobal);\n      } else if (config.layout === 'rowFormItem') {\n        config.componentName = \"row\".concat(this.idGlobal);\n        !Array.isArray(config.children) && (config.children = []);\n        delete config.label; // rowFormItem无需配置label属性\n      }\n\n      if (Array.isArray(config.children)) {\n        config.children = config.children.map(function (childItem) {\n          return _this4.createIdAndKey(childItem);\n        });\n      }\n\n      return item;\n    },\n    // 获得表单数据\n    AssembleFormData: function AssembleFormData() {\n      this.formData = (0, _objectSpread2.default)({\n        fields: (0, _index.deepClone)(this.drawingList)\n      }, this.formConf);\n    },\n    save: function save() {\n      var _this5 = this;\n\n      // this.AssembleFormData()\n      // console.log(this.formData)\n      this.$refs[\"form\"].validate(function (valid) {\n        if (!valid) {\n          return;\n        }\n\n        var form = (0, _objectSpread2.default)({\n          conf: JSON.stringify(_this5.formConf),\n          // 表单配置\n          fields: _this5.encodeFields()\n        }, _this5.form); // 修改的提交\n\n        if (_this5.form.id != null) {\n          (0, _form.updateForm)(form).then(function (response) {\n            _this5.$modal.msgSuccess(\"修改成功\");\n\n            _this5.close();\n          });\n          return;\n        } // 添加的提交\n\n\n        (0, _form.createForm)(form).then(function (response) {\n          _this5.$modal.msgSuccess(\"新增成功\");\n\n          _this5.close();\n        });\n      });\n    },\n\n    /** 关闭按钮 */\n    close: function close() {\n      this.$tab.closeOpenPage({\n        path: \"/bpm/manager/form\"\n      });\n    },\n    encodeFields: function encodeFields() {\n      var fields = [];\n      this.drawingList.forEach(function (item) {\n        fields.push(JSON.stringify(item));\n      });\n      return fields;\n    },\n    generate: function generate(data) {\n      var func = this[\"exec\".concat((0, _index.titleCase)(this.operationType))];\n      this.generateConf = data;\n      func && func(data);\n    },\n    execRun: function execRun(data) {\n      this.AssembleFormData();\n      this.drawerVisible = true;\n    },\n    execDownload: function execDownload(data) {\n      var codeStr = this.generateCode();\n      var blob = new Blob([codeStr], {\n        type: 'text/plain;charset=utf-8'\n      });\n      (0, _fileSaver.saveAs)(blob, data.fileName);\n    },\n    execCopy: function execCopy(data) {\n      document.getElementById('copyNode').click();\n    },\n    empty: function empty() {\n      var _this6 = this;\n\n      this.$confirm('确定要清空所有组件吗？', '提示', {\n        type: 'warning'\n      }).then(function () {\n        _this6.drawingList = [];\n        _this6.idGlobal = 100;\n      });\n    },\n    drawingItemCopy: function drawingItemCopy(item, list) {\n      var clone = (0, _index.deepClone)(item);\n      clone = this.createIdAndKey(clone);\n      list.push(clone);\n      this.activeFormItem(clone);\n    },\n    drawingItemDelete: function drawingItemDelete(index, list) {\n      var _this7 = this;\n\n      list.splice(index, 1);\n      this.$nextTick(function () {\n        var len = _this7.drawingList.length;\n\n        if (len) {\n          _this7.activeFormItem(_this7.drawingList[len - 1]);\n        }\n      });\n    },\n    generateCode: function generateCode() {\n      var type = this.generateConf.type;\n      this.AssembleFormData();\n      var script = (0, _html.vueScript)((0, _js.makeUpJs)(this.formData, type));\n      var html = (0, _html.vueTemplate)((0, _html.makeUpHtml)(this.formData, type));\n      var css = (0, _html.cssStyle)((0, _css.makeUpCss)(this.formData));\n      return beautifier.html(html + script + css, _index.beautifierConf.html);\n    },\n    showJson: function showJson() {\n      this.AssembleFormData();\n      this.jsonDrawerVisible = true;\n    },\n    download: function download() {\n      this.dialogVisible = true;\n      this.showFileName = true;\n      this.operationType = 'download';\n    },\n    run: function run() {\n      this.dialogVisible = true;\n      this.showFileName = false;\n      this.operationType = 'run';\n    },\n    copy: function copy() {\n      this.dialogVisible = true;\n      this.showFileName = false;\n      this.operationType = 'copy';\n    },\n    tagChange: function tagChange(newTag) {\n      var _this8 = this;\n\n      newTag = this.cloneComponent(newTag);\n      var config = newTag.__config__;\n      newTag.__vModel__ = this.activeData.__vModel__;\n      config.formId = this.activeId;\n      config.span = this.activeData.__config__.span;\n      this.activeData.__config__.tag = config.tag;\n      this.activeData.__config__.tagIcon = config.tagIcon;\n      this.activeData.__config__.document = config.document;\n\n      if ((0, _typeof2.default)(this.activeData.__config__.defaultValue) === (0, _typeof2.default)(config.defaultValue)) {\n        config.defaultValue = this.activeData.__config__.defaultValue;\n      }\n\n      Object.keys(newTag).forEach(function (key) {\n        if (_this8.activeData[key] !== undefined) {\n          newTag[key] = _this8.activeData[key];\n        }\n      });\n      this.activeData = newTag;\n      this.updateDrawingList(newTag, this.drawingList);\n    },\n    updateDrawingList: function updateDrawingList(newTag, list) {\n      var _this9 = this;\n\n      var index = list.findIndex(function (item) {\n        return item.__config__.formId === _this9.activeId;\n      });\n\n      if (index > -1) {\n        list.splice(index, 1, newTag);\n      } else {\n        list.forEach(function (item) {\n          if (Array.isArray(item.__config__.children)) _this9.updateDrawingList(newTag, item.__config__.children);\n        });\n      }\n    },\n    refreshJson: function refreshJson(data) {\n      this.drawingList = (0, _index.deepClone)(data.fields);\n      delete data.fields;\n      this.formConf = data;\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ \"./node_modules/@babel/runtime/helpers/objectSpread2.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  inheritAttrs: false,\n  props: ['showFileName'],\n  data: function data() {\n    return {\n      formData: {\n        fileName: undefined,\n        type: 'file'\n      },\n      rules: {\n        fileName: [{\n          required: true,\n          message: '请输入文件名',\n          trigger: 'blur'\n        }],\n        type: [{\n          required: true,\n          message: '生成类型不能为空',\n          trigger: 'change'\n        }]\n      },\n      typeOptions: [{\n        label: '页面',\n        value: 'file'\n      }, {\n        label: '弹窗',\n        value: 'dialog'\n      }]\n    };\n  },\n  computed: {},\n  watch: {},\n  mounted: function mounted() {},\n  methods: {\n    onOpen: function onOpen() {\n      if (this.showFileName) {\n        this.formData.fileName = \"\".concat(+new Date(), \".vue\");\n      }\n    },\n    onClose: function onClose() {},\n    close: function close(e) {\n      this.$emit('update:visible', false);\n    },\n    handelConfirm: function handelConfirm() {\n      var _this = this;\n\n      this.$refs.elForm.validate(function (valid) {\n        if (!valid) return;\n\n        _this.$emit('confirm', (0, _objectSpread2.default)({}, _this.formData));\n\n        _this.close();\n      });\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&":
/*!*****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n\nvar _vuedraggable = _interopRequireDefault(__webpack_require__(/*! vuedraggable */ \"./node_modules/vuedraggable/dist/vuedraggable.umd.js\"));\n\nvar _render = _interopRequireDefault(__webpack_require__(/*! @/components/render/render */ \"./src/components/render/render.js\"));\n\nvar components = {\n  itemBtns: function itemBtns(h, currentItem, index, list) {\n    var _this$$listeners = this.$listeners,\n        copyItem = _this$$listeners.copyItem,\n        deleteItem = _this$$listeners.deleteItem;\n    return [h(\"span\", {\n      \"class\": \"drawing-item-copy\",\n      \"attrs\": {\n        \"title\": \"复制\"\n      },\n      \"on\": {\n        \"click\": function click(event) {\n          copyItem(currentItem, list);\n          event.stopPropagation();\n        }\n      }\n    }, [h(\"i\", {\n      \"class\": \"el-icon-copy-document\"\n    })]), h(\"span\", {\n      \"class\": \"drawing-item-delete\",\n      \"attrs\": {\n        \"title\": \"删除\"\n      },\n      \"on\": {\n        \"click\": function click(event) {\n          deleteItem(index, list);\n          event.stopPropagation();\n        }\n      }\n    }, [h(\"i\", {\n      \"class\": \"el-icon-delete\"\n    })])];\n  }\n};\nvar layouts = {\n  colFormItem: function colFormItem(h, currentItem, index, list) {\n    var _this = this;\n\n    var activeItem = this.$listeners.activeItem;\n    var config = currentItem.__config__;\n    var child = renderChildren.apply(this, arguments);\n    var className = this.activeId === config.formId ? 'drawing-item active-from-item' : 'drawing-item';\n    if (this.formConf.unFocusedComponentBorder) className += ' unfocus-bordered';\n    var labelWidth = config.labelWidth ? \"\".concat(config.labelWidth, \"px\") : null;\n    if (config.showLabel === false) labelWidth = '0';\n    return h(\"el-col\", {\n      \"attrs\": {\n        \"span\": config.span\n      },\n      \"class\": className,\n      \"nativeOn\": {\n        \"click\": function click(event) {\n          activeItem(currentItem);\n          event.stopPropagation();\n        }\n      }\n    }, [h(\"el-form-item\", {\n      \"attrs\": {\n        \"label-width\": labelWidth,\n        \"label\": config.showLabel ? config.label : '',\n        \"required\": config.required\n      }\n    }, [h(_render.default, {\n      \"key\": config.renderKey,\n      \"attrs\": {\n        \"conf\": currentItem\n      },\n      \"on\": {\n        \"input\": function input(event) {\n          _this.$set(config, 'defaultValue', event);\n        }\n      }\n    }, [child])]), components.itemBtns.apply(this, arguments)]);\n  },\n  rowFormItem: function rowFormItem(h, currentItem, index, list) {\n    var activeItem = this.$listeners.activeItem;\n    var config = currentItem.__config__;\n    var className = this.activeId === config.formId ? 'drawing-row-item active-from-item' : 'drawing-row-item';\n    var child = renderChildren.apply(this, arguments);\n\n    if (currentItem.type === 'flex') {\n      child = h(\"el-row\", {\n        \"attrs\": {\n          \"type\": currentItem.type,\n          \"justify\": currentItem.justify,\n          \"align\": currentItem.align\n        }\n      }, [child]);\n    }\n\n    return h(\"el-col\", {\n      \"attrs\": {\n        \"span\": config.span\n      }\n    }, [h(\"el-row\", {\n      \"attrs\": {\n        \"gutter\": config.gutter\n      },\n      \"class\": className,\n      \"nativeOn\": {\n        \"click\": function click(event) {\n          activeItem(currentItem);\n          event.stopPropagation();\n        }\n      }\n    }, [h(\"span\", {\n      \"class\": \"component-name\"\n    }, [config.componentName]), h(_vuedraggable.default, {\n      \"attrs\": {\n        \"list\": config.children || [],\n        \"animation\": 340,\n        \"group\": \"componentsGroup\"\n      },\n      \"class\": \"drag-wrapper\"\n    }, [child]), components.itemBtns.apply(this, arguments)])]);\n  },\n  raw: function raw(h, currentItem, index, list) {\n    var _this2 = this;\n\n    var config = currentItem.__config__;\n    var child = renderChildren.apply(this, arguments);\n    return h(_render.default, {\n      \"key\": config.renderKey,\n      \"attrs\": {\n        \"conf\": currentItem\n      },\n      \"on\": {\n        \"input\": function input(event) {\n          _this2.$set(config, 'defaultValue', event);\n        }\n      }\n    }, [child]);\n  }\n};\n\nfunction renderChildren(h, currentItem, index, list) {\n  var _this3 = this;\n\n  var config = currentItem.__config__;\n  if (!Array.isArray(config.children)) return null;\n  return config.children.map(function (el, i) {\n    var layout = layouts[el.__config__.layout];\n\n    if (layout) {\n      return layout.call(_this3, h, el, i, config.children);\n    }\n\n    return layoutIsNotFound.call(_this3);\n  });\n}\n\nfunction layoutIsNotFound() {\n  throw new Error(\"\\u6CA1\\u6709\\u4E0E\".concat(this.currentItem.__config__.layout, \"\\u5339\\u914D\\u7684layout\"));\n}\n\nvar _default = {\n  components: {\n    render: _render.default,\n    draggable: _vuedraggable.default\n  },\n  props: ['currentItem', 'index', 'drawingList', 'activeId', 'formConf'],\n  render: function render(h) {\n    var layout = layouts[this.currentItem.__config__.layout];\n\n    if (layout) {\n      return layout.call(this, h, this.currentItem, this.index, this.drawingList);\n    }\n\n    return layoutIsNotFound.call(this);\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \"./node_modules/core-js/modules/es.string.ends-with.js\");\n\nvar _parser = __webpack_require__(/*! @babel/parser */ \"./node_modules/@babel/parser/lib/index.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _html = __webpack_require__(/*! @/components/generator/html */ \"./src/components/generator/html.js\");\n\nvar _js = __webpack_require__(/*! @/components/generator/js */ \"./src/components/generator/js.js\");\n\nvar _css = __webpack_require__(/*! @/components/generator/css */ \"./src/components/generator/css.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _ResourceDialog = _interopRequireDefault(__webpack_require__(/*! ./ResourceDialog */ \"./src/views/infra/build/ResourceDialog.vue\"));\n\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar editorObj = {\n  html: null,\n  js: null,\n  css: null\n};\nvar mode = {\n  html: 'html',\n  js: 'javascript',\n  css: 'css'\n};\nvar beautifier;\nvar monaco;\nvar _default = {\n  components: {\n    ResourceDialog: _ResourceDialog.default\n  },\n  props: ['formData', 'generateConf'],\n  data: function data() {\n    return {\n      activeTab: 'html',\n      htmlCode: '',\n      jsCode: '',\n      cssCode: '',\n      codeFrame: '',\n      isIframeLoaded: false,\n      isInitcode: false,\n      // 保证open后两个异步只执行一次runcode\n      isRefreshCode: false,\n      // 每次打开都需要重新刷新代码\n      resourceVisible: false,\n      scripts: [],\n      links: [],\n      monaco: null\n    };\n  },\n  computed: {\n    resources: function resources() {\n      return this.scripts.concat(this.links);\n    }\n  },\n  watch: {},\n  created: function created() {},\n  mounted: function mounted() {\n    var _this = this;\n\n    window.addEventListener('keydown', this.preventDefaultSave);\n    var clipboard = new _clipboard.default('.copy-btn', {\n      text: function text(trigger) {\n        var codeStr = _this.generateCode();\n\n        _this.$notify({\n          title: '成功',\n          message: '代码已复制到剪切板，可粘贴。',\n          type: 'success'\n        });\n\n        return codeStr;\n      }\n    });\n    clipboard.on('error', function (e) {\n      _this.$message.error('代码复制失败');\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('keydown', this.preventDefaultSave);\n  },\n  methods: {\n    preventDefaultSave: function preventDefaultSave(e) {\n      if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault();\n      }\n    },\n    onOpen: function onOpen() {\n      var _this2 = this;\n\n      var type = this.generateConf.type;\n      this.htmlCode = (0, _html.makeUpHtml)(this.formData, type);\n      this.jsCode = (0, _js.makeUpJs)(this.formData, type);\n      this.cssCode = (0, _css.makeUpCss)(this.formData);\n      (0, _loadBeautifier.default)(function (btf) {\n        beautifier = btf;\n        _this2.htmlCode = beautifier.html(_this2.htmlCode, _index.beautifierConf.html);\n        _this2.jsCode = beautifier.js(_this2.jsCode, _index.beautifierConf.js);\n        _this2.cssCode = beautifier.css(_this2.cssCode, _index.beautifierConf.html);\n        (0, _loadMonaco.default)(function (val) {\n          monaco = val;\n\n          _this2.setEditorValue('editorHtml', 'html', _this2.htmlCode);\n\n          _this2.setEditorValue('editorJs', 'js', _this2.jsCode);\n\n          _this2.setEditorValue('editorCss', 'css', _this2.cssCode);\n\n          if (!_this2.isInitcode) {\n            _this2.isRefreshCode = true;\n            _this2.isIframeLoaded && (_this2.isInitcode = true) && _this2.runCode();\n          }\n        });\n      });\n    },\n    onClose: function onClose() {\n      this.isInitcode = false;\n      this.isRefreshCode = false;\n    },\n    iframeLoad: function iframeLoad() {\n      if (!this.isInitcode) {\n        this.isIframeLoaded = true;\n        this.isRefreshCode && (this.isInitcode = true) && this.runCode();\n      }\n    },\n    setEditorValue: function setEditorValue(id, type, codeStr) {\n      var _this3 = this;\n\n      if (editorObj[type]) {\n        editorObj[type].setValue(codeStr);\n      } else {\n        editorObj[type] = monaco.editor.create(document.getElementById(id), {\n          value: codeStr,\n          theme: 'vs-dark',\n          language: mode[type],\n          automaticLayout: true\n        });\n      } // ctrl + s 刷新\n\n\n      editorObj[type].onKeyDown(function (e) {\n        if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n          _this3.runCode();\n        }\n      });\n    },\n    runCode: function runCode() {\n      var jsCodeStr = editorObj.js.getValue();\n\n      try {\n        var ast = (0, _parser.parse)(jsCodeStr, {\n          sourceType: 'module'\n        });\n        var astBody = ast.program.body;\n\n        if (astBody.length > 1) {\n          this.$confirm('js格式不能识别，仅支持修改export default的对象内容', '提示', {\n            type: 'warning'\n          }).catch(function () {});\n          return;\n        }\n\n        if (astBody[0].type === 'ExportDefaultDeclaration') {\n          var postData = {\n            type: 'refreshFrame',\n            data: {\n              generateConf: this.generateConf,\n              html: editorObj.html.getValue(),\n              js: jsCodeStr.replace(_index.exportDefault, ''),\n              css: editorObj.css.getValue(),\n              scripts: this.scripts,\n              links: this.links\n            }\n          };\n          this.$refs.previewPage.contentWindow.postMessage(postData, location.origin);\n        } else {\n          this.$message.error('请使用export default');\n        }\n      } catch (err) {\n        this.$message.error(\"js\\u9519\\u8BEF\\uFF1A\".concat(err));\n        console.error(err);\n      }\n    },\n    generateCode: function generateCode() {\n      var html = (0, _html.vueTemplate)(editorObj.html.getValue());\n      var script = (0, _html.vueScript)(editorObj.js.getValue());\n      var css = (0, _html.cssStyle)(editorObj.css.getValue());\n      return beautifier.html(html + script + css, _index.beautifierConf.html);\n    },\n    exportFile: function exportFile() {\n      var _this4 = this;\n\n      this.$prompt('文件名:', '导出文件', {\n        inputValue: \"\".concat(+new Date(), \".vue\"),\n        closeOnClickModal: false,\n        inputPlaceholder: '请输入文件名'\n      }).then(function (_ref) {\n        var value = _ref.value;\n        if (!value) value = \"\".concat(+new Date(), \".vue\");\n\n        var codeStr = _this4.generateCode();\n\n        var blob = new Blob([codeStr], {\n          type: 'text/plain;charset=utf-8'\n        });\n        (0, _fileSaver.saveAs)(blob, value);\n      });\n    },\n    showResource: function showResource() {\n      this.resourceVisible = true;\n    },\n    setResource: function setResource(arr) {\n      var scripts = [];\n      var links = [];\n\n      if (Array.isArray(arr)) {\n        arr.forEach(function (item) {\n          if (item.endsWith('.css')) {\n            links.push(item);\n          } else {\n            scripts.push(item);\n          }\n        });\n        this.scripts = scripts;\n        this.links = links;\n      } else {\n        this.scripts = [];\n        this.links = [];\n      }\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&":
/*!***************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***!
  \***************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\nvar _icon = _interopRequireDefault(__webpack_require__(/*! @/utils/icon.json */ \"./src/utils/icon.json\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar originList = _icon.default.map(function (name) {\n  return \"el-icon-\".concat(name);\n});\n\nvar _default = {\n  inheritAttrs: false,\n  props: ['current'],\n  data: function data() {\n    return {\n      iconList: originList,\n      active: null,\n      key: ''\n    };\n  },\n  watch: {\n    key: function key(val) {\n      if (val) {\n        this.iconList = originList.filter(function (name) {\n          return name.indexOf(val) > -1;\n        });\n      } else {\n        this.iconList = originList;\n      }\n    }\n  },\n  methods: {\n    onOpen: function onOpen() {\n      this.active = this.current;\n      this.key = '';\n    },\n    onClose: function onClose() {},\n    onSelect: function onSelect(icon) {\n      this.active = icon;\n      this.$emit('select', icon);\n      this.$emit('update:visible', false);\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _clipboard = _interopRequireDefault(__webpack_require__(/*! clipboard */ \"./node_modules/clipboard/dist/clipboard.js\"));\n\nvar _fileSaver = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n\nvar _loadMonaco = _interopRequireDefault(__webpack_require__(/*! @/utils/loadMonaco */ \"./src/utils/loadMonaco.js\"));\n\nvar _loadBeautifier = _interopRequireDefault(__webpack_require__(/*! @/utils/loadBeautifier */ \"./src/utils/loadBeautifier.js\"));\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar beautifier;\nvar monaco;\nvar _default = {\n  components: {},\n  props: {\n    jsonStr: {\n      type: String,\n      required: true\n    }\n  },\n  data: function data() {\n    return {};\n  },\n  computed: {},\n  watch: {},\n  created: function created() {},\n  mounted: function mounted() {\n    var _this = this;\n\n    window.addEventListener('keydown', this.preventDefaultSave);\n    var clipboard = new _clipboard.default('.copy-json-btn', {\n      text: function text(trigger) {\n        _this.$notify({\n          title: '成功',\n          message: '代码已复制到剪切板，可粘贴。',\n          type: 'success'\n        });\n\n        return _this.beautifierJson;\n      }\n    });\n    clipboard.on('error', function (e) {\n      _this.$message.error('代码复制失败');\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('keydown', this.preventDefaultSave);\n  },\n  methods: {\n    preventDefaultSave: function preventDefaultSave(e) {\n      if (e.key === 's' && (e.metaKey || e.ctrlKey)) {\n        e.preventDefault();\n      }\n    },\n    onOpen: function onOpen() {\n      var _this2 = this;\n\n      (0, _loadBeautifier.default)(function (btf) {\n        beautifier = btf;\n        _this2.beautifierJson = beautifier.js(_this2.jsonStr, _index.beautifierConf.js);\n        (0, _loadMonaco.default)(function (val) {\n          monaco = val;\n\n          _this2.setEditorValue('editorJson', _this2.beautifierJson);\n        });\n      });\n    },\n    onClose: function onClose() {},\n    setEditorValue: function setEditorValue(id, codeStr) {\n      var _this3 = this;\n\n      if (this.jsonEditor) {\n        this.jsonEditor.setValue(codeStr);\n      } else {\n        this.jsonEditor = monaco.editor.create(document.getElementById(id), {\n          value: codeStr,\n          theme: 'vs-dark',\n          language: 'json',\n          automaticLayout: true\n        }); // ctrl + s 刷新\n\n        this.jsonEditor.onKeyDown(function (e) {\n          if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {\n            _this3.refresh();\n          }\n        });\n      }\n    },\n    exportJsonFile: function exportJsonFile() {\n      var _this4 = this;\n\n      this.$prompt('文件名:', '导出文件', {\n        inputValue: \"\".concat(+new Date(), \".json\"),\n        closeOnClickModal: false,\n        inputPlaceholder: '请输入文件名'\n      }).then(function (_ref) {\n        var value = _ref.value;\n        if (!value) value = \"\".concat(+new Date(), \".json\");\n\n        var codeStr = _this4.jsonEditor.getValue();\n\n        var blob = new Blob([codeStr], {\n          type: 'text/plain;charset=utf-8'\n        });\n        (0, _fileSaver.saveAs)(blob, value);\n      });\n    },\n    refresh: function refresh() {\n      try {\n        this.$emit('refresh', JSON.parse(this.jsonEditor.getValue()));\n      } catch (error) {\n        this.$notify({\n          title: '错误',\n          message: 'JSON格式错误，请检查',\n          type: 'error'\n        });\n      }\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.filter.js */ \"./node_modules/core-js/modules/es.array.filter.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n  components: {},\n  inheritAttrs: false,\n  props: ['originResource'],\n  data: function data() {\n    return {\n      resources: null\n    };\n  },\n  computed: {},\n  watch: {},\n  created: function created() {},\n  mounted: function mounted() {},\n  methods: {\n    onOpen: function onOpen() {\n      this.resources = this.originResource.length ? (0, _index.deepClone)(this.originResource) : [''];\n    },\n    onClose: function onClose() {},\n    close: function close() {\n      this.$emit('update:visible', false);\n    },\n    handelConfirm: function handelConfirm() {\n      var results = this.resources.filter(function (item) {\n        return !!item;\n      }) || [];\n      this.$emit('save', results);\n      this.close();\n\n      if (results.length) {\n        this.resources = results;\n      }\n    },\n    deleteOne: function deleteOne(index) {\n      this.resources.splice(index, 1);\n    },\n    addOne: function addOne(url) {\n      if (this.resources.indexOf(url) > -1) {\n        this.$message('资源已存在');\n      } else {\n        this.resources.push(url);\n      }\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&":
/*!**************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***!
  \**************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find-index.js */ \"./node_modules/core-js/modules/es.array.find-index.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.splice.js */ \"./node_modules/core-js/modules/es.array.splice.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n\n__webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.find.js */ \"./node_modules/core-js/modules/es.array.find.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nvar _TreeNodeDialog = _interopRequireDefault(__webpack_require__(/*! ./TreeNodeDialog */ \"./src/views/infra/build/TreeNodeDialog.vue\"));\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _IconsDialog = _interopRequireDefault(__webpack_require__(/*! ./IconsDialog */ \"./src/views/infra/build/IconsDialog.vue\"));\n\nvar _config = __webpack_require__(/*! @/components/generator/config */ \"./src/components/generator/config.js\");\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar dateTimeFormat = {\n  date: 'yyyy-MM-dd',\n  week: 'yyyy 第 WW 周',\n  month: 'yyyy-MM',\n  year: 'yyyy',\n  datetime: 'yyyy-MM-dd HH:mm:ss',\n  daterange: 'yyyy-MM-dd',\n  monthrange: 'yyyy-MM',\n  datetimerange: 'yyyy-MM-dd HH:mm:ss'\n}; // 使changeRenderKey在目标组件改变时可用\n\nvar needRerenderList = ['tinymce'];\nvar _default = {\n  components: {\n    TreeNodeDialog: _TreeNodeDialog.default,\n    IconsDialog: _IconsDialog.default\n  },\n  props: ['showField', 'activeData', 'formConf'],\n  data: function data() {\n    return {\n      currentTab: 'field',\n      currentNode: null,\n      dialogVisible: false,\n      iconsVisible: false,\n      currentIconModel: null,\n      dateTypeOptions: [{\n        label: '日(date)',\n        value: 'date'\n      }, {\n        label: '周(week)',\n        value: 'week'\n      }, {\n        label: '月(month)',\n        value: 'month'\n      }, {\n        label: '年(year)',\n        value: 'year'\n      }, {\n        label: '日期时间(datetime)',\n        value: 'datetime'\n      }],\n      dateRangeTypeOptions: [{\n        label: '日期范围(daterange)',\n        value: 'daterange'\n      }, {\n        label: '月范围(monthrange)',\n        value: 'monthrange'\n      }, {\n        label: '日期时间范围(datetimerange)',\n        value: 'datetimerange'\n      }],\n      colorFormatOptions: [{\n        label: 'hex',\n        value: 'hex'\n      }, {\n        label: 'rgb',\n        value: 'rgb'\n      }, {\n        label: 'rgba',\n        value: 'rgba'\n      }, {\n        label: 'hsv',\n        value: 'hsv'\n      }, {\n        label: 'hsl',\n        value: 'hsl'\n      }],\n      justifyOptions: [{\n        label: 'start',\n        value: 'start'\n      }, {\n        label: 'end',\n        value: 'end'\n      }, {\n        label: 'center',\n        value: 'center'\n      }, {\n        label: 'space-around',\n        value: 'space-around'\n      }, {\n        label: 'space-between',\n        value: 'space-between'\n      }],\n      layoutTreeProps: {\n        label: function label(data, node) {\n          var config = data.__config__;\n          return data.componentName || \"\".concat(config.label, \": \").concat(data.__vModel__);\n        }\n      }\n    };\n  },\n  computed: {\n    documentLink: function documentLink() {\n      return this.activeData.__config__.document || 'https://element.eleme.cn/#/zh-CN/component/installation';\n    },\n    dateOptions: function dateOptions() {\n      if (this.activeData.type !== undefined && this.activeData.__config__.tag === 'el-date-picker') {\n        if (this.activeData['start-placeholder'] === undefined) {\n          return this.dateTypeOptions;\n        }\n\n        return this.dateRangeTypeOptions;\n      }\n\n      return [];\n    },\n    tagList: function tagList() {\n      return [{\n        label: '输入型组件',\n        options: _config.inputComponents\n      }, {\n        label: '选择型组件',\n        options: _config.selectComponents\n      }];\n    },\n    activeTag: function activeTag() {\n      return this.activeData.__config__.tag;\n    },\n    isShowMin: function isShowMin() {\n      return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n    },\n    isShowMax: function isShowMax() {\n      return ['el-input-number', 'el-slider', 'el-rate'].indexOf(this.activeTag) > -1;\n    },\n    isShowStep: function isShowStep() {\n      return ['el-input-number', 'el-slider'].indexOf(this.activeTag) > -1;\n    }\n  },\n  watch: {\n    formConf: {\n      handler: function handler(val) {\n        (0, _db.saveFormConf)(val);\n      },\n      deep: true\n    }\n  },\n  methods: {\n    addReg: function addReg() {\n      this.activeData.__config__.regList.push({\n        pattern: '',\n        message: ''\n      });\n    },\n    addSelectItem: function addSelectItem() {\n      this.activeData.__slot__.options.push({\n        label: '',\n        value: ''\n      });\n    },\n    addTreeItem: function addTreeItem() {\n      ++this.idGlobal;\n      this.dialogVisible = true;\n      this.currentNode = this.activeData.options;\n    },\n    renderContent: function renderContent(h, _ref) {\n      var _this = this;\n\n      var node = _ref.node,\n          data = _ref.data,\n          store = _ref.store;\n      return h(\"div\", {\n        \"class\": \"custom-tree-node\"\n      }, [h(\"span\", [node.label]), h(\"span\", {\n        \"class\": \"node-operation\"\n      }, [h(\"i\", {\n        \"on\": {\n          \"click\": function click() {\n            return _this.append(data);\n          }\n        },\n        \"class\": \"el-icon-plus\",\n        \"attrs\": {\n          \"title\": \"添加\"\n        }\n      }), h(\"i\", {\n        \"on\": {\n          \"click\": function click() {\n            return _this.remove(node, data);\n          }\n        },\n        \"class\": \"el-icon-delete\",\n        \"attrs\": {\n          \"title\": \"删除\"\n        }\n      })])]);\n    },\n    append: function append(data) {\n      if (!data.children) {\n        this.$set(data, 'children', []);\n      }\n\n      this.dialogVisible = true;\n      this.currentNode = data.children;\n    },\n    remove: function remove(node, data) {\n      this.activeData.__config__.defaultValue = []; // 避免删除时报错\n\n      var parent = node.parent;\n      var children = parent.data.children || parent.data;\n      var index = children.findIndex(function (d) {\n        return d.id === data.id;\n      });\n      children.splice(index, 1);\n    },\n    addNode: function addNode(data) {\n      this.currentNode.push(data);\n    },\n    setOptionValue: function setOptionValue(item, val) {\n      item.value = (0, _index.isNumberStr)(val) ? +val : val;\n    },\n    setDefaultValue: function setDefaultValue(val) {\n      if (Array.isArray(val)) {\n        return val.join(',');\n      } // if (['string', 'number'].indexOf(typeof val) > -1) {\n      //   return val\n      // }\n\n\n      if (typeof val === 'boolean') {\n        return \"\".concat(val);\n      }\n\n      return val;\n    },\n    onDefaultValueInput: function onDefaultValueInput(str) {\n      if ((0, _util.isArray)(this.activeData.__config__.defaultValue)) {\n        // 数组\n        this.$set(this.activeData.__config__, 'defaultValue', str.split(',').map(function (val) {\n          return (0, _index.isNumberStr)(val) ? +val : val;\n        }));\n      } else if (['true', 'false'].indexOf(str) > -1) {\n        // 布尔\n        this.$set(this.activeData.__config__, 'defaultValue', JSON.parse(str));\n      } else {\n        // 字符串和数字\n        this.$set(this.activeData.__config__, 'defaultValue', (0, _index.isNumberStr)(str) ? +str : str);\n      }\n    },\n    onSwitchValueInput: function onSwitchValueInput(val, name) {\n      if (['true', 'false'].indexOf(val) > -1) {\n        this.$set(this.activeData, name, JSON.parse(val));\n      } else {\n        this.$set(this.activeData, name, (0, _index.isNumberStr)(val) ? +val : val);\n      }\n    },\n    setTimeValue: function setTimeValue(val, type) {\n      var valueFormat = type === 'week' ? dateTimeFormat.date : val;\n      this.$set(this.activeData.__config__, 'defaultValue', null);\n      this.$set(this.activeData, 'value-format', valueFormat);\n      this.$set(this.activeData, 'format', val);\n    },\n    spanChange: function spanChange(val) {\n      this.formConf.span = val;\n    },\n    multipleChange: function multipleChange(val) {\n      this.$set(this.activeData.__config__, 'defaultValue', val ? [] : '');\n    },\n    dateTypeChange: function dateTypeChange(val) {\n      this.setTimeValue(dateTimeFormat[val], val);\n    },\n    rangeChange: function rangeChange(val) {\n      this.$set(this.activeData.__config__, 'defaultValue', val ? [this.activeData.min, this.activeData.max] : this.activeData.min);\n    },\n    rateTextChange: function rateTextChange(val) {\n      if (val) this.activeData['show-score'] = false;\n    },\n    rateScoreChange: function rateScoreChange(val) {\n      if (val) this.activeData['show-text'] = false;\n    },\n    colorFormatChange: function colorFormatChange(val) {\n      this.activeData.__config__.defaultValue = null;\n      this.activeData['show-alpha'] = val.indexOf('a') > -1;\n      this.activeData.__config__.renderKey = +new Date(); // 更新renderKey,重新渲染该组件\n    },\n    openIconsDialog: function openIconsDialog(model) {\n      this.iconsVisible = true;\n      this.currentIconModel = model;\n    },\n    setIcon: function setIcon(val) {\n      this.activeData[this.currentIconModel] = val;\n    },\n    tagChange: function tagChange(tagIcon) {\n      var target = _config.inputComponents.find(function (item) {\n        return item.__config__.tagIcon === tagIcon;\n      });\n\n      if (!target) target = _config.selectComponents.find(function (item) {\n        return item.__config__.tagIcon === tagIcon;\n      });\n      this.$emit('tag-change', target);\n    },\n    changeRenderKey: function changeRenderKey() {\n      if (needRerenderList.includes(this.activeData.__config__.tag)) {\n        this.activeData.__config__.renderKey = +new Date();\n      }\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&":
/*!******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***!
  \******************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _db = __webpack_require__(/*! @/utils/db */ \"./src/utils/db.js\");\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar id = (0, _db.getTreeNodeId)();\nvar _default = {\n  components: {},\n  inheritAttrs: false,\n  props: [],\n  data: function data() {\n    return {\n      id: id,\n      formData: {\n        label: undefined,\n        value: undefined\n      },\n      rules: {\n        label: [{\n          required: true,\n          message: '请输入选项名',\n          trigger: 'blur'\n        }],\n        value: [{\n          required: true,\n          message: '请输入选项值',\n          trigger: 'blur'\n        }]\n      },\n      dataType: 'string',\n      dataTypeOptions: [{\n        label: '字符串',\n        value: 'string'\n      }, {\n        label: '数字',\n        value: 'number'\n      }]\n    };\n  },\n  computed: {},\n  watch: {\n    // eslint-disable-next-line func-names\n    'formData.value': function formDataValue(val) {\n      this.dataType = (0, _index.isNumberStr)(val) ? 'number' : 'string';\n    },\n    id: function id(val) {\n      (0, _db.saveTreeNodeId)(val);\n    }\n  },\n  created: function created() {},\n  mounted: function mounted() {},\n  methods: {\n    onOpen: function onOpen() {\n      this.formData = {\n        label: undefined,\n        value: undefined\n      };\n    },\n    onClose: function onClose() {},\n    close: function close() {\n      this.$emit('update:visible', false);\n    },\n    handelConfirm: function handelConfirm() {\n      var _this = this;\n\n      this.$refs.elForm.validate(function (valid) {\n        if (!valid) return;\n\n        if (_this.dataType === 'number') {\n          _this.formData.value = parseFloat(_this.formData.value);\n        }\n\n        _this.formData.id = _this.id++;\n\n        _this.$emit('commit', _this.formData);\n\n        _this.close();\n      });\n    }\n  }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"container\" },\n    [\n      _c(\n        \"div\",\n        { staticClass: \"left-board\" },\n        [\n          _vm._m(0),\n          _c(\"el-scrollbar\", { staticClass: \"left-scrollbar\" }, [\n            _c(\n              \"div\",\n              { staticClass: \"components-list\" },\n              [\n                _vm._l(_vm.leftComponents, function (item, listIndex) {\n                  return _c(\n                    \"div\",\n                    { key: listIndex },\n                    [\n                      _c(\n                        \"div\",\n                        { staticClass: \"components-title\" },\n                        [\n                          _c(\"svg-icon\", {\n                            attrs: { \"icon-class\": \"component\" },\n                          }),\n                          _vm._v(\" \" + _vm._s(item.title) + \" \"),\n                        ],\n                        1\n                      ),\n                      _c(\n                        \"draggable\",\n                        {\n                          staticClass: \"components-draggable\",\n                          attrs: {\n                            list: item.list,\n                            group: {\n                              name: \"componentsGroup\",\n                              pull: \"clone\",\n                              put: false,\n                            },\n                            clone: _vm.cloneComponent,\n                            draggable: \".components-item\",\n                            sort: false,\n                          },\n                          on: { end: _vm.onEnd },\n                        },\n                        _vm._l(item.list, function (element, index) {\n                          return _c(\n                            \"div\",\n                            {\n                              key: index,\n                              staticClass: \"components-item\",\n                              on: {\n                                click: function ($event) {\n                                  return _vm.addComponent(element)\n                                },\n                              },\n                            },\n                            [\n                              _c(\n                                \"div\",\n                                { staticClass: \"components-body\" },\n                                [\n                                  _c(\"svg-icon\", {\n                                    attrs: {\n                                      \"icon-class\": element.__config__.tagIcon,\n                                    },\n                                  }),\n                                  _vm._v(\n                                    \" \" + _vm._s(element.__config__.label) + \" \"\n                                  ),\n                                ],\n                                1\n                              ),\n                            ]\n                          )\n                        }),\n                        0\n                      ),\n                    ],\n                    1\n                  )\n                }),\n                _c(\n                  \"el-form\",\n                  {\n                    ref: \"form\",\n                    attrs: {\n                      model: _vm.form,\n                      rules: _vm.rules,\n                      \"label-width\": \"80px\",\n                    },\n                  },\n                  [\n                    _c(\n                      \"el-form-item\",\n                      { attrs: { label: \"表单名\", prop: \"name\" } },\n                      [\n                        _c(\"el-input\", {\n                          attrs: { placeholder: \"请输入表单名\" },\n                          model: {\n                            value: _vm.form.name,\n                            callback: function ($$v) {\n                              _vm.$set(_vm.form, \"name\", $$v)\n                            },\n                            expression: \"form.name\",\n                          },\n                        }),\n                      ],\n                      1\n                    ),\n                    _c(\n                      \"el-form-item\",\n                      { attrs: { label: \"开启状态\", prop: \"status\" } },\n                      [\n                        _c(\n                          \"el-radio-group\",\n                          {\n                            model: {\n                              value: _vm.form.status,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.form, \"status\", $$v)\n                              },\n                              expression: \"form.status\",\n                            },\n                          },\n                          _vm._l(\n                            this.getDictDatas(_vm.DICT_TYPE.COMMON_STATUS),\n                            function (dict) {\n                              return _c(\n                                \"el-radio\",\n                                {\n                                  key: dict.value,\n                                  attrs: { label: parseInt(dict.value) },\n                                },\n                                [_vm._v(_vm._s(dict.label))]\n                              )\n                            }\n                          ),\n                          1\n                        ),\n                      ],\n                      1\n                    ),\n                    _c(\n                      \"el-form-item\",\n                      { attrs: { label: \"备注\", prop: \"remark\" } },\n                      [\n                        _c(\"el-input\", {\n                          attrs: {\n                            type: \"textarea\",\n                            placeholder: \"请输入备注\",\n                          },\n                          model: {\n                            value: _vm.form.remark,\n                            callback: function ($$v) {\n                              _vm.$set(_vm.form, \"remark\", $$v)\n                            },\n                            expression: \"form.remark\",\n                          },\n                        }),\n                      ],\n                      1\n                    ),\n                  ],\n                  1\n                ),\n              ],\n              2\n            ),\n          ]),\n        ],\n        1\n      ),\n      _c(\n        \"div\",\n        { staticClass: \"center-board\" },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"action-bar\" },\n            [\n              _c(\n                \"el-button\",\n                {\n                  attrs: { icon: \"el-icon-check\", type: \"text\" },\n                  on: { click: _vm.save },\n                },\n                [_vm._v(\"保存\")]\n              ),\n              _c(\n                \"el-button\",\n                {\n                  attrs: { icon: \"el-icon-view\", type: \"text\" },\n                  on: { click: _vm.showJson },\n                },\n                [_vm._v(\" 查看json \")]\n              ),\n              _c(\n                \"el-button\",\n                {\n                  staticClass: \"delete-btn\",\n                  attrs: { icon: \"el-icon-delete\", type: \"text\" },\n                  on: { click: _vm.empty },\n                },\n                [_vm._v(\" 清空 \")]\n              ),\n            ],\n            1\n          ),\n          _c(\n            \"el-scrollbar\",\n            { staticClass: \"center-scrollbar\" },\n            [\n              _c(\n                \"el-row\",\n                {\n                  staticClass: \"center-board-row\",\n                  attrs: { gutter: _vm.formConf.gutter },\n                },\n                [\n                  _c(\n                    \"el-form\",\n                    {\n                      attrs: {\n                        size: _vm.formConf.size,\n                        \"label-position\": _vm.formConf.labelPosition,\n                        disabled: _vm.formConf.disabled,\n                        \"label-width\": _vm.formConf.labelWidth + \"px\",\n                      },\n                    },\n                    [\n                      _c(\n                        \"draggable\",\n                        {\n                          staticClass: \"drawing-board\",\n                          attrs: {\n                            list: _vm.drawingList,\n                            animation: 340,\n                            group: \"componentsGroup\",\n                          },\n                        },\n                        _vm._l(_vm.drawingList, function (item, index) {\n                          return _c(\"draggable-item\", {\n                            key: item.renderKey,\n                            attrs: {\n                              \"drawing-list\": _vm.drawingList,\n                              \"current-item\": item,\n                              index: index,\n                              \"active-id\": _vm.activeId,\n                              \"form-conf\": _vm.formConf,\n                            },\n                            on: {\n                              activeItem: _vm.activeFormItem,\n                              copyItem: _vm.drawingItemCopy,\n                              deleteItem: _vm.drawingItemDelete,\n                            },\n                          })\n                        }),\n                        1\n                      ),\n                      _c(\n                        \"div\",\n                        {\n                          directives: [\n                            {\n                              name: \"show\",\n                              rawName: \"v-show\",\n                              value: !_vm.drawingList.length,\n                              expression: \"!drawingList.length\",\n                            },\n                          ],\n                          staticClass: \"empty-info\",\n                        },\n                        [_vm._v(\" 从左侧拖入或点选组件进行表单设计 \")]\n                      ),\n                    ],\n                    1\n                  ),\n                ],\n                1\n              ),\n            ],\n            1\n          ),\n        ],\n        1\n      ),\n      _c(\"right-panel\", {\n        attrs: {\n          \"active-data\": _vm.activeData,\n          \"form-conf\": _vm.formConf,\n          \"show-field\": !!_vm.drawingList.length,\n        },\n        on: { \"tag-change\": _vm.tagChange, \"fetch-data\": _vm.fetchData },\n      }),\n      _c(\"json-drawer\", {\n        attrs: {\n          size: \"60%\",\n          visible: _vm.jsonDrawerVisible,\n          \"json-str\": JSON.stringify(_vm.formData),\n        },\n        on: {\n          \"update:visible\": function ($event) {\n            _vm.jsonDrawerVisible = $event\n          },\n          refresh: _vm.refreshJson,\n        },\n      }),\n    ],\n    1\n  )\n}\nvar staticRenderFns = [\n  function () {\n    var _vm = this\n    var _h = _vm.$createElement\n    var _c = _vm._self._c || _h\n    return _c(\"div\", { staticClass: \"logo-wrapper\" }, [\n      _c(\"div\", { staticClass: \"logo\" }, [_vm._v(\"流程表单\")]),\n    ])\n  },\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\n        \"el-dialog\",\n        _vm._g(\n          _vm._b(\n            {\n              attrs: {\n                width: \"500px\",\n                \"close-on-click-modal\": false,\n                \"modal-append-to-body\": false,\n              },\n              on: { open: _vm.onOpen, close: _vm.onClose },\n            },\n            \"el-dialog\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _c(\n            \"el-row\",\n            { attrs: { gutter: 15 } },\n            [\n              _c(\n                \"el-form\",\n                {\n                  ref: \"elForm\",\n                  attrs: {\n                    model: _vm.formData,\n                    rules: _vm.rules,\n                    size: \"medium\",\n                    \"label-width\": \"100px\",\n                  },\n                },\n                [\n                  _c(\n                    \"el-col\",\n                    { attrs: { span: 24 } },\n                    [\n                      _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"生成类型\", prop: \"type\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.formData.type,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.formData, \"type\", $$v)\n                                },\n                                expression: \"formData.type\",\n                              },\n                            },\n                            _vm._l(_vm.typeOptions, function (item, index) {\n                              return _c(\n                                \"el-radio-button\",\n                                {\n                                  key: index,\n                                  attrs: {\n                                    label: item.value,\n                                    disabled: item.disabled,\n                                  },\n                                },\n                                [_vm._v(\" \" + _vm._s(item.label) + \" \")]\n                              )\n                            }),\n                            1\n                          ),\n                        ],\n                        1\n                      ),\n                      _vm.showFileName\n                        ? _c(\n                            \"el-form-item\",\n                            { attrs: { label: \"文件名\", prop: \"fileName\" } },\n                            [\n                              _c(\"el-input\", {\n                                attrs: {\n                                  placeholder: \"请输入文件名\",\n                                  clearable: \"\",\n                                },\n                                model: {\n                                  value: _vm.formData.fileName,\n                                  callback: function ($$v) {\n                                    _vm.$set(_vm.formData, \"fileName\", $$v)\n                                  },\n                                  expression: \"formData.fileName\",\n                                },\n                              }),\n                            ],\n                            1\n                          )\n                        : _vm._e(),\n                    ],\n                    1\n                  ),\n                ],\n                1\n              ),\n            ],\n            1\n          ),\n          _c(\n            \"div\",\n            { attrs: { slot: \"footer\" }, slot: \"footer\" },\n            [\n              _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n              _c(\n                \"el-button\",\n                {\n                  attrs: { type: \"primary\" },\n                  on: { click: _vm.handelConfirm },\n                },\n                [_vm._v(\" 确定 \")]\n              ),\n            ],\n            1\n          ),\n        ],\n        1\n      ),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\n        \"el-drawer\",\n        _vm._g(\n          _vm._b(\n            { on: { opened: _vm.onOpen, close: _vm.onClose } },\n            \"el-drawer\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _c(\n            \"div\",\n            { staticStyle: { height: \"100%\" } },\n            [\n              _c(\n                \"el-row\",\n                { staticStyle: { height: \"100%\", overflow: \"auto\" } },\n                [\n                  _c(\n                    \"el-col\",\n                    { staticClass: \"left-editor\", attrs: { md: 24, lg: 12 } },\n                    [\n                      _c(\n                        \"div\",\n                        {\n                          staticClass: \"setting\",\n                          attrs: { title: \"资源引用\" },\n                          on: { click: _vm.showResource },\n                        },\n                        [\n                          _c(\n                            \"el-badge\",\n                            {\n                              staticClass: \"item\",\n                              attrs: { \"is-dot\": !!_vm.resources.length },\n                            },\n                            [_c(\"i\", { staticClass: \"el-icon-setting\" })]\n                          ),\n                        ],\n                        1\n                      ),\n                      _c(\n                        \"el-tabs\",\n                        {\n                          staticClass: \"editor-tabs\",\n                          attrs: { type: \"card\" },\n                          model: {\n                            value: _vm.activeTab,\n                            callback: function ($$v) {\n                              _vm.activeTab = $$v\n                            },\n                            expression: \"activeTab\",\n                          },\n                        },\n                        [\n                          _c(\"el-tab-pane\", { attrs: { name: \"html\" } }, [\n                            _c(\n                              \"span\",\n                              { attrs: { slot: \"label\" }, slot: \"label\" },\n                              [\n                                _vm.activeTab === \"html\"\n                                  ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n                                  : _c(\"i\", {\n                                      staticClass: \"el-icon-document\",\n                                    }),\n                                _vm._v(\" template \"),\n                              ]\n                            ),\n                          ]),\n                          _c(\"el-tab-pane\", { attrs: { name: \"js\" } }, [\n                            _c(\n                              \"span\",\n                              { attrs: { slot: \"label\" }, slot: \"label\" },\n                              [\n                                _vm.activeTab === \"js\"\n                                  ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n                                  : _c(\"i\", {\n                                      staticClass: \"el-icon-document\",\n                                    }),\n                                _vm._v(\" script \"),\n                              ]\n                            ),\n                          ]),\n                          _c(\"el-tab-pane\", { attrs: { name: \"css\" } }, [\n                            _c(\n                              \"span\",\n                              { attrs: { slot: \"label\" }, slot: \"label\" },\n                              [\n                                _vm.activeTab === \"css\"\n                                  ? _c(\"i\", { staticClass: \"el-icon-edit\" })\n                                  : _c(\"i\", {\n                                      staticClass: \"el-icon-document\",\n                                    }),\n                                _vm._v(\" css \"),\n                              ]\n                            ),\n                          ]),\n                        ],\n                        1\n                      ),\n                      _c(\"div\", {\n                        directives: [\n                          {\n                            name: \"show\",\n                            rawName: \"v-show\",\n                            value: _vm.activeTab === \"html\",\n                            expression: \"activeTab==='html'\",\n                          },\n                        ],\n                        staticClass: \"tab-editor\",\n                        attrs: { id: \"editorHtml\" },\n                      }),\n                      _c(\"div\", {\n                        directives: [\n                          {\n                            name: \"show\",\n                            rawName: \"v-show\",\n                            value: _vm.activeTab === \"js\",\n                            expression: \"activeTab==='js'\",\n                          },\n                        ],\n                        staticClass: \"tab-editor\",\n                        attrs: { id: \"editorJs\" },\n                      }),\n                      _c(\"div\", {\n                        directives: [\n                          {\n                            name: \"show\",\n                            rawName: \"v-show\",\n                            value: _vm.activeTab === \"css\",\n                            expression: \"activeTab==='css'\",\n                          },\n                        ],\n                        staticClass: \"tab-editor\",\n                        attrs: { id: \"editorCss\" },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-col\",\n                    { staticClass: \"right-preview\", attrs: { md: 24, lg: 12 } },\n                    [\n                      _c(\n                        \"div\",\n                        {\n                          staticClass: \"action-bar\",\n                          style: { \"text-align\": \"left\" },\n                        },\n                        [\n                          _c(\n                            \"span\",\n                            {\n                              staticClass: \"bar-btn\",\n                              on: { click: _vm.runCode },\n                            },\n                            [\n                              _c(\"i\", { staticClass: \"el-icon-refresh\" }),\n                              _vm._v(\" 刷新 \"),\n                            ]\n                          ),\n                          _c(\n                            \"span\",\n                            {\n                              staticClass: \"bar-btn\",\n                              on: { click: _vm.exportFile },\n                            },\n                            [\n                              _c(\"i\", { staticClass: \"el-icon-download\" }),\n                              _vm._v(\" 导出vue文件 \"),\n                            ]\n                          ),\n                          _c(\n                            \"span\",\n                            { ref: \"copyBtn\", staticClass: \"bar-btn copy-btn\" },\n                            [\n                              _c(\"i\", { staticClass: \"el-icon-document-copy\" }),\n                              _vm._v(\" 复制代码 \"),\n                            ]\n                          ),\n                          _c(\n                            \"span\",\n                            {\n                              staticClass: \"bar-btn delete-btn\",\n                              on: {\n                                click: function ($event) {\n                                  return _vm.$emit(\"update:visible\", false)\n                                },\n                              },\n                            },\n                            [\n                              _c(\"i\", { staticClass: \"el-icon-circle-close\" }),\n                              _vm._v(\" 关闭 \"),\n                            ]\n                          ),\n                        ]\n                      ),\n                      _c(\"iframe\", {\n                        directives: [\n                          {\n                            name: \"show\",\n                            rawName: \"v-show\",\n                            value: _vm.isIframeLoaded,\n                            expression: \"isIframeLoaded\",\n                          },\n                        ],\n                        ref: \"previewPage\",\n                        staticClass: \"result-wrapper\",\n                        attrs: { frameborder: \"0\", src: \"preview.html\" },\n                        on: { load: _vm.iframeLoad },\n                      }),\n                      _c(\"div\", {\n                        directives: [\n                          {\n                            name: \"show\",\n                            rawName: \"v-show\",\n                            value: !_vm.isIframeLoaded,\n                            expression: \"!isIframeLoaded\",\n                          },\n                          {\n                            name: \"loading\",\n                            rawName: \"v-loading\",\n                            value: true,\n                            expression: \"true\",\n                          },\n                        ],\n                        staticClass: \"result-wrapper\",\n                      }),\n                    ]\n                  ),\n                ],\n                1\n              ),\n            ],\n            1\n          ),\n        ]\n      ),\n      _c(\"resource-dialog\", {\n        attrs: {\n          visible: _vm.resourceVisible,\n          \"origin-resource\": _vm.resources,\n        },\n        on: {\n          \"update:visible\": function ($event) {\n            _vm.resourceVisible = $event\n          },\n          save: _vm.setResource,\n        },\n      }),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"icon-dialog\" },\n    [\n      _c(\n        \"el-dialog\",\n        _vm._g(\n          _vm._b(\n            {\n              attrs: { width: \"980px\", \"modal-append-to-body\": false },\n              on: { open: _vm.onOpen, close: _vm.onClose },\n            },\n            \"el-dialog\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _c(\n            \"div\",\n            { attrs: { slot: \"title\" }, slot: \"title\" },\n            [\n              _vm._v(\" 选择图标 \"),\n              _c(\"el-input\", {\n                style: { width: \"260px\" },\n                attrs: {\n                  size: \"mini\",\n                  placeholder: \"请输入图标名称\",\n                  \"prefix-icon\": \"el-icon-search\",\n                  clearable: \"\",\n                },\n                model: {\n                  value: _vm.key,\n                  callback: function ($$v) {\n                    _vm.key = $$v\n                  },\n                  expression: \"key\",\n                },\n              }),\n            ],\n            1\n          ),\n          _c(\n            \"ul\",\n            { staticClass: \"icon-ul\" },\n            _vm._l(_vm.iconList, function (icon) {\n              return _c(\n                \"li\",\n                {\n                  key: icon,\n                  class: _vm.active === icon ? \"active-item\" : \"\",\n                  on: {\n                    click: function ($event) {\n                      return _vm.onSelect(icon)\n                    },\n                  },\n                },\n                [_c(\"i\", { class: icon }), _c(\"div\", [_vm._v(_vm._s(icon))])]\n              )\n            }),\n            0\n          ),\n        ]\n      ),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\n        \"el-drawer\",\n        _vm._g(\n          _vm._b(\n            { on: { opened: _vm.onOpen, close: _vm.onClose } },\n            \"el-drawer\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _c(\n            \"div\",\n            { staticClass: \"action-bar\", style: { \"text-align\": \"left\" } },\n            [\n              _c(\n                \"span\",\n                { staticClass: \"bar-btn\", on: { click: _vm.refresh } },\n                [_c(\"i\", { staticClass: \"el-icon-refresh\" }), _vm._v(\" 刷新 \")]\n              ),\n              _c(\n                \"span\",\n                { ref: \"copyBtn\", staticClass: \"bar-btn copy-json-btn\" },\n                [\n                  _c(\"i\", { staticClass: \"el-icon-document-copy\" }),\n                  _vm._v(\" 复制JSON \"),\n                ]\n              ),\n              _c(\n                \"span\",\n                { staticClass: \"bar-btn\", on: { click: _vm.exportJsonFile } },\n                [\n                  _c(\"i\", { staticClass: \"el-icon-download\" }),\n                  _vm._v(\" 导出JSON文件 \"),\n                ]\n              ),\n              _c(\n                \"span\",\n                {\n                  staticClass: \"bar-btn delete-btn\",\n                  on: {\n                    click: function ($event) {\n                      return _vm.$emit(\"update:visible\", false)\n                    },\n                  },\n                },\n                [\n                  _c(\"i\", { staticClass: \"el-icon-circle-close\" }),\n                  _vm._v(\" 关闭 \"),\n                ]\n              ),\n            ]\n          ),\n          _c(\"div\", {\n            staticClass: \"json-editor\",\n            attrs: { id: \"editorJson\" },\n          }),\n        ]\n      ),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\n        \"el-dialog\",\n        _vm._g(\n          _vm._b(\n            {\n              attrs: {\n                title: \"外部资源引用\",\n                width: \"600px\",\n                \"close-on-click-modal\": false,\n              },\n              on: { open: _vm.onOpen, close: _vm.onClose },\n            },\n            \"el-dialog\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _vm._l(_vm.resources, function (item, index) {\n            return _c(\n              \"el-input\",\n              {\n                key: index,\n                staticClass: \"url-item\",\n                attrs: {\n                  placeholder: \"请输入 css 或 js 资源路径\",\n                  \"prefix-icon\": \"el-icon-link\",\n                  clearable: \"\",\n                },\n                model: {\n                  value: _vm.resources[index],\n                  callback: function ($$v) {\n                    _vm.$set(_vm.resources, index, $$v)\n                  },\n                  expression: \"resources[index]\",\n                },\n              },\n              [\n                _c(\"el-button\", {\n                  attrs: { slot: \"append\", icon: \"el-icon-delete\" },\n                  on: {\n                    click: function ($event) {\n                      return _vm.deleteOne(index)\n                    },\n                  },\n                  slot: \"append\",\n                }),\n              ],\n              1\n            )\n          }),\n          _c(\n            \"el-button-group\",\n            { staticClass: \"add-item\" },\n            [\n              _c(\n                \"el-button\",\n                {\n                  attrs: { plain: \"\" },\n                  on: {\n                    click: function ($event) {\n                      return _vm.addOne(\n                        \"https://lib.baomitu.com/jquery/1.8.3/jquery.min.js\"\n                      )\n                    },\n                  },\n                },\n                [_vm._v(\" jQuery1.8.3 \")]\n              ),\n              _c(\n                \"el-button\",\n                {\n                  attrs: { plain: \"\" },\n                  on: {\n                    click: function ($event) {\n                      return _vm.addOne(\"https://unpkg.com/http-vue-loader\")\n                    },\n                  },\n                },\n                [_vm._v(\" http-vue-loader \")]\n              ),\n              _c(\n                \"el-button\",\n                {\n                  attrs: { icon: \"el-icon-circle-plus-outline\", plain: \"\" },\n                  on: {\n                    click: function ($event) {\n                      return _vm.addOne(\"\")\n                    },\n                  },\n                },\n                [_vm._v(\" 添加其他 \")]\n              ),\n            ],\n            1\n          ),\n          _c(\n            \"div\",\n            { attrs: { slot: \"footer\" }, slot: \"footer\" },\n            [\n              _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n              _c(\n                \"el-button\",\n                {\n                  attrs: { type: \"primary\" },\n                  on: { click: _vm.handelConfirm },\n                },\n                [_vm._v(\" 确定 \")]\n              ),\n            ],\n            1\n          ),\n        ],\n        2\n      ),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticClass: \"right-board\" },\n    [\n      _c(\n        \"el-tabs\",\n        {\n          staticClass: \"center-tabs\",\n          model: {\n            value: _vm.currentTab,\n            callback: function ($$v) {\n              _vm.currentTab = $$v\n            },\n            expression: \"currentTab\",\n          },\n        },\n        [\n          _c(\"el-tab-pane\", { attrs: { label: \"组件属性\", name: \"field\" } }),\n          _c(\"el-tab-pane\", { attrs: { label: \"表单属性\", name: \"form\" } }),\n        ],\n        1\n      ),\n      _c(\n        \"div\",\n        { staticClass: \"field-box\" },\n        [\n          _c(\n            \"a\",\n            {\n              staticClass: \"document-link\",\n              attrs: {\n                target: \"_blank\",\n                href: _vm.documentLink,\n                title: \"查看组件文档\",\n              },\n            },\n            [_c(\"i\", { staticClass: \"el-icon-link\" })]\n          ),\n          _c(\n            \"el-scrollbar\",\n            { staticClass: \"right-scrollbar\" },\n            [\n              _c(\n                \"el-form\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: _vm.currentTab === \"field\" && _vm.showField,\n                      expression: \"currentTab==='field' && showField\",\n                    },\n                  ],\n                  attrs: { size: \"small\", \"label-width\": \"90px\" },\n                },\n                [\n                  _vm.activeData.__config__.changeTag\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"组件类型\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              attrs: { placeholder: \"请选择组件类型\" },\n                              on: { change: _vm.tagChange },\n                              model: {\n                                value: _vm.activeData.__config__.tagIcon,\n                                callback: function ($$v) {\n                                  _vm.$set(\n                                    _vm.activeData.__config__,\n                                    \"tagIcon\",\n                                    $$v\n                                  )\n                                },\n                                expression: \"activeData.__config__.tagIcon\",\n                              },\n                            },\n                            _vm._l(_vm.tagList, function (group) {\n                              return _c(\n                                \"el-option-group\",\n                                {\n                                  key: group.label,\n                                  attrs: { label: group.label },\n                                },\n                                _vm._l(group.options, function (item) {\n                                  return _c(\n                                    \"el-option\",\n                                    {\n                                      key: item.__config__.label,\n                                      attrs: {\n                                        label: item.__config__.label,\n                                        value: item.__config__.tagIcon,\n                                      },\n                                    },\n                                    [\n                                      _c(\"svg-icon\", {\n                                        staticClass: \"node-icon\",\n                                        attrs: {\n                                          \"icon-class\": item.__config__.tagIcon,\n                                        },\n                                      }),\n                                      _c(\"span\", [\n                                        _vm._v(\n                                          \" \" + _vm._s(item.__config__.label)\n                                        ),\n                                      ]),\n                                    ],\n                                    1\n                                  )\n                                }),\n                                1\n                              )\n                            }),\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__vModel__ !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"字段名\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入字段名（v-model）\" },\n                            model: {\n                              value: _vm.activeData.__vModel__,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"__vModel__\", $$v)\n                              },\n                              expression: \"activeData.__vModel__\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.componentName !== undefined\n                    ? _c(\"el-form-item\", { attrs: { label: \"组件名\" } }, [\n                        _vm._v(\n                          \" \" +\n                            _vm._s(_vm.activeData.__config__.componentName) +\n                            \" \"\n                        ),\n                      ])\n                    : _vm._e(),\n                  _vm.activeData.__config__.label !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"标题\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入标题\" },\n                            on: { input: _vm.changeRenderKey },\n                            model: {\n                              value: _vm.activeData.__config__.label,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"label\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.label\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.placeholder !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"占位提示\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入占位提示\" },\n                            on: { input: _vm.changeRenderKey },\n                            model: {\n                              value: _vm.activeData.placeholder,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"placeholder\", $$v)\n                              },\n                              expression: \"activeData.placeholder\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"start-placeholder\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"开始占位\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入占位提示\" },\n                            model: {\n                              value: _vm.activeData[\"start-placeholder\"],\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData,\n                                  \"start-placeholder\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData['start-placeholder']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"end-placeholder\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"结束占位\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入占位提示\" },\n                            model: {\n                              value: _vm.activeData[\"end-placeholder\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"end-placeholder\", $$v)\n                              },\n                              expression: \"activeData['end-placeholder']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.span !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"表单栅格\" } },\n                        [\n                          _c(\"el-slider\", {\n                            attrs: { max: 24, min: 1, marks: { 12: \"\" } },\n                            on: { change: _vm.spanChange },\n                            model: {\n                              value: _vm.activeData.__config__.span,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData.__config__, \"span\", $$v)\n                              },\n                              expression: \"activeData.__config__.span\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.layout === \"rowFormItem\" &&\n                  _vm.activeData.gutter !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"栅格间隔\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { min: 0, placeholder: \"栅格间隔\" },\n                            model: {\n                              value: _vm.activeData.gutter,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"gutter\", $$v)\n                              },\n                              expression: \"activeData.gutter\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.layout === \"rowFormItem\" &&\n                  _vm.activeData.type !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"布局模式\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.activeData.type,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"type\", $$v)\n                                },\n                                expression: \"activeData.type\",\n                              },\n                            },\n                            [\n                              _c(\"el-radio-button\", {\n                                attrs: { label: \"default\" },\n                              }),\n                              _c(\"el-radio-button\", {\n                                attrs: { label: \"flex\" },\n                              }),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.justify !== undefined &&\n                  _vm.activeData.type === \"flex\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"水平排列\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              attrs: { placeholder: \"请选择水平排列\" },\n                              model: {\n                                value: _vm.activeData.justify,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"justify\", $$v)\n                                },\n                                expression: \"activeData.justify\",\n                              },\n                            },\n                            _vm._l(_vm.justifyOptions, function (item, index) {\n                              return _c(\"el-option\", {\n                                key: index,\n                                attrs: { label: item.label, value: item.value },\n                              })\n                            }),\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.align !== undefined &&\n                  _vm.activeData.type === \"flex\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"垂直排列\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.activeData.align,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"align\", $$v)\n                                },\n                                expression: \"activeData.align\",\n                              },\n                            },\n                            [\n                              _c(\"el-radio-button\", {\n                                attrs: { label: \"top\" },\n                              }),\n                              _c(\"el-radio-button\", {\n                                attrs: { label: \"middle\" },\n                              }),\n                              _c(\"el-radio-button\", {\n                                attrs: { label: \"bottom\" },\n                              }),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.labelWidth !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"标签宽度\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              type: \"number\",\n                              placeholder: \"请输入标签宽度\",\n                            },\n                            model: {\n                              value: _vm.activeData.__config__.labelWidth,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"labelWidth\",\n                                  _vm._n($$v)\n                                )\n                              },\n                              expression: \"activeData.__config__.labelWidth\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.style &&\n                  _vm.activeData.style.width !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"组件宽度\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              placeholder: \"请输入组件宽度\",\n                              clearable: \"\",\n                            },\n                            model: {\n                              value: _vm.activeData.style.width,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData.style, \"width\", $$v)\n                              },\n                              expression: \"activeData.style.width\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__vModel__ !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"默认值\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              value: _vm.setDefaultValue(\n                                _vm.activeData.__config__.defaultValue\n                              ),\n                              placeholder: \"请输入默认值\",\n                            },\n                            on: { input: _vm.onDefaultValueInput },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-checkbox-group\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"至少应选\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: {\n                              value: _vm.activeData.min,\n                              min: 0,\n                              placeholder: \"至少应选\",\n                            },\n                            on: {\n                              input: function ($event) {\n                                return _vm.$set(\n                                  _vm.activeData,\n                                  \"min\",\n                                  $event ? $event : undefined\n                                )\n                              },\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-checkbox-group\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最多可选\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: {\n                              value: _vm.activeData.max,\n                              min: 0,\n                              placeholder: \"最多可选\",\n                            },\n                            on: {\n                              input: function ($event) {\n                                return _vm.$set(\n                                  _vm.activeData,\n                                  \"max\",\n                                  $event ? $event : undefined\n                                )\n                              },\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__slot__ &&\n                  _vm.activeData.__slot__.prepend !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"前缀\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入前缀\" },\n                            model: {\n                              value: _vm.activeData.__slot__.prepend,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__slot__,\n                                  \"prepend\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__slot__.prepend\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__slot__ &&\n                  _vm.activeData.__slot__.append !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"后缀\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入后缀\" },\n                            model: {\n                              value: _vm.activeData.__slot__.append,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData.__slot__, \"append\", $$v)\n                              },\n                              expression: \"activeData.__slot__.append\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"prefix-icon\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"前图标\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: { placeholder: \"请输入前图标名称\" },\n                              model: {\n                                value: _vm.activeData[\"prefix-icon\"],\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"prefix-icon\", $$v)\n                                },\n                                expression: \"activeData['prefix-icon']\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-button\",\n                                {\n                                  attrs: {\n                                    slot: \"append\",\n                                    icon: \"el-icon-thumb\",\n                                  },\n                                  on: {\n                                    click: function ($event) {\n                                      return _vm.openIconsDialog(\"prefix-icon\")\n                                    },\n                                  },\n                                  slot: \"append\",\n                                },\n                                [_vm._v(\" 选择 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"suffix-icon\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"后图标\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: { placeholder: \"请输入后图标名称\" },\n                              model: {\n                                value: _vm.activeData[\"suffix-icon\"],\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"suffix-icon\", $$v)\n                                },\n                                expression: \"activeData['suffix-icon']\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-button\",\n                                {\n                                  attrs: {\n                                    slot: \"append\",\n                                    icon: \"el-icon-thumb\",\n                                  },\n                                  on: {\n                                    click: function ($event) {\n                                      return _vm.openIconsDialog(\"suffix-icon\")\n                                    },\n                                  },\n                                  slot: \"append\",\n                                },\n                                [_vm._v(\" 选择 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"icon\"] !== undefined &&\n                  _vm.activeData.__config__.tag === \"el-button\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"按钮图标\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: { placeholder: \"请输入按钮图标名称\" },\n                              model: {\n                                value: _vm.activeData[\"icon\"],\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"icon\", $$v)\n                                },\n                                expression: \"activeData['icon']\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-button\",\n                                {\n                                  attrs: {\n                                    slot: \"append\",\n                                    icon: \"el-icon-thumb\",\n                                  },\n                                  on: {\n                                    click: function ($event) {\n                                      return _vm.openIconsDialog(\"icon\")\n                                    },\n                                  },\n                                  slot: \"append\",\n                                },\n                                [_vm._v(\" 选择 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-cascader\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"选项分隔符\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入选项分隔符\" },\n                            model: {\n                              value: _vm.activeData.separator,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"separator\", $$v)\n                              },\n                              expression: \"activeData.separator\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.autosize !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最小行数\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { min: 1, placeholder: \"最小行数\" },\n                            model: {\n                              value: _vm.activeData.autosize.minRows,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.autosize,\n                                  \"minRows\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.autosize.minRows\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.autosize !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最大行数\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { min: 1, placeholder: \"最大行数\" },\n                            model: {\n                              value: _vm.activeData.autosize.maxRows,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.autosize,\n                                  \"maxRows\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.autosize.maxRows\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.isShowMin\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最小值\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { placeholder: \"最小值\" },\n                            model: {\n                              value: _vm.activeData.min,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"min\", $$v)\n                              },\n                              expression: \"activeData.min\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.isShowMax\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最大值\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { placeholder: \"最大值\" },\n                            model: {\n                              value: _vm.activeData.max,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"max\", $$v)\n                              },\n                              expression: \"activeData.max\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.height !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"组件高度\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { placeholder: \"高度\" },\n                            on: { input: _vm.changeRenderKey },\n                            model: {\n                              value: _vm.activeData.height,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"height\", $$v)\n                              },\n                              expression: \"activeData.height\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.isShowStep\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"步长\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { placeholder: \"步数\" },\n                            model: {\n                              value: _vm.activeData.step,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"step\", $$v)\n                              },\n                              expression: \"activeData.step\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-input-number\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"精度\" } },\n                        [\n                          _c(\"el-input-number\", {\n                            attrs: { min: 0, placeholder: \"精度\" },\n                            model: {\n                              value: _vm.activeData.precision,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"precision\", $$v)\n                              },\n                              expression: \"activeData.precision\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-input-number\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"按钮位置\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.activeData[\"controls-position\"],\n                                callback: function ($$v) {\n                                  _vm.$set(\n                                    _vm.activeData,\n                                    \"controls-position\",\n                                    $$v\n                                  )\n                                },\n                                expression: \"activeData['controls-position']\",\n                              },\n                            },\n                            [\n                              _c(\"el-radio-button\", { attrs: { label: \"\" } }, [\n                                _vm._v(\" 默认 \"),\n                              ]),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"right\" } },\n                                [_vm._v(\" 右侧 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.maxlength !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"最多输入\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: { placeholder: \"请输入字符长度\" },\n                              model: {\n                                value: _vm.activeData.maxlength,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"maxlength\", $$v)\n                                },\n                                expression: \"activeData.maxlength\",\n                              },\n                            },\n                            [\n                              _c(\"template\", { slot: \"append\" }, [\n                                _vm._v(\" 个字符 \"),\n                              ]),\n                            ],\n                            2\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"active-text\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"开启提示\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入开启提示\" },\n                            model: {\n                              value: _vm.activeData[\"active-text\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"active-text\", $$v)\n                              },\n                              expression: \"activeData['active-text']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"inactive-text\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"关闭提示\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入关闭提示\" },\n                            model: {\n                              value: _vm.activeData[\"inactive-text\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"inactive-text\", $$v)\n                              },\n                              expression: \"activeData['inactive-text']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"active-value\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"开启值\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              value: _vm.setDefaultValue(\n                                _vm.activeData[\"active-value\"]\n                              ),\n                              placeholder: \"请输入开启值\",\n                            },\n                            on: {\n                              input: function ($event) {\n                                return _vm.onSwitchValueInput(\n                                  $event,\n                                  \"active-value\"\n                                )\n                              },\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"inactive-value\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"关闭值\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              value: _vm.setDefaultValue(\n                                _vm.activeData[\"inactive-value\"]\n                              ),\n                              placeholder: \"请输入关闭值\",\n                            },\n                            on: {\n                              input: function ($event) {\n                                return _vm.onSwitchValueInput(\n                                  $event,\n                                  \"inactive-value\"\n                                )\n                              },\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.type !== undefined &&\n                  \"el-date-picker\" === _vm.activeData.__config__.tag\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"时间类型\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              attrs: { placeholder: \"请选择时间类型\" },\n                              on: { change: _vm.dateTypeChange },\n                              model: {\n                                value: _vm.activeData.type,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"type\", $$v)\n                                },\n                                expression: \"activeData.type\",\n                              },\n                            },\n                            _vm._l(_vm.dateOptions, function (item, index) {\n                              return _c(\"el-option\", {\n                                key: index,\n                                attrs: { label: item.label, value: item.value },\n                              })\n                            }),\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.name !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"文件字段名\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入上传文件字段名\" },\n                            model: {\n                              value: _vm.activeData.name,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"name\", $$v)\n                              },\n                              expression: \"activeData.name\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.accept !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"文件类型\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              attrs: {\n                                placeholder: \"请选择文件类型\",\n                                clearable: \"\",\n                              },\n                              model: {\n                                value: _vm.activeData.accept,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"accept\", $$v)\n                                },\n                                expression: \"activeData.accept\",\n                              },\n                            },\n                            [\n                              _c(\"el-option\", {\n                                attrs: { label: \"图片\", value: \"image/*\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"视频\", value: \"video/*\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"音频\", value: \"audio/*\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"excel\", value: \".xls,.xlsx\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"word\", value: \".doc,.docx\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"pdf\", value: \".pdf\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"txt\", value: \".txt\" },\n                              }),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.fileSize !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"文件大小\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: { placeholder: \"请输入文件大小\" },\n                              model: {\n                                value: _vm.activeData.__config__.fileSize,\n                                callback: function ($$v) {\n                                  _vm.$set(\n                                    _vm.activeData.__config__,\n                                    \"fileSize\",\n                                    _vm._n($$v)\n                                  )\n                                },\n                                expression: \"activeData.__config__.fileSize\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-select\",\n                                {\n                                  style: { width: \"66px\" },\n                                  attrs: { slot: \"append\" },\n                                  slot: \"append\",\n                                  model: {\n                                    value: _vm.activeData.__config__.sizeUnit,\n                                    callback: function ($$v) {\n                                      _vm.$set(\n                                        _vm.activeData.__config__,\n                                        \"sizeUnit\",\n                                        $$v\n                                      )\n                                    },\n                                    expression:\n                                      \"activeData.__config__.sizeUnit\",\n                                  },\n                                },\n                                [\n                                  _c(\"el-option\", {\n                                    attrs: { label: \"KB\", value: \"KB\" },\n                                  }),\n                                  _c(\"el-option\", {\n                                    attrs: { label: \"MB\", value: \"MB\" },\n                                  }),\n                                  _c(\"el-option\", {\n                                    attrs: { label: \"GB\", value: \"GB\" },\n                                  }),\n                                ],\n                                1\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.action !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"上传地址\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              placeholder: \"请输入上传地址\",\n                              clearable: \"\",\n                            },\n                            model: {\n                              value: _vm.activeData.action,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"action\", $$v)\n                              },\n                              expression: \"activeData.action\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"list-type\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"列表类型\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              attrs: { size: \"small\" },\n                              model: {\n                                value: _vm.activeData[\"list-type\"],\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"list-type\", $$v)\n                                },\n                                expression: \"activeData['list-type']\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"text\" } },\n                                [_vm._v(\" text \")]\n                              ),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"picture\" } },\n                                [_vm._v(\" picture \")]\n                              ),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"picture-card\" } },\n                                [_vm._v(\" picture-card \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.type !== undefined &&\n                  _vm.activeData.__config__.tag === \"el-button\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"按钮类型\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              model: {\n                                value: _vm.activeData.type,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"type\", $$v)\n                                },\n                                expression: \"activeData.type\",\n                              },\n                            },\n                            [\n                              _c(\"el-option\", {\n                                attrs: { label: \"primary\", value: \"primary\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"success\", value: \"success\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"warning\", value: \"warning\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"danger\", value: \"danger\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"info\", value: \"info\" },\n                              }),\n                              _c(\"el-option\", {\n                                attrs: { label: \"text\", value: \"text\" },\n                              }),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.buttonText !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        {\n                          directives: [\n                            {\n                              name: \"show\",\n                              rawName: \"v-show\",\n                              value:\n                                \"picture-card\" !== _vm.activeData[\"list-type\"],\n                              expression:\n                                \"'picture-card' !== activeData['list-type']\",\n                            },\n                          ],\n                          attrs: { label: \"按钮文字\" },\n                        },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入按钮文字\" },\n                            model: {\n                              value: _vm.activeData.__config__.buttonText,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"buttonText\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.buttonText\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-button\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"按钮文字\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入按钮文字\" },\n                            model: {\n                              value: _vm.activeData.__slot__.default,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__slot__,\n                                  \"default\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__slot__.default\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"range-separator\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"分隔符\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入分隔符\" },\n                            model: {\n                              value: _vm.activeData[\"range-separator\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"range-separator\", $$v)\n                              },\n                              expression: \"activeData['range-separator']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"picker-options\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"时间段\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: { placeholder: \"请输入时间段\" },\n                            model: {\n                              value:\n                                _vm.activeData[\"picker-options\"]\n                                  .selectableRange,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData[\"picker-options\"],\n                                  \"selectableRange\",\n                                  $$v\n                                )\n                              },\n                              expression:\n                                \"activeData['picker-options'].selectableRange\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.format !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"时间格式\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              value: _vm.activeData.format,\n                              placeholder: \"请输入时间格式\",\n                            },\n                            on: {\n                              input: function ($event) {\n                                return _vm.setTimeValue($event)\n                              },\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  [\"el-checkbox-group\", \"el-radio-group\", \"el-select\"].indexOf(\n                    _vm.activeData.__config__.tag\n                  ) > -1\n                    ? [\n                        _c(\"el-divider\", [_vm._v(\"选项\")]),\n                        _c(\n                          \"draggable\",\n                          {\n                            attrs: {\n                              list: _vm.activeData.__slot__.options,\n                              animation: 340,\n                              group: \"selectItem\",\n                              handle: \".option-drag\",\n                            },\n                          },\n                          _vm._l(\n                            _vm.activeData.__slot__.options,\n                            function (item, index) {\n                              return _c(\n                                \"div\",\n                                { key: index, staticClass: \"select-item\" },\n                                [\n                                  _c(\n                                    \"div\",\n                                    {\n                                      staticClass:\n                                        \"select-line-icon option-drag\",\n                                    },\n                                    [\n                                      _c(\"i\", {\n                                        staticClass: \"el-icon-s-operation\",\n                                      }),\n                                    ]\n                                  ),\n                                  _c(\"el-input\", {\n                                    attrs: {\n                                      placeholder: \"选项名\",\n                                      size: \"small\",\n                                    },\n                                    model: {\n                                      value: item.label,\n                                      callback: function ($$v) {\n                                        _vm.$set(item, \"label\", $$v)\n                                      },\n                                      expression: \"item.label\",\n                                    },\n                                  }),\n                                  _c(\"el-input\", {\n                                    attrs: {\n                                      placeholder: \"选项值\",\n                                      size: \"small\",\n                                      value: item.value,\n                                    },\n                                    on: {\n                                      input: function ($event) {\n                                        return _vm.setOptionValue(item, $event)\n                                      },\n                                    },\n                                  }),\n                                  _c(\n                                    \"div\",\n                                    {\n                                      staticClass: \"close-btn select-line-icon\",\n                                      on: {\n                                        click: function ($event) {\n                                          return _vm.activeData.__slot__.options.splice(\n                                            index,\n                                            1\n                                          )\n                                        },\n                                      },\n                                    },\n                                    [\n                                      _c(\"i\", {\n                                        staticClass: \"el-icon-remove-outline\",\n                                      }),\n                                    ]\n                                  ),\n                                ],\n                                1\n                              )\n                            }\n                          ),\n                          0\n                        ),\n                        _c(\n                          \"div\",\n                          { staticStyle: { \"margin-left\": \"20px\" } },\n                          [\n                            _c(\n                              \"el-button\",\n                              {\n                                staticStyle: { \"padding-bottom\": \"0\" },\n                                attrs: {\n                                  icon: \"el-icon-circle-plus-outline\",\n                                  type: \"text\",\n                                },\n                                on: { click: _vm.addSelectItem },\n                              },\n                              [_vm._v(\" 添加选项 \")]\n                            ),\n                          ],\n                          1\n                        ),\n                        _c(\"el-divider\"),\n                      ]\n                    : _vm._e(),\n                  [\"el-cascader\", \"el-table\"].includes(\n                    _vm.activeData.__config__.tag\n                  )\n                    ? [\n                        _c(\"el-divider\", [_vm._v(\"选项\")]),\n                        _vm.activeData.__config__.dataType\n                          ? _c(\n                              \"el-form-item\",\n                              { attrs: { label: \"数据类型\" } },\n                              [\n                                _c(\n                                  \"el-radio-group\",\n                                  {\n                                    attrs: { size: \"small\" },\n                                    model: {\n                                      value: _vm.activeData.__config__.dataType,\n                                      callback: function ($$v) {\n                                        _vm.$set(\n                                          _vm.activeData.__config__,\n                                          \"dataType\",\n                                          $$v\n                                        )\n                                      },\n                                      expression:\n                                        \"activeData.__config__.dataType\",\n                                    },\n                                  },\n                                  [\n                                    _c(\n                                      \"el-radio-button\",\n                                      { attrs: { label: \"dynamic\" } },\n                                      [_vm._v(\" 动态数据 \")]\n                                    ),\n                                    _c(\n                                      \"el-radio-button\",\n                                      { attrs: { label: \"static\" } },\n                                      [_vm._v(\" 静态数据 \")]\n                                    ),\n                                  ],\n                                  1\n                                ),\n                              ],\n                              1\n                            )\n                          : _vm._e(),\n                        _vm.activeData.__config__.dataType === \"dynamic\"\n                          ? [\n                              _c(\n                                \"el-form-item\",\n                                { attrs: { label: \"接口地址\" } },\n                                [\n                                  _c(\n                                    \"el-input\",\n                                    {\n                                      attrs: {\n                                        title: _vm.activeData.__config__.url,\n                                        placeholder: \"请输入接口地址\",\n                                        clearable: \"\",\n                                      },\n                                      on: {\n                                        blur: function ($event) {\n                                          return _vm.$emit(\n                                            \"fetch-data\",\n                                            _vm.activeData\n                                          )\n                                        },\n                                      },\n                                      model: {\n                                        value: _vm.activeData.__config__.url,\n                                        callback: function ($$v) {\n                                          _vm.$set(\n                                            _vm.activeData.__config__,\n                                            \"url\",\n                                            $$v\n                                          )\n                                        },\n                                        expression: \"activeData.__config__.url\",\n                                      },\n                                    },\n                                    [\n                                      _c(\n                                        \"el-select\",\n                                        {\n                                          style: { width: \"85px\" },\n                                          attrs: { slot: \"prepend\" },\n                                          on: {\n                                            change: function ($event) {\n                                              return _vm.$emit(\n                                                \"fetch-data\",\n                                                _vm.activeData\n                                              )\n                                            },\n                                          },\n                                          slot: \"prepend\",\n                                          model: {\n                                            value:\n                                              _vm.activeData.__config__.method,\n                                            callback: function ($$v) {\n                                              _vm.$set(\n                                                _vm.activeData.__config__,\n                                                \"method\",\n                                                $$v\n                                              )\n                                            },\n                                            expression:\n                                              \"activeData.__config__.method\",\n                                          },\n                                        },\n                                        [\n                                          _c(\"el-option\", {\n                                            attrs: {\n                                              label: \"get\",\n                                              value: \"get\",\n                                            },\n                                          }),\n                                          _c(\"el-option\", {\n                                            attrs: {\n                                              label: \"post\",\n                                              value: \"post\",\n                                            },\n                                          }),\n                                          _c(\"el-option\", {\n                                            attrs: {\n                                              label: \"put\",\n                                              value: \"put\",\n                                            },\n                                          }),\n                                          _c(\"el-option\", {\n                                            attrs: {\n                                              label: \"delete\",\n                                              value: \"delete\",\n                                            },\n                                          }),\n                                        ],\n                                        1\n                                      ),\n                                    ],\n                                    1\n                                  ),\n                                ],\n                                1\n                              ),\n                              _c(\n                                \"el-form-item\",\n                                { attrs: { label: \"数据位置\" } },\n                                [\n                                  _c(\"el-input\", {\n                                    attrs: { placeholder: \"请输入数据位置\" },\n                                    on: {\n                                      blur: function ($event) {\n                                        return _vm.$emit(\n                                          \"fetch-data\",\n                                          _vm.activeData\n                                        )\n                                      },\n                                    },\n                                    model: {\n                                      value: _vm.activeData.__config__.dataPath,\n                                      callback: function ($$v) {\n                                        _vm.$set(\n                                          _vm.activeData.__config__,\n                                          \"dataPath\",\n                                          $$v\n                                        )\n                                      },\n                                      expression:\n                                        \"activeData.__config__.dataPath\",\n                                    },\n                                  }),\n                                ],\n                                1\n                              ),\n                              _vm.activeData.props && _vm.activeData.props.props\n                                ? [\n                                    _c(\n                                      \"el-form-item\",\n                                      { attrs: { label: \"标签键名\" } },\n                                      [\n                                        _c(\"el-input\", {\n                                          attrs: {\n                                            placeholder: \"请输入标签键名\",\n                                          },\n                                          model: {\n                                            value:\n                                              _vm.activeData.props.props.label,\n                                            callback: function ($$v) {\n                                              _vm.$set(\n                                                _vm.activeData.props.props,\n                                                \"label\",\n                                                $$v\n                                              )\n                                            },\n                                            expression:\n                                              \"activeData.props.props.label\",\n                                          },\n                                        }),\n                                      ],\n                                      1\n                                    ),\n                                    _c(\n                                      \"el-form-item\",\n                                      { attrs: { label: \"值键名\" } },\n                                      [\n                                        _c(\"el-input\", {\n                                          attrs: {\n                                            placeholder: \"请输入值键名\",\n                                          },\n                                          model: {\n                                            value:\n                                              _vm.activeData.props.props.value,\n                                            callback: function ($$v) {\n                                              _vm.$set(\n                                                _vm.activeData.props.props,\n                                                \"value\",\n                                                $$v\n                                              )\n                                            },\n                                            expression:\n                                              \"activeData.props.props.value\",\n                                          },\n                                        }),\n                                      ],\n                                      1\n                                    ),\n                                    _c(\n                                      \"el-form-item\",\n                                      { attrs: { label: \"子级键名\" } },\n                                      [\n                                        _c(\"el-input\", {\n                                          attrs: {\n                                            placeholder: \"请输入子级键名\",\n                                          },\n                                          model: {\n                                            value:\n                                              _vm.activeData.props.props\n                                                .children,\n                                            callback: function ($$v) {\n                                              _vm.$set(\n                                                _vm.activeData.props.props,\n                                                \"children\",\n                                                $$v\n                                              )\n                                            },\n                                            expression:\n                                              \"activeData.props.props.children\",\n                                          },\n                                        }),\n                                      ],\n                                      1\n                                    ),\n                                  ]\n                                : _vm._e(),\n                            ]\n                          : _vm._e(),\n                        _vm.activeData.__config__.dataType === \"static\"\n                          ? _c(\"el-tree\", {\n                              attrs: {\n                                draggable: \"\",\n                                data: _vm.activeData.options,\n                                \"node-key\": \"id\",\n                                \"expand-on-click-node\": false,\n                                \"render-content\": _vm.renderContent,\n                              },\n                            })\n                          : _vm._e(),\n                        _vm.activeData.__config__.dataType === \"static\"\n                          ? _c(\n                              \"div\",\n                              { staticStyle: { \"margin-left\": \"20px\" } },\n                              [\n                                _c(\n                                  \"el-button\",\n                                  {\n                                    staticStyle: { \"padding-bottom\": \"0\" },\n                                    attrs: {\n                                      icon: \"el-icon-circle-plus-outline\",\n                                      type: \"text\",\n                                    },\n                                    on: { click: _vm.addTreeItem },\n                                  },\n                                  [_vm._v(\" 添加父级 \")]\n                                ),\n                              ],\n                              1\n                            )\n                          : _vm._e(),\n                        _c(\"el-divider\"),\n                      ]\n                    : _vm._e(),\n                  _vm.activeData.__config__.optionType !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"选项样式\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.activeData.__config__.optionType,\n                                callback: function ($$v) {\n                                  _vm.$set(\n                                    _vm.activeData.__config__,\n                                    \"optionType\",\n                                    $$v\n                                  )\n                                },\n                                expression: \"activeData.__config__.optionType\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"default\" } },\n                                [_vm._v(\" 默认 \")]\n                              ),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"button\" } },\n                                [_vm._v(\" 按钮 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"active-color\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"开启颜色\" } },\n                        [\n                          _c(\"el-color-picker\", {\n                            model: {\n                              value: _vm.activeData[\"active-color\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"active-color\", $$v)\n                              },\n                              expression: \"activeData['active-color']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"inactive-color\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"关闭颜色\" } },\n                        [\n                          _c(\"el-color-picker\", {\n                            model: {\n                              value: _vm.activeData[\"inactive-color\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"inactive-color\", $$v)\n                              },\n                              expression: \"activeData['inactive-color']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.showLabel !== undefined &&\n                  _vm.activeData.__config__.labelWidth !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"显示标签\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.__config__.showLabel,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"showLabel\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.showLabel\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.branding !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"品牌烙印\" } },\n                        [\n                          _c(\"el-switch\", {\n                            on: { input: _vm.changeRenderKey },\n                            model: {\n                              value: _vm.activeData.branding,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"branding\", $$v)\n                              },\n                              expression: \"activeData.branding\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"allow-half\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"允许半选\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"allow-half\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"allow-half\", $$v)\n                              },\n                              expression: \"activeData['allow-half']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"show-text\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"辅助文字\" } },\n                        [\n                          _c(\"el-switch\", {\n                            on: { change: _vm.rateTextChange },\n                            model: {\n                              value: _vm.activeData[\"show-text\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"show-text\", $$v)\n                              },\n                              expression: \"activeData['show-text']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"show-score\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"显示分数\" } },\n                        [\n                          _c(\"el-switch\", {\n                            on: { change: _vm.rateScoreChange },\n                            model: {\n                              value: _vm.activeData[\"show-score\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"show-score\", $$v)\n                              },\n                              expression: \"activeData['show-score']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"show-stops\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"显示间断点\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"show-stops\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"show-stops\", $$v)\n                              },\n                              expression: \"activeData['show-stops']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.range !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"范围选择\" } },\n                        [\n                          _c(\"el-switch\", {\n                            on: { change: _vm.rangeChange },\n                            model: {\n                              value: _vm.activeData.range,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"range\", $$v)\n                              },\n                              expression: \"activeData.range\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.border !== undefined &&\n                  _vm.activeData.__config__.optionType === \"default\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否带边框\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.__config__.border,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"border\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.border\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-color-picker\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"颜色格式\" } },\n                        [\n                          _c(\n                            \"el-select\",\n                            {\n                              style: { width: \"100%\" },\n                              attrs: {\n                                placeholder: \"请选择颜色格式\",\n                                clearable: \"\",\n                              },\n                              on: { change: _vm.colorFormatChange },\n                              model: {\n                                value: _vm.activeData[\"color-format\"],\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"color-format\", $$v)\n                                },\n                                expression: \"activeData['color-format']\",\n                              },\n                            },\n                            _vm._l(\n                              _vm.colorFormatOptions,\n                              function (item, index) {\n                                return _c(\"el-option\", {\n                                  key: index,\n                                  attrs: {\n                                    label: item.label,\n                                    value: item.value,\n                                  },\n                                })\n                              }\n                            ),\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.size !== undefined &&\n                  (_vm.activeData.__config__.optionType === \"button\" ||\n                    _vm.activeData.__config__.border ||\n                    _vm.activeData.__config__.tag === \"el-color-picker\" ||\n                    _vm.activeData.__config__.tag === \"el-button\")\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"组件尺寸\" } },\n                        [\n                          _c(\n                            \"el-radio-group\",\n                            {\n                              model: {\n                                value: _vm.activeData.size,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.activeData, \"size\", $$v)\n                                },\n                                expression: \"activeData.size\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"medium\" } },\n                                [_vm._v(\" 中等 \")]\n                              ),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"small\" } },\n                                [_vm._v(\" 较小 \")]\n                              ),\n                              _c(\n                                \"el-radio-button\",\n                                { attrs: { label: \"mini\" } },\n                                [_vm._v(\" 迷你 \")]\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"show-word-limit\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"输入统计\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"show-word-limit\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"show-word-limit\", $$v)\n                              },\n                              expression: \"activeData['show-word-limit']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-input-number\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"严格步数\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"step-strictly\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"step-strictly\", $$v)\n                              },\n                              expression: \"activeData['step-strictly']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-cascader\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"任选层级\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.props.props.checkStrictly,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.props.props,\n                                  \"checkStrictly\",\n                                  $$v\n                                )\n                              },\n                              expression:\n                                \"activeData.props.props.checkStrictly\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-cascader\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否多选\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.props.props.multiple,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.props.props,\n                                  \"multiple\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.props.props.multiple\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-cascader\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"展示全路径\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"show-all-levels\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"show-all-levels\", $$v)\n                              },\n                              expression: \"activeData['show-all-levels']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-cascader\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"可否筛选\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.filterable,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"filterable\", $$v)\n                              },\n                              expression: \"activeData.filterable\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.clearable !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"能否清空\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.clearable,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"clearable\", $$v)\n                              },\n                              expression: \"activeData.clearable\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.showTip !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"显示提示\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.__config__.showTip,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"showTip\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.showTip\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-upload\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"多选文件\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.multiple,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"multiple\", $$v)\n                              },\n                              expression: \"activeData.multiple\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData[\"auto-upload\"] !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"自动上传\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData[\"auto-upload\"],\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"auto-upload\", $$v)\n                              },\n                              expression: \"activeData['auto-upload']\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.readonly !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否只读\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.readonly,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"readonly\", $$v)\n                              },\n                              expression: \"activeData.readonly\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.disabled !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否禁用\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.disabled,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"disabled\", $$v)\n                              },\n                              expression: \"activeData.disabled\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-select\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"能否搜索\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.filterable,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"filterable\", $$v)\n                              },\n                              expression: \"activeData.filterable\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.tag === \"el-select\"\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否多选\" } },\n                        [\n                          _c(\"el-switch\", {\n                            on: { change: _vm.multipleChange },\n                            model: {\n                              value: _vm.activeData.multiple,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.activeData, \"multiple\", $$v)\n                              },\n                              expression: \"activeData.multiple\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.required !== undefined\n                    ? _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"是否必填\" } },\n                        [\n                          _c(\"el-switch\", {\n                            model: {\n                              value: _vm.activeData.__config__.required,\n                              callback: function ($$v) {\n                                _vm.$set(\n                                  _vm.activeData.__config__,\n                                  \"required\",\n                                  $$v\n                                )\n                              },\n                              expression: \"activeData.__config__.required\",\n                            },\n                          }),\n                        ],\n                        1\n                      )\n                    : _vm._e(),\n                  _vm.activeData.__config__.layoutTree\n                    ? [\n                        _c(\"el-divider\", [_vm._v(\"布局结构树\")]),\n                        _c(\"el-tree\", {\n                          attrs: {\n                            data: [_vm.activeData.__config__],\n                            props: _vm.layoutTreeProps,\n                            \"node-key\": \"renderKey\",\n                            \"default-expand-all\": \"\",\n                            draggable: \"\",\n                          },\n                          scopedSlots: _vm._u(\n                            [\n                              {\n                                key: \"default\",\n                                fn: function (ref) {\n                                  var node = ref.node\n                                  var data = ref.data\n                                  return _c(\"span\", {}, [\n                                    _c(\n                                      \"span\",\n                                      { staticClass: \"node-label\" },\n                                      [\n                                        _c(\"svg-icon\", {\n                                          staticClass: \"node-icon\",\n                                          attrs: {\n                                            \"icon-class\": data.__config__\n                                              ? data.__config__.tagIcon\n                                              : data.tagIcon,\n                                          },\n                                        }),\n                                        _vm._v(\" \" + _vm._s(node.label) + \" \"),\n                                      ],\n                                      1\n                                    ),\n                                  ])\n                                },\n                              },\n                            ],\n                            null,\n                            false,\n                            3924665115\n                          ),\n                        }),\n                      ]\n                    : _vm._e(),\n                  Array.isArray(_vm.activeData.__config__.regList)\n                    ? [\n                        _c(\"el-divider\", [_vm._v(\"正则校验\")]),\n                        _vm._l(\n                          _vm.activeData.__config__.regList,\n                          function (item, index) {\n                            return _c(\n                              \"div\",\n                              { key: index, staticClass: \"reg-item\" },\n                              [\n                                _c(\n                                  \"span\",\n                                  {\n                                    staticClass: \"close-btn\",\n                                    on: {\n                                      click: function ($event) {\n                                        return _vm.activeData.__config__.regList.splice(\n                                          index,\n                                          1\n                                        )\n                                      },\n                                    },\n                                  },\n                                  [_c(\"i\", { staticClass: \"el-icon-close\" })]\n                                ),\n                                _c(\n                                  \"el-form-item\",\n                                  { attrs: { label: \"表达式\" } },\n                                  [\n                                    _c(\"el-input\", {\n                                      attrs: { placeholder: \"请输入正则\" },\n                                      model: {\n                                        value: item.pattern,\n                                        callback: function ($$v) {\n                                          _vm.$set(item, \"pattern\", $$v)\n                                        },\n                                        expression: \"item.pattern\",\n                                      },\n                                    }),\n                                  ],\n                                  1\n                                ),\n                                _c(\n                                  \"el-form-item\",\n                                  {\n                                    staticStyle: { \"margin-bottom\": \"0\" },\n                                    attrs: { label: \"错误提示\" },\n                                  },\n                                  [\n                                    _c(\"el-input\", {\n                                      attrs: { placeholder: \"请输入错误提示\" },\n                                      model: {\n                                        value: item.message,\n                                        callback: function ($$v) {\n                                          _vm.$set(item, \"message\", $$v)\n                                        },\n                                        expression: \"item.message\",\n                                      },\n                                    }),\n                                  ],\n                                  1\n                                ),\n                              ],\n                              1\n                            )\n                          }\n                        ),\n                        _c(\n                          \"div\",\n                          { staticStyle: { \"margin-left\": \"20px\" } },\n                          [\n                            _c(\n                              \"el-button\",\n                              {\n                                attrs: {\n                                  icon: \"el-icon-circle-plus-outline\",\n                                  type: \"text\",\n                                },\n                                on: { click: _vm.addReg },\n                              },\n                              [_vm._v(\" 添加规则 \")]\n                            ),\n                          ],\n                          1\n                        ),\n                      ]\n                    : _vm._e(),\n                ],\n                2\n              ),\n              _c(\n                \"el-form\",\n                {\n                  directives: [\n                    {\n                      name: \"show\",\n                      rawName: \"v-show\",\n                      value: _vm.currentTab === \"form\",\n                      expression: \"currentTab === 'form'\",\n                    },\n                  ],\n                  attrs: { size: \"small\", \"label-width\": \"90px\" },\n                },\n                [\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"表单名\" } },\n                    [\n                      _c(\"el-input\", {\n                        attrs: { placeholder: \"请输入表单名（ref）\" },\n                        model: {\n                          value: _vm.formConf.formRef,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"formRef\", $$v)\n                          },\n                          expression: \"formConf.formRef\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"表单模型\" } },\n                    [\n                      _c(\"el-input\", {\n                        attrs: { placeholder: \"请输入数据模型\" },\n                        model: {\n                          value: _vm.formConf.formModel,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"formModel\", $$v)\n                          },\n                          expression: \"formConf.formModel\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"校验模型\" } },\n                    [\n                      _c(\"el-input\", {\n                        attrs: { placeholder: \"请输入校验模型\" },\n                        model: {\n                          value: _vm.formConf.formRules,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"formRules\", $$v)\n                          },\n                          expression: \"formConf.formRules\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"表单尺寸\" } },\n                    [\n                      _c(\n                        \"el-radio-group\",\n                        {\n                          model: {\n                            value: _vm.formConf.size,\n                            callback: function ($$v) {\n                              _vm.$set(_vm.formConf, \"size\", $$v)\n                            },\n                            expression: \"formConf.size\",\n                          },\n                        },\n                        [\n                          _c(\n                            \"el-radio-button\",\n                            { attrs: { label: \"medium\" } },\n                            [_vm._v(\" 中等 \")]\n                          ),\n                          _c(\"el-radio-button\", { attrs: { label: \"small\" } }, [\n                            _vm._v(\" 较小 \"),\n                          ]),\n                          _c(\"el-radio-button\", { attrs: { label: \"mini\" } }, [\n                            _vm._v(\" 迷你 \"),\n                          ]),\n                        ],\n                        1\n                      ),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"标签对齐\" } },\n                    [\n                      _c(\n                        \"el-radio-group\",\n                        {\n                          model: {\n                            value: _vm.formConf.labelPosition,\n                            callback: function ($$v) {\n                              _vm.$set(_vm.formConf, \"labelPosition\", $$v)\n                            },\n                            expression: \"formConf.labelPosition\",\n                          },\n                        },\n                        [\n                          _c(\"el-radio-button\", { attrs: { label: \"left\" } }, [\n                            _vm._v(\" 左对齐 \"),\n                          ]),\n                          _c(\"el-radio-button\", { attrs: { label: \"right\" } }, [\n                            _vm._v(\" 右对齐 \"),\n                          ]),\n                          _c(\"el-radio-button\", { attrs: { label: \"top\" } }, [\n                            _vm._v(\" 顶部对齐 \"),\n                          ]),\n                        ],\n                        1\n                      ),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"标签宽度\" } },\n                    [\n                      _c(\"el-input\", {\n                        attrs: {\n                          type: \"number\",\n                          placeholder: \"请输入标签宽度\",\n                        },\n                        model: {\n                          value: _vm.formConf.labelWidth,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"labelWidth\", _vm._n($$v))\n                          },\n                          expression: \"formConf.labelWidth\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"栅格间隔\" } },\n                    [\n                      _c(\"el-input-number\", {\n                        attrs: { min: 0, placeholder: \"栅格间隔\" },\n                        model: {\n                          value: _vm.formConf.gutter,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"gutter\", $$v)\n                          },\n                          expression: \"formConf.gutter\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"禁用表单\" } },\n                    [\n                      _c(\"el-switch\", {\n                        model: {\n                          value: _vm.formConf.disabled,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"disabled\", $$v)\n                          },\n                          expression: \"formConf.disabled\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"表单按钮\" } },\n                    [\n                      _c(\"el-switch\", {\n                        model: {\n                          value: _vm.formConf.formBtns,\n                          callback: function ($$v) {\n                            _vm.$set(_vm.formConf, \"formBtns\", $$v)\n                          },\n                          expression: \"formConf.formBtns\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-form-item\",\n                    { attrs: { label: \"显示未选中组件边框\" } },\n                    [\n                      _c(\"el-switch\", {\n                        model: {\n                          value: _vm.formConf.unFocusedComponentBorder,\n                          callback: function ($$v) {\n                            _vm.$set(\n                              _vm.formConf,\n                              \"unFocusedComponentBorder\",\n                              $$v\n                            )\n                          },\n                          expression: \"formConf.unFocusedComponentBorder\",\n                        },\n                      }),\n                    ],\n                    1\n                  ),\n                ],\n                1\n              ),\n            ],\n            1\n          ),\n        ],\n        1\n      ),\n      _c(\"treeNode-dialog\", {\n        attrs: { visible: _vm.dialogVisible, title: \"添加选项\" },\n        on: {\n          \"update:visible\": function ($event) {\n            _vm.dialogVisible = $event\n          },\n          commit: _vm.addNode,\n        },\n      }),\n      _c(\"icons-dialog\", {\n        attrs: {\n          visible: _vm.iconsVisible,\n          current: _vm.activeData[_vm.currentIconModel],\n        },\n        on: {\n          \"update:visible\": function ($event) {\n            _vm.iconsVisible = $event\n          },\n          select: _vm.setIcon,\n        },\n      }),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"2ef12c28-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function () {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    [\n      _c(\n        \"el-dialog\",\n        _vm._g(\n          _vm._b(\n            {\n              attrs: {\n                \"close-on-click-modal\": false,\n                \"modal-append-to-body\": false,\n              },\n              on: { open: _vm.onOpen, close: _vm.onClose },\n            },\n            \"el-dialog\",\n            _vm.$attrs,\n            false\n          ),\n          _vm.$listeners\n        ),\n        [\n          _c(\n            \"el-row\",\n            { attrs: { gutter: 0 } },\n            [\n              _c(\n                \"el-form\",\n                {\n                  ref: \"elForm\",\n                  attrs: {\n                    model: _vm.formData,\n                    rules: _vm.rules,\n                    size: \"small\",\n                    \"label-width\": \"100px\",\n                  },\n                },\n                [\n                  _c(\n                    \"el-col\",\n                    { attrs: { span: 24 } },\n                    [\n                      _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"选项名\", prop: \"label\" } },\n                        [\n                          _c(\"el-input\", {\n                            attrs: {\n                              placeholder: \"请输入选项名\",\n                              clearable: \"\",\n                            },\n                            model: {\n                              value: _vm.formData.label,\n                              callback: function ($$v) {\n                                _vm.$set(_vm.formData, \"label\", $$v)\n                              },\n                              expression: \"formData.label\",\n                            },\n                          }),\n                        ],\n                        1\n                      ),\n                    ],\n                    1\n                  ),\n                  _c(\n                    \"el-col\",\n                    { attrs: { span: 24 } },\n                    [\n                      _c(\n                        \"el-form-item\",\n                        { attrs: { label: \"选项值\", prop: \"value\" } },\n                        [\n                          _c(\n                            \"el-input\",\n                            {\n                              attrs: {\n                                placeholder: \"请输入选项值\",\n                                clearable: \"\",\n                              },\n                              model: {\n                                value: _vm.formData.value,\n                                callback: function ($$v) {\n                                  _vm.$set(_vm.formData, \"value\", $$v)\n                                },\n                                expression: \"formData.value\",\n                              },\n                            },\n                            [\n                              _c(\n                                \"el-select\",\n                                {\n                                  style: { width: \"100px\" },\n                                  attrs: { slot: \"append\" },\n                                  slot: \"append\",\n                                  model: {\n                                    value: _vm.dataType,\n                                    callback: function ($$v) {\n                                      _vm.dataType = $$v\n                                    },\n                                    expression: \"dataType\",\n                                  },\n                                },\n                                _vm._l(\n                                  _vm.dataTypeOptions,\n                                  function (item, index) {\n                                    return _c(\"el-option\", {\n                                      key: index,\n                                      attrs: {\n                                        label: item.label,\n                                        value: item.value,\n                                        disabled: item.disabled,\n                                      },\n                                    })\n                                  }\n                                ),\n                                1\n                              ),\n                            ],\n                            1\n                          ),\n                        ],\n                        1\n                      ),\n                    ],\n                    1\n                  ),\n                ],\n                1\n              ),\n            ],\n            1\n          ),\n          _c(\n            \"div\",\n            { attrs: { slot: \"footer\" }, slot: \"footer\" },\n            [\n              _c(\n                \"el-button\",\n                {\n                  attrs: { type: \"primary\" },\n                  on: { click: _vm.handelConfirm },\n                },\n                [_vm._v(\" 确定 \")]\n              ),\n              _c(\"el-button\", { on: { click: _vm.close } }, [_vm._v(\" 取消 \")]),\n            ],\n            1\n          ),\n        ],\n        1\n      ),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?./node_modules/cache-loader/dist/cjs.js?%7B%22cacheDirectory%22:%22node_modules/.cache/vue-loader%22,%22cacheIdentifier%22:%222ef12c28-vue-loader-template%22%7D!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".container {\\n  position: relative;\\n  width: 100%;\\n  height: 100%;\\n}\\n.components-list {\\n  padding: 8px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  height: 100%;\\n}\\n.components-list .components-item {\\n  display: inline-block;\\n  width: 48%;\\n  margin: 1%;\\n  -webkit-transition: -webkit-transform 0ms !important;\\n  transition: -webkit-transform 0ms !important;\\n  transition: transform 0ms !important;\\n  transition: transform 0ms, -webkit-transform 0ms !important;\\n}\\n.components-draggable {\\n  padding-bottom: 20px;\\n}\\n.components-title {\\n  font-size: 14px;\\n  color: #222;\\n  margin: 6px 2px;\\n}\\n.components-title .svg-icon {\\n  color: #666;\\n  font-size: 18px;\\n}\\n.components-body {\\n  padding: 8px 10px;\\n  background: #f6f7ff;\\n  font-size: 12px;\\n  cursor: move;\\n  border: 1px dashed #f6f7ff;\\n  border-radius: 3px;\\n}\\n.components-body .svg-icon {\\n  color: #777;\\n  font-size: 15px;\\n}\\n.components-body:hover {\\n  border: 1px dashed #787be8;\\n  color: #787be8;\\n}\\n.components-body:hover .svg-icon {\\n  color: #787be8;\\n}\\n.left-board {\\n  width: 260px;\\n  position: absolute;\\n  left: 0;\\n  top: 0;\\n  height: 100vh;\\n}\\n.left-scrollbar {\\n  height: calc(100vh - 42px);\\n  overflow: hidden;\\n}\\n.center-scrollbar {\\n  height: calc(100vh - 42px);\\n  overflow: hidden;\\n  border-left: 1px solid #f1e8e8;\\n  border-right: 1px solid #f1e8e8;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.center-board {\\n  height: 100vh;\\n  width: auto;\\n  margin: 0 350px 0 260px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.empty-info {\\n  position: absolute;\\n  top: 46%;\\n  left: 0;\\n  right: 0;\\n  text-align: center;\\n  font-size: 18px;\\n  color: #ccb1ea;\\n  letter-spacing: 4px;\\n}\\n.action-bar {\\n  position: relative;\\n  height: 42px;\\n  text-align: right;\\n  padding: 0 15px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  border: 1px solid #f1e8e8;\\n  border-top: none;\\n  border-left: none;\\n}\\n.action-bar .delete-btn {\\n  color: #F56C6C;\\n}\\n.logo-wrapper {\\n  position: relative;\\n  height: 42px;\\n  background: #fff;\\n  border-bottom: 1px solid #f1e8e8;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.logo {\\n  position: absolute;\\n  left: 12px;\\n  top: 6px;\\n  line-height: 30px;\\n  color: #00afff;\\n  font-weight: 600;\\n  font-size: 17px;\\n  white-space: nowrap;\\n}\\n.logo > img {\\n  width: 30px;\\n  height: 30px;\\n  vertical-align: top;\\n}\\n.logo .github {\\n  display: inline-block;\\n  vertical-align: sub;\\n  margin-left: 15px;\\n}\\n.logo .github > img {\\n  height: 22px;\\n}\\n.center-board-row {\\n  padding: 12px 12px 15px 12px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.center-board-row > .el-form {\\n  height: calc(100vh - 69px);\\n}\\n.drawing-board {\\n  height: 100%;\\n  position: relative;\\n}\\n.drawing-board .components-body {\\n  padding: 0;\\n  margin: 0;\\n  font-size: 0;\\n}\\n.drawing-board .sortable-ghost {\\n  position: relative;\\n  display: block;\\n  overflow: hidden;\\n}\\n.drawing-board .sortable-ghost::before {\\n  content: \\\" \\\";\\n  position: absolute;\\n  left: 0;\\n  right: 0;\\n  top: 0;\\n  height: 3px;\\n  background: #5959df;\\n  z-index: 2;\\n}\\n.drawing-board .components-item.sortable-ghost {\\n  width: 100%;\\n  height: 60px;\\n  background-color: #f6f7ff;\\n}\\n.drawing-board .active-from-item > .el-form-item {\\n  background: #f6f7ff;\\n  border-radius: 6px;\\n}\\n.drawing-board .active-from-item > .drawing-item-copy, .drawing-board .active-from-item > .drawing-item-delete {\\n  display: initial;\\n}\\n.drawing-board .active-from-item > .component-name {\\n  color: #409EFF;\\n}\\n.drawing-board .el-form-item {\\n  margin-bottom: 15px;\\n}\\n.drawing-item {\\n  position: relative;\\n  cursor: move;\\n}\\n.drawing-item.unfocus-bordered:not(.active-from-item) > div:first-child {\\n  border: 1px dashed #ccc;\\n}\\n.drawing-item .el-form-item {\\n  padding: 12px 10px;\\n}\\n.drawing-row-item {\\n  position: relative;\\n  cursor: move;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  border: 1px dashed #ccc;\\n  border-radius: 3px;\\n  padding: 0 2px;\\n  margin-bottom: 15px;\\n}\\n.drawing-row-item .drawing-row-item {\\n  margin-bottom: 2px;\\n}\\n.drawing-row-item .el-col {\\n  margin-top: 22px;\\n}\\n.drawing-row-item .el-form-item {\\n  margin-bottom: 0;\\n}\\n.drawing-row-item .drag-wrapper {\\n  min-height: 80px;\\n}\\n.drawing-row-item.active-from-item {\\n  border: 1px dashed #409EFF;\\n}\\n.drawing-row-item .component-name {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  font-size: 12px;\\n  color: #bbb;\\n  display: inline-block;\\n  padding: 0 6px;\\n}\\n.drawing-item:hover > .el-form-item, .drawing-row-item:hover > .el-form-item {\\n  background: #f6f7ff;\\n  border-radius: 6px;\\n}\\n.drawing-item:hover > .drawing-item-copy, .drawing-item:hover > .drawing-item-delete, .drawing-row-item:hover > .drawing-item-copy, .drawing-row-item:hover > .drawing-item-delete {\\n  display: initial;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-copy, .drawing-row-item > .drawing-item-delete {\\n  display: none;\\n  position: absolute;\\n  top: -10px;\\n  width: 22px;\\n  height: 22px;\\n  line-height: 22px;\\n  text-align: center;\\n  border-radius: 50%;\\n  font-size: 12px;\\n  border: 1px solid;\\n  cursor: pointer;\\n  z-index: 1;\\n}\\n.drawing-item > .drawing-item-copy, .drawing-row-item > .drawing-item-copy {\\n  right: 56px;\\n  border-color: #409EFF;\\n  color: #409EFF;\\n  background: #fff;\\n}\\n.drawing-item > .drawing-item-copy:hover, .drawing-row-item > .drawing-item-copy:hover {\\n  background: #409EFF;\\n  color: #fff;\\n}\\n.drawing-item > .drawing-item-delete, .drawing-row-item > .drawing-item-delete {\\n  right: 24px;\\n  border-color: #F56C6C;\\n  color: #F56C6C;\\n  background: #fff;\\n}\\n.drawing-item > .drawing-item-delete:hover, .drawing-row-item > .drawing-item-delete:hover {\\n  background: #F56C6C;\\n  color: #fff;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".tab-editor[data-v-753f0faf] {\\n  position: absolute;\\n  top: 33px;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  font-size: 14px;\\n}\\n.left-editor[data-v-753f0faf] {\\n  position: relative;\\n  height: 100%;\\n  background: #1e1e1e;\\n  overflow: hidden;\\n}\\n.setting[data-v-753f0faf] {\\n  position: absolute;\\n  right: 15px;\\n  top: 3px;\\n  color: #a9f122;\\n  font-size: 18px;\\n  cursor: pointer;\\n  z-index: 1;\\n}\\n.right-preview[data-v-753f0faf] {\\n  height: 100%;\\n}\\n.right-preview .result-wrapper[data-v-753f0faf] {\\n  height: calc(100vh - 33px);\\n  width: 100%;\\n  overflow: auto;\\n  padding: 12px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.action-bar[data-v-753f0faf] {\\n  height: 33px;\\n  background: #f2fafb;\\n  padding: 0 15px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-753f0faf] {\\n  display: inline-block;\\n  padding: 0 6px;\\n  line-height: 32px;\\n  color: #8285f5;\\n  cursor: pointer;\\n  font-size: 14px;\\n  -webkit-user-select: none;\\n     -moz-user-select: none;\\n      -ms-user-select: none;\\n          user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-753f0faf] {\\n  font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-753f0faf]:hover {\\n  color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-753f0faf] {\\n  margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-753f0faf] {\\n  color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-753f0faf]:hover {\\n  color: #ea0b30;\\n}\\n[data-v-753f0faf] .el-drawer__header {\\n  display: none;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".icon-ul[data-v-7bbbfa18] {\\n  margin: 0;\\n  padding: 0;\\n  font-size: 0;\\n}\\n.icon-ul li[data-v-7bbbfa18] {\\n  list-style-type: none;\\n  text-align: center;\\n  font-size: 14px;\\n  display: inline-block;\\n  width: 16.66%;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  height: 108px;\\n  padding: 15px 6px 6px 6px;\\n  cursor: pointer;\\n  overflow: hidden;\\n}\\n.icon-ul li[data-v-7bbbfa18]:hover {\\n  background: #f2f2f2;\\n}\\n.icon-ul li.active-item[data-v-7bbbfa18] {\\n  background: #e1f3fb;\\n  color: #7a6df0;\\n}\\n.icon-ul li > i[data-v-7bbbfa18] {\\n  font-size: 30px;\\n  line-height: 50px;\\n}\\n.icon-dialog[data-v-7bbbfa18]  .el-dialog {\\n  border-radius: 8px;\\n  margin-bottom: 0;\\n  margin-top: 4vh !important;\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-orient: vertical;\\n  -webkit-box-direction: normal;\\n      -ms-flex-direction: column;\\n          flex-direction: column;\\n  max-height: 92vh;\\n  overflow: hidden;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.icon-dialog[data-v-7bbbfa18]  .el-dialog .el-dialog__header {\\n  padding-top: 14px;\\n}\\n.icon-dialog[data-v-7bbbfa18]  .el-dialog .el-dialog__body {\\n  margin: 0 20px 20px 20px;\\n  padding: 0;\\n  overflow: auto;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \"[data-v-349212d3] .el-drawer__header {\\n  display: none;\\n}\\n.action-bar[data-v-349212d3] {\\n  height: 33px;\\n  background: #f2fafb;\\n  padding: 0 15px;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.action-bar .bar-btn[data-v-349212d3] {\\n  display: inline-block;\\n  padding: 0 6px;\\n  line-height: 32px;\\n  color: #8285f5;\\n  cursor: pointer;\\n  font-size: 14px;\\n  -webkit-user-select: none;\\n     -moz-user-select: none;\\n      -ms-user-select: none;\\n          user-select: none;\\n}\\n.action-bar .bar-btn i[data-v-349212d3] {\\n  font-size: 20px;\\n}\\n.action-bar .bar-btn[data-v-349212d3]:hover {\\n  color: #4348d4;\\n}\\n.action-bar .bar-btn + .bar-btn[data-v-349212d3] {\\n  margin-left: 8px;\\n}\\n.action-bar .delete-btn[data-v-349212d3] {\\n  color: #f56c6c;\\n}\\n.action-bar .delete-btn[data-v-349212d3]:hover {\\n  color: #ea0b30;\\n}\\n.json-editor[data-v-349212d3] {\\n  height: calc(100vh - 33px);\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".add-item[data-v-1416fb60] {\\n  margin-top: 8px;\\n}\\n.url-item[data-v-1416fb60] {\\n  margin-bottom: 12px;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".right-board[data-v-77ba98a2] {\\n  width: 350px;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n  padding-top: 3px;\\n}\\n.right-board .field-box[data-v-77ba98a2] {\\n  position: relative;\\n  height: calc(100vh - 42px);\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n  overflow: hidden;\\n}\\n.right-board .el-scrollbar[data-v-77ba98a2] {\\n  height: 100%;\\n}\\n.select-item[data-v-77ba98a2] {\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  border: 1px dashed #fff;\\n  -webkit-box-sizing: border-box;\\n          box-sizing: border-box;\\n}\\n.select-item .close-btn[data-v-77ba98a2] {\\n  cursor: pointer;\\n  color: #f56c6c;\\n}\\n.select-item .el-input + .el-input[data-v-77ba98a2] {\\n  margin-left: 4px;\\n}\\n.select-item + .select-item[data-v-77ba98a2] {\\n  margin-top: 4px;\\n}\\n.select-item.sortable-chosen[data-v-77ba98a2] {\\n  border: 1px dashed #409eff;\\n}\\n.select-line-icon[data-v-77ba98a2] {\\n  line-height: 32px;\\n  font-size: 22px;\\n  padding: 0 4px;\\n  color: #777;\\n}\\n.option-drag[data-v-77ba98a2] {\\n  cursor: move;\\n}\\n.time-range .el-date-editor[data-v-77ba98a2] {\\n  width: 227px;\\n}\\n.time-range[data-v-77ba98a2]  .el-icon-time {\\n  display: none;\\n}\\n.document-link[data-v-77ba98a2] {\\n  position: absolute;\\n  display: block;\\n  width: 26px;\\n  height: 26px;\\n  top: 0;\\n  left: 0;\\n  cursor: pointer;\\n  background: #409eff;\\n  z-index: 1;\\n  border-radius: 0 0 6px 0;\\n  text-align: center;\\n  line-height: 26px;\\n  color: #fff;\\n  font-size: 18px;\\n}\\n.node-label[data-v-77ba98a2] {\\n  font-size: 14px;\\n}\\n.node-icon[data-v-77ba98a2] {\\n  color: #bebfc3;\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/file-saver/dist/FileSaver.min.js":
/*!*******************************************************!*\
  !*** ./node_modules/file-saver/dist/FileSaver.min.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/file-saver/dist/FileSaver.min.js?");

/***/ }),

/***/ "./node_modules/util/node_modules/inherits/inherits_browser.js":
/*!*********************************************************************!*\
  !*** ./node_modules/util/node_modules/inherits/inherits_browser.js ***!
  \*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    ctor.prototype = Object.create(superCtor.prototype, {\n      constructor: {\n        value: ctor,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n\n\n//# sourceURL=webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js?");

/***/ }),

/***/ "./node_modules/util/support/isBufferBrowser.js":
/*!******************************************************!*\
  !*** ./node_modules/util/support/isBufferBrowser.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

eval("module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}\n\n//# sourceURL=webpack:///./node_modules/util/support/isBufferBrowser.js?");

/***/ }),

/***/ "./node_modules/util/util.js":
/*!***********************************!*\
  !*** ./node_modules/util/util.js ***!
  \***********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = Object({\"NODE_ENV\":\"development\",\"VUE_APP_TITLE\":\"芋道管理系统\",\"VUE_APP_BASE_API\":\"http://127.0.0.1:48080\",\"VUE_APP_APP_NAME\":\"/admin-ui/\",\"VUE_APP_TENANT_ENABLE\":\"true\",\"VUE_APP_DOC_ENABLE\":\"true\",\"VUE_APP_BAIDU_CODE\":\"fadc1bd5db1a1d6f581df60a1807f8ab\",\"BASE_URL\":\"/admin-ui/\"}).NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(/*! ./support/isBuffer */ \"./node_modules/util/support/isBufferBrowser.js\");\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(/*! inherits */ \"./node_modules/util/node_modules/inherits/inherits_browser.js\");\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ \"./node_modules/node-libs-browser/mock/process.js\")))\n\n//# sourceURL=webpack:///./node_modules/util/util.js?");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7beca679\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"91af62de\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"51e64f50\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"38d0e5af\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"65824a63\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ \"./node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6285e358\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?./node_modules/vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--8-oneOf-1-2!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options");

/***/ }),

/***/ "./node_modules/vuedraggable/dist/vuedraggable.umd.js":
/*!************************************************************!*\
  !*** ./node_modules/vuedraggable/dist/vuedraggable.umd.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.esm.js\"));\n\telse {}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(\"230e\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(\"fab2\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n  if (typeof window !== \"undefined\") {\n    return window.console;\n  }\n\n  return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n  var cache = Object.create(null);\n  return function cachedFn(str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(regex, function (_, c) {\n    return c ? c.toUpperCase() : \"\";\n  });\n});\n\nfunction removeNode(node) {\n  if (node.parentElement !== null) {\n    node.parentElement.removeChild(node);\n  }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n  var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n  fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n  var currentScript = \"currentScript\",\n      scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n  // If browser needs currentScript polyfill, add get currentScript() to the document object\n  if (!(currentScript in document)) {\n    Object.defineProperty(document, currentScript, {\n      get: function(){\n\n        // IE 6-10 supports script readyState\n        // IE 10+ support stack trace\n        try { throw new Error(); }\n        catch (err) {\n\n          // Find the second match for the \"at\" string to get file src url from stack.\n          // Specifically works with the format of stack traces in IE.\n          var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n          // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n          for(i in scripts){\n            if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n              return scripts[i];\n            }\n          }\n\n          // If no match, return null\n          return null;\n        }\n      }\n    });\n  }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  if (true) {\n    __webpack_require__(\"f6fd\")\n  }\n\n  var setPublicPath_i\n  if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n  if (value === undefined) {\n    return object;\n  }\n\n  object = object || {};\n  object[propName] = value;\n  return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n  return vnodes.map(function (elt) {\n    return elt.elm;\n  }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n  if (!slots) {\n    return [];\n  }\n\n  var elmFromNodes = slots.map(function (elt) {\n    return elt.elm;\n  });\n  var footerIndex = children.length - footerOffset;\n\n  var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n    return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n  });\n\n  return isTransition ? rawIndexes.filter(function (ind) {\n    return ind !== -1;\n  }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n  var _this = this;\n\n  this.$nextTick(function () {\n    return _this.$emit(evtName.toLowerCase(), evtData);\n  });\n}\n\nfunction delegateAndEmit(evtName) {\n  var _this2 = this;\n\n  return function (evtData) {\n    if (_this2.realList !== null) {\n      _this2[\"onDrag\" + evtName](evtData);\n    }\n\n    emit.call(_this2, evtName, evtData);\n  };\n}\n\nfunction isTransitionName(name) {\n  return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n  if (!slots || slots.length !== 1) {\n    return false;\n  }\n\n  var _slots = _slicedToArray(slots, 1),\n      componentOptions = _slots[0].componentOptions;\n\n  if (!componentOptions) {\n    return false;\n  }\n\n  return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n  return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n  var headerOffset = 0;\n  var footerOffset = 0;\n  var header = getSlot(slot, scopedSlot, \"header\");\n\n  if (header) {\n    headerOffset = header.length;\n    children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n  }\n\n  var footer = getSlot(slot, scopedSlot, \"footer\");\n\n  if (footer) {\n    footerOffset = footer.length;\n    children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n  }\n\n  return {\n    children: children,\n    headerOffset: headerOffset,\n    footerOffset: footerOffset\n  };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n  var attributes = null;\n\n  var update = function update(name, value) {\n    attributes = buildAttribute(attributes, name, value);\n  };\n\n  var attrs = Object.keys($attrs).filter(function (key) {\n    return key === \"id\" || key.startsWith(\"data-\");\n  }).reduce(function (res, key) {\n    res[key] = $attrs[key];\n    return res;\n  }, {});\n  update(\"attrs\", attrs);\n\n  if (!componentData) {\n    return attributes;\n  }\n\n  var on = componentData.on,\n      props = componentData.props,\n      componentDataAttrs = componentData.attrs;\n  update(\"on\", on);\n  update(\"props\", props);\n  Object.assign(attributes.attrs, componentDataAttrs);\n  return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n  return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n  options: Object,\n  list: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  value: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  noTransitionOnDrag: {\n    type: Boolean,\n    default: false\n  },\n  clone: {\n    type: Function,\n    default: function _default(original) {\n      return original;\n    }\n  },\n  element: {\n    type: String,\n    default: \"div\"\n  },\n  tag: {\n    type: String,\n    default: null\n  },\n  move: {\n    type: Function,\n    default: null\n  },\n  componentData: {\n    type: Object,\n    required: false,\n    default: null\n  }\n};\nvar draggableComponent = {\n  name: \"draggable\",\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      transitionMode: false,\n      noneFunctionalComponentMode: false\n    };\n  },\n  render: function render(h) {\n    var slots = this.$slots.default;\n    this.transitionMode = vuedraggable_isTransition(slots);\n\n    var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n        children = _computeChildrenAndOf.children,\n        headerOffset = _computeChildrenAndOf.headerOffset,\n        footerOffset = _computeChildrenAndOf.footerOffset;\n\n    this.headerOffset = headerOffset;\n    this.footerOffset = footerOffset;\n    var attributes = getComponentAttributes(this.$attrs, this.componentData);\n    return h(this.getTag(), attributes, children);\n  },\n  created: function created() {\n    if (this.list !== null && this.value !== null) {\n      helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n    }\n\n    if (this.element !== \"div\") {\n      helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n    }\n\n    if (this.options !== undefined) {\n      helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n    }\n  },\n  mounted: function mounted() {\n    var _this3 = this;\n\n    this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n    if (this.noneFunctionalComponentMode && this.transitionMode) {\n      throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n    }\n\n    var optionsAdded = {};\n    eventsListened.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n    });\n    eventsToEmit.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n    });\n    var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n      res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n      return res;\n    }, {});\n    var options = Object.assign({}, this.options, attributes, optionsAdded, {\n      onMove: function onMove(evt, originalEvent) {\n        return _this3.onDragMove(evt, originalEvent);\n      }\n    });\n    !(\"draggable\" in options) && (options.draggable = \">*\");\n    this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n    this.computeIndexes();\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this._sortable !== undefined) this._sortable.destroy();\n  },\n  computed: {\n    rootContainer: function rootContainer() {\n      return this.transitionMode ? this.$el.children[0] : this.$el;\n    },\n    realList: function realList() {\n      return this.list ? this.list : this.value;\n    }\n  },\n  watch: {\n    options: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    $attrs: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    realList: function realList() {\n      this.computeIndexes();\n    }\n  },\n  methods: {\n    getIsFunctional: function getIsFunctional() {\n      var fnOptions = this._vnode.fnOptions;\n      return fnOptions && fnOptions.functional;\n    },\n    getTag: function getTag() {\n      return this.tag || this.element;\n    },\n    updateOptions: function updateOptions(newOptionValue) {\n      for (var property in newOptionValue) {\n        var value = Object(helper[\"a\" /* camelize */])(property);\n\n        if (readonlyProperties.indexOf(value) === -1) {\n          this._sortable.option(value, newOptionValue[property]);\n        }\n      }\n    },\n    getChildrenNodes: function getChildrenNodes() {\n      if (this.noneFunctionalComponentMode) {\n        return this.$children[0].$slots.default;\n      }\n\n      var rawNodes = this.$slots.default;\n      return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n    },\n    computeIndexes: function computeIndexes() {\n      var _this4 = this;\n\n      this.$nextTick(function () {\n        _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n      });\n    },\n    getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n      var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n      if (index === -1) {\n        //Edge case during move callback: related element might be\n        //an element different from collection\n        return null;\n      }\n\n      var element = this.realList[index];\n      return {\n        index: index,\n        element: element\n      };\n    },\n    getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n      var vue = _ref.__vue__;\n\n      if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n        if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n        return vue;\n      }\n\n      return vue.$parent;\n    },\n    emitChanges: function emitChanges(evt) {\n      var _this5 = this;\n\n      this.$nextTick(function () {\n        _this5.$emit(\"change\", evt);\n      });\n    },\n    alterList: function alterList(onList) {\n      if (this.list) {\n        onList(this.list);\n        return;\n      }\n\n      var newList = _toConsumableArray(this.value);\n\n      onList(newList);\n      this.$emit(\"input\", newList);\n    },\n    spliceList: function spliceList() {\n      var _arguments = arguments;\n\n      var spliceList = function spliceList(list) {\n        return list.splice.apply(list, _toConsumableArray(_arguments));\n      };\n\n      this.alterList(spliceList);\n    },\n    updatePosition: function updatePosition(oldIndex, newIndex) {\n      var updatePosition = function updatePosition(list) {\n        return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n      };\n\n      this.alterList(updatePosition);\n    },\n    getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n      var to = _ref2.to,\n          related = _ref2.related;\n      var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n      if (!component) {\n        return {\n          component: component\n        };\n      }\n\n      var list = component.realList;\n      var context = {\n        list: list,\n        component: component\n      };\n\n      if (to !== related && list && component.getUnderlyingVm) {\n        var destination = component.getUnderlyingVm(related);\n\n        if (destination) {\n          return Object.assign(destination, context);\n        }\n      }\n\n      return context;\n    },\n    getVmIndex: function getVmIndex(domIndex) {\n      var indexes = this.visibleIndexes;\n      var numberIndexes = indexes.length;\n      return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n    },\n    getComponent: function getComponent() {\n      return this.$slots.default[0].componentInstance;\n    },\n    resetTransitionData: function resetTransitionData(index) {\n      if (!this.noTransitionOnDrag || !this.transitionMode) {\n        return;\n      }\n\n      var nodes = this.getChildrenNodes();\n      nodes[index].data = null;\n      var transitionContainer = this.getComponent();\n      transitionContainer.children = [];\n      transitionContainer.kept = undefined;\n    },\n    onDragStart: function onDragStart(evt) {\n      this.context = this.getUnderlyingVm(evt.item);\n      evt.item._underlying_vm_ = this.clone(this.context.element);\n      draggingElement = evt.item;\n    },\n    onDragAdd: function onDragAdd(evt) {\n      var element = evt.item._underlying_vm_;\n\n      if (element === undefined) {\n        return;\n      }\n\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.spliceList(newIndex, 0, element);\n      this.computeIndexes();\n      var added = {\n        element: element,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        added: added\n      });\n    },\n    onDragRemove: function onDragRemove(evt) {\n      Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n      if (evt.pullMode === \"clone\") {\n        Object(helper[\"d\" /* removeNode */])(evt.clone);\n        return;\n      }\n\n      var oldIndex = this.context.index;\n      this.spliceList(oldIndex, 1);\n      var removed = {\n        element: this.context.element,\n        oldIndex: oldIndex\n      };\n      this.resetTransitionData(oldIndex);\n      this.emitChanges({\n        removed: removed\n      });\n    },\n    onDragUpdate: function onDragUpdate(evt) {\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n      var oldIndex = this.context.index;\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.updatePosition(oldIndex, newIndex);\n      var moved = {\n        element: this.context.element,\n        oldIndex: oldIndex,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        moved: moved\n      });\n    },\n    updateProperty: function updateProperty(evt, propertyName) {\n      evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n    },\n    computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n      if (!relatedContext.element) {\n        return 0;\n      }\n\n      var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n        return el.style[\"display\"] !== \"none\";\n      });\n\n      var currentDOMIndex = domChildren.indexOf(evt.related);\n      var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n      var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n      return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n    },\n    onDragMove: function onDragMove(evt, originalEvent) {\n      var onMove = this.move;\n\n      if (!onMove || !this.realList) {\n        return true;\n      }\n\n      var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n      var draggedContext = this.context;\n      var futureIndex = this.computeFutureIndex(relatedContext, evt);\n      Object.assign(draggedContext, {\n        futureIndex: futureIndex\n      });\n      var sendEvt = Object.assign({}, evt, {\n        relatedContext: relatedContext,\n        draggedContext: draggedContext\n      });\n      return onMove(sendEvt, originalEvent);\n    },\n    onDragEnd: function onDragEnd() {\n      this.computeIndexes();\n      draggingElement = null;\n    }\n  }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n  window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map\n\n//# sourceURL=webpack:///./node_modules/vuedraggable/dist/vuedraggable.umd.js?");

/***/ }),

/***/ "./src/api/bpm/form.js":
/*!*****************************!*\
  !*** ./src/api/bpm/form.js ***!
  \*****************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createForm = createForm;\nexports.deleteForm = deleteForm;\nexports.getForm = getForm;\nexports.getFormPage = getFormPage;\nexports.getSimpleForms = getSimpleForms;\nexports.updateForm = updateForm;\n\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ \"./src/utils/request.js\"));\n\n// 创建工作流的表单定义\nfunction createForm(data) {\n  return (0, _request.default)({\n    url: '/bpm/form/create',\n    method: 'post',\n    data: data\n  });\n} // 更新工作流的表单定义\n\n\nfunction updateForm(data) {\n  return (0, _request.default)({\n    url: '/bpm/form/update',\n    method: 'put',\n    data: data\n  });\n} // 删除工作流的表单定义\n\n\nfunction deleteForm(id) {\n  return (0, _request.default)({\n    url: '/bpm/form/delete?id=' + id,\n    method: 'delete'\n  });\n} // 获得工作流的表单定义\n\n\nfunction getForm(id) {\n  return (0, _request.default)({\n    url: '/bpm/form/get?id=' + id,\n    method: 'get'\n  });\n} // 获得工作流的表单定义分页\n\n\nfunction getFormPage(query) {\n  return (0, _request.default)({\n    url: '/bpm/form/page',\n    method: 'get',\n    params: query\n  });\n} // 获得动态表单的精简列表\n\n\nfunction getSimpleForms() {\n  return (0, _request.default)({\n    url: '/bpm/form/list-all-simple',\n    method: 'get'\n  });\n}\n\n//# sourceURL=webpack:///./src/api/bpm/form.js?");

/***/ }),

/***/ "./src/components/generator/config.js":
/*!********************************************!*\
  !*** ./src/components/generator/config.js ***!
  \********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.selectComponents = exports.layoutComponents = exports.inputComponents = exports.formConf = void 0;\n// 表单属性【右面板】\nvar formConf = {\n  formRef: 'elForm',\n  formModel: 'formData',\n  size: 'medium',\n  labelPosition: 'right',\n  labelWidth: 100,\n  formRules: 'rules',\n  gutter: 15,\n  disabled: false,\n  span: 24,\n  formBtns: true\n}; // 输入型组件 【左面板】\n\nexports.formConf = formConf;\nvar inputComponents = [{\n  // 组件的自定义配置\n  __config__: {\n    label: '单行文本',\n    labelWidth: null,\n    showLabel: true,\n    changeTag: true,\n    tag: 'el-input',\n    tagIcon: 'input',\n    defaultValue: undefined,\n    required: true,\n    layout: 'colFormItem',\n    span: 24,\n    document: 'https://element.eleme.cn/#/zh-CN/component/input',\n    // 正则校验规则\n    regList: []\n  },\n  // 组件的插槽属性\n  __slot__: {\n    prepend: '',\n    append: ''\n  },\n  // 其余的为可直接写在组件标签上的属性\n  placeholder: '请输入',\n  style: {\n    width: '100%'\n  },\n  clearable: true,\n  'prefix-icon': '',\n  'suffix-icon': '',\n  maxlength: null,\n  'show-word-limit': false,\n  readonly: false,\n  disabled: false\n}, {\n  __config__: {\n    label: '多行文本',\n    labelWidth: null,\n    showLabel: true,\n    tag: 'el-input',\n    tagIcon: 'textarea',\n    defaultValue: undefined,\n    required: true,\n    layout: 'colFormItem',\n    span: 24,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/input'\n  },\n  type: 'textarea',\n  placeholder: '请输入',\n  autosize: {\n    minRows: 4,\n    maxRows: 4\n  },\n  style: {\n    width: '100%'\n  },\n  maxlength: null,\n  'show-word-limit': false,\n  readonly: false,\n  disabled: false\n}, {\n  __config__: {\n    label: '密码',\n    showLabel: true,\n    labelWidth: null,\n    changeTag: true,\n    tag: 'el-input',\n    tagIcon: 'password',\n    defaultValue: undefined,\n    layout: 'colFormItem',\n    span: 24,\n    required: true,\n    regList: [],\n    document: 'https://element.eleme.cn/#/zh-CN/component/input'\n  },\n  __slot__: {\n    prepend: '',\n    append: ''\n  },\n  placeholder: '请输入',\n  'show-password': true,\n  style: {\n    width: '100%'\n  },\n  clearable: true,\n  'prefix-icon': '',\n  'suffix-icon': '',\n  maxlength: null,\n  'show-word-limit': false,\n  readonly: false,\n  disabled: false\n}, {\n  __config__: {\n    label: '计数器',\n    showLabel: true,\n    changeTag: true,\n    labelWidth: null,\n    tag: 'el-input-number',\n    tagIcon: 'number',\n    defaultValue: undefined,\n    span: 24,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    document: 'https://element.eleme.cn/#/zh-CN/component/input-number'\n  },\n  placeholder: '',\n  min: undefined,\n  max: undefined,\n  step: 1,\n  'step-strictly': false,\n  precision: undefined,\n  'controls-position': '',\n  disabled: false\n}, {\n  __config__: {\n    label: '编辑器',\n    showLabel: true,\n    changeTag: true,\n    labelWidth: null,\n    tag: 'tinymce',\n    tagIcon: 'rich-text',\n    defaultValue: null,\n    span: 24,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    document: 'http://tinymce.ax-z.cn'\n  },\n  placeholder: '请输入',\n  height: 300,\n  // 编辑器高度\n  branding: false // 隐藏右下角品牌烙印\n\n}]; // 选择型组件 【左面板】\n\nexports.inputComponents = inputComponents;\nvar selectComponents = [{\n  __config__: {\n    label: '下拉选择',\n    showLabel: true,\n    labelWidth: null,\n    tag: 'el-select',\n    tagIcon: 'select',\n    layout: 'colFormItem',\n    span: 24,\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/select'\n  },\n  __slot__: {\n    options: [{\n      label: '选项一',\n      value: 1\n    }, {\n      label: '选项二',\n      value: 2\n    }]\n  },\n  placeholder: '请选择',\n  style: {\n    width: '100%'\n  },\n  clearable: true,\n  disabled: false,\n  filterable: false,\n  multiple: false\n}, {\n  __config__: {\n    label: '级联选择',\n    url: 'https://www.fastmock.site/mock/f8d7a54fb1e60561e2f720d5a810009d/fg/cascaderList',\n    method: 'get',\n    dataPath: 'list',\n    dataConsumer: 'options',\n    showLabel: true,\n    labelWidth: null,\n    tag: 'el-cascader',\n    tagIcon: 'cascader',\n    layout: 'colFormItem',\n    defaultValue: [],\n    dataType: 'dynamic',\n    span: 24,\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/cascader'\n  },\n  options: [{\n    id: 1,\n    value: 1,\n    label: '选项1',\n    children: [{\n      id: 2,\n      value: 2,\n      label: '选项1-1'\n    }]\n  }],\n  placeholder: '请选择',\n  style: {\n    width: '100%'\n  },\n  props: {\n    props: {\n      multiple: false,\n      label: 'label',\n      value: 'value',\n      children: 'children'\n    }\n  },\n  'show-all-levels': true,\n  disabled: false,\n  clearable: true,\n  filterable: false,\n  separator: '/'\n}, {\n  __config__: {\n    label: '单选框组',\n    labelWidth: null,\n    showLabel: true,\n    tag: 'el-radio-group',\n    tagIcon: 'radio',\n    changeTag: true,\n    defaultValue: undefined,\n    layout: 'colFormItem',\n    span: 24,\n    optionType: 'default',\n    regList: [],\n    required: true,\n    border: false,\n    document: 'https://element.eleme.cn/#/zh-CN/component/radio'\n  },\n  __slot__: {\n    options: [{\n      label: '选项一',\n      value: 1\n    }, {\n      label: '选项二',\n      value: 2\n    }]\n  },\n  style: {},\n  size: 'medium',\n  disabled: false\n}, {\n  __config__: {\n    label: '多选框组',\n    tag: 'el-checkbox-group',\n    tagIcon: 'checkbox',\n    defaultValue: [],\n    span: 24,\n    showLabel: true,\n    labelWidth: null,\n    layout: 'colFormItem',\n    optionType: 'default',\n    required: true,\n    regList: [],\n    changeTag: true,\n    border: false,\n    document: 'https://element.eleme.cn/#/zh-CN/component/checkbox'\n  },\n  __slot__: {\n    options: [{\n      label: '选项一',\n      value: 1\n    }, {\n      label: '选项二',\n      value: 2\n    }]\n  },\n  style: {},\n  size: 'medium',\n  min: null,\n  max: null,\n  disabled: false\n}, {\n  __config__: {\n    label: '开关',\n    tag: 'el-switch',\n    tagIcon: 'switch',\n    defaultValue: false,\n    span: 24,\n    showLabel: true,\n    labelWidth: null,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/switch'\n  },\n  style: {},\n  disabled: false,\n  'active-text': '',\n  'inactive-text': '',\n  'active-color': null,\n  'inactive-color': null,\n  'active-value': true,\n  'inactive-value': false\n}, {\n  __config__: {\n    label: '滑块',\n    tag: 'el-slider',\n    tagIcon: 'slider',\n    defaultValue: null,\n    span: 24,\n    showLabel: true,\n    layout: 'colFormItem',\n    labelWidth: null,\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/slider'\n  },\n  disabled: false,\n  min: 0,\n  max: 100,\n  step: 1,\n  'show-stops': false,\n  range: false\n}, {\n  __config__: {\n    label: '时间选择',\n    tag: 'el-time-picker',\n    tagIcon: 'time',\n    defaultValue: null,\n    span: 24,\n    showLabel: true,\n    layout: 'colFormItem',\n    labelWidth: null,\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'\n  },\n  placeholder: '请选择',\n  style: {\n    width: '100%'\n  },\n  disabled: false,\n  clearable: true,\n  'picker-options': {\n    selectableRange: '00:00:00-23:59:59'\n  },\n  format: 'HH:mm:ss',\n  'value-format': 'HH:mm:ss'\n}, {\n  __config__: {\n    label: '时间范围',\n    tag: 'el-time-picker',\n    tagIcon: 'time-range',\n    span: 24,\n    showLabel: true,\n    labelWidth: null,\n    layout: 'colFormItem',\n    defaultValue: null,\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'\n  },\n  style: {\n    width: '100%'\n  },\n  disabled: false,\n  clearable: true,\n  'is-range': true,\n  'range-separator': '至',\n  'start-placeholder': '开始时间',\n  'end-placeholder': '结束时间',\n  format: 'HH:mm:ss',\n  'value-format': 'HH:mm:ss'\n}, {\n  __config__: {\n    label: '日期选择',\n    tag: 'el-date-picker',\n    tagIcon: 'date',\n    defaultValue: null,\n    showLabel: true,\n    labelWidth: null,\n    span: 24,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'\n  },\n  placeholder: '请选择',\n  type: 'date',\n  style: {\n    width: '100%'\n  },\n  disabled: false,\n  clearable: true,\n  format: 'yyyy-MM-dd',\n  'value-format': 'yyyy-MM-dd',\n  readonly: false\n}, {\n  __config__: {\n    label: '日期范围',\n    tag: 'el-date-picker',\n    tagIcon: 'date-range',\n    defaultValue: null,\n    span: 24,\n    showLabel: true,\n    labelWidth: null,\n    required: true,\n    layout: 'colFormItem',\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/date-picker'\n  },\n  style: {\n    width: '100%'\n  },\n  type: 'daterange',\n  'range-separator': '至',\n  'start-placeholder': '开始日期',\n  'end-placeholder': '结束日期',\n  disabled: false,\n  clearable: true,\n  format: 'yyyy-MM-dd',\n  'value-format': 'yyyy-MM-dd',\n  readonly: false\n}, {\n  __config__: {\n    label: '评分',\n    tag: 'el-rate',\n    tagIcon: 'rate',\n    defaultValue: 0,\n    span: 24,\n    showLabel: true,\n    labelWidth: null,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/rate'\n  },\n  style: {},\n  max: 5,\n  'allow-half': false,\n  'show-text': false,\n  'show-score': false,\n  disabled: false\n}, {\n  __config__: {\n    label: '颜色选择',\n    tag: 'el-color-picker',\n    tagIcon: 'color',\n    span: 24,\n    defaultValue: null,\n    showLabel: true,\n    labelWidth: null,\n    layout: 'colFormItem',\n    required: true,\n    regList: [],\n    changeTag: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/color-picker'\n  },\n  'show-alpha': false,\n  'color-format': '',\n  disabled: false,\n  size: 'medium'\n}, {\n  __config__: {\n    label: '上传',\n    tag: 'el-upload',\n    tagIcon: 'upload',\n    layout: 'colFormItem',\n    defaultValue: null,\n    showLabel: true,\n    labelWidth: null,\n    required: true,\n    span: 24,\n    showTip: false,\n    buttonText: '点击上传',\n    regList: [],\n    changeTag: true,\n    fileSize: 2,\n    sizeUnit: 'MB',\n    document: 'https://element.eleme.cn/#/zh-CN/component/upload'\n  },\n  __slot__: {\n    'list-type': true\n  },\n  action: \"http://127.0.0.1:48080\" + \"/admin-api/infra/file/upload\",\n  // 请求地址\n  disabled: false,\n  accept: '',\n  name: 'file',\n  'auto-upload': true,\n  'list-type': 'text',\n  multiple: false\n}]; // 布局型组件 【左面板】\n\nexports.selectComponents = selectComponents;\nvar layoutComponents = [{\n  __config__: {\n    layout: 'rowFormItem',\n    tagIcon: 'row',\n    label: '行容器',\n    layoutTree: true,\n    document: 'https://element.eleme.cn/#/zh-CN/component/layout#row-attributes'\n  },\n  type: 'default',\n  justify: 'start',\n  align: 'top'\n}, {\n  __config__: {\n    label: '按钮',\n    showLabel: true,\n    changeTag: true,\n    labelWidth: null,\n    tag: 'el-button',\n    tagIcon: 'button',\n    span: 24,\n    layout: 'colFormItem',\n    document: 'https://element.eleme.cn/#/zh-CN/component/button'\n  },\n  __slot__: {\n    default: '主要按钮'\n  },\n  type: 'primary',\n  icon: 'el-icon-search',\n  round: false,\n  size: 'medium',\n  plain: false,\n  circle: false,\n  disabled: false\n}, {\n  __config__: {\n    layout: 'colFormItem',\n    tagIcon: 'table',\n    tag: 'el-table',\n    document: 'https://element.eleme.cn/#/zh-CN/component/table',\n    span: 24,\n    formId: 101,\n    renderKey: 1595761764203,\n    componentName: 'row101',\n    showLabel: true,\n    changeTag: true,\n    labelWidth: null,\n    label: '表格[开发中]',\n    dataType: 'dynamic',\n    method: 'get',\n    dataPath: 'list',\n    dataConsumer: 'data',\n    url: 'https://www.fastmock.site/mock/f8d7a54fb1e60561e2f720d5a810009d/fg/tableData',\n    children: [{\n      __config__: {\n        layout: 'raw',\n        tag: 'el-table-column',\n        renderKey: 15957617660153\n      },\n      prop: 'date',\n      label: '日期'\n    }, {\n      __config__: {\n        layout: 'raw',\n        tag: 'el-table-column',\n        renderKey: 15957617660152\n      },\n      prop: 'address',\n      label: '地址'\n    }, {\n      __config__: {\n        layout: 'raw',\n        tag: 'el-table-column',\n        renderKey: 15957617660151\n      },\n      prop: 'name',\n      label: '名称'\n    }, {\n      __config__: {\n        layout: 'raw',\n        tag: 'el-table-column',\n        renderKey: 1595774496335,\n        children: [{\n          __config__: {\n            label: '按钮',\n            tag: 'el-button',\n            tagIcon: 'button',\n            layout: 'raw',\n            renderKey: 1595779809901\n          },\n          __slot__: {\n            default: '主要按钮'\n          },\n          type: 'primary',\n          icon: 'el-icon-search',\n          round: false,\n          size: 'medium'\n        }]\n      },\n      label: '操作'\n    }]\n  },\n  data: [],\n  directives: [{\n    name: 'loading',\n    value: true\n  }],\n  border: true,\n  type: 'default',\n  justify: 'start',\n  align: 'top'\n}];\nexports.layoutComponents = layoutComponents;\n\n//# sourceURL=webpack:///./src/components/generator/config.js?");

/***/ }),

/***/ "./src/components/generator/css.js":
/*!*****************************************!*\
  !*** ./src/components/generator/css.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.makeUpCss = makeUpCss;\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\nvar styles = {\n  'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',\n  'el-upload': '.el-upload__tip{line-height: 1.2;}'\n};\n\nfunction addCss(cssList, el) {\n  var css = styles[el.__config__.tag];\n  css && cssList.indexOf(css) === -1 && cssList.push(css);\n\n  if (el.__config__.children) {\n    el.__config__.children.forEach(function (el2) {\n      return addCss(cssList, el2);\n    });\n  }\n}\n\nfunction makeUpCss(conf) {\n  var cssList = [];\n  conf.fields.forEach(function (el) {\n    return addCss(cssList, el);\n  });\n  return cssList.join('\\n');\n}\n\n//# sourceURL=webpack:///./src/components/generator/css.js?");

/***/ }),

/***/ "./src/components/generator/drawingDefalut.js":
/*!****************************************************!*\
  !*** ./src/components/generator/drawingDefalut.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = [{\n  __config__: {\n    label: '单行文本',\n    labelWidth: null,\n    showLabel: true,\n    changeTag: true,\n    tag: 'el-input',\n    tagIcon: 'input',\n    defaultValue: undefined,\n    required: true,\n    layout: 'colFormItem',\n    span: 24,\n    document: 'https://element.eleme.cn/#/zh-CN/component/input',\n    // 正则校验规则\n    regList: [{\n      pattern: '/^1(3|4|5|7|8|9)\\\\d{9}$/',\n      message: '手机号格式错误'\n    }]\n  },\n  // 组件的插槽属性\n  __slot__: {\n    prepend: '',\n    append: ''\n  },\n  __vModel__: 'mobile',\n  placeholder: '请输入手机号',\n  style: {\n    width: '100%'\n  },\n  clearable: true,\n  'prefix-icon': 'el-icon-mobile',\n  'suffix-icon': '',\n  maxlength: 11,\n  'show-word-limit': true,\n  readonly: false,\n  disabled: false\n}];\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/components/generator/drawingDefalut.js?");

/***/ }),

/***/ "./src/components/generator/html.js":
/*!******************************************!*\
  !*** ./src/components/generator/html.js ***!
  \******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.cssStyle = cssStyle;\nexports.dialogWrapper = dialogWrapper;\nexports.makeUpHtml = makeUpHtml;\nexports.vueScript = vueScript;\nexports.vueTemplate = vueTemplate;\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.map.js */ \"./node_modules/core-js/modules/es.array.map.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\n__webpack_require__(/*! core-js/modules/es.function.name.js */ \"./node_modules/core-js/modules/es.function.name.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\nvar _ruleTrigger = _interopRequireDefault(__webpack_require__(/*! ./ruleTrigger */ \"./src/components/generator/ruleTrigger.js\"));\n\n/* eslint-disable max-len */\nvar confGlobal;\nvar someSpanIsNot24;\n\nfunction dialogWrapper(str) {\n  return \"<el-dialog v-bind=\\\"$attrs\\\" v-on=\\\"$listeners\\\" @open=\\\"onOpen\\\" @close=\\\"onClose\\\" title=\\\"Dialog Titile\\\">\\n    \".concat(str, \"\\n    <div slot=\\\"footer\\\">\\n      <el-button @click=\\\"close\\\">\\u53D6\\u6D88</el-button>\\n      <el-button type=\\\"primary\\\" @click=\\\"handelConfirm\\\">\\u786E\\u5B9A</el-button>\\n    </div>\\n  </el-dialog>\");\n}\n\nfunction vueTemplate(str) {\n  return \"<template>\\n    <div>\\n      \".concat(str, \"\\n    </div>\\n  </template>\");\n}\n\nfunction vueScript(str) {\n  return \"<script>\\n    \".concat(str, \"\\n  </script>\");\n}\n\nfunction cssStyle(cssStr) {\n  return \"<style>\\n    \".concat(cssStr, \"\\n  </style>\");\n}\n\nfunction buildFormTemplate(scheme, child, type) {\n  var labelPosition = '';\n\n  if (scheme.labelPosition !== 'right') {\n    labelPosition = \"label-position=\\\"\".concat(scheme.labelPosition, \"\\\"\");\n  }\n\n  var disabled = scheme.disabled ? \":disabled=\\\"\".concat(scheme.disabled, \"\\\"\") : '';\n  var str = \"<el-form ref=\\\"\".concat(scheme.formRef, \"\\\" :model=\\\"\").concat(scheme.formModel, \"\\\" :rules=\\\"\").concat(scheme.formRules, \"\\\" size=\\\"\").concat(scheme.size, \"\\\" \").concat(disabled, \" label-width=\\\"\").concat(scheme.labelWidth, \"px\\\" \").concat(labelPosition, \">\\n      \").concat(child, \"\\n      \").concat(buildFromBtns(scheme, type), \"\\n    </el-form>\");\n\n  if (someSpanIsNot24) {\n    str = \"<el-row :gutter=\\\"\".concat(scheme.gutter, \"\\\">\\n        \").concat(str, \"\\n      </el-row>\");\n  }\n\n  return str;\n}\n\nfunction buildFromBtns(scheme, type) {\n  var str = '';\n\n  if (scheme.formBtns && type === 'file') {\n    str = \"<el-form-item size=\\\"large\\\">\\n          <el-button type=\\\"primary\\\" @click=\\\"submitForm\\\">\\u63D0\\u4EA4</el-button>\\n          <el-button @click=\\\"resetForm\\\">\\u91CD\\u7F6E</el-button>\\n        </el-form-item>\";\n\n    if (someSpanIsNot24) {\n      str = \"<el-col :span=\\\"24\\\">\\n          \".concat(str, \"\\n        </el-col>\");\n    }\n  }\n\n  return str;\n} // span不为24的用el-col包裹\n\n\nfunction colWrapper(scheme, str) {\n  if (someSpanIsNot24 || scheme.__config__.span !== 24) {\n    return \"<el-col :span=\\\"\".concat(scheme.__config__.span, \"\\\">\\n      \").concat(str, \"\\n    </el-col>\");\n  }\n\n  return str;\n}\n\nvar layouts = {\n  colFormItem: function colFormItem(scheme) {\n    var config = scheme.__config__;\n    var labelWidth = '';\n    var label = \"label=\\\"\".concat(config.label, \"\\\"\");\n\n    if (config.labelWidth && config.labelWidth !== confGlobal.labelWidth) {\n      labelWidth = \"label-width=\\\"\".concat(config.labelWidth, \"px\\\"\");\n    }\n\n    if (config.showLabel === false) {\n      labelWidth = 'label-width=\"0\"';\n      label = '';\n    }\n\n    var required = !_ruleTrigger.default[config.tag] && config.required ? 'required' : '';\n    var tagDom = tags[config.tag] ? tags[config.tag](scheme) : null;\n    var str = \"<el-form-item \".concat(labelWidth, \" \").concat(label, \" prop=\\\"\").concat(scheme.__vModel__, \"\\\" \").concat(required, \">\\n        \").concat(tagDom, \"\\n      </el-form-item>\");\n    str = colWrapper(scheme, str);\n    return str;\n  },\n  rowFormItem: function rowFormItem(scheme) {\n    var config = scheme.__config__;\n    var type = scheme.type === 'default' ? '' : \"type=\\\"\".concat(scheme.type, \"\\\"\");\n    var justify = scheme.type === 'default' ? '' : \"justify=\\\"\".concat(scheme.justify, \"\\\"\");\n    var align = scheme.type === 'default' ? '' : \"align=\\\"\".concat(scheme.align, \"\\\"\");\n    var gutter = scheme.gutter ? \":gutter=\\\"\".concat(scheme.gutter, \"\\\"\") : '';\n    var children = config.children.map(function (el) {\n      return layouts[el.__config__.layout](el);\n    });\n    var str = \"<el-row \".concat(type, \" \").concat(justify, \" \").concat(align, \" \").concat(gutter, \">\\n      \").concat(children.join('\\n'), \"\\n    </el-row>\");\n    str = colWrapper(scheme, str);\n    return str;\n  }\n};\nvar tags = {\n  'el-button': function elButton(el) {\n    var _attrBuilder = attrBuilder(el),\n        tag = _attrBuilder.tag,\n        disabled = _attrBuilder.disabled;\n\n    var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n    var icon = el.icon ? \"icon=\\\"\".concat(el.icon, \"\\\"\") : '';\n    var round = el.round ? 'round' : '';\n    var size = el.size ? \"size=\\\"\".concat(el.size, \"\\\"\") : '';\n    var plain = el.plain ? 'plain' : '';\n    var circle = el.circle ? 'circle' : '';\n    var child = buildElButtonChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(type, \" \").concat(icon, \" \").concat(round, \" \").concat(size, \" \").concat(plain, \" \").concat(disabled, \" \").concat(circle, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  'el-input': function elInput(el) {\n    var _attrBuilder2 = attrBuilder(el),\n        tag = _attrBuilder2.tag,\n        disabled = _attrBuilder2.disabled,\n        vModel = _attrBuilder2.vModel,\n        clearable = _attrBuilder2.clearable,\n        placeholder = _attrBuilder2.placeholder,\n        width = _attrBuilder2.width;\n\n    var maxlength = el.maxlength ? \":maxlength=\\\"\".concat(el.maxlength, \"\\\"\") : '';\n    var showWordLimit = el['show-word-limit'] ? 'show-word-limit' : '';\n    var readonly = el.readonly ? 'readonly' : '';\n    var prefixIcon = el['prefix-icon'] ? \"prefix-icon='\".concat(el['prefix-icon'], \"'\") : '';\n    var suffixIcon = el['suffix-icon'] ? \"suffix-icon='\".concat(el['suffix-icon'], \"'\") : '';\n    var showPassword = el['show-password'] ? 'show-password' : '';\n    var type = el.type ? \"type=\\\"\".concat(el.type, \"\\\"\") : '';\n    var autosize = el.autosize && el.autosize.minRows ? \":autosize=\\\"{minRows: \".concat(el.autosize.minRows, \", maxRows: \").concat(el.autosize.maxRows, \"}\\\"\") : '';\n    var child = buildElInputChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(type, \" \").concat(placeholder, \" \").concat(maxlength, \" \").concat(showWordLimit, \" \").concat(readonly, \" \").concat(disabled, \" \").concat(clearable, \" \").concat(prefixIcon, \" \").concat(suffixIcon, \" \").concat(showPassword, \" \").concat(autosize, \" \").concat(width, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  'el-input-number': function elInputNumber(el) {\n    var _attrBuilder3 = attrBuilder(el),\n        tag = _attrBuilder3.tag,\n        disabled = _attrBuilder3.disabled,\n        vModel = _attrBuilder3.vModel,\n        placeholder = _attrBuilder3.placeholder;\n\n    var controlsPosition = el['controls-position'] ? \"controls-position=\".concat(el['controls-position']) : '';\n    var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n    var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n    var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n    var stepStrictly = el['step-strictly'] ? 'step-strictly' : '';\n    var precision = el.precision ? \":precision='\".concat(el.precision, \"'\") : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(step, \" \").concat(stepStrictly, \" \").concat(precision, \" \").concat(controlsPosition, \" \").concat(min, \" \").concat(max, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-select': function elSelect(el) {\n    var _attrBuilder4 = attrBuilder(el),\n        tag = _attrBuilder4.tag,\n        disabled = _attrBuilder4.disabled,\n        vModel = _attrBuilder4.vModel,\n        clearable = _attrBuilder4.clearable,\n        placeholder = _attrBuilder4.placeholder,\n        width = _attrBuilder4.width;\n\n    var filterable = el.filterable ? 'filterable' : '';\n    var multiple = el.multiple ? 'multiple' : '';\n    var child = buildElSelectChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(disabled, \" \").concat(multiple, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(width, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  'el-radio-group': function elRadioGroup(el) {\n    var _attrBuilder5 = attrBuilder(el),\n        tag = _attrBuilder5.tag,\n        disabled = _attrBuilder5.disabled,\n        vModel = _attrBuilder5.vModel;\n\n    var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n    var child = buildElRadioGroupChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  'el-checkbox-group': function elCheckboxGroup(el) {\n    var _attrBuilder6 = attrBuilder(el),\n        tag = _attrBuilder6.tag,\n        disabled = _attrBuilder6.disabled,\n        vModel = _attrBuilder6.vModel;\n\n    var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n    var min = el.min ? \":min=\\\"\".concat(el.min, \"\\\"\") : '';\n    var max = el.max ? \":max=\\\"\".concat(el.max, \"\\\"\") : '';\n    var child = buildElCheckboxGroupChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(min, \" \").concat(max, \" \").concat(size, \" \").concat(disabled, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  'el-switch': function elSwitch(el) {\n    var _attrBuilder7 = attrBuilder(el),\n        tag = _attrBuilder7.tag,\n        disabled = _attrBuilder7.disabled,\n        vModel = _attrBuilder7.vModel;\n\n    var activeText = el['active-text'] ? \"active-text=\\\"\".concat(el['active-text'], \"\\\"\") : '';\n    var inactiveText = el['inactive-text'] ? \"inactive-text=\\\"\".concat(el['inactive-text'], \"\\\"\") : '';\n    var activeColor = el['active-color'] ? \"active-color=\\\"\".concat(el['active-color'], \"\\\"\") : '';\n    var inactiveColor = el['inactive-color'] ? \"inactive-color=\\\"\".concat(el['inactive-color'], \"\\\"\") : '';\n    var activeValue = el['active-value'] !== true ? \":active-value='\".concat(JSON.stringify(el['active-value']), \"'\") : '';\n    var inactiveValue = el['inactive-value'] !== false ? \":inactive-value='\".concat(JSON.stringify(el['inactive-value']), \"'\") : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(activeText, \" \").concat(inactiveText, \" \").concat(activeColor, \" \").concat(inactiveColor, \" \").concat(activeValue, \" \").concat(inactiveValue, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-cascader': function elCascader(el) {\n    var _attrBuilder8 = attrBuilder(el),\n        tag = _attrBuilder8.tag,\n        disabled = _attrBuilder8.disabled,\n        vModel = _attrBuilder8.vModel,\n        clearable = _attrBuilder8.clearable,\n        placeholder = _attrBuilder8.placeholder,\n        width = _attrBuilder8.width;\n\n    var options = el.options ? \":options=\\\"\".concat(el.__vModel__, \"Options\\\"\") : '';\n    var props = el.props ? \":props=\\\"\".concat(el.__vModel__, \"Props\\\"\") : '';\n    var showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels=\"false\"';\n    var filterable = el.filterable ? 'filterable' : '';\n    var separator = el.separator === '/' ? '' : \"separator=\\\"\".concat(el.separator, \"\\\"\");\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(options, \" \").concat(props, \" \").concat(width, \" \").concat(showAllLevels, \" \").concat(placeholder, \" \").concat(separator, \" \").concat(filterable, \" \").concat(clearable, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-slider': function elSlider(el) {\n    var _attrBuilder9 = attrBuilder(el),\n        tag = _attrBuilder9.tag,\n        disabled = _attrBuilder9.disabled,\n        vModel = _attrBuilder9.vModel;\n\n    var min = el.min ? \":min='\".concat(el.min, \"'\") : '';\n    var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n    var step = el.step ? \":step='\".concat(el.step, \"'\") : '';\n    var range = el.range ? 'range' : '';\n    var showStops = el['show-stops'] ? \":show-stops=\\\"\".concat(el['show-stops'], \"\\\"\") : '';\n    return \"<\".concat(tag, \" \").concat(min, \" \").concat(max, \" \").concat(step, \" \").concat(vModel, \" \").concat(range, \" \").concat(showStops, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-time-picker': function elTimePicker(el) {\n    var _attrBuilder10 = attrBuilder(el),\n        tag = _attrBuilder10.tag,\n        disabled = _attrBuilder10.disabled,\n        vModel = _attrBuilder10.vModel,\n        clearable = _attrBuilder10.clearable,\n        placeholder = _attrBuilder10.placeholder,\n        width = _attrBuilder10.width;\n\n    var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n    var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n    var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n    var isRange = el['is-range'] ? 'is-range' : '';\n    var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n    var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n    var pickerOptions = el['picker-options'] ? \":picker-options='\".concat(JSON.stringify(el['picker-options']), \"'\") : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(isRange, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(pickerOptions, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-date-picker': function elDatePicker(el) {\n    var _attrBuilder11 = attrBuilder(el),\n        tag = _attrBuilder11.tag,\n        disabled = _attrBuilder11.disabled,\n        vModel = _attrBuilder11.vModel,\n        clearable = _attrBuilder11.clearable,\n        placeholder = _attrBuilder11.placeholder,\n        width = _attrBuilder11.width;\n\n    var startPlaceholder = el['start-placeholder'] ? \"start-placeholder=\\\"\".concat(el['start-placeholder'], \"\\\"\") : '';\n    var endPlaceholder = el['end-placeholder'] ? \"end-placeholder=\\\"\".concat(el['end-placeholder'], \"\\\"\") : '';\n    var rangeSeparator = el['range-separator'] ? \"range-separator=\\\"\".concat(el['range-separator'], \"\\\"\") : '';\n    var format = el.format ? \"format=\\\"\".concat(el.format, \"\\\"\") : '';\n    var valueFormat = el['value-format'] ? \"value-format=\\\"\".concat(el['value-format'], \"\\\"\") : '';\n    var type = el.type === 'date' ? '' : \"type=\\\"\".concat(el.type, \"\\\"\");\n    var readonly = el.readonly ? 'readonly' : '';\n    return \"<\".concat(tag, \" \").concat(type, \" \").concat(vModel, \" \").concat(format, \" \").concat(valueFormat, \" \").concat(width, \" \").concat(placeholder, \" \").concat(startPlaceholder, \" \").concat(endPlaceholder, \" \").concat(rangeSeparator, \" \").concat(clearable, \" \").concat(readonly, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-rate': function elRate(el) {\n    var _attrBuilder12 = attrBuilder(el),\n        tag = _attrBuilder12.tag,\n        disabled = _attrBuilder12.disabled,\n        vModel = _attrBuilder12.vModel;\n\n    var max = el.max ? \":max='\".concat(el.max, \"'\") : '';\n    var allowHalf = el['allow-half'] ? 'allow-half' : '';\n    var showText = el['show-text'] ? 'show-text' : '';\n    var showScore = el['show-score'] ? 'show-score' : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(max, \" \").concat(allowHalf, \" \").concat(showText, \" \").concat(showScore, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-color-picker': function elColorPicker(el) {\n    var _attrBuilder13 = attrBuilder(el),\n        tag = _attrBuilder13.tag,\n        disabled = _attrBuilder13.disabled,\n        vModel = _attrBuilder13.vModel;\n\n    var size = \"size=\\\"\".concat(el.size, \"\\\"\");\n    var showAlpha = el['show-alpha'] ? 'show-alpha' : '';\n    var colorFormat = el['color-format'] ? \"color-format=\\\"\".concat(el['color-format'], \"\\\"\") : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(size, \" \").concat(showAlpha, \" \").concat(colorFormat, \" \").concat(disabled, \"></\").concat(tag, \">\");\n  },\n  'el-upload': function elUpload(el) {\n    var tag = el.__config__.tag;\n    var disabled = el.disabled ? ':disabled=\\'true\\'' : '';\n    var action = el.action ? \":action=\\\"\".concat(el.__vModel__, \"Action\\\"\") : '';\n    var multiple = el.multiple ? 'multiple' : '';\n    var listType = el['list-type'] !== 'text' ? \"list-type=\\\"\".concat(el['list-type'], \"\\\"\") : '';\n    var accept = el.accept ? \"accept=\\\"\".concat(el.accept, \"\\\"\") : '';\n    var name = el.name !== 'file' ? \"name=\\\"\".concat(el.name, \"\\\"\") : '';\n    var autoUpload = el['auto-upload'] === false ? ':auto-upload=\"false\"' : '';\n    var beforeUpload = \":before-upload=\\\"\".concat(el.__vModel__, \"BeforeUpload\\\"\");\n    var fileList = \":file-list=\\\"\".concat(el.__vModel__, \"fileList\\\"\");\n    var ref = \"ref=\\\"\".concat(el.__vModel__, \"\\\"\");\n    var child = buildElUploadChild(el);\n    if (child) child = \"\\n\".concat(child, \"\\n\"); // 换行\n\n    return \"<\".concat(tag, \" \").concat(ref, \" \").concat(fileList, \" \").concat(action, \" \").concat(autoUpload, \" \").concat(multiple, \" \").concat(beforeUpload, \" \").concat(listType, \" \").concat(accept, \" \").concat(name, \" \").concat(disabled, \">\").concat(child, \"</\").concat(tag, \">\");\n  },\n  tinymce: function tinymce(el) {\n    var _attrBuilder14 = attrBuilder(el),\n        tag = _attrBuilder14.tag,\n        vModel = _attrBuilder14.vModel,\n        placeholder = _attrBuilder14.placeholder;\n\n    var height = el.height ? \":height=\\\"\".concat(el.height, \"\\\"\") : '';\n    var branding = el.branding ? \":branding=\\\"\".concat(el.branding, \"\\\"\") : '';\n    return \"<\".concat(tag, \" \").concat(vModel, \" \").concat(placeholder, \" \").concat(height, \" \").concat(branding, \"></\").concat(tag, \">\");\n  }\n};\n\nfunction attrBuilder(el) {\n  return {\n    tag: el.__config__.tag,\n    vModel: \"v-model=\\\"\".concat(confGlobal.formModel, \".\").concat(el.__vModel__, \"\\\"\"),\n    clearable: el.clearable ? 'clearable' : '',\n    placeholder: el.placeholder ? \"placeholder=\\\"\".concat(el.placeholder, \"\\\"\") : '',\n    width: el.style && el.style.width ? ':style=\"{width: \\'100%\\'}\"' : '',\n    disabled: el.disabled ? ':disabled=\\'true\\'' : ''\n  };\n} // el-buttin 子级\n\n\nfunction buildElButtonChild(scheme) {\n  var children = [];\n  var slot = scheme.__slot__ || {};\n\n  if (slot.default) {\n    children.push(slot.default);\n  }\n\n  return children.join('\\n');\n} // el-input 子级\n\n\nfunction buildElInputChild(scheme) {\n  var children = [];\n  var slot = scheme.__slot__;\n\n  if (slot && slot.prepend) {\n    children.push(\"<template slot=\\\"prepend\\\">\".concat(slot.prepend, \"</template>\"));\n  }\n\n  if (slot && slot.append) {\n    children.push(\"<template slot=\\\"append\\\">\".concat(slot.append, \"</template>\"));\n  }\n\n  return children.join('\\n');\n} // el-select 子级\n\n\nfunction buildElSelectChild(scheme) {\n  var children = [];\n  var slot = scheme.__slot__;\n\n  if (slot && slot.options && slot.options.length) {\n    children.push(\"<el-option v-for=\\\"(item, index) in \".concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.label\\\" :value=\\\"item.value\\\" :disabled=\\\"item.disabled\\\"></el-option>\"));\n  }\n\n  return children.join('\\n');\n} // el-radio-group 子级\n\n\nfunction buildElRadioGroupChild(scheme) {\n  var children = [];\n  var slot = scheme.__slot__;\n  var config = scheme.__config__;\n\n  if (slot && slot.options && slot.options.length) {\n    var tag = config.optionType === 'button' ? 'el-radio-button' : 'el-radio';\n    var border = config.border ? 'border' : '';\n    children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}</\").concat(tag, \">\"));\n  }\n\n  return children.join('\\n');\n} // el-checkbox-group 子级\n\n\nfunction buildElCheckboxGroupChild(scheme) {\n  var children = [];\n  var slot = scheme.__slot__;\n  var config = scheme.__config__;\n\n  if (slot && slot.options && slot.options.length) {\n    var tag = config.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox';\n    var border = config.border ? 'border' : '';\n    children.push(\"<\".concat(tag, \" v-for=\\\"(item, index) in \").concat(scheme.__vModel__, \"Options\\\" :key=\\\"index\\\" :label=\\\"item.value\\\" :disabled=\\\"item.disabled\\\" \").concat(border, \">{{item.label}}</\").concat(tag, \">\"));\n  }\n\n  return children.join('\\n');\n} // el-upload 子级\n\n\nfunction buildElUploadChild(scheme) {\n  var list = [];\n  var config = scheme.__config__;\n  if (scheme['list-type'] === 'picture-card') list.push('<i class=\"el-icon-plus\"></i>');else list.push(\"<el-button size=\\\"small\\\" type=\\\"primary\\\" icon=\\\"el-icon-upload\\\">\".concat(config.buttonText, \"</el-button>\"));\n  if (config.showTip) list.push(\"<div slot=\\\"tip\\\" class=\\\"el-upload__tip\\\">\\u53EA\\u80FD\\u4E0A\\u4F20\\u4E0D\\u8D85\\u8FC7 \".concat(config.fileSize).concat(config.sizeUnit, \" \\u7684\").concat(scheme.accept, \"\\u6587\\u4EF6</div>\"));\n  return list.join('\\n');\n}\n/**\n * 组装html代码。【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型，文件或弹窗等\n */\n\n\nfunction makeUpHtml(formConfig, type) {\n  var htmlList = [];\n  confGlobal = formConfig; // 判断布局是否都沾满了24个栅格，以备后续简化代码结构\n\n  someSpanIsNot24 = formConfig.fields.some(function (item) {\n    return item.__config__.span !== 24;\n  }); // 遍历渲染每个组件成html\n\n  formConfig.fields.forEach(function (el) {\n    htmlList.push(layouts[el.__config__.layout](el));\n  });\n  var htmlStr = htmlList.join('\\n'); // 将组件代码放进form标签\n\n  var temp = buildFormTemplate(formConfig, htmlStr, type); // dialog标签包裹代码\n\n  if (type === 'dialog') {\n    temp = dialogWrapper(temp);\n  }\n\n  confGlobal = null;\n  return temp;\n}\n\n//# sourceURL=webpack:///./src/components/generator/html.js?");

/***/ }),

/***/ "./src/components/generator/js.js":
/*!****************************************!*\
  !*** ./src/components/generator/js.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.makeUpJs = makeUpJs;\n\n__webpack_require__(/*! core-js/modules/es.object.to-string.js */ \"./node_modules/core-js/modules/es.object.to-string.js\");\n\n__webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.join.js */ \"./node_modules/core-js/modules/es.array.join.js\");\n\n__webpack_require__(/*! core-js/modules/es.array.concat.js */ \"./node_modules/core-js/modules/es.array.concat.js\");\n\n__webpack_require__(/*! core-js/modules/es.object.keys.js */ \"./node_modules/core-js/modules/es.object.keys.js\");\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\nvar _util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\nvar _index = __webpack_require__(/*! @/utils/index */ \"./src/utils/index.js\");\n\nvar _ruleTrigger = _interopRequireDefault(__webpack_require__(/*! ./ruleTrigger */ \"./src/components/generator/ruleTrigger.js\"));\n\nvar units = {\n  KB: '1024',\n  MB: '1024 / 1024',\n  GB: '1024 / 1024 / 1024'\n};\nvar confGlobal;\nvar inheritAttrs = {\n  file: '',\n  dialog: 'inheritAttrs: false,'\n};\n/**\n * 组装js 【入口函数】\n * @param {Object} formConfig 整个表单配置\n * @param {String} type 生成类型，文件或弹窗等\n */\n\nfunction makeUpJs(formConfig, type) {\n  confGlobal = formConfig = (0, _index.deepClone)(formConfig);\n  var dataList = [];\n  var ruleList = [];\n  var optionsList = [];\n  var propsList = [];\n  var methodList = mixinMethod(type);\n  var uploadVarList = [];\n  var created = [];\n  formConfig.fields.forEach(function (el) {\n    buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n  });\n  var script = buildexport(formConfig, type, dataList.join('\\n'), ruleList.join('\\n'), optionsList.join('\\n'), uploadVarList.join('\\n'), propsList.join('\\n'), methodList.join('\\n'), created.join('\\n'));\n  confGlobal = null;\n  return script;\n} // 构建组件属性\n\n\nfunction buildAttributes(scheme, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created) {\n  var config = scheme.__config__;\n  var slot = scheme.__slot__;\n  buildData(scheme, dataList);\n  buildRules(scheme, ruleList); // 特殊处理options属性\n\n  if (scheme.options || slot && slot.options && slot.options.length) {\n    buildOptions(scheme, optionsList);\n\n    if (config.dataType === 'dynamic') {\n      var model = \"\".concat(scheme.__vModel__, \"Options\");\n      var options = (0, _index.titleCase)(model);\n      var methodName = \"get\".concat(options);\n      buildOptionMethod(methodName, model, methodList, scheme);\n      callInCreated(methodName, created);\n    }\n  } // 处理props\n\n\n  if (scheme.props && scheme.props.props) {\n    buildProps(scheme, propsList);\n  } // 处理el-upload的action\n\n\n  if (scheme.action && config.tag === 'el-upload') {\n    uploadVarList.push(\"\".concat(scheme.__vModel__, \"Action: '\").concat(scheme.action, \"',\\n      \").concat(scheme.__vModel__, \"fileList: [],\"));\n    methodList.push(buildBeforeUpload(scheme)); // 非自动上传时，生成手动上传的函数\n\n    if (!scheme['auto-upload']) {\n      methodList.push(buildSubmitUpload(scheme));\n    }\n  } // 构建子级组件属性\n\n\n  if (config.children) {\n    config.children.forEach(function (item) {\n      buildAttributes(item, dataList, ruleList, optionsList, methodList, propsList, uploadVarList, created);\n    });\n  }\n} // 在Created调用函数\n\n\nfunction callInCreated(methodName, created) {\n  created.push(\"this.\".concat(methodName, \"()\"));\n} // 混入处理函数\n\n\nfunction mixinMethod(type) {\n  var list = [];\n  var minxins = {\n    file: confGlobal.formBtns ? {\n      submitForm: \"submitForm() {\\n        this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n          if(!valid) return\\n          // TODO \\u63D0\\u4EA4\\u8868\\u5355\\n        })\\n      },\"),\n      resetForm: \"resetForm() {\\n        this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n      },\")\n    } : null,\n    dialog: {\n      onOpen: 'onOpen() {},',\n      onClose: \"onClose() {\\n        this.$refs['\".concat(confGlobal.formRef, \"'].resetFields()\\n      },\"),\n      close: \"close() {\\n        this.$emit('update:visible', false)\\n      },\",\n      handelConfirm: \"handelConfirm() {\\n        this.$refs['\".concat(confGlobal.formRef, \"'].validate(valid => {\\n          if(!valid) return\\n          this.close()\\n        })\\n      },\")\n    }\n  };\n  var methods = minxins[type];\n\n  if (methods) {\n    Object.keys(methods).forEach(function (key) {\n      list.push(methods[key]);\n    });\n  }\n\n  return list;\n} // 构建data\n\n\nfunction buildData(scheme, dataList) {\n  var config = scheme.__config__;\n  if (scheme.__vModel__ === undefined) return;\n  var defaultValue = JSON.stringify(config.defaultValue);\n  dataList.push(\"\".concat(scheme.__vModel__, \": \").concat(defaultValue, \",\"));\n} // 构建校验规则\n\n\nfunction buildRules(scheme, ruleList) {\n  var config = scheme.__config__;\n  if (scheme.__vModel__ === undefined) return;\n  var rules = [];\n\n  if (_ruleTrigger.default[config.tag]) {\n    if (config.required) {\n      var type = (0, _util.isArray)(config.defaultValue) ? 'type: \\'array\\',' : '';\n      var message = (0, _util.isArray)(config.defaultValue) ? \"\\u8BF7\\u81F3\\u5C11\\u9009\\u62E9\\u4E00\\u4E2A\".concat(config.label) : scheme.placeholder;\n      if (message === undefined) message = \"\".concat(config.label, \"\\u4E0D\\u80FD\\u4E3A\\u7A7A\");\n      rules.push(\"{ required: true, \".concat(type, \" message: '\").concat(message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n    }\n\n    if (config.regList && (0, _util.isArray)(config.regList)) {\n      config.regList.forEach(function (item) {\n        if (item.pattern) {\n          rules.push(\"{ pattern: \".concat(eval(item.pattern), \", message: '\").concat(item.message, \"', trigger: '\").concat(_ruleTrigger.default[config.tag], \"' }\"));\n        }\n      });\n    }\n\n    ruleList.push(\"\".concat(scheme.__vModel__, \": [\").concat(rules.join(','), \"],\"));\n  }\n} // 构建options\n\n\nfunction buildOptions(scheme, optionsList) {\n  if (scheme.__vModel__ === undefined) return; // el-cascader直接有options属性，其他组件都是定义在slot中，所以有两处判断\n\n  var options = scheme.options;\n  if (!options) options = scheme.__slot__.options;\n\n  if (scheme.__config__.dataType === 'dynamic') {\n    options = [];\n  }\n\n  var str = \"\".concat(scheme.__vModel__, \"Options: \").concat(JSON.stringify(options), \",\");\n  optionsList.push(str);\n}\n\nfunction buildProps(scheme, propsList) {\n  var str = \"\".concat(scheme.__vModel__, \"Props: \").concat(JSON.stringify(scheme.props.props), \",\");\n  propsList.push(str);\n} // el-upload的BeforeUpload\n\n\nfunction buildBeforeUpload(scheme) {\n  var config = scheme.__config__;\n  var unitNum = units[config.sizeUnit];\n  var rightSizeCode = '';\n  var acceptCode = '';\n  var returnList = [];\n\n  if (config.fileSize) {\n    rightSizeCode = \"let isRightSize = file.size / \".concat(unitNum, \" < \").concat(config.fileSize, \"\\n    if(!isRightSize){\\n      this.$message.error('\\u6587\\u4EF6\\u5927\\u5C0F\\u8D85\\u8FC7 \").concat(config.fileSize).concat(config.sizeUnit, \"')\\n    }\");\n    returnList.push('isRightSize');\n  }\n\n  if (scheme.accept) {\n    acceptCode = \"let isAccept = new RegExp('\".concat(scheme.accept, \"').test(file.type)\\n    if(!isAccept){\\n      this.$message.error('\\u5E94\\u8BE5\\u9009\\u62E9\").concat(scheme.accept, \"\\u7C7B\\u578B\\u7684\\u6587\\u4EF6')\\n    }\");\n    returnList.push('isAccept');\n  }\n\n  var str = \"\".concat(scheme.__vModel__, \"BeforeUpload(file) {\\n    \").concat(rightSizeCode, \"\\n    \").concat(acceptCode, \"\\n    return \").concat(returnList.join('&&'), \"\\n  },\");\n  return returnList.length ? str : '';\n} // el-upload的submit\n\n\nfunction buildSubmitUpload(scheme) {\n  var str = \"submitUpload() {\\n    this.$refs['\".concat(scheme.__vModel__, \"'].submit()\\n  },\");\n  return str;\n}\n\nfunction buildOptionMethod(methodName, model, methodList, scheme) {\n  var config = scheme.__config__;\n  var str = \"\".concat(methodName, \"() {\\n    // \\u6CE8\\u610F\\uFF1Athis.$axios\\u662F\\u901A\\u8FC7Vue.prototype.$axios = axios\\u6302\\u8F7D\\u4EA7\\u751F\\u7684\\n    this.$axios({\\n      method: '\").concat(config.method, \"',\\n      url: '\").concat(config.url, \"'\\n    }).then(resp => {\\n      var { data } = resp\\n      this.\").concat(model, \" = data.\").concat(config.dataPath, \"\\n    })\\n  },\");\n  methodList.push(str);\n} // js整体拼接\n\n\nfunction buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods, created) {\n  var str = \"\".concat(_index.exportDefault, \"{\\n  \").concat(inheritAttrs[type], \"\\n  components: {},\\n  props: [],\\n  data () {\\n    return {\\n      \").concat(conf.formModel, \": {\\n        \").concat(data, \"\\n      },\\n      \").concat(conf.formRules, \": {\\n        \").concat(rules, \"\\n      },\\n      \").concat(uploadVar, \"\\n      \").concat(selectOptions, \"\\n      \").concat(props, \"\\n    }\\n  },\\n  computed: {},\\n  watch: {},\\n  created () {\\n    \").concat(created, \"\\n  },\\n  mounted () {},\\n  methods: {\\n    \").concat(methods, \"\\n  }\\n}\");\n  return str;\n}\n\n//# sourceURL=webpack:///./src/components/generator/js.js?");

/***/ }),

/***/ "./src/components/generator/ruleTrigger.js":
/*!*************************************************!*\
  !*** ./src/components/generator/ruleTrigger.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * 用于生成表单校验，指定正则规则的触发方式。\n * 未在此处声明无触发方式的组件将不生成rule！！\n */\nvar _default = {\n  'el-input': 'blur',\n  'el-input-number': 'blur',\n  'el-select': 'change',\n  'el-radio-group': 'change',\n  'el-checkbox-group': 'change',\n  'el-cascader': 'change',\n  'el-time-picker': 'change',\n  'el-date-picker': 'change',\n  'el-rate': 'change',\n  tinymce: 'blur'\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./src/components/generator/ruleTrigger.js?");

/***/ }),

/***/ "./src/utils/constants.js":
/*!********************************!*\
  !*** ./src/utils/constants.js ***!
  \********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SystemUserSocialTypeEnum = exports.SystemRoleTypeEnum = exports.SystemMenuTypeEnum = exports.SystemDataScopeEnum = exports.PayType = exports.PayRefundStatusEnum = exports.PayOrderStatusEnum = exports.PayOrderRefundStatusEnum = exports.PayOrderNotifyStatusEnum = exports.PayChannelEnum = exports.InfraJobStatusEnum = exports.InfraCodegenTemplateTypeEnum = exports.InfraApiErrorLogProcessStatusEnum = exports.CommonStatusEnum = void 0;\n\n/**\n * Created by 芋道源码\n *\n * 枚举类\n */\n\n/**\n * 全局通用状态枚举\n */\nvar CommonStatusEnum = {\n  ENABLE: 0,\n  // 开启\n  DISABLE: 1 // 禁用\n\n};\n/**\n * 菜单的类型枚举\n */\n\nexports.CommonStatusEnum = CommonStatusEnum;\nvar SystemMenuTypeEnum = {\n  DIR: 1,\n  // 目录\n  MENU: 2,\n  // 菜单\n  BUTTON: 3 // 按钮\n\n};\n/**\n * 角色的类型枚举\n */\n\nexports.SystemMenuTypeEnum = SystemMenuTypeEnum;\nvar SystemRoleTypeEnum = {\n  SYSTEM: 1,\n  // 内置角色\n  CUSTOM: 2 // 自定义角色\n\n};\n/**\n * 数据权限的范围枚举\n */\n\nexports.SystemRoleTypeEnum = SystemRoleTypeEnum;\nvar SystemDataScopeEnum = {\n  ALL: 1,\n  // 全部数据权限\n  DEPT_CUSTOM: 2,\n  // 指定部门数据权限\n  DEPT_ONLY: 3,\n  // 部门数据权限\n  DEPT_AND_CHILD: 4,\n  // 部门及以下数据权限\n  DEPT_SELF: 5 // 仅本人数据权限\n\n};\n/**\n * 代码生成模板类型\n */\n\nexports.SystemDataScopeEnum = SystemDataScopeEnum;\nvar InfraCodegenTemplateTypeEnum = {\n  CRUD: 1,\n  // 基础 CRUD\n  TREE: 2,\n  // 树形 CRUD\n  SUB: 3 // 主子表 CRUD\n\n};\n/**\n * 任务状态的枚举\n */\n\nexports.InfraCodegenTemplateTypeEnum = InfraCodegenTemplateTypeEnum;\nvar InfraJobStatusEnum = {\n  INIT: 0,\n  // 初始化中\n  NORMAL: 1,\n  // 运行中\n  STOP: 2 // 暂停运行\n\n};\n/**\n * API 异常数据的处理状态\n */\n\nexports.InfraJobStatusEnum = InfraJobStatusEnum;\nvar InfraApiErrorLogProcessStatusEnum = {\n  INIT: 0,\n  // 未处理\n  DONE: 1,\n  // 已处理\n  IGNORE: 2 // 已忽略\n\n};\n/**\n * 用户的社交平台的类型枚举\n */\n\nexports.InfraApiErrorLogProcessStatusEnum = InfraApiErrorLogProcessStatusEnum;\nvar SystemUserSocialTypeEnum = {\n  DINGTALK: {\n    title: \"钉钉\",\n    type: 20,\n    source: \"dingtalk\",\n    img: \"https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/dingtalk.png\"\n  },\n  WECHAT_ENTERPRISE: {\n    title: \"企业微信\",\n    type: 30,\n    source: \"wechat_enterprise\",\n    img: \"https://cdn.jsdelivr.net/gh/justauth/justauth-oauth-logo@1.11/wechat_enterprise.png\"\n  }\n};\n/**\n * 支付渠道枚举\n */\n\nexports.SystemUserSocialTypeEnum = SystemUserSocialTypeEnum;\nvar PayChannelEnum = {\n  WX_PUB: {\n    \"code\": \"wx_pub\",\n    \"name\": \"微信 JSAPI 支付\"\n  },\n  WX_LITE: {\n    \"code\": \"wx_lite\",\n    \"name\": \"微信小程序支付\"\n  },\n  WX_APP: {\n    \"code\": \"wx_app\",\n    \"name\": \"微信 APP 支付\"\n  },\n  ALIPAY_PC: {\n    \"code\": \"alipay_pc\",\n    \"name\": \"支付宝 PC 网站支付\"\n  },\n  ALIPAY_WAP: {\n    \"code\": \"alipay_wap\",\n    \"name\": \"支付宝 WAP 网站支付\"\n  },\n  ALIPAY_APP: {\n    \"code\": \"alipay_app\",\n    \"name\": \"支付宝 APP 支付\"\n  },\n  ALIPAY_QR: {\n    \"code\": \"alipay_qr\",\n    \"name\": \"支付宝扫码支付\"\n  }\n};\n/**\n * 支付类型枚举\n */\n\nexports.PayChannelEnum = PayChannelEnum;\nvar PayType = {\n  WECHAT: \"WECHAT\",\n  ALIPAY: \"ALIPAY\"\n};\n/**\n * 支付订单状态枚举\n */\n\nexports.PayType = PayType;\nvar PayOrderStatusEnum = {\n  WAITING: {\n    status: 0,\n    name: '未支付'\n  },\n  SUCCESS: {\n    status: 10,\n    name: '已支付'\n  },\n  CLOSED: {\n    status: 20,\n    name: '未支付'\n  }\n};\n/**\n * 支付订单回调状态枚举\n */\n\nexports.PayOrderStatusEnum = PayOrderStatusEnum;\nvar PayOrderNotifyStatusEnum = {\n  NO: {\n    status: 0,\n    name: '未通知'\n  },\n  SUCCESS: {\n    status: 10,\n    name: '通知成功'\n  },\n  FAILURE: {\n    status: 20,\n    name: '通知失败'\n  }\n};\n/**\n * 支付订单退款状态枚举\n */\n\nexports.PayOrderNotifyStatusEnum = PayOrderNotifyStatusEnum;\nvar PayOrderRefundStatusEnum = {\n  NO: {\n    status: 0,\n    name: '未退款'\n  },\n  SOME: {\n    status: 10,\n    name: '部分退款'\n  },\n  ALL: {\n    status: 20,\n    name: '全部退款'\n  }\n};\n/**\n * 支付退款订单状态枚举\n */\n\nexports.PayOrderRefundStatusEnum = PayOrderRefundStatusEnum;\nvar PayRefundStatusEnum = {\n  CREATE: {\n    status: 0,\n    name: '退款订单生成'\n  },\n  SUCCESS: {\n    status: 1,\n    name: '退款成功'\n  },\n  FAILURE: {\n    status: 2,\n    name: '退款失败'\n  },\n  PROCESSING_NOTIFY: {\n    status: 3,\n    name: '退款中，渠道通知结果'\n  },\n  PROCESSING_QUERY: {\n    status: 4,\n    name: '退款中，系统查询结果'\n  },\n  UNKNOWN_RETRY: {\n    status: 5,\n    name: '状态未知，请重试'\n  },\n  UNKNOWN_QUERY: {\n    status: 6,\n    name: '状态未知，系统查询结果'\n  },\n  CLOSE: {\n    status: 99,\n    name: '退款关闭'\n  }\n};\nexports.PayRefundStatusEnum = PayRefundStatusEnum;\n\n//# sourceURL=webpack:///./src/utils/constants.js?");

/***/ }),

/***/ "./src/utils/db.js":
/*!*************************!*\
  !*** ./src/utils/db.js ***!
  \*************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getDrawingList = getDrawingList;\nexports.getFormConf = getFormConf;\nexports.getIdGlobal = getIdGlobal;\nexports.getTreeNodeId = getTreeNodeId;\nexports.saveDrawingList = saveDrawingList;\nexports.saveFormConf = saveFormConf;\nexports.saveIdGlobal = saveIdGlobal;\nexports.saveTreeNodeId = saveTreeNodeId;\n\n__webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n\nvar DRAWING_ITEMS = 'drawingItems';\nvar DRAWING_ITEMS_VERSION = '1.2';\nvar DRAWING_ITEMS_VERSION_KEY = 'DRAWING_ITEMS_VERSION';\nvar DRAWING_ID = 'idGlobal';\nvar TREE_NODE_ID = 'treeNodeId';\nvar FORM_CONF = 'formConf';\n\nfunction getDrawingList() {\n  // 加入缓存版本的概念，保证缓存数据与程序匹配\n  var version = localStorage.getItem(DRAWING_ITEMS_VERSION_KEY);\n\n  if (version !== DRAWING_ITEMS_VERSION) {\n    localStorage.setItem(DRAWING_ITEMS_VERSION_KEY, DRAWING_ITEMS_VERSION);\n    saveDrawingList([]);\n    return null;\n  }\n\n  var str = localStorage.getItem(DRAWING_ITEMS);\n  if (str) return JSON.parse(str);\n  return null;\n}\n\nfunction saveDrawingList(list) {\n  localStorage.setItem(DRAWING_ITEMS, JSON.stringify(list));\n}\n\nfunction getIdGlobal() {\n  var str = localStorage.getItem(DRAWING_ID);\n  if (str) return parseInt(str, 10);\n  return 100;\n}\n\nfunction saveIdGlobal(id) {\n  localStorage.setItem(DRAWING_ID, \"\".concat(id));\n}\n\nfunction getTreeNodeId() {\n  var str = localStorage.getItem(TREE_NODE_ID);\n  if (str) return parseInt(str, 10);\n  return 100;\n}\n\nfunction saveTreeNodeId(id) {\n  localStorage.setItem(TREE_NODE_ID, \"\".concat(id));\n}\n\nfunction getFormConf() {\n  var str = localStorage.getItem(FORM_CONF);\n  if (str) return JSON.parse(str);\n  return null;\n}\n\nfunction saveFormConf(obj) {\n  localStorage.setItem(FORM_CONF, JSON.stringify(obj));\n}\n\n//# sourceURL=webpack:///./src/utils/db.js?");

/***/ }),

/***/ "./src/utils/icon.json":
/*!*****************************!*\
  !*** ./src/utils/icon.json ***!
  \*****************************/
/*! exports provided: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, default */
/***/ (function(module) {

eval("module.exports = JSON.parse(\"[\\\"platform-eleme\\\",\\\"eleme\\\",\\\"delete-solid\\\",\\\"delete\\\",\\\"s-tools\\\",\\\"setting\\\",\\\"user-solid\\\",\\\"user\\\",\\\"phone\\\",\\\"phone-outline\\\",\\\"more\\\",\\\"more-outline\\\",\\\"star-on\\\",\\\"star-off\\\",\\\"s-goods\\\",\\\"goods\\\",\\\"warning\\\",\\\"warning-outline\\\",\\\"question\\\",\\\"info\\\",\\\"remove\\\",\\\"circle-plus\\\",\\\"success\\\",\\\"error\\\",\\\"zoom-in\\\",\\\"zoom-out\\\",\\\"remove-outline\\\",\\\"circle-plus-outline\\\",\\\"circle-check\\\",\\\"circle-close\\\",\\\"s-help\\\",\\\"help\\\",\\\"minus\\\",\\\"plus\\\",\\\"check\\\",\\\"close\\\",\\\"picture\\\",\\\"picture-outline\\\",\\\"picture-outline-round\\\",\\\"upload\\\",\\\"upload2\\\",\\\"download\\\",\\\"camera-solid\\\",\\\"camera\\\",\\\"video-camera-solid\\\",\\\"video-camera\\\",\\\"message-solid\\\",\\\"bell\\\",\\\"s-cooperation\\\",\\\"s-order\\\",\\\"s-platform\\\",\\\"s-fold\\\",\\\"s-unfold\\\",\\\"s-operation\\\",\\\"s-promotion\\\",\\\"s-home\\\",\\\"s-release\\\",\\\"s-ticket\\\",\\\"s-management\\\",\\\"s-open\\\",\\\"s-shop\\\",\\\"s-marketing\\\",\\\"s-flag\\\",\\\"s-comment\\\",\\\"s-finance\\\",\\\"s-claim\\\",\\\"s-custom\\\",\\\"s-opportunity\\\",\\\"s-data\\\",\\\"s-check\\\",\\\"s-grid\\\",\\\"menu\\\",\\\"share\\\",\\\"d-caret\\\",\\\"caret-left\\\",\\\"caret-right\\\",\\\"caret-bottom\\\",\\\"caret-top\\\",\\\"bottom-left\\\",\\\"bottom-right\\\",\\\"back\\\",\\\"right\\\",\\\"bottom\\\",\\\"top\\\",\\\"top-left\\\",\\\"top-right\\\",\\\"arrow-left\\\",\\\"arrow-right\\\",\\\"arrow-down\\\",\\\"arrow-up\\\",\\\"d-arrow-left\\\",\\\"d-arrow-right\\\",\\\"video-pause\\\",\\\"video-play\\\",\\\"refresh\\\",\\\"refresh-right\\\",\\\"refresh-left\\\",\\\"finished\\\",\\\"sort\\\",\\\"sort-up\\\",\\\"sort-down\\\",\\\"rank\\\",\\\"loading\\\",\\\"view\\\",\\\"c-scale-to-original\\\",\\\"date\\\",\\\"edit\\\",\\\"edit-outline\\\",\\\"folder\\\",\\\"folder-opened\\\",\\\"folder-add\\\",\\\"folder-remove\\\",\\\"folder-delete\\\",\\\"folder-checked\\\",\\\"tickets\\\",\\\"document-remove\\\",\\\"document-delete\\\",\\\"document-copy\\\",\\\"document-checked\\\",\\\"document\\\",\\\"document-add\\\",\\\"printer\\\",\\\"paperclip\\\",\\\"takeaway-box\\\",\\\"search\\\",\\\"monitor\\\",\\\"attract\\\",\\\"mobile\\\",\\\"scissors\\\",\\\"umbrella\\\",\\\"headset\\\",\\\"brush\\\",\\\"mouse\\\",\\\"coordinate\\\",\\\"magic-stick\\\",\\\"reading\\\",\\\"data-line\\\",\\\"data-board\\\",\\\"pie-chart\\\",\\\"data-analysis\\\",\\\"collection-tag\\\",\\\"film\\\",\\\"suitcase\\\",\\\"suitcase-1\\\",\\\"receiving\\\",\\\"collection\\\",\\\"files\\\",\\\"notebook-1\\\",\\\"notebook-2\\\",\\\"toilet-paper\\\",\\\"office-building\\\",\\\"school\\\",\\\"table-lamp\\\",\\\"house\\\",\\\"no-smoking\\\",\\\"smoking\\\",\\\"shopping-cart-full\\\",\\\"shopping-cart-1\\\",\\\"shopping-cart-2\\\",\\\"shopping-bag-1\\\",\\\"shopping-bag-2\\\",\\\"sold-out\\\",\\\"sell\\\",\\\"present\\\",\\\"box\\\",\\\"bank-card\\\",\\\"money\\\",\\\"coin\\\",\\\"wallet\\\",\\\"discount\\\",\\\"price-tag\\\",\\\"news\\\",\\\"guide\\\",\\\"male\\\",\\\"female\\\",\\\"thumb\\\",\\\"cpu\\\",\\\"link\\\",\\\"connection\\\",\\\"open\\\",\\\"turn-off\\\",\\\"set-up\\\",\\\"chat-round\\\",\\\"chat-line-round\\\",\\\"chat-square\\\",\\\"chat-dot-round\\\",\\\"chat-dot-square\\\",\\\"chat-line-square\\\",\\\"message\\\",\\\"postcard\\\",\\\"position\\\",\\\"turn-off-microphone\\\",\\\"microphone\\\",\\\"close-notification\\\",\\\"bangzhu\\\",\\\"time\\\",\\\"odometer\\\",\\\"crop\\\",\\\"aim\\\",\\\"switch-button\\\",\\\"full-screen\\\",\\\"copy-document\\\",\\\"mic\\\",\\\"stopwatch\\\",\\\"medal-1\\\",\\\"medal\\\",\\\"trophy\\\",\\\"trophy-1\\\",\\\"first-aid-kit\\\",\\\"discover\\\",\\\"place\\\",\\\"location\\\",\\\"location-outline\\\",\\\"location-information\\\",\\\"add-location\\\",\\\"delete-location\\\",\\\"map-location\\\",\\\"alarm-clock\\\",\\\"timer\\\",\\\"watch-1\\\",\\\"watch\\\",\\\"lock\\\",\\\"unlock\\\",\\\"key\\\",\\\"service\\\",\\\"mobile-phone\\\",\\\"bicycle\\\",\\\"truck\\\",\\\"ship\\\",\\\"basketball\\\",\\\"football\\\",\\\"soccer\\\",\\\"baseball\\\",\\\"wind-power\\\",\\\"light-rain\\\",\\\"lightning\\\",\\\"heavy-rain\\\",\\\"sunrise\\\",\\\"sunrise-1\\\",\\\"sunset\\\",\\\"sunny\\\",\\\"cloudy\\\",\\\"partly-cloudy\\\",\\\"cloudy-and-sunny\\\",\\\"moon\\\",\\\"moon-night\\\",\\\"dish\\\",\\\"dish-1\\\",\\\"food\\\",\\\"chicken\\\",\\\"fork-spoon\\\",\\\"knife-fork\\\",\\\"burger\\\",\\\"tableware\\\",\\\"sugar\\\",\\\"dessert\\\",\\\"ice-cream\\\",\\\"hot-water\\\",\\\"water-cup\\\",\\\"coffee-cup\\\",\\\"cold-drink\\\",\\\"goblet\\\",\\\"goblet-full\\\",\\\"goblet-square\\\",\\\"goblet-square-full\\\",\\\"refrigerator\\\",\\\"grape\\\",\\\"watermelon\\\",\\\"cherry\\\",\\\"apple\\\",\\\"pear\\\",\\\"orange\\\",\\\"coffee\\\",\\\"ice-tea\\\",\\\"ice-drink\\\",\\\"milk-tea\\\",\\\"potato-strips\\\",\\\"lollipop\\\",\\\"ice-cream-square\\\",\\\"ice-cream-round\\\"]\");\n\n//# sourceURL=webpack:///./src/utils/icon.json?");

/***/ }),

/***/ "./src/utils/loadBeautifier.js":
/*!*************************************!*\
  !*** ./src/utils/loadBeautifier.js ***!
  \*************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = loadBeautifier;\n\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\n\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\n\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\n\nvar beautifierObj;\n\nfunction loadBeautifier(cb) {\n  var beautifierUrl = _pluginsConfig.default.beautifierUrl;\n\n  if (beautifierObj) {\n    cb(beautifierObj);\n    return;\n  }\n\n  var loading = _elementUi.default.Loading.service({\n    fullscreen: true,\n    lock: true,\n    text: '格式化资源加载中...',\n    spinner: 'el-icon-loading',\n    background: 'rgba(255, 255, 255, 0.5)'\n  });\n\n  (0, _loadScript.default)(beautifierUrl, function () {\n    loading.close(); // eslint-disable-next-line no-undef\n\n    beautifierObj = beautifier;\n    cb(beautifierObj);\n  });\n}\n\n//# sourceURL=webpack:///./src/utils/loadBeautifier.js?");

/***/ }),

/***/ "./src/utils/loadMonaco.js":
/*!*********************************!*\
  !*** ./src/utils/loadMonaco.js ***!
  \*********************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/interopRequireDefault.js */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\").default;\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = loadMonaco;\n\nvar _loadScript = _interopRequireDefault(__webpack_require__(/*! ./loadScript */ \"./src/utils/loadScript.js\"));\n\nvar _elementUi = _interopRequireDefault(__webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"));\n\nvar _pluginsConfig = _interopRequireDefault(__webpack_require__(/*! ./pluginsConfig */ \"./src/utils/pluginsConfig.js\"));\n\n// monaco-editor单例\nvar monacoEidtor;\n/**\n * 动态加载monaco-editor cdn资源\n * @param {Function} cb 回调，必填\n */\n\nfunction loadMonaco(cb) {\n  if (monacoEidtor) {\n    cb(monacoEidtor);\n    return;\n  }\n\n  var vs = _pluginsConfig.default.monacoEditorUrl; // 使用element ui实现加载提示\n\n  var loading = _elementUi.default.Loading.service({\n    fullscreen: true,\n    lock: true,\n    text: '编辑器资源初始化中...',\n    spinner: 'el-icon-loading',\n    background: 'rgba(255, 255, 255, 0.5)'\n  });\n\n  !window.require && (window.require = {});\n  !window.require.paths && (window.require.paths = {});\n  window.require.paths.vs = vs;\n  (0, _loadScript.default)(\"\".concat(vs, \"/loader.js\"), function () {\n    window.require(['vs/editor/editor.main'], function () {\n      loading.close();\n      monacoEidtor = window.monaco;\n      cb(monacoEidtor);\n    });\n  });\n}\n\n//# sourceURL=webpack:///./src/utils/loadMonaco.js?");

/***/ }),

/***/ "./src/views/bpm/form/formEditor.vue":
/*!*******************************************!*\
  !*** ./src/views/bpm/form/formEditor.vue ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formEditor.vue?vue&type=template&id=3df0b122& */ \"./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony import */ var _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formEditor.vue?vue&type=script&lang=js& */ \"./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formEditor.vue?vue&type=style&index=0&lang=scss& */ \"./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/bpm/form/formEditor.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?");

/***/ }),

/***/ "./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&":
/*!********************************************************************!*\
  !*** ./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js& ***!
  \********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?");

/***/ }),

/***/ "./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&":
/*!*****************************************************************************!*\
  !*** ./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss& ***!
  \*****************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=style&index=0&lang=scss& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=style&index=0&lang=scss&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?");

/***/ }),

/***/ "./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&":
/*!**************************************************************************!*\
  !*** ./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122& ***!
  \**************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./formEditor.vue?vue&type=template&id=3df0b122& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/bpm/form/formEditor.vue?vue&type=template&id=3df0b122&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_formEditor_vue_vue_type_template_id_3df0b122___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/bpm/form/formEditor.vue?");

/***/ }),

/***/ "./src/views/infra/build/CodeTypeDialog.vue":
/*!**************************************************!*\
  !*** ./src/views/infra/build/CodeTypeDialog.vue ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony import */ var _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"ac1f446e\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/CodeTypeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&":
/*!*********************************************************************************************!*\
  !*** ./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& ***!
  \*********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/CodeTypeDialog.vue?vue&type=template&id=ac1f446e&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_CodeTypeDialog_vue_vue_type_template_id_ac1f446e_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/CodeTypeDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/DraggableItem.vue":
/*!*************************************************!*\
  !*** ./src/views/infra/build/DraggableItem.vue ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DraggableItem.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\nvar render, staticRenderFns\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n  _DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/DraggableItem.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?");

/***/ }),

/***/ "./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&":
/*!**************************************************************************!*\
  !*** ./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js& ***!
  \**************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./DraggableItem.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/DraggableItem.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_DraggableItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/DraggableItem.vue?");

/***/ }),

/***/ "./src/views/infra/build/FormDrawer.vue":
/*!**********************************************!*\
  !*** ./src/views/infra/build/FormDrawer.vue ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony import */ var _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"753f0faf\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/FormDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
  !*** ./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js& ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&":
/*!********************************************************************************************************!*\
  !*** ./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=style&index=0&id=753f0faf&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_style_index_0_id_753f0faf_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&":
/*!*****************************************************************************************!*\
  !*** ./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& ***!
  \*****************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/FormDrawer.vue?vue&type=template&id=753f0faf&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDrawer_vue_vue_type_template_id_753f0faf_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/FormDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/IconsDialog.vue":
/*!***********************************************!*\
  !*** ./src/views/infra/build/IconsDialog.vue ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony import */ var _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"7bbbfa18\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/IconsDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&":
/*!************************************************************************!*\
  !*** ./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js& ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&":
/*!*********************************************************************************************************!*\
  !*** ./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& ***!
  \*********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=style&index=0&id=7bbbfa18&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_style_index_0_id_7bbbfa18_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&":
/*!******************************************************************************************!*\
  !*** ./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& ***!
  \******************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/IconsDialog.vue?vue&type=template&id=7bbbfa18&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_IconsDialog_vue_vue_type_template_id_7bbbfa18_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/IconsDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/JsonDrawer.vue":
/*!**********************************************!*\
  !*** ./src/views/infra/build/JsonDrawer.vue ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony import */ var _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"349212d3\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/JsonDrawer.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
  !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js& ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&":
/*!********************************************************************************************************!*\
  !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=style&index=0&id=349212d3&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_style_index_0_id_349212d3_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&":
/*!*****************************************************************************************!*\
  !*** ./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& ***!
  \*****************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/JsonDrawer.vue?vue&type=template&id=349212d3&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_JsonDrawer_vue_vue_type_template_id_349212d3_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/JsonDrawer.vue?");

/***/ }),

/***/ "./src/views/infra/build/ResourceDialog.vue":
/*!**************************************************!*\
  !*** ./src/views/infra/build/ResourceDialog.vue ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony import */ var _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"1416fb60\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/ResourceDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&":
/*!************************************************************************************************************!*\
  !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& ***!
  \************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=style&index=0&id=1416fb60&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_style_index_0_id_1416fb60_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&":
/*!*********************************************************************************************!*\
  !*** ./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& ***!
  \*********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/ResourceDialog.vue?vue&type=template&id=1416fb60&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ResourceDialog_vue_vue_type_template_id_1416fb60_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/ResourceDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/RightPanel.vue":
/*!**********************************************!*\
  !*** ./src/views/infra/build/RightPanel.vue ***!
  \**********************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony import */ var _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\n  _RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"77ba98a2\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/RightPanel.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?");

/***/ }),

/***/ "./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&":
/*!***********************************************************************!*\
  !*** ./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js& ***!
  \***********************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?");

/***/ }),

/***/ "./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&":
/*!********************************************************************************************************!*\
  !*** ./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& ***!
  \********************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true& */ \"./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=style&index=0&id=77ba98a2&lang=scss&scoped=true&\");\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_style_index_0_id_77ba98a2_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?");

/***/ }),

/***/ "./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&":
/*!*****************************************************************************************!*\
  !*** ./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& ***!
  \*****************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/RightPanel.vue?vue&type=template&id=77ba98a2&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_RightPanel_vue_vue_type_template_id_77ba98a2_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/RightPanel.vue?");

/***/ }),

/***/ "./src/views/infra/build/TreeNodeDialog.vue":
/*!**************************************************!*\
  !*** ./src/views/infra/build/TreeNodeDialog.vue ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony import */ var _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ \"./node_modules/vue-loader/lib/runtime/componentNormalizer.js\");\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n  _TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n  _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n  _TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n  false,\n  null,\n  \"dae9c2fc\",\n  null\n  \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"src/views/infra/build/TreeNodeDialog.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&":
/*!***************************************************************************!*\
  !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js& ***!
  \***************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/babel-loader/lib!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=script&lang=js& */ \"./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=script&lang=js&\");\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_babel_loader_lib_index_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?");

/***/ }),

/***/ "./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&":
/*!*********************************************************************************************!*\
  !*** ./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& ***!
  \*********************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"2ef12c28-vue-loader-template\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib??vue-loader-options!./TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true& */ \"./node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"2ef12c28-vue-loader-template\\\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/infra/build/TreeNodeDialog.vue?vue&type=template&id=dae9c2fc&scoped=true&\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return _node_modules_cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_2ef12c28_vue_loader_template_node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TreeNodeDialog_vue_vue_type_template_id_dae9c2fc_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"]; });\n\n\n\n//# sourceURL=webpack:///./src/views/infra/build/TreeNodeDialog.vue?");

/***/ })

}]);