{"version":3,"file":"validTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","inlineTags","Set","jsdocTypePrattKeywords","asExpression","suppressTypes","tryParsePathIgnoreError","path","tryParse","_default","exports","iterateJsdoc","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","has","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","parsedTypes","parse","traverse","node","_node$right","_node$right2","typ","right","meta","position","problems","length","msg","reduce","str","message","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","value","undefined","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","inlineTag","text","namepathOrURL","iterateAllJsdocs","docs","description","url","schema","additionalProperties","properties","module"],"sources":["../../src/rules/validTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n  parse,\n  traverse,\n  tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst inlineTags = new Set([\n  'link', 'linkcode', 'linkplain',\n  'tutorial',\n]);\n\nconst jsdocTypePrattKeywords = new Set([\n  'typeof',\n  'readonly',\n  'import',\n  'is',\n]);\n\nconst asExpression = /as\\s+/u;\n\nconst suppressTypes = new Set([\n  // https://github.com/google/closure-compiler/wiki/@suppress-annotations\n  // https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/ParserConfig.properties#L154\n  'accessControls',\n  'checkDebuggerStatement',\n  'checkPrototypalTypes',\n  'checkRegExp',\n  'checkTypes',\n  'checkVars',\n  'closureDepMethodUsageChecks',\n  'const',\n  'constantProperty',\n  'deprecated',\n  'duplicate',\n  'es5Strict',\n  'externsValidation',\n  'extraProvide',\n  'extraRequire',\n  'globalThis',\n  'invalidCasts',\n  'lateProvide',\n  'legacyGoogScopeRequire',\n  'lintChecks',\n  'messageConventions',\n  'misplacedTypeAnnotation',\n  'missingOverride',\n  'missingPolyfill',\n  'missingProperties',\n  'missingProvide',\n  'missingRequire',\n  'missingSourcesWarnings',\n  'moduleLoad',\n  'nonStandardJsDocs',\n  'partialAlias',\n  'polymer',\n  'reportUnknownTypes',\n  'strictMissingProperties',\n  'strictModuleDepCheck',\n  'strictPrimitiveOperators',\n  'suspiciousCode',\n\n  // Not documented in enum\n  'switch',\n  'transitionalSuspiciousCodeWarnings',\n  'undefinedNames',\n  'undefinedVars',\n  'underscore',\n  'unknownDefines',\n  'untranspilableFeatures',\n  'unusedLocalVariables',\n  'unusedPrivateMembers',\n  'useOfGoogProvide',\n  'uselessCode',\n  'visibility',\n  'with',\n]);\n\n/**\n * @param {string} path\n * @returns {boolean}\n */\nconst tryParsePathIgnoreError = (path) => {\n  try {\n    tryParse(path);\n\n    return true;\n  } catch {\n    // Keep the original error for including the whole type\n  }\n\n  return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n  jsdoc,\n  report,\n  utils,\n  context,\n  settings,\n}) => {\n  const {\n    allowEmptyNamepaths = false,\n  } = context.options[0] || {};\n  const {\n    mode,\n  } = settings;\n\n  for (const tag of jsdoc.tags) {\n    /**\n     * @param {string} namepath\n     * @param {string} [tagName]\n     * @returns {boolean}\n     */\n    const validNamepathParsing = function (namepath, tagName) {\n      if (\n        tryParsePathIgnoreError(namepath) ||\n        jsdocTypePrattKeywords.has(namepath)\n      ) {\n        return true;\n      }\n\n      let handled = false;\n\n      if (tagName) {\n        switch (tagName) {\n        case 'requires':\n        case 'module': {\n          if (!namepath.startsWith('module:')) {\n            handled = tryParsePathIgnoreError(`module:${namepath}`);\n          }\n\n          break;\n        }\n\n        case 'memberof': case 'memberof!': {\n          const endChar = namepath.slice(-1);\n          if ([\n            '#', '.', '~',\n          ].includes(endChar)) {\n            handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n          }\n\n          break;\n        }\n\n        case 'borrows': {\n          const startChar = namepath.charAt(0);\n          if ([\n            '#', '.', '~',\n          ].includes(startChar)) {\n            handled = tryParsePathIgnoreError(namepath.slice(1));\n          }\n        }\n        }\n      }\n\n      if (!handled) {\n        report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n        return false;\n      }\n\n      return true;\n    };\n\n    /**\n     * @param {string} type\n     * @returns {boolean}\n     */\n    const validTypeParsing = function (type) {\n      let parsedTypes;\n      try {\n        if (mode === 'permissive') {\n          parsedTypes = tryParse(type);\n        } else {\n          parsedTypes = parse(type, mode);\n        }\n      } catch {\n        report(`Syntax error in type: ${type}`, null, tag);\n\n        return false;\n      }\n\n      if (mode === 'closure' || mode === 'typescript') {\n        traverse(parsedTypes, (node) => {\n          const {\n            type: typ,\n          } = node;\n\n          if (\n            (typ === 'JsdocTypeObjectField' || typ === 'JsdocTypeKeyValue') &&\n            node.right?.type === 'JsdocTypeNullable' &&\n            node.right?.meta?.position === 'suffix'\n          ) {\n            report(`Syntax error in type: ${node.right.type}`, null, tag);\n          }\n        });\n      }\n\n      return true;\n    };\n\n    if (tag.problems.length) {\n      const msg = tag.problems.reduce((str, {\n        message,\n      }) => {\n        return str + '; ' + message;\n      }, '').slice(2);\n      report(`Invalid name: ${msg}`, null, tag);\n      continue;\n    }\n\n    if (tag.tag === 'import') {\n      // A named import will look like a type, but not be valid; we also don't\n      //  need to check the name/namepath\n      continue;\n    }\n\n    if (tag.tag === 'borrows') {\n      const thisNamepath = /** @type {string} */ (\n        utils.getTagDescription(tag)\n      ).replace(asExpression, '')\n        .trim();\n\n      if (!asExpression.test(/** @type {string} */ (\n        utils.getTagDescription(tag)\n      )) || !thisNamepath) {\n        report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n        continue;\n      }\n\n      if (validNamepathParsing(thisNamepath, 'borrows')) {\n        const thatNamepath = tag.name;\n\n        validNamepathParsing(thatNamepath);\n      }\n\n      continue;\n    }\n\n    if (tag.tag === 'suppress' && mode === 'closure') {\n      let parsedTypes;\n\n      try {\n        parsedTypes = tryParse(tag.type);\n      } catch {\n        // Ignore\n      }\n\n      if (parsedTypes) {\n        traverse(parsedTypes, (node) => {\n          let type;\n          if ('value' in node && typeof node.value === 'string') {\n            type = node.value;\n          }\n\n          if (type !== undefined && !suppressTypes.has(type)) {\n            report(`Syntax error in suppress type: ${type}`, null, tag);\n          }\n        });\n      }\n    }\n\n    const otherModeMaps = /** @type {import('../jsdocUtils.js').ParserMode[]} */ ([\n      'jsdoc', 'typescript', 'closure', 'permissive',\n    ]).filter(\n      (mde) => {\n        return mde !== mode;\n      },\n    ).map((mde) => {\n      return utils.getTagStructureForMode(mde);\n    });\n\n    const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n    if (tagMightHaveNamePosition !== true && tag.name) {\n      const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n      report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n      continue;\n    }\n\n    const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n    if (mightHaveTypePosition !== true && tag.type) {\n      const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n      report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n      continue;\n    }\n\n    // REQUIRED NAME\n    const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n    // Don't handle `@param` here though it does require name as handled by\n    //  `require-param-name` (`@property` would similarly seem to require one,\n    //  but is handled by `require-property-name`)\n    if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n      'param', 'arg', 'argument',\n      'property', 'prop',\n    ].includes(tag.tag) &&\n      (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n    ) {\n      const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n      report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n      continue;\n    }\n\n    // REQUIRED TYPE\n    const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n    if (mustHaveTypePosition !== false && !tag.type) {\n      const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n      report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n      continue;\n    }\n\n    // REQUIRED TYPE OR NAME/NAMEPATH\n    const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n    if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n      const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n      report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n      continue;\n    }\n\n    // VALID TYPE\n    const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n    if (hasTypePosition) {\n      validTypeParsing(tag.type);\n    }\n\n    // VALID NAME/NAMEPATH\n    const hasNameOrNamepathPosition = (\n      tagMustHaveNamePosition !== false ||\n      utils.tagMightHaveNamepath(tag.tag)\n    ) && Boolean(tag.name);\n\n    if (hasNameOrNamepathPosition) {\n      if (mode !== 'jsdoc' && tag.tag === 'template') {\n        for (const namepath of utils.parseClosureTemplateTag(tag)) {\n          validNamepathParsing(namepath);\n        }\n      } else {\n        validNamepathParsing(tag.name, tag.tag);\n      }\n    }\n\n    for (const inlineTag of tag.inlineTags) {\n      if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n        report(`Inline tag \"${inlineTag.tag}\" missing content`, null, tag);\n      }\n    }\n  }\n\n  for (const inlineTag of jsdoc.inlineTags) {\n    if (inlineTags.has(inlineTag.tag) && !inlineTag.text && !inlineTag.namepathOrURL) {\n      report(`Inline tag \"${inlineTag.tag}\" missing content`);\n    }\n  }\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header',\n    },\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          allowEmptyNamepaths: {\n            default: false,\n            type: 'boolean',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAI8B,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,UAAU,GAAG,IAAIC,GAAG,CAAC,CACzB,MAAM,EAAE,UAAU,EAAE,WAAW,EAC/B,UAAU,CACX,CAAC;AAEF,MAAMC,sBAAsB,GAAG,IAAID,GAAG,CAAC,CACrC,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,IAAI,CACL,CAAC;AAEF,MAAME,YAAY,GAAG,QAAQ;AAE7B,MAAMC,aAAa,GAAG,IAAIH,GAAG,CAAC;AAC5B;AACA;AACA,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,6BAA6B,EAC7B,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,gBAAgB;AAEhB;AACA,QAAQ,EACR,oCAAoC,EACpC,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,MAAM,CACP,CAAC;;AAEF;AACA;AACA;AACA;AACA,MAAMI,uBAAuB,GAAIC,IAAI,IAAK;EACxC,IAAI;IACF,IAAAC,sBAAQ,EAACD,IAAI,CAAC;IAEd,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN;EAAA;EAGF,OAAO,KAAK;AACd,CAAC;;AAED;AAAA,IAAAE,QAAA,GAAAC,OAAA,CAAAV,OAAA,GACe,IAAAW,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,MAAM;EACNC,KAAK;EACLC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,mBAAmB,GAAG;EACxB,CAAC,GAAGF,OAAO,CAACG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5B,MAAM;IACJC;EACF,CAAC,GAAGH,QAAQ;EAEZ,KAAK,MAAMI,GAAG,IAAIR,KAAK,CAACS,IAAI,EAAE;IAC5B;AACJ;AACA;AACA;AACA;IACI,MAAMC,oBAAoB,GAAG,SAAAA,CAAUC,QAAQ,EAAEC,OAAO,EAAE;MACxD,IACElB,uBAAuB,CAACiB,QAAQ,CAAC,IACjCpB,sBAAsB,CAACsB,GAAG,CAACF,QAAQ,CAAC,EACpC;QACA,OAAO,IAAI;MACb;MAEA,IAAIG,OAAO,GAAG,KAAK;MAEnB,IAAIF,OAAO,EAAE;QACX,QAAQA,OAAO;UACf,KAAK,UAAU;UACf,KAAK,QAAQ;YAAE;cACb,IAAI,CAACD,QAAQ,CAACI,UAAU,CAAC,SAAS,CAAC,EAAE;gBACnCD,OAAO,GAAGpB,uBAAuB,CAAC,UAAUiB,QAAQ,EAAE,CAAC;cACzD;cAEA;YACF;UAEA,KAAK,UAAU;UAAE,KAAK,WAAW;YAAE;cACjC,MAAMK,OAAO,GAAGL,QAAQ,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC;cAClC,IAAI,CACF,GAAG,EAAE,GAAG,EAAE,GAAG,CACd,CAACC,QAAQ,CAACF,OAAO,CAAC,EAAE;gBACnBF,OAAO,GAAGpB,uBAAuB,CAACiB,QAAQ,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;cAC1D;cAEA;YACF;UAEA,KAAK,SAAS;YAAE;cACd,MAAME,SAAS,GAAGR,QAAQ,CAACS,MAAM,CAAC,CAAC,CAAC;cACpC,IAAI,CACF,GAAG,EAAE,GAAG,EAAE,GAAG,CACd,CAACF,QAAQ,CAACC,SAAS,CAAC,EAAE;gBACrBL,OAAO,GAAGpB,uBAAuB,CAACiB,QAAQ,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC;cACtD;YACF;QACA;MACF;MAEA,IAAI,CAACH,OAAO,EAAE;QACZb,MAAM,CAAC,6BAA6BU,QAAQ,EAAE,EAAE,IAAI,EAAEH,GAAG,CAAC;QAE1D,OAAO,KAAK;MACd;MAEA,OAAO,IAAI;IACb,CAAC;;IAED;AACJ;AACA;AACA;IACI,MAAMa,gBAAgB,GAAG,SAAAA,CAAUC,IAAI,EAAE;MACvC,IAAIC,WAAW;MACf,IAAI;QACF,IAAIhB,IAAI,KAAK,YAAY,EAAE;UACzBgB,WAAW,GAAG,IAAA3B,sBAAQ,EAAC0B,IAAI,CAAC;QAC9B,CAAC,MAAM;UACLC,WAAW,GAAG,IAAAC,mBAAK,EAACF,IAAI,EAAEf,IAAI,CAAC;QACjC;MACF,CAAC,CAAC,MAAM;QACNN,MAAM,CAAC,yBAAyBqB,IAAI,EAAE,EAAE,IAAI,EAAEd,GAAG,CAAC;QAElD,OAAO,KAAK;MACd;MAEA,IAAID,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,YAAY,EAAE;QAC/C,IAAAkB,sBAAQ,EAACF,WAAW,EAAGG,IAAI,IAAK;UAAA,IAAAC,WAAA,EAAAC,YAAA;UAC9B,MAAM;YACJN,IAAI,EAAEO;UACR,CAAC,GAAGH,IAAI;UAER,IACE,CAACG,GAAG,KAAK,sBAAsB,IAAIA,GAAG,KAAK,mBAAmB,KAC9D,EAAAF,WAAA,GAAAD,IAAI,CAACI,KAAK,cAAAH,WAAA,uBAAVA,WAAA,CAAYL,IAAI,MAAK,mBAAmB,IACxC,EAAAM,YAAA,GAAAF,IAAI,CAACI,KAAK,cAAAF,YAAA,gBAAAA,YAAA,GAAVA,YAAA,CAAYG,IAAI,cAAAH,YAAA,uBAAhBA,YAAA,CAAkBI,QAAQ,MAAK,QAAQ,EACvC;YACA/B,MAAM,CAAC,yBAAyByB,IAAI,CAACI,KAAK,CAACR,IAAI,EAAE,EAAE,IAAI,EAAEd,GAAG,CAAC;UAC/D;QACF,CAAC,CAAC;MACJ;MAEA,OAAO,IAAI;IACb,CAAC;IAED,IAAIA,GAAG,CAACyB,QAAQ,CAACC,MAAM,EAAE;MACvB,MAAMC,GAAG,GAAG3B,GAAG,CAACyB,QAAQ,CAACG,MAAM,CAAC,CAACC,GAAG,EAAE;QACpCC;MACF,CAAC,KAAK;QACJ,OAAOD,GAAG,GAAG,IAAI,GAAGC,OAAO;MAC7B,CAAC,EAAE,EAAE,CAAC,CAACrB,KAAK,CAAC,CAAC,CAAC;MACfhB,MAAM,CAAC,iBAAiBkC,GAAG,EAAE,EAAE,IAAI,EAAE3B,GAAG,CAAC;MACzC;IACF;IAEA,IAAIA,GAAG,CAACA,GAAG,KAAK,QAAQ,EAAE;MACxB;MACA;MACA;IACF;IAEA,IAAIA,GAAG,CAACA,GAAG,KAAK,SAAS,EAAE;MACzB,MAAM+B,YAAY,GAAG,qBACnBrC,KAAK,CAACsC,iBAAiB,CAAChC,GAAG,CAAC,CAC5BiC,OAAO,CAACjD,YAAY,EAAE,EAAE,CAAC,CACxBkD,IAAI,CAAC,CAAC;MAET,IAAI,CAAClD,YAAY,CAACmD,IAAI,EAAC;MACrBzC,KAAK,CAACsC,iBAAiB,CAAChC,GAAG,CAC5B,CAAC,IAAI,CAAC+B,YAAY,EAAE;QACnBtC,MAAM,CAAC,iDAAiDC,KAAK,CAACsC,iBAAiB,CAAChC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAEA,GAAG,CAAC;QAEnG;MACF;MAEA,IAAIE,oBAAoB,CAAC6B,YAAY,EAAE,SAAS,CAAC,EAAE;QACjD,MAAMK,YAAY,GAAGpC,GAAG,CAACqC,IAAI;QAE7BnC,oBAAoB,CAACkC,YAAY,CAAC;MACpC;MAEA;IACF;IAEA,IAAIpC,GAAG,CAACA,GAAG,KAAK,UAAU,IAAID,IAAI,KAAK,SAAS,EAAE;MAChD,IAAIgB,WAAW;MAEf,IAAI;QACFA,WAAW,GAAG,IAAA3B,sBAAQ,EAACY,GAAG,CAACc,IAAI,CAAC;MAClC,CAAC,CAAC,MAAM;QACN;MAAA;MAGF,IAAIC,WAAW,EAAE;QACf,IAAAE,sBAAQ,EAACF,WAAW,EAAGG,IAAI,IAAK;UAC9B,IAAIJ,IAAI;UACR,IAAI,OAAO,IAAII,IAAI,IAAI,OAAOA,IAAI,CAACoB,KAAK,KAAK,QAAQ,EAAE;YACrDxB,IAAI,GAAGI,IAAI,CAACoB,KAAK;UACnB;UAEA,IAAIxB,IAAI,KAAKyB,SAAS,IAAI,CAACtD,aAAa,CAACoB,GAAG,CAACS,IAAI,CAAC,EAAE;YAClDrB,MAAM,CAAC,kCAAkCqB,IAAI,EAAE,EAAE,IAAI,EAAEd,GAAG,CAAC;UAC7D;QACF,CAAC,CAAC;MACJ;IACF;IAEA,MAAMwC,aAAa,GAAG,sDAAwD,CAC5E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAC/C,CAAEC,MAAM,CACNC,GAAG,IAAK;MACP,OAAOA,GAAG,KAAK3C,IAAI;IACrB,CACF,CAAC,CAAC4C,GAAG,CAAED,GAAG,IAAK;MACb,OAAOhD,KAAK,CAACkD,sBAAsB,CAACF,GAAG,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAMG,wBAAwB,GAAGnD,KAAK,CAACmD,wBAAwB,CAAC7C,GAAG,CAACA,GAAG,EAAEwC,aAAa,CAAC;IACvF,IAAIK,wBAAwB,KAAK,IAAI,IAAI7C,GAAG,CAACqC,IAAI,EAAE;MACjD,MAAMS,QAAQ,GAAGD,wBAAwB,KAAK,KAAK,GAAG,EAAE,GAAG,QAAQ9C,IAAI,QAAQ;MAC/EN,MAAM,CAAC,IAAIO,GAAG,CAACA,GAAG,0BAA0B8C,QAAQ,GAAG,EAAE,IAAI,EAAE9C,GAAG,CAAC;MAEnE;IACF;IAEA,MAAM+C,qBAAqB,GAAGrD,KAAK,CAACsD,wBAAwB,CAAChD,GAAG,CAACA,GAAG,EAAEwC,aAAa,CAAC;IACpF,IAAIO,qBAAqB,KAAK,IAAI,IAAI/C,GAAG,CAACc,IAAI,EAAE;MAC9C,MAAMgC,QAAQ,GAAGC,qBAAqB,KAAK,KAAK,GAAG,EAAE,GAAG,QAAQhD,IAAI,QAAQ;MAC5EN,MAAM,CAAC,IAAIO,GAAG,CAACA,GAAG,oCAAoC8C,QAAQ,GAAG,EAAE,IAAI,EAAE9C,GAAG,CAAC;MAE7E;IACF;;IAEA;IACA,MAAMiD,uBAAuB,GAAGvD,KAAK,CAACuD,uBAAuB,CAACjD,GAAG,CAACA,GAAG,EAAEwC,aAAa,CAAC;;IAErF;IACA;IACA;IACA,IAAIS,uBAAuB,KAAK,KAAK,IAAI,CAACjD,GAAG,CAACqC,IAAI,IAAI,CAACxC,mBAAmB,IAAI,CAAC,CAC7E,OAAO,EAAE,KAAK,EAAE,UAAU,EAC1B,UAAU,EAAE,MAAM,CACnB,CAACa,QAAQ,CAACV,GAAG,CAACA,GAAG,CAAC,KAChBA,GAAG,CAACA,GAAG,KAAK,KAAK,IAAI,CAACN,KAAK,CAACsC,iBAAiB,CAAChC,GAAG,CAAC,CAACU,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACvE;MACA,MAAMoC,QAAQ,GAAGG,uBAAuB,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQlD,IAAI,QAAQ;MAC7EN,MAAM,CAAC,QAAQO,GAAG,CAACA,GAAG,6BAA6B8C,QAAQ,GAAG,EAAE,IAAI,EAAE9C,GAAG,CAAC;MAE1E;IACF;;IAEA;IACA,MAAMkD,oBAAoB,GAAGxD,KAAK,CAACyD,uBAAuB,CAACnD,GAAG,CAACA,GAAG,EAAEwC,aAAa,CAAC;IAClF,IAAIU,oBAAoB,KAAK,KAAK,IAAI,CAAClD,GAAG,CAACc,IAAI,EAAE;MAC/C,MAAMgC,QAAQ,GAAGI,oBAAoB,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQnD,IAAI,QAAQ;MAC1EN,MAAM,CAAC,QAAQO,GAAG,CAACA,GAAG,oBAAoB8C,QAAQ,GAAG,EAAE,IAAI,EAAE9C,GAAG,CAAC;MAEjE;IACF;;IAEA;IACA,MAAMoD,gCAAgC,GAAG1D,KAAK,CAAC0D,gCAAgC,CAACpD,GAAG,EAAEwC,aAAa,CAAC;IACnG,IAAIY,gCAAgC,KAAK,KAAK,IAAI,CAACvD,mBAAmB,EAAE;MACtE,MAAMiD,QAAQ,GAAGM,gCAAgC,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQrD,IAAI,QAAQ;MACtFN,MAAM,CAAC,QAAQO,GAAG,CAACA,GAAG,uCAAuC8C,QAAQ,GAAG,EAAE,IAAI,EAAE9C,GAAG,CAAC;MAEpF;IACF;;IAEA;IACA,MAAMqD,eAAe,GAAGN,qBAAqB,KAAK,IAAI,IAAIO,OAAO,CAACtD,GAAG,CAACc,IAAI,CAAC;IAC3E,IAAIuC,eAAe,EAAE;MACnBxC,gBAAgB,CAACb,GAAG,CAACc,IAAI,CAAC;IAC5B;;IAEA;IACA,MAAMyC,yBAAyB,GAAG,CAChCN,uBAAuB,KAAK,KAAK,IACjCvD,KAAK,CAAC8D,oBAAoB,CAACxD,GAAG,CAACA,GAAG,CAAC,KAChCsD,OAAO,CAACtD,GAAG,CAACqC,IAAI,CAAC;IAEtB,IAAIkB,yBAAyB,EAAE;MAC7B,IAAIxD,IAAI,KAAK,OAAO,IAAIC,GAAG,CAACA,GAAG,KAAK,UAAU,EAAE;QAC9C,KAAK,MAAMG,QAAQ,IAAIT,KAAK,CAAC+D,uBAAuB,CAACzD,GAAG,CAAC,EAAE;UACzDE,oBAAoB,CAACC,QAAQ,CAAC;QAChC;MACF,CAAC,MAAM;QACLD,oBAAoB,CAACF,GAAG,CAACqC,IAAI,EAAErC,GAAG,CAACA,GAAG,CAAC;MACzC;IACF;IAEA,KAAK,MAAM0D,SAAS,IAAI1D,GAAG,CAACnB,UAAU,EAAE;MACtC,IAAIA,UAAU,CAACwB,GAAG,CAACqD,SAAS,CAAC1D,GAAG,CAAC,IAAI,CAAC0D,SAAS,CAACC,IAAI,IAAI,CAACD,SAAS,CAACE,aAAa,EAAE;QAChFnE,MAAM,CAAC,eAAeiE,SAAS,CAAC1D,GAAG,mBAAmB,EAAE,IAAI,EAAEA,GAAG,CAAC;MACpE;IACF;EACF;EAEA,KAAK,MAAM0D,SAAS,IAAIlE,KAAK,CAACX,UAAU,EAAE;IACxC,IAAIA,UAAU,CAACwB,GAAG,CAACqD,SAAS,CAAC1D,GAAG,CAAC,IAAI,CAAC0D,SAAS,CAACC,IAAI,IAAI,CAACD,SAAS,CAACE,aAAa,EAAE;MAChFnE,MAAM,CAAC,eAAeiE,SAAS,CAAC1D,GAAG,mBAAmB,CAAC;IACzD;EACF;AACF,CAAC,EAAE;EACD6D,gBAAgB,EAAE,IAAI;EACtBtC,IAAI,EAAE;IACJuC,IAAI,EAAE;MACJC,WAAW,EAAE,uFAAuF;MACpGC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVtE,mBAAmB,EAAE;UACnBjB,OAAO,EAAE,KAAK;UACdkC,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAsD,MAAA,CAAA9E,OAAA,GAAAA,OAAA,CAAAV,OAAA","ignoreList":[]}