{"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/middleware-to-proxy.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"\"use strict\";\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = transformer;\nconst fs_1 = __importDefault(require(\"fs\"));\nconst path_1 = require(\"path\");\nconst utils_1 = require(\"./lib/utils\");\nconst parser_1 = require(\"../lib/parser\");\n// Middleware config properties that need to be renamed to proxy equivalents\nconst CONFIG_PROPERTY_MAP = {\n  middlewarePrefetch: 'proxyPrefetch',\n  middlewareClientMaxBodySize: 'proxyClientMaxBodySize',\n  externalMiddlewareRewritesResolve: 'externalProxyRewritesResolve',\n  skipMiddlewareUrlNormalize: 'skipProxyUrlNormalize'\n};\n// Type imports from 'next/server' that need to be transformed\nconst MIDDLEWARE_TYPE_IMPORT_MAP = {\n  NextMiddleware: 'NextProxy',\n  MiddlewareConfig: 'ProxyConfig'\n};\nfunction transformer(file) {\n  const j = (0, parser_1.createParserFromPath)(file.path);\n  const root = j(file.source);\n  if (!root.length) {\n    return file.source;\n  }\n  const isNextConfig = (0, utils_1.isNextConfigFile)(file) || process.env.NODE_ENV === 'test' && /next-config-/.test(file.path);\n  const isMiddlewareFile = /(^|[/\\\\])middleware\\.|[/\\\\]src[/\\\\]middleware\\./.test(file.path) || process.env.NODE_ENV === 'test' && !isNextConfig;\n  const hasMiddlewareTypeImports = checkForNextServerTypeImports(root, j);\n  // In test mode, process all files. Otherwise, only process relevant files\n  if (process.env.NODE_ENV !== 'test') {\n    if (!isMiddlewareFile && !isNextConfig && !hasMiddlewareTypeImports) {\n      return file.source;\n    }\n  }\n  let hasChanges = false;\n  if (hasMiddlewareTypeImports) {\n    const typeImportChanges = transformMiddlewareTypeImports(root, j);\n    hasChanges = hasChanges || typeImportChanges;\n  }\n  if (isMiddlewareFile) {\n    const middlewareChanges = transformMiddlewareFunction(root, j);\n    hasChanges = hasChanges || middlewareChanges.hasChanges;\n    // Remove runtime segment config\n    const runtimeChanges = removeRuntimeConfig(root, j);\n    hasChanges = hasChanges || runtimeChanges;\n  }\n  if (isNextConfig) {\n    const {\n      hasConfigChanges\n    } = transformNextConfig(root, j);\n    hasChanges = hasChanges || hasConfigChanges;\n  }\n  if (!hasChanges) {\n    return file.source;\n  }\n  const source = root.toSource();\n  // Need to write proxy file and unlink the original middleware file.\n  if (isMiddlewareFile) {\n    return handleMiddlewareFileRename(file, source);\n  }\n  return source;\n}\nfunction checkForNextServerTypeImports(root, j) {\n  return root.find(j.ImportDeclaration, {\n    source: {\n      value: 'next/server'\n    }\n  }).find(j.ImportSpecifier).filter(path => MIDDLEWARE_TYPE_IMPORT_MAP[path.node.imported.name]).length > 0;\n}\nfunction transformMiddlewareTypeImports(root, j) {\n  let hasChanges = false;\n  // Transform type imports from 'next/server'\n  root.find(j.ImportDeclaration, {\n    source: {\n      value: 'next/server'\n    }\n  }).forEach(importPath => {\n    const specifiers = importPath.node.specifiers;\n    if (!specifiers) return;\n    specifiers.forEach(specifier => {\n      if (j.ImportSpecifier.check(specifier) && specifier.imported && MIDDLEWARE_TYPE_IMPORT_MAP[specifier.imported.name]) {\n        const oldImportName = specifier.imported.name;\n        const newImportName = MIDDLEWARE_TYPE_IMPORT_MAP[oldImportName];\n        // Update the local name if it matches the original imported name\n        if (specifier.local && specifier.local.name === oldImportName) {\n          specifier.local.name = newImportName;\n        }\n        // Transform the import name\n        specifier.imported.name = newImportName;\n        hasChanges = true;\n      }\n    });\n  });\n  // Also transform any type annotations using the old types\n  Object.keys(MIDDLEWARE_TYPE_IMPORT_MAP).forEach(oldType => {\n    root.find(j.TSTypeReference).filter(path => {\n      return path.node.typeName && path.node.typeName.type === 'Identifier' && path.node.typeName.name === oldType;\n    }).forEach(path => {\n      path.node.typeName.name = MIDDLEWARE_TYPE_IMPORT_MAP[oldType];\n      hasChanges = true;\n    });\n  });\n  return hasChanges;\n}\nfunction transformNextConfig(root, j) {\n  let hasConfigChanges = false;\n  // Collect config-related object expressions instead of processing all\n  const configObjects = findNextConfigObjects(root, j);\n  configObjects.forEach(objPath => {\n    const result = processConfigObject(objPath.value);\n    hasConfigChanges = hasConfigChanges || result.hasChanges;\n  });\n  // Process function configurations that are likely to be Next.js config\n  const configFunctions = findNextConfigFunctions(root, j);\n  configFunctions.forEach(path => {\n    const result = processFunctionConfig(path, j);\n    hasConfigChanges = hasConfigChanges || result.hasChanges;\n  });\n  // Process arrow function configurations that are likely to be Next.js config\n  const configArrowFunctions = findNextConfigArrowFunctions(root, j);\n  configArrowFunctions.forEach(path => {\n    const result = processArrowFunctionConfig(path, j);\n    hasConfigChanges = hasConfigChanges || result.hasChanges;\n  });\n  // Process direct property assignments: config.experimental.middlewarePrefetch = value\n  Object.keys(CONFIG_PROPERTY_MAP).forEach(oldProp => {\n    const newProp = CONFIG_PROPERTY_MAP[oldProp];\n    // Handle experimental.* properties\n    if (oldProp.startsWith('middleware') && oldProp !== 'skipMiddlewareUrlNormalize') {\n      root.find(j.AssignmentExpression, {\n        left: {\n          type: 'MemberExpression',\n          object: {\n            type: 'MemberExpression',\n            property: {\n              name: 'experimental'\n            }\n          },\n          property: {\n            name: oldProp\n          }\n        }\n      }).forEach(path => {\n        path.node.left.property.name = newProp;\n        hasConfigChanges = true;\n      });\n    } else {\n      // Handle top-level properties like skipMiddlewareUrlNormalize\n      root.find(j.AssignmentExpression, {\n        left: {\n          type: 'MemberExpression',\n          property: {\n            name: oldProp\n          }\n        }\n      }).forEach(path => {\n        path.node.left.property.name = newProp;\n        hasConfigChanges = true;\n      });\n    }\n  });\n  return {\n    hasConfigChanges\n  };\n}\nfunction processConfigObject(configObj) {\n  let hasChanges = false;\n  // Check for experimental property\n  const experimentalProp = configObj.properties.find(prop => isStaticProperty(prop) && prop.key && prop.key.type === 'Identifier' && prop.key.name === 'experimental');\n  if (experimentalProp && isStaticProperty(experimentalProp)) {\n    const experimentalObj = experimentalProp.value;\n    if (experimentalObj.type === 'ObjectExpression') {\n      // Transform properties in experimental object\n      experimentalObj.properties.forEach(prop => {\n        if (isStaticProperty(prop) && prop.key && prop.key.type === 'Identifier' && CONFIG_PROPERTY_MAP[prop.key.name] && prop.key.name !== 'skipMiddlewareUrlNormalize' // This is top-level\n        ) {\n          prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n          hasChanges = true;\n        }\n      });\n    }\n  }\n  // Transform top-level properties\n  configObj.properties.forEach(prop => {\n    if (isStaticProperty(prop) && prop.key && prop.key.type === 'Identifier' && prop.key.name === 'skipMiddlewareUrlNormalize') {\n      prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n      hasChanges = true;\n    }\n  });\n  // Also transform any top-level middleware properties (for spread scenarios)\n  configObj.properties.forEach(prop => {\n    if (isStaticProperty(prop) && prop.key && prop.key.type === 'Identifier' && CONFIG_PROPERTY_MAP[prop.key.name] && prop.key.name !== 'skipMiddlewareUrlNormalize' // Already handled above\n    ) {\n      prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n      hasChanges = true;\n    }\n  });\n  return {\n    hasChanges\n  };\n}\nfunction processFunctionConfig(path, j) {\n  let hasChanges = false;\n  // Look for return statements with object expressions\n  j(path).find(j.ReturnStatement).forEach(returnPath => {\n    if (returnPath.node.argument && returnPath.node.argument.type === 'ObjectExpression') {\n      const result = processConfigObject(returnPath.node.argument);\n      hasChanges = hasChanges || result.hasChanges;\n    }\n  });\n  return {\n    hasChanges\n  };\n}\nfunction processArrowFunctionConfig(path, j) {\n  let hasChanges = false;\n  const body = path.node.body;\n  // Handle: () => ({ ... })\n  if (body && body.type === 'ObjectExpression') {\n    const result = processConfigObject(body);\n    hasChanges = hasChanges || result.hasChanges;\n  }\n  // Handle: () => { return { ... } }\n  if (body && body.type === 'BlockStatement') {\n    j(path).find(j.ReturnStatement).forEach(returnPath => {\n      if (returnPath.node.argument && returnPath.node.argument.type === 'ObjectExpression') {\n        const result = processConfigObject(returnPath.node.argument);\n        hasChanges = hasChanges || result.hasChanges;\n      }\n    });\n  }\n  return {\n    hasChanges\n  };\n}\nfunction transformMiddlewareFunction(root, j) {\n  const proxyIdentifier = generateUniqueIdentifier(root, j, 'proxy');\n  const needsAlias = proxyIdentifier !== 'proxy';\n  let hasChanges = false;\n  // Track if we exported something as 'proxy'\n  let exportedAsProxy = false;\n  // Handle named export declarations\n  root.find(j.ExportNamedDeclaration).forEach(nodePath => {\n    var _declaration$id;\n    const declaration = nodePath.node.declaration;\n    // Handle: export function middleware() {} or export async function middleware() {}\n    if (j.FunctionDeclaration.check(declaration) && ((_declaration$id = declaration.id) === null || _declaration$id === void 0 ? void 0 : _declaration$id.name) === 'middleware') {\n      declaration.id.name = proxyIdentifier;\n      exportedAsProxy = true; // Exported function declarations become proxy\n      hasChanges = true;\n    }\n    // Handle: export { middleware }\n    if (nodePath.node.specifiers) {\n      nodePath.node.specifiers.forEach(specifier => {\n        if (j.ExportSpecifier.check(specifier) && j.Identifier.check(specifier.local) && specifier.local.name === 'middleware') {\n          // Check if this is exporting middleware as 'middleware' (which should become 'proxy')\n          if (j.Identifier.check(specifier.exported) && specifier.exported.name === 'middleware') {\n            if (needsAlias) {\n              // Create export alias: export { _proxy1 as proxy }\n              const newSpecifier = j.exportSpecifier.from({\n                local: j.identifier(proxyIdentifier),\n                exported: j.identifier('proxy')\n              });\n              // Replace in the specifiers array\n              const specifierIndex = nodePath.node.specifiers.indexOf(specifier);\n              nodePath.node.specifiers[specifierIndex] = newSpecifier;\n            } else {\n              // Simple rename: export { proxy }\n              specifier.exported = j.identifier('proxy');\n              specifier.local = j.identifier('proxy');\n            }\n            exportedAsProxy = true;\n            hasChanges = true;\n          } else {\n            // This is exporting middleware as something else (e.g., export { middleware as randomName })\n            // Just update the local reference to the new identifier\n            specifier.local = j.identifier(proxyIdentifier);\n            hasChanges = true;\n          }\n        }\n      });\n    }\n  });\n  // Handle default export declarations\n  root.find(j.ExportDefaultDeclaration).forEach(nodePath => {\n    var _declaration$id2;\n    const declaration = nodePath.node.declaration;\n    // Handle: export default function middleware() {} or export default async function middleware() {}\n    if (j.FunctionDeclaration.check(declaration) && ((_declaration$id2 = declaration.id) === null || _declaration$id2 === void 0 ? void 0 : _declaration$id2.name) === 'middleware') {\n      declaration.id.name = proxyIdentifier;\n      hasChanges = true;\n    }\n  });\n  // Handle function declarations that are later exported\n  root.find(j.FunctionDeclaration, {\n    id: {\n      name: 'middleware'\n    }\n  }).forEach(nodePath => {\n    if (nodePath.node.id) {\n      nodePath.node.id.name = proxyIdentifier;\n      hasChanges = true;\n    }\n  });\n  // Handle variable declarations: const middleware = ...\n  root.find(j.VariableDeclarator, {\n    id: {\n      name: 'middleware'\n    }\n  }).forEach(nodePath => {\n    if (j.Identifier.check(nodePath.node.id)) {\n      nodePath.node.id.name = proxyIdentifier;\n      hasChanges = true;\n    }\n  });\n  // Update all references to middleware in the scope\n  if (hasChanges && needsAlias) {\n    root.find(j.Identifier, {\n      name: 'middleware'\n    }).filter(astPath => {\n      // Don't rename if it's part of an export specifier we already handled\n      const parent = astPath.parent;\n      if (j.ExportSpecifier.check(parent.node)) {\n        return false;\n      }\n      // Don't rename if it's a function/variable declaration we already handled\n      if (j.FunctionDeclaration.check(parent.node) && parent.node.id === astPath.node || j.VariableDeclarator.check(parent.node) && parent.node.id === astPath.node) {\n        return false;\n      }\n      return true;\n    }).forEach(astPath => {\n      astPath.node.name = proxyIdentifier;\n    });\n  }\n  // If we used a unique identifier AND we exported `as proxy`, add an export alias\n  // This handles cases where the export was part of the declaration itself:\n  //   export function middleware() {} -> export function _proxy1() {} (needs alias)\n  // vs cases where export was separate:\n  //   export { middleware } -> export { _proxy1 as proxy } (already handled)\n  if (needsAlias && hasChanges && exportedAsProxy) {\n    // Check if we already created a proxy export (from export specifiers like `export { middleware }`)\n    const hasExportSpecifier = root.find(j.ExportNamedDeclaration).filter(astPath => {\n      return astPath.node.specifiers && astPath.node.specifiers.some(spec => j.ExportSpecifier.check(spec) && j.Identifier.check(spec.exported) && spec.exported.name === 'proxy');\n    }).length > 0;\n    // If no proxy export exists yet, create one to maintain the 'proxy' API\n    // Example: export function _proxy1() {} + export { _proxy1 as proxy }\n    if (!hasExportSpecifier) {\n      const exportSpecifier = j.exportSpecifier.from({\n        local: j.identifier(proxyIdentifier),\n        exported: j.identifier('proxy')\n      });\n      const exportDeclaration = j.exportNamedDeclaration(null, [exportSpecifier]);\n      // Add the export at the end of the file\n      const program = root.find(j.Program);\n      if (program.length > 0) {\n        program.get('body').value.push(exportDeclaration);\n      }\n    }\n  }\n  return {\n    hasChanges\n  };\n}\nfunction handleMiddlewareFileRename(file, source) {\n  // We will not modify the original file in real world,\n  // so return the source here for testing.\n  if (process.env.NODE_ENV === 'test') {\n    return source;\n  }\n  const {\n    dir,\n    ext\n  } = (0, path_1.parse)(file.path);\n  const newFilePath = (0, path_1.join)(dir, 'proxy' + ext);\n  try {\n    fs_1.default.writeFileSync(newFilePath, source);\n    fs_1.default.unlinkSync(file.path);\n    // Return empty string to indicate successful file replacement.\n    return '';\n  } catch (cause) {\n    console.error(`Failed to write \"${newFilePath}\" and delete \"${file.path}\".\\n${JSON.stringify({\n      cause\n    })}`);\n    return file.source;\n  }\n}\nfunction isStaticProperty(prop) {\n  return prop.type === 'Property' || prop.type === 'ObjectProperty';\n}\nfunction generateUniqueIdentifier(root, j, baseName) {\n  // First check if baseName itself is available\n  if (!hasIdentifierInScope(root, j, baseName)) {\n    return baseName;\n  }\n  // Generate _proxy1, _proxy2, etc.\n  let counter = 1;\n  while (true) {\n    const candidate = `_${baseName}${counter}`;\n    if (!hasIdentifierInScope(root, j, candidate)) {\n      return candidate;\n    }\n    counter++;\n  }\n}\nfunction hasIdentifierInScope(root, j, name) {\n  // Check for variable declarations\n  const hasVariableDeclaration = root.find(j.VariableDeclarator).filter(astPath => j.Identifier.check(astPath.value.id) && astPath.value.id.name === name).length > 0;\n  // Check for function declarations\n  const hasFunctionDeclaration = root.find(j.FunctionDeclaration).filter(astPath => astPath.value.id && astPath.value.id.name === name).length > 0;\n  // Check for import specifiers\n  const hasImportSpecifier = root.find(j.ImportSpecifier).filter(astPath => j.Identifier.check(astPath.value.local) && astPath.value.local.name === name).length > 0;\n  return hasVariableDeclaration || hasFunctionDeclaration || hasImportSpecifier;\n}\nfunction findNextConfigObjects(root, j) {\n  const configObjects = [];\n  // Find identifiers that are exported as default or assigned to module.exports\n  const exportedNames = new Set();\n  // Handle: export default nextConfig or export default wrappedFunction(nextConfig)\n  root.find(j.ExportDefaultDeclaration).forEach(path => {\n    if (j.Identifier.check(path.node.declaration)) {\n      exportedNames.add(path.node.declaration.name);\n    } else if (j.ObjectExpression.check(path.node.declaration)) {\n      // Direct object export: export default { ... }\n      configObjects.push(path.get('declaration'));\n    } else if (j.CallExpression.check(path.node.declaration)) {\n      // Handle wrapped exports: export default wrapper(config)\n      extractObjectsFromCallExpression(path.node.declaration, configObjects, exportedNames, j);\n    }\n  });\n  // Handle: module.exports = nextConfig or module.exports = wrappedFunction(nextConfig)\n  root.find(j.AssignmentExpression, {\n    left: {\n      type: 'MemberExpression',\n      object: {\n        name: 'module'\n      },\n      property: {\n        name: 'exports'\n      }\n    }\n  }).forEach(path => {\n    if (j.Identifier.check(path.node.right)) {\n      exportedNames.add(path.node.right.name);\n    } else if (j.ObjectExpression.check(path.node.right)) {\n      // Direct object assignment: module.exports = { ... }\n      configObjects.push(path.get('right'));\n    } else if (j.CallExpression.check(path.node.right)) {\n      // Handle wrapped assignments: module.exports = wrapper(config)\n      extractObjectsFromCallExpression(path.node.right, configObjects, exportedNames, j);\n    }\n  });\n  // Find variable declarations for exported names\n  exportedNames.forEach(name => {\n    root.find(j.VariableDeclarator, {\n      id: {\n        name\n      }\n    }).forEach(path => {\n      if (j.ObjectExpression.check(path.node.init)) {\n        configObjects.push(path.get('init'));\n      }\n    });\n  });\n  return configObjects;\n}\nfunction findNextConfigFunctions(root, j) {\n  const configFunctions = [];\n  const exportedNames = new Set();\n  // Handle: export default function or export default functionName\n  root.find(j.ExportDefaultDeclaration).forEach(path => {\n    if (j.FunctionDeclaration.check(path.node.declaration)) {\n      // export default function configFunction() { ... }\n      configFunctions.push(path.get('declaration'));\n    } else if (j.Identifier.check(path.node.declaration)) {\n      exportedNames.add(path.node.declaration.name);\n    }\n  });\n  // Handle: module.exports = function\n  root.find(j.AssignmentExpression, {\n    left: {\n      type: 'MemberExpression',\n      object: {\n        name: 'module'\n      },\n      property: {\n        name: 'exports'\n      }\n    }\n  }).forEach(path => {\n    if (j.FunctionExpression.check(path.node.right)) {\n      // module.exports = function() { ... }\n      configFunctions.push(path.get('right'));\n    } else if (j.Identifier.check(path.node.right)) {\n      exportedNames.add(path.node.right.name);\n    }\n  });\n  // Find function declarations for exported names\n  exportedNames.forEach(name => {\n    root.find(j.FunctionDeclaration, {\n      id: {\n        name\n      }\n    }).forEach(path => {\n      configFunctions.push(path);\n    });\n  });\n  return configFunctions;\n}\nfunction findNextConfigArrowFunctions(root, j) {\n  const configArrowFunctions = [];\n  const exportedNames = new Set();\n  // Handle: export default arrowFunction\n  root.find(j.ExportDefaultDeclaration).forEach(path => {\n    if (j.ArrowFunctionExpression.check(path.node.declaration)) {\n      // export default () => { ... }\n      configArrowFunctions.push(path.get('declaration'));\n    } else if (j.Identifier.check(path.node.declaration)) {\n      exportedNames.add(path.node.declaration.name);\n    }\n  });\n  // Handle: module.exports = arrowFunction\n  root.find(j.AssignmentExpression, {\n    left: {\n      type: 'MemberExpression',\n      object: {\n        name: 'module'\n      },\n      property: {\n        name: 'exports'\n      }\n    }\n  }).forEach(path => {\n    if (j.ArrowFunctionExpression.check(path.node.right)) {\n      // module.exports = () => { ... }\n      configArrowFunctions.push(path.get('right'));\n    } else if (j.Identifier.check(path.node.right)) {\n      exportedNames.add(path.node.right.name);\n    }\n  });\n  // Find variable declarations with arrow functions for exported names\n  exportedNames.forEach(name => {\n    root.find(j.VariableDeclarator, {\n      id: {\n        name\n      }\n    }).forEach(path => {\n      if (j.ArrowFunctionExpression.check(path.node.init)) {\n        configArrowFunctions.push(path.get('init'));\n      }\n    });\n  });\n  return configArrowFunctions;\n}\nfunction extractObjectsFromCallExpression(callExpr, configObjects, exportedNames, j) {\n  // Recursively extract arguments from call expressions\n  // E.g., wrapper(anotherWrapper(config)) or wrapper(config)\n  if (callExpr.arguments) {\n    callExpr.arguments.forEach(arg => {\n      if (j.Identifier.check(arg)) {\n        exportedNames.add(arg.name);\n      } else if (j.ObjectExpression.check(arg)) {\n        // This would be unusual but handle direct object arguments\n        // We don't have the path here, so we'll skip this case\n        // It would be handled by the direct export case anyway\n      } else if (j.CallExpression.check(arg)) {\n        extractObjectsFromCallExpression(arg, configObjects, exportedNames, j);\n      }\n    });\n  }\n}\nfunction removeRuntimeConfig(root, j) {\n  let hasChanges = false;\n  // Remove export const runtime = 'string'\n  const directRuntimeExports = root.find(j.ExportNamedDeclaration, {\n    declaration: {\n      type: 'VariableDeclaration',\n      declarations: [{\n        id: {\n          name: 'runtime'\n        }\n      }]\n    }\n  });\n  if (directRuntimeExports.size() > 0) {\n    directRuntimeExports.remove();\n    hasChanges = true;\n  }\n  // Remove const runtime = 'string' declarations\n  const runtimeVariableDeclarations = root.find(j.VariableDeclaration).filter(path => path.node.declarations.some(decl => {\n    if (j.VariableDeclarator.check(decl) && j.Identifier.check(decl.id)) {\n      return decl.id.name === 'runtime';\n    }\n    return false;\n  }));\n  if (runtimeVariableDeclarations.size() > 0) {\n    runtimeVariableDeclarations.forEach(path => {\n      const originalDeclarations = path.node.declarations;\n      const filteredDeclarations = originalDeclarations.filter(decl => {\n        if (j.VariableDeclarator.check(decl) && j.Identifier.check(decl.id)) {\n          return decl.id.name !== 'runtime';\n        }\n        return true;\n      });\n      // If we filtered out some declarations, update the node\n      if (filteredDeclarations.length !== originalDeclarations.length) {\n        // Remove the entire declaration only if no declarators left\n        if (filteredDeclarations.length === 0) {\n          j(path).remove();\n        } else {\n          path.node.declarations = filteredDeclarations;\n        }\n      }\n    });\n    hasChanges = true;\n  }\n  // Handle export { runtime } and export { runtime, other }\n  const namedExports = root.find(j.ExportNamedDeclaration).filter(path => path.node.specifiers && path.node.specifiers.length > 0);\n  namedExports.forEach(path => {\n    const specifiers = path.node.specifiers;\n    if (!specifiers) return;\n    const filteredSpecifiers = specifiers.filter(spec => {\n      if (j.ExportSpecifier.check(spec) && j.Identifier.check(spec.local)) {\n        return spec.local.name !== 'runtime';\n      }\n      return true;\n    });\n    // If we removed any specifiers\n    if (filteredSpecifiers.length !== specifiers.length) {\n      hasChanges = true;\n      // If no specifiers left, remove the entire export statement\n      if (filteredSpecifiers.length === 0) {\n        j(path).remove();\n      } else {\n        // Update the specifiers array\n        path.node.specifiers = filteredSpecifiers;\n      }\n    }\n  });\n  // Handle runtime property in config objects\n  const configExports = root.find(j.ExportNamedDeclaration, {\n    declaration: {\n      type: 'VariableDeclaration',\n      declarations: [{\n        id: {\n          name: 'config'\n        }\n      }]\n    }\n  });\n  configExports.forEach(path => {\n    const declaration = path.node.declaration;\n    if (j.VariableDeclaration.check(declaration)) {\n      declaration.declarations.forEach(decl => {\n        if (j.VariableDeclarator.check(decl) && j.Identifier.check(decl.id) && decl.id.name === 'config' && j.ObjectExpression.check(decl.init)) {\n          const objExpr = decl.init;\n          const initialLength = objExpr.properties.length;\n          // Filter out runtime property\n          objExpr.properties = objExpr.properties.filter(prop => {\n            if (isStaticProperty(prop) && prop.key && prop.key.type === 'Identifier') {\n              return prop.key.name !== 'runtime';\n            }\n            return true;\n          });\n          // If we removed any properties\n          if (objExpr.properties.length !== initialLength) {\n            hasChanges = true;\n            // If no properties left, remove the entire config export\n            if (objExpr.properties.length === 0) {\n              j(path).remove();\n            }\n          }\n        }\n      });\n    }\n  });\n  return hasChanges;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJkZWZhdWx0IiwidHJhbnNmb3JtZXIiLCJmc18xIiwicmVxdWlyZSIsInBhdGhfMSIsInV0aWxzXzEiLCJwYXJzZXJfMSIsIkNPTkZJR19QUk9QRVJUWV9NQVAiLCJtaWRkbGV3YXJlUHJlZmV0Y2giLCJtaWRkbGV3YXJlQ2xpZW50TWF4Qm9keVNpemUiLCJleHRlcm5hbE1pZGRsZXdhcmVSZXdyaXRlc1Jlc29sdmUiLCJza2lwTWlkZGxld2FyZVVybE5vcm1hbGl6ZSIsIk1JRERMRVdBUkVfVFlQRV9JTVBPUlRfTUFQIiwiTmV4dE1pZGRsZXdhcmUiLCJNaWRkbGV3YXJlQ29uZmlnIiwiZmlsZSIsImoiLCJjcmVhdGVQYXJzZXJGcm9tUGF0aCIsInBhdGgiLCJyb290Iiwic291cmNlIiwibGVuZ3RoIiwiaXNOZXh0Q29uZmlnIiwiaXNOZXh0Q29uZmlnRmlsZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInRlc3QiLCJpc01pZGRsZXdhcmVGaWxlIiwiaGFzTWlkZGxld2FyZVR5cGVJbXBvcnRzIiwiY2hlY2tGb3JOZXh0U2VydmVyVHlwZUltcG9ydHMiLCJoYXNDaGFuZ2VzIiwidHlwZUltcG9ydENoYW5nZXMiLCJ0cmFuc2Zvcm1NaWRkbGV3YXJlVHlwZUltcG9ydHMiLCJtaWRkbGV3YXJlQ2hhbmdlcyIsInRyYW5zZm9ybU1pZGRsZXdhcmVGdW5jdGlvbiIsInJ1bnRpbWVDaGFuZ2VzIiwicmVtb3ZlUnVudGltZUNvbmZpZyIsImhhc0NvbmZpZ0NoYW5nZXMiLCJ0cmFuc2Zvcm1OZXh0Q29uZmlnIiwidG9Tb3VyY2UiLCJoYW5kbGVNaWRkbGV3YXJlRmlsZVJlbmFtZSIsImZpbmQiLCJJbXBvcnREZWNsYXJhdGlvbiIsIkltcG9ydFNwZWNpZmllciIsImZpbHRlciIsIm5vZGUiLCJpbXBvcnRlZCIsIm5hbWUiLCJmb3JFYWNoIiwiaW1wb3J0UGF0aCIsInNwZWNpZmllcnMiLCJzcGVjaWZpZXIiLCJjaGVjayIsIm9sZEltcG9ydE5hbWUiLCJuZXdJbXBvcnROYW1lIiwibG9jYWwiLCJrZXlzIiwib2xkVHlwZSIsIlRTVHlwZVJlZmVyZW5jZSIsInR5cGVOYW1lIiwidHlwZSIsImNvbmZpZ09iamVjdHMiLCJmaW5kTmV4dENvbmZpZ09iamVjdHMiLCJvYmpQYXRoIiwicmVzdWx0IiwicHJvY2Vzc0NvbmZpZ09iamVjdCIsImNvbmZpZ0Z1bmN0aW9ucyIsImZpbmROZXh0Q29uZmlnRnVuY3Rpb25zIiwicHJvY2Vzc0Z1bmN0aW9uQ29uZmlnIiwiY29uZmlnQXJyb3dGdW5jdGlvbnMiLCJmaW5kTmV4dENvbmZpZ0Fycm93RnVuY3Rpb25zIiwicHJvY2Vzc0Fycm93RnVuY3Rpb25Db25maWciLCJvbGRQcm9wIiwibmV3UHJvcCIsInN0YXJ0c1dpdGgiLCJBc3NpZ25tZW50RXhwcmVzc2lvbiIsImxlZnQiLCJvYmplY3QiLCJwcm9wZXJ0eSIsImNvbmZpZ09iaiIsImV4cGVyaW1lbnRhbFByb3AiLCJwcm9wZXJ0aWVzIiwicHJvcCIsImlzU3RhdGljUHJvcGVydHkiLCJrZXkiLCJleHBlcmltZW50YWxPYmoiLCJSZXR1cm5TdGF0ZW1lbnQiLCJyZXR1cm5QYXRoIiwiYXJndW1lbnQiLCJib2R5IiwicHJveHlJZGVudGlmaWVyIiwiZ2VuZXJhdGVVbmlxdWVJZGVudGlmaWVyIiwibmVlZHNBbGlhcyIsImV4cG9ydGVkQXNQcm94eSIsIkV4cG9ydE5hbWVkRGVjbGFyYXRpb24iLCJub2RlUGF0aCIsIl9kZWNsYXJhdGlvbiRpZCIsImRlY2xhcmF0aW9uIiwiRnVuY3Rpb25EZWNsYXJhdGlvbiIsImlkIiwiRXhwb3J0U3BlY2lmaWVyIiwiSWRlbnRpZmllciIsImV4cG9ydGVkIiwibmV3U3BlY2lmaWVyIiwiZXhwb3J0U3BlY2lmaWVyIiwiZnJvbSIsImlkZW50aWZpZXIiLCJzcGVjaWZpZXJJbmRleCIsImluZGV4T2YiLCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24iLCJfZGVjbGFyYXRpb24kaWQyIiwiVmFyaWFibGVEZWNsYXJhdG9yIiwiYXN0UGF0aCIsInBhcmVudCIsImhhc0V4cG9ydFNwZWNpZmllciIsInNvbWUiLCJzcGVjIiwiZXhwb3J0RGVjbGFyYXRpb24iLCJleHBvcnROYW1lZERlY2xhcmF0aW9uIiwicHJvZ3JhbSIsIlByb2dyYW0iLCJnZXQiLCJwdXNoIiwiZGlyIiwiZXh0IiwicGFyc2UiLCJuZXdGaWxlUGF0aCIsImpvaW4iLCJ3cml0ZUZpbGVTeW5jIiwidW5saW5rU3luYyIsImNhdXNlIiwiY29uc29sZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImJhc2VOYW1lIiwiaGFzSWRlbnRpZmllckluU2NvcGUiLCJjb3VudGVyIiwiY2FuZGlkYXRlIiwiaGFzVmFyaWFibGVEZWNsYXJhdGlvbiIsImhhc0Z1bmN0aW9uRGVjbGFyYXRpb24iLCJoYXNJbXBvcnRTcGVjaWZpZXIiLCJleHBvcnRlZE5hbWVzIiwiU2V0IiwiYWRkIiwiT2JqZWN0RXhwcmVzc2lvbiIsIkNhbGxFeHByZXNzaW9uIiwiZXh0cmFjdE9iamVjdHNGcm9tQ2FsbEV4cHJlc3Npb24iLCJyaWdodCIsImluaXQiLCJGdW5jdGlvbkV4cHJlc3Npb24iLCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiIsImNhbGxFeHByIiwiYXJndW1lbnRzIiwiYXJnIiwiZGlyZWN0UnVudGltZUV4cG9ydHMiLCJkZWNsYXJhdGlvbnMiLCJzaXplIiwicmVtb3ZlIiwicnVudGltZVZhcmlhYmxlRGVjbGFyYXRpb25zIiwiVmFyaWFibGVEZWNsYXJhdGlvbiIsImRlY2wiLCJvcmlnaW5hbERlY2xhcmF0aW9ucyIsImZpbHRlcmVkRGVjbGFyYXRpb25zIiwibmFtZWRFeHBvcnRzIiwiZmlsdGVyZWRTcGVjaWZpZXJzIiwiY29uZmlnRXhwb3J0cyIsIm9iakV4cHIiLCJpbml0aWFsTGVuZ3RoIl0sInNvdXJjZVJvb3QiOiIvaG9tZS9jY3VzZXIvLm5wbS9fbnB4LzZhMDkwNjY5ZTIxYjQzMDMvbm9kZV9tb2R1bGVzL0BuZXh0L2NvZGVtb2QvdHJhbnNmb3Jtcy8iLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmUtdG8tcHJveHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0cmFuc2Zvcm1lcjtcbmNvbnN0IGZzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImZzXCIpKTtcbmNvbnN0IHBhdGhfMSA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL2xpYi91dGlsc1wiKTtcbmNvbnN0IHBhcnNlcl8xID0gcmVxdWlyZShcIi4uL2xpYi9wYXJzZXJcIik7XG4vLyBNaWRkbGV3YXJlIGNvbmZpZyBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSByZW5hbWVkIHRvIHByb3h5IGVxdWl2YWxlbnRzXG5jb25zdCBDT05GSUdfUFJPUEVSVFlfTUFQID0ge1xuICAgIG1pZGRsZXdhcmVQcmVmZXRjaDogJ3Byb3h5UHJlZmV0Y2gnLFxuICAgIG1pZGRsZXdhcmVDbGllbnRNYXhCb2R5U2l6ZTogJ3Byb3h5Q2xpZW50TWF4Qm9keVNpemUnLFxuICAgIGV4dGVybmFsTWlkZGxld2FyZVJld3JpdGVzUmVzb2x2ZTogJ2V4dGVybmFsUHJveHlSZXdyaXRlc1Jlc29sdmUnLFxuICAgIHNraXBNaWRkbGV3YXJlVXJsTm9ybWFsaXplOiAnc2tpcFByb3h5VXJsTm9ybWFsaXplJyxcbn07XG4vLyBUeXBlIGltcG9ydHMgZnJvbSAnbmV4dC9zZXJ2ZXInIHRoYXQgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZFxuY29uc3QgTUlERExFV0FSRV9UWVBFX0lNUE9SVF9NQVAgPSB7XG4gICAgTmV4dE1pZGRsZXdhcmU6ICdOZXh0UHJveHknLFxuICAgIE1pZGRsZXdhcmVDb25maWc6ICdQcm94eUNvbmZpZycsXG59O1xuZnVuY3Rpb24gdHJhbnNmb3JtZXIoZmlsZSkge1xuICAgIGNvbnN0IGogPSAoMCwgcGFyc2VyXzEuY3JlYXRlUGFyc2VyRnJvbVBhdGgpKGZpbGUucGF0aCk7XG4gICAgY29uc3Qgcm9vdCA9IGooZmlsZS5zb3VyY2UpO1xuICAgIGlmICghcm9vdC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZpbGUuc291cmNlO1xuICAgIH1cbiAgICBjb25zdCBpc05leHRDb25maWcgPSAoMCwgdXRpbHNfMS5pc05leHRDb25maWdGaWxlKShmaWxlKSB8fFxuICAgICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0JyAmJiAvbmV4dC1jb25maWctLy50ZXN0KGZpbGUucGF0aCkpO1xuICAgIGNvbnN0IGlzTWlkZGxld2FyZUZpbGUgPSAvKF58Wy9cXFxcXSltaWRkbGV3YXJlXFwufFsvXFxcXF1zcmNbL1xcXFxdbWlkZGxld2FyZVxcLi8udGVzdChmaWxlLnBhdGgpIHx8XG4gICAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnICYmICFpc05leHRDb25maWcpO1xuICAgIGNvbnN0IGhhc01pZGRsZXdhcmVUeXBlSW1wb3J0cyA9IGNoZWNrRm9yTmV4dFNlcnZlclR5cGVJbXBvcnRzKHJvb3QsIGopO1xuICAgIC8vIEluIHRlc3QgbW9kZSwgcHJvY2VzcyBhbGwgZmlsZXMuIE90aGVyd2lzZSwgb25seSBwcm9jZXNzIHJlbGV2YW50IGZpbGVzXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcpIHtcbiAgICAgICAgaWYgKCFpc01pZGRsZXdhcmVGaWxlICYmICFpc05leHRDb25maWcgJiYgIWhhc01pZGRsZXdhcmVUeXBlSW1wb3J0cykge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGUuc291cmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgaWYgKGhhc01pZGRsZXdhcmVUeXBlSW1wb3J0cykge1xuICAgICAgICBjb25zdCB0eXBlSW1wb3J0Q2hhbmdlcyA9IHRyYW5zZm9ybU1pZGRsZXdhcmVUeXBlSW1wb3J0cyhyb290LCBqKTtcbiAgICAgICAgaGFzQ2hhbmdlcyA9IGhhc0NoYW5nZXMgfHwgdHlwZUltcG9ydENoYW5nZXM7XG4gICAgfVxuICAgIGlmIChpc01pZGRsZXdhcmVGaWxlKSB7XG4gICAgICAgIGNvbnN0IG1pZGRsZXdhcmVDaGFuZ2VzID0gdHJhbnNmb3JtTWlkZGxld2FyZUZ1bmN0aW9uKHJvb3QsIGopO1xuICAgICAgICBoYXNDaGFuZ2VzID0gaGFzQ2hhbmdlcyB8fCBtaWRkbGV3YXJlQ2hhbmdlcy5oYXNDaGFuZ2VzO1xuICAgICAgICAvLyBSZW1vdmUgcnVudGltZSBzZWdtZW50IGNvbmZpZ1xuICAgICAgICBjb25zdCBydW50aW1lQ2hhbmdlcyA9IHJlbW92ZVJ1bnRpbWVDb25maWcocm9vdCwgaik7XG4gICAgICAgIGhhc0NoYW5nZXMgPSBoYXNDaGFuZ2VzIHx8IHJ1bnRpbWVDaGFuZ2VzO1xuICAgIH1cbiAgICBpZiAoaXNOZXh0Q29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHsgaGFzQ29uZmlnQ2hhbmdlcyB9ID0gdHJhbnNmb3JtTmV4dENvbmZpZyhyb290LCBqKTtcbiAgICAgICAgaGFzQ2hhbmdlcyA9IGhhc0NoYW5nZXMgfHwgaGFzQ29uZmlnQ2hhbmdlcztcbiAgICB9XG4gICAgaWYgKCFoYXNDaGFuZ2VzKSB7XG4gICAgICAgIHJldHVybiBmaWxlLnNvdXJjZTtcbiAgICB9XG4gICAgY29uc3Qgc291cmNlID0gcm9vdC50b1NvdXJjZSgpO1xuICAgIC8vIE5lZWQgdG8gd3JpdGUgcHJveHkgZmlsZSBhbmQgdW5saW5rIHRoZSBvcmlnaW5hbCBtaWRkbGV3YXJlIGZpbGUuXG4gICAgaWYgKGlzTWlkZGxld2FyZUZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZU1pZGRsZXdhcmVGaWxlUmVuYW1lKGZpbGUsIHNvdXJjZSk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG59XG5mdW5jdGlvbiBjaGVja0Zvck5leHRTZXJ2ZXJUeXBlSW1wb3J0cyhyb290LCBqKSB7XG4gICAgcmV0dXJuIChyb290XG4gICAgICAgIC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24sIHtcbiAgICAgICAgc291cmNlOiB7IHZhbHVlOiAnbmV4dC9zZXJ2ZXInIH0sXG4gICAgfSlcbiAgICAgICAgLmZpbmQoai5JbXBvcnRTcGVjaWZpZXIpXG4gICAgICAgIC5maWx0ZXIoKHBhdGgpID0+IE1JRERMRVdBUkVfVFlQRV9JTVBPUlRfTUFQW3BhdGgubm9kZS5pbXBvcnRlZC5uYW1lXSkubGVuZ3RoID4gMCk7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1NaWRkbGV3YXJlVHlwZUltcG9ydHMocm9vdCwgaikge1xuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgLy8gVHJhbnNmb3JtIHR5cGUgaW1wb3J0cyBmcm9tICduZXh0L3NlcnZlcidcbiAgICByb290XG4gICAgICAgIC5maW5kKGouSW1wb3J0RGVjbGFyYXRpb24sIHtcbiAgICAgICAgc291cmNlOiB7IHZhbHVlOiAnbmV4dC9zZXJ2ZXInIH0sXG4gICAgfSlcbiAgICAgICAgLmZvckVhY2goKGltcG9ydFBhdGgpID0+IHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVycyA9IGltcG9ydFBhdGgubm9kZS5zcGVjaWZpZXJzO1xuICAgICAgICBpZiAoIXNwZWNpZmllcnMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNwZWNpZmllcnMuZm9yRWFjaCgoc3BlY2lmaWVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoai5JbXBvcnRTcGVjaWZpZXIuY2hlY2soc3BlY2lmaWVyKSAmJlxuICAgICAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZCAmJlxuICAgICAgICAgICAgICAgIE1JRERMRVdBUkVfVFlQRV9JTVBPUlRfTUFQW3NwZWNpZmllci5pbXBvcnRlZC5uYW1lXSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZEltcG9ydE5hbWUgPSBzcGVjaWZpZXIuaW1wb3J0ZWQubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdJbXBvcnROYW1lID0gTUlERExFV0FSRV9UWVBFX0lNUE9SVF9NQVBbb2xkSW1wb3J0TmFtZV07XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBsb2NhbCBuYW1lIGlmIGl0IG1hdGNoZXMgdGhlIG9yaWdpbmFsIGltcG9ydGVkIG5hbWVcbiAgICAgICAgICAgICAgICBpZiAoc3BlY2lmaWVyLmxvY2FsICYmIHNwZWNpZmllci5sb2NhbC5uYW1lID09PSBvbGRJbXBvcnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllci5sb2NhbC5uYW1lID0gbmV3SW1wb3J0TmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBpbXBvcnQgbmFtZVxuICAgICAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZC5uYW1lID0gbmV3SW1wb3J0TmFtZTtcbiAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8gQWxzbyB0cmFuc2Zvcm0gYW55IHR5cGUgYW5ub3RhdGlvbnMgdXNpbmcgdGhlIG9sZCB0eXBlc1xuICAgIE9iamVjdC5rZXlzKE1JRERMRVdBUkVfVFlQRV9JTVBPUlRfTUFQKS5mb3JFYWNoKChvbGRUeXBlKSA9PiB7XG4gICAgICAgIHJvb3RcbiAgICAgICAgICAgIC5maW5kKGouVFNUeXBlUmVmZXJlbmNlKVxuICAgICAgICAgICAgLmZpbHRlcigocGF0aCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChwYXRoLm5vZGUudHlwZU5hbWUgJiZcbiAgICAgICAgICAgICAgICBwYXRoLm5vZGUudHlwZU5hbWUudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmXG4gICAgICAgICAgICAgICAgcGF0aC5ub2RlLnR5cGVOYW1lLm5hbWUgPT09IG9sZFR5cGUpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgICAgIHBhdGgubm9kZS50eXBlTmFtZS5uYW1lID0gTUlERExFV0FSRV9UWVBFX0lNUE9SVF9NQVBbb2xkVHlwZV07XG4gICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGhhc0NoYW5nZXM7XG59XG5mdW5jdGlvbiB0cmFuc2Zvcm1OZXh0Q29uZmlnKHJvb3QsIGopIHtcbiAgICBsZXQgaGFzQ29uZmlnQ2hhbmdlcyA9IGZhbHNlO1xuICAgIC8vIENvbGxlY3QgY29uZmlnLXJlbGF0ZWQgb2JqZWN0IGV4cHJlc3Npb25zIGluc3RlYWQgb2YgcHJvY2Vzc2luZyBhbGxcbiAgICBjb25zdCBjb25maWdPYmplY3RzID0gZmluZE5leHRDb25maWdPYmplY3RzKHJvb3QsIGopO1xuICAgIGNvbmZpZ09iamVjdHMuZm9yRWFjaCgob2JqUGF0aCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzQ29uZmlnT2JqZWN0KG9ialBhdGgudmFsdWUpO1xuICAgICAgICBoYXNDb25maWdDaGFuZ2VzID0gaGFzQ29uZmlnQ2hhbmdlcyB8fCByZXN1bHQuaGFzQ2hhbmdlcztcbiAgICB9KTtcbiAgICAvLyBQcm9jZXNzIGZ1bmN0aW9uIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxpa2VseSB0byBiZSBOZXh0LmpzIGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZ0Z1bmN0aW9ucyA9IGZpbmROZXh0Q29uZmlnRnVuY3Rpb25zKHJvb3QsIGopO1xuICAgIGNvbmZpZ0Z1bmN0aW9ucy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3NGdW5jdGlvbkNvbmZpZyhwYXRoLCBqKTtcbiAgICAgICAgaGFzQ29uZmlnQ2hhbmdlcyA9IGhhc0NvbmZpZ0NoYW5nZXMgfHwgcmVzdWx0Lmhhc0NoYW5nZXM7XG4gICAgfSk7XG4gICAgLy8gUHJvY2VzcyBhcnJvdyBmdW5jdGlvbiBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgTmV4dC5qcyBjb25maWdcbiAgICBjb25zdCBjb25maWdBcnJvd0Z1bmN0aW9ucyA9IGZpbmROZXh0Q29uZmlnQXJyb3dGdW5jdGlvbnMocm9vdCwgaik7XG4gICAgY29uZmlnQXJyb3dGdW5jdGlvbnMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzQXJyb3dGdW5jdGlvbkNvbmZpZyhwYXRoLCBqKTtcbiAgICAgICAgaGFzQ29uZmlnQ2hhbmdlcyA9IGhhc0NvbmZpZ0NoYW5nZXMgfHwgcmVzdWx0Lmhhc0NoYW5nZXM7XG4gICAgfSk7XG4gICAgLy8gUHJvY2VzcyBkaXJlY3QgcHJvcGVydHkgYXNzaWdubWVudHM6IGNvbmZpZy5leHBlcmltZW50YWwubWlkZGxld2FyZVByZWZldGNoID0gdmFsdWVcbiAgICBPYmplY3Qua2V5cyhDT05GSUdfUFJPUEVSVFlfTUFQKS5mb3JFYWNoKChvbGRQcm9wKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1Byb3AgPSBDT05GSUdfUFJPUEVSVFlfTUFQW29sZFByb3BdO1xuICAgICAgICAvLyBIYW5kbGUgZXhwZXJpbWVudGFsLiogcHJvcGVydGllc1xuICAgICAgICBpZiAob2xkUHJvcC5zdGFydHNXaXRoKCdtaWRkbGV3YXJlJykgJiZcbiAgICAgICAgICAgIG9sZFByb3AgIT09ICdza2lwTWlkZGxld2FyZVVybE5vcm1hbGl6ZScpIHtcbiAgICAgICAgICAgIHJvb3RcbiAgICAgICAgICAgICAgICAuZmluZChqLkFzc2lnbm1lbnRFeHByZXNzaW9uLCB7XG4gICAgICAgICAgICAgICAgbGVmdDoge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ01lbWJlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHsgbmFtZTogJ2V4cGVyaW1lbnRhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHk6IHsgbmFtZTogb2xkUHJvcCB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGF0aC5ub2RlLmxlZnQucHJvcGVydHkubmFtZSA9IG5ld1Byb3A7XG4gICAgICAgICAgICAgICAgaGFzQ29uZmlnQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSB0b3AtbGV2ZWwgcHJvcGVydGllcyBsaWtlIHNraXBNaWRkbGV3YXJlVXJsTm9ybWFsaXplXG4gICAgICAgICAgICByb290XG4gICAgICAgICAgICAgICAgLmZpbmQoai5Bc3NpZ25tZW50RXhwcmVzc2lvbiwge1xuICAgICAgICAgICAgICAgIGxlZnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ01lbWJlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogeyBuYW1lOiBvbGRQcm9wIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICBwYXRoLm5vZGUubGVmdC5wcm9wZXJ0eS5uYW1lID0gbmV3UHJvcDtcbiAgICAgICAgICAgICAgICBoYXNDb25maWdDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgaGFzQ29uZmlnQ2hhbmdlcyB9O1xufVxuZnVuY3Rpb24gcHJvY2Vzc0NvbmZpZ09iamVjdChjb25maWdPYmopIHtcbiAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuICAgIC8vIENoZWNrIGZvciBleHBlcmltZW50YWwgcHJvcGVydHlcbiAgICBjb25zdCBleHBlcmltZW50YWxQcm9wID0gY29uZmlnT2JqLnByb3BlcnRpZXMuZmluZCgocHJvcCkgPT4gaXNTdGF0aWNQcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICBwcm9wLmtleSAmJlxuICAgICAgICBwcm9wLmtleS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgcHJvcC5rZXkubmFtZSA9PT0gJ2V4cGVyaW1lbnRhbCcpO1xuICAgIGlmIChleHBlcmltZW50YWxQcm9wICYmIGlzU3RhdGljUHJvcGVydHkoZXhwZXJpbWVudGFsUHJvcCkpIHtcbiAgICAgICAgY29uc3QgZXhwZXJpbWVudGFsT2JqID0gZXhwZXJpbWVudGFsUHJvcC52YWx1ZTtcbiAgICAgICAgaWYgKGV4cGVyaW1lbnRhbE9iai50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIC8vIFRyYW5zZm9ybSBwcm9wZXJ0aWVzIGluIGV4cGVyaW1lbnRhbCBvYmplY3RcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbE9iai5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGF0aWNQcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICBwcm9wLmtleSAmJlxuICAgICAgICAgICAgICAgICAgICBwcm9wLmtleS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgICAgICAgICAgICAgQ09ORklHX1BST1BFUlRZX01BUFtwcm9wLmtleS5uYW1lXSAmJlxuICAgICAgICAgICAgICAgICAgICBwcm9wLmtleS5uYW1lICE9PSAnc2tpcE1pZGRsZXdhcmVVcmxOb3JtYWxpemUnIC8vIFRoaXMgaXMgdG9wLWxldmVsXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3Aua2V5Lm5hbWUgPSBDT05GSUdfUFJPUEVSVFlfTUFQW3Byb3Aua2V5Lm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUcmFuc2Zvcm0gdG9wLWxldmVsIHByb3BlcnRpZXNcbiAgICBjb25maWdPYmoucHJvcGVydGllcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgIGlmIChpc1N0YXRpY1Byb3BlcnR5KHByb3ApICYmXG4gICAgICAgICAgICBwcm9wLmtleSAmJlxuICAgICAgICAgICAgcHJvcC5rZXkudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmXG4gICAgICAgICAgICBwcm9wLmtleS5uYW1lID09PSAnc2tpcE1pZGRsZXdhcmVVcmxOb3JtYWxpemUnKSB7XG4gICAgICAgICAgICBwcm9wLmtleS5uYW1lID0gQ09ORklHX1BST1BFUlRZX01BUFtwcm9wLmtleS5uYW1lXTtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gQWxzbyB0cmFuc2Zvcm0gYW55IHRvcC1sZXZlbCBtaWRkbGV3YXJlIHByb3BlcnRpZXMgKGZvciBzcHJlYWQgc2NlbmFyaW9zKVxuICAgIGNvbmZpZ09iai5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgaWYgKGlzU3RhdGljUHJvcGVydHkocHJvcCkgJiZcbiAgICAgICAgICAgIHByb3Aua2V5ICYmXG4gICAgICAgICAgICBwcm9wLmtleS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICAgICAgICAgIENPTkZJR19QUk9QRVJUWV9NQVBbcHJvcC5rZXkubmFtZV0gJiZcbiAgICAgICAgICAgIHByb3Aua2V5Lm5hbWUgIT09ICdza2lwTWlkZGxld2FyZVVybE5vcm1hbGl6ZScgLy8gQWxyZWFkeSBoYW5kbGVkIGFib3ZlXG4gICAgICAgICkge1xuICAgICAgICAgICAgcHJvcC5rZXkubmFtZSA9IENPTkZJR19QUk9QRVJUWV9NQVBbcHJvcC5rZXkubmFtZV07XG4gICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IGhhc0NoYW5nZXMgfTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NGdW5jdGlvbkNvbmZpZyhwYXRoLCBqKSB7XG4gICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcbiAgICAvLyBMb29rIGZvciByZXR1cm4gc3RhdGVtZW50cyB3aXRoIG9iamVjdCBleHByZXNzaW9uc1xuICAgIGoocGF0aClcbiAgICAgICAgLmZpbmQoai5SZXR1cm5TdGF0ZW1lbnQpXG4gICAgICAgIC5mb3JFYWNoKChyZXR1cm5QYXRoKSA9PiB7XG4gICAgICAgIGlmIChyZXR1cm5QYXRoLm5vZGUuYXJndW1lbnQgJiZcbiAgICAgICAgICAgIHJldHVyblBhdGgubm9kZS5hcmd1bWVudC50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3NDb25maWdPYmplY3QocmV0dXJuUGF0aC5ub2RlLmFyZ3VtZW50KTtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSBoYXNDaGFuZ2VzIHx8IHJlc3VsdC5oYXNDaGFuZ2VzO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgaGFzQ2hhbmdlcyB9O1xufVxuZnVuY3Rpb24gcHJvY2Vzc0Fycm93RnVuY3Rpb25Db25maWcocGF0aCwgaikge1xuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgY29uc3QgYm9keSA9IHBhdGgubm9kZS5ib2R5O1xuICAgIC8vIEhhbmRsZTogKCkgPT4gKHsgLi4uIH0pXG4gICAgaWYgKGJvZHkgJiYgYm9keS50eXBlID09PSAnT2JqZWN0RXhwcmVzc2lvbicpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc0NvbmZpZ09iamVjdChib2R5KTtcbiAgICAgICAgaGFzQ2hhbmdlcyA9IGhhc0NoYW5nZXMgfHwgcmVzdWx0Lmhhc0NoYW5nZXM7XG4gICAgfVxuICAgIC8vIEhhbmRsZTogKCkgPT4geyByZXR1cm4geyAuLi4gfSB9XG4gICAgaWYgKGJvZHkgJiYgYm9keS50eXBlID09PSAnQmxvY2tTdGF0ZW1lbnQnKSB7XG4gICAgICAgIGoocGF0aClcbiAgICAgICAgICAgIC5maW5kKGouUmV0dXJuU3RhdGVtZW50KVxuICAgICAgICAgICAgLmZvckVhY2goKHJldHVyblBhdGgpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXR1cm5QYXRoLm5vZGUuYXJndW1lbnQgJiZcbiAgICAgICAgICAgICAgICByZXR1cm5QYXRoLm5vZGUuYXJndW1lbnQudHlwZSA9PT0gJ09iamVjdEV4cHJlc3Npb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc0NvbmZpZ09iamVjdChyZXR1cm5QYXRoLm5vZGUuYXJndW1lbnQpO1xuICAgICAgICAgICAgICAgIGhhc0NoYW5nZXMgPSBoYXNDaGFuZ2VzIHx8IHJlc3VsdC5oYXNDaGFuZ2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaGFzQ2hhbmdlcyB9O1xufVxuZnVuY3Rpb24gdHJhbnNmb3JtTWlkZGxld2FyZUZ1bmN0aW9uKHJvb3QsIGopIHtcbiAgICBjb25zdCBwcm94eUlkZW50aWZpZXIgPSBnZW5lcmF0ZVVuaXF1ZUlkZW50aWZpZXIocm9vdCwgaiwgJ3Byb3h5Jyk7XG4gICAgY29uc3QgbmVlZHNBbGlhcyA9IHByb3h5SWRlbnRpZmllciAhPT0gJ3Byb3h5JztcbiAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuICAgIC8vIFRyYWNrIGlmIHdlIGV4cG9ydGVkIHNvbWV0aGluZyBhcyAncHJveHknXG4gICAgbGV0IGV4cG9ydGVkQXNQcm94eSA9IGZhbHNlO1xuICAgIC8vIEhhbmRsZSBuYW1lZCBleHBvcnQgZGVjbGFyYXRpb25zXG4gICAgcm9vdC5maW5kKGouRXhwb3J0TmFtZWREZWNsYXJhdGlvbikuZm9yRWFjaCgobm9kZVBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBub2RlUGF0aC5ub2RlLmRlY2xhcmF0aW9uO1xuICAgICAgICAvLyBIYW5kbGU6IGV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlKCkge30gb3IgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1pZGRsZXdhcmUoKSB7fVxuICAgICAgICBpZiAoai5GdW5jdGlvbkRlY2xhcmF0aW9uLmNoZWNrKGRlY2xhcmF0aW9uKSAmJlxuICAgICAgICAgICAgZGVjbGFyYXRpb24uaWQ/Lm5hbWUgPT09ICdtaWRkbGV3YXJlJykge1xuICAgICAgICAgICAgZGVjbGFyYXRpb24uaWQubmFtZSA9IHByb3h5SWRlbnRpZmllcjtcbiAgICAgICAgICAgIGV4cG9ydGVkQXNQcm94eSA9IHRydWU7IC8vIEV4cG9ydGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBiZWNvbWUgcHJveHlcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEhhbmRsZTogZXhwb3J0IHsgbWlkZGxld2FyZSB9XG4gICAgICAgIGlmIChub2RlUGF0aC5ub2RlLnNwZWNpZmllcnMpIHtcbiAgICAgICAgICAgIG5vZGVQYXRoLm5vZGUuc3BlY2lmaWVycy5mb3JFYWNoKChzcGVjaWZpZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoai5FeHBvcnRTcGVjaWZpZXIuY2hlY2soc3BlY2lmaWVyKSAmJlxuICAgICAgICAgICAgICAgICAgICBqLklkZW50aWZpZXIuY2hlY2soc3BlY2lmaWVyLmxvY2FsKSAmJlxuICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXIubG9jYWwubmFtZSA9PT0gJ21pZGRsZXdhcmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgZXhwb3J0aW5nIG1pZGRsZXdhcmUgYXMgJ21pZGRsZXdhcmUnICh3aGljaCBzaG91bGQgYmVjb21lICdwcm94eScpXG4gICAgICAgICAgICAgICAgICAgIGlmIChqLklkZW50aWZpZXIuY2hlY2soc3BlY2lmaWVyLmV4cG9ydGVkKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVyLmV4cG9ydGVkLm5hbWUgPT09ICdtaWRkbGV3YXJlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lZWRzQWxpYXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgZXhwb3J0IGFsaWFzOiBleHBvcnQgeyBfcHJveHkxIGFzIHByb3h5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTcGVjaWZpZXIgPSBqLmV4cG9ydFNwZWNpZmllci5mcm9tKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWw6IGouaWRlbnRpZmllcihwcm94eUlkZW50aWZpZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRlZDogai5pZGVudGlmaWVyKCdwcm94eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgaW4gdGhlIHNwZWNpZmllcnMgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGVjaWZpZXJJbmRleCA9IG5vZGVQYXRoLm5vZGUuc3BlY2lmaWVycy5pbmRleE9mKHNwZWNpZmllcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVBhdGgubm9kZS5zcGVjaWZpZXJzW3NwZWNpZmllckluZGV4XSA9IG5ld1NwZWNpZmllcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbXBsZSByZW5hbWU6IGV4cG9ydCB7IHByb3h5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXIuZXhwb3J0ZWQgPSBqLmlkZW50aWZpZXIoJ3Byb3h5Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVyLmxvY2FsID0gai5pZGVudGlmaWVyKCdwcm94eScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRBc1Byb3h5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBleHBvcnRpbmcgbWlkZGxld2FyZSBhcyBzb21ldGhpbmcgZWxzZSAoZS5nLiwgZXhwb3J0IHsgbWlkZGxld2FyZSBhcyByYW5kb21OYW1lIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHVwZGF0ZSB0aGUgbG9jYWwgcmVmZXJlbmNlIHRvIHRoZSBuZXcgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVyLmxvY2FsID0gai5pZGVudGlmaWVyKHByb3h5SWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gSGFuZGxlIGRlZmF1bHQgZXhwb3J0IGRlY2xhcmF0aW9uc1xuICAgIHJvb3QuZmluZChqLkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbikuZm9yRWFjaCgobm9kZVBhdGgpID0+IHtcbiAgICAgICAgY29uc3QgZGVjbGFyYXRpb24gPSBub2RlUGF0aC5ub2RlLmRlY2xhcmF0aW9uO1xuICAgICAgICAvLyBIYW5kbGU6IGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pZGRsZXdhcmUoKSB7fSBvciBleHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBtaWRkbGV3YXJlKCkge31cbiAgICAgICAgaWYgKGouRnVuY3Rpb25EZWNsYXJhdGlvbi5jaGVjayhkZWNsYXJhdGlvbikgJiZcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uLmlkPy5uYW1lID09PSAnbWlkZGxld2FyZScpIHtcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uLmlkLm5hbWUgPSBwcm94eUlkZW50aWZpZXI7XG4gICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEhhbmRsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdGhhdCBhcmUgbGF0ZXIgZXhwb3J0ZWRcbiAgICByb290XG4gICAgICAgIC5maW5kKGouRnVuY3Rpb25EZWNsYXJhdGlvbiwge1xuICAgICAgICBpZDogeyBuYW1lOiAnbWlkZGxld2FyZScgfSxcbiAgICB9KVxuICAgICAgICAuZm9yRWFjaCgobm9kZVBhdGgpID0+IHtcbiAgICAgICAgaWYgKG5vZGVQYXRoLm5vZGUuaWQpIHtcbiAgICAgICAgICAgIG5vZGVQYXRoLm5vZGUuaWQubmFtZSA9IHByb3h5SWRlbnRpZmllcjtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gSGFuZGxlIHZhcmlhYmxlIGRlY2xhcmF0aW9uczogY29uc3QgbWlkZGxld2FyZSA9IC4uLlxuICAgIHJvb3RcbiAgICAgICAgLmZpbmQoai5WYXJpYWJsZURlY2xhcmF0b3IsIHtcbiAgICAgICAgaWQ6IHsgbmFtZTogJ21pZGRsZXdhcmUnIH0sXG4gICAgfSlcbiAgICAgICAgLmZvckVhY2goKG5vZGVQYXRoKSA9PiB7XG4gICAgICAgIGlmIChqLklkZW50aWZpZXIuY2hlY2sobm9kZVBhdGgubm9kZS5pZCkpIHtcbiAgICAgICAgICAgIG5vZGVQYXRoLm5vZGUuaWQubmFtZSA9IHByb3h5SWRlbnRpZmllcjtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gVXBkYXRlIGFsbCByZWZlcmVuY2VzIHRvIG1pZGRsZXdhcmUgaW4gdGhlIHNjb3BlXG4gICAgaWYgKGhhc0NoYW5nZXMgJiYgbmVlZHNBbGlhcykge1xuICAgICAgICByb290XG4gICAgICAgICAgICAuZmluZChqLklkZW50aWZpZXIsIHsgbmFtZTogJ21pZGRsZXdhcmUnIH0pXG4gICAgICAgICAgICAuZmlsdGVyKChhc3RQYXRoKSA9PiB7XG4gICAgICAgICAgICAvLyBEb24ndCByZW5hbWUgaWYgaXQncyBwYXJ0IG9mIGFuIGV4cG9ydCBzcGVjaWZpZXIgd2UgYWxyZWFkeSBoYW5kbGVkXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBhc3RQYXRoLnBhcmVudDtcbiAgICAgICAgICAgIGlmIChqLkV4cG9ydFNwZWNpZmllci5jaGVjayhwYXJlbnQubm9kZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEb24ndCByZW5hbWUgaWYgaXQncyBhIGZ1bmN0aW9uL3ZhcmlhYmxlIGRlY2xhcmF0aW9uIHdlIGFscmVhZHkgaGFuZGxlZFxuICAgICAgICAgICAgaWYgKChqLkZ1bmN0aW9uRGVjbGFyYXRpb24uY2hlY2socGFyZW50Lm5vZGUpICYmXG4gICAgICAgICAgICAgICAgcGFyZW50Lm5vZGUuaWQgPT09IGFzdFBhdGgubm9kZSkgfHxcbiAgICAgICAgICAgICAgICAoai5WYXJpYWJsZURlY2xhcmF0b3IuY2hlY2socGFyZW50Lm5vZGUpICYmXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5ub2RlLmlkID09PSBhc3RQYXRoLm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuZm9yRWFjaCgoYXN0UGF0aCkgPT4ge1xuICAgICAgICAgICAgYXN0UGF0aC5ub2RlLm5hbWUgPSBwcm94eUlkZW50aWZpZXI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBJZiB3ZSB1c2VkIGEgdW5pcXVlIGlkZW50aWZpZXIgQU5EIHdlIGV4cG9ydGVkIGBhcyBwcm94eWAsIGFkZCBhbiBleHBvcnQgYWxpYXNcbiAgICAvLyBUaGlzIGhhbmRsZXMgY2FzZXMgd2hlcmUgdGhlIGV4cG9ydCB3YXMgcGFydCBvZiB0aGUgZGVjbGFyYXRpb24gaXRzZWxmOlxuICAgIC8vICAgZXhwb3J0IGZ1bmN0aW9uIG1pZGRsZXdhcmUoKSB7fSAtPiBleHBvcnQgZnVuY3Rpb24gX3Byb3h5MSgpIHt9IChuZWVkcyBhbGlhcylcbiAgICAvLyB2cyBjYXNlcyB3aGVyZSBleHBvcnQgd2FzIHNlcGFyYXRlOlxuICAgIC8vICAgZXhwb3J0IHsgbWlkZGxld2FyZSB9IC0+IGV4cG9ydCB7IF9wcm94eTEgYXMgcHJveHkgfSAoYWxyZWFkeSBoYW5kbGVkKVxuICAgIGlmIChuZWVkc0FsaWFzICYmIGhhc0NoYW5nZXMgJiYgZXhwb3J0ZWRBc1Byb3h5KSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgY3JlYXRlZCBhIHByb3h5IGV4cG9ydCAoZnJvbSBleHBvcnQgc3BlY2lmaWVycyBsaWtlIGBleHBvcnQgeyBtaWRkbGV3YXJlIH1gKVxuICAgICAgICBjb25zdCBoYXNFeHBvcnRTcGVjaWZpZXIgPSByb290LmZpbmQoai5FeHBvcnROYW1lZERlY2xhcmF0aW9uKS5maWx0ZXIoKGFzdFBhdGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoYXN0UGF0aC5ub2RlLnNwZWNpZmllcnMgJiZcbiAgICAgICAgICAgICAgICBhc3RQYXRoLm5vZGUuc3BlY2lmaWVycy5zb21lKChzcGVjKSA9PiBqLkV4cG9ydFNwZWNpZmllci5jaGVjayhzcGVjKSAmJlxuICAgICAgICAgICAgICAgICAgICBqLklkZW50aWZpZXIuY2hlY2soc3BlYy5leHBvcnRlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgc3BlYy5leHBvcnRlZC5uYW1lID09PSAncHJveHknKSk7XG4gICAgICAgIH0pLmxlbmd0aCA+IDA7XG4gICAgICAgIC8vIElmIG5vIHByb3h5IGV4cG9ydCBleGlzdHMgeWV0LCBjcmVhdGUgb25lIHRvIG1haW50YWluIHRoZSAncHJveHknIEFQSVxuICAgICAgICAvLyBFeGFtcGxlOiBleHBvcnQgZnVuY3Rpb24gX3Byb3h5MSgpIHt9ICsgZXhwb3J0IHsgX3Byb3h5MSBhcyBwcm94eSB9XG4gICAgICAgIGlmICghaGFzRXhwb3J0U3BlY2lmaWVyKSB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRTcGVjaWZpZXIgPSBqLmV4cG9ydFNwZWNpZmllci5mcm9tKHtcbiAgICAgICAgICAgICAgICBsb2NhbDogai5pZGVudGlmaWVyKHByb3h5SWRlbnRpZmllciksXG4gICAgICAgICAgICAgICAgZXhwb3J0ZWQ6IGouaWRlbnRpZmllcigncHJveHknKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZXhwb3J0RGVjbGFyYXRpb24gPSBqLmV4cG9ydE5hbWVkRGVjbGFyYXRpb24obnVsbCwgW1xuICAgICAgICAgICAgICAgIGV4cG9ydFNwZWNpZmllcixcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgLy8gQWRkIHRoZSBleHBvcnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZVxuICAgICAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHJvb3QuZmluZChqLlByb2dyYW0pO1xuICAgICAgICAgICAgaWYgKHByb2dyYW0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHByb2dyYW0uZ2V0KCdib2R5JykudmFsdWUucHVzaChleHBvcnREZWNsYXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaGFzQ2hhbmdlcyB9O1xufVxuZnVuY3Rpb24gaGFuZGxlTWlkZGxld2FyZUZpbGVSZW5hbWUoZmlsZSwgc291cmNlKSB7XG4gICAgLy8gV2Ugd2lsbCBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBmaWxlIGluIHJlYWwgd29ybGQsXG4gICAgLy8gc28gcmV0dXJuIHRoZSBzb3VyY2UgaGVyZSBmb3IgdGVzdGluZy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIH1cbiAgICBjb25zdCB7IGRpciwgZXh0IH0gPSAoMCwgcGF0aF8xLnBhcnNlKShmaWxlLnBhdGgpO1xuICAgIGNvbnN0IG5ld0ZpbGVQYXRoID0gKDAsIHBhdGhfMS5qb2luKShkaXIsICdwcm94eScgKyBleHQpO1xuICAgIHRyeSB7XG4gICAgICAgIGZzXzEuZGVmYXVsdC53cml0ZUZpbGVTeW5jKG5ld0ZpbGVQYXRoLCBzb3VyY2UpO1xuICAgICAgICBmc18xLmRlZmF1bHQudW5saW5rU3luYyhmaWxlLnBhdGgpO1xuICAgICAgICAvLyBSZXR1cm4gZW1wdHkgc3RyaW5nIHRvIGluZGljYXRlIHN1Y2Nlc3NmdWwgZmlsZSByZXBsYWNlbWVudC5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjYXRjaCAoY2F1c2UpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHdyaXRlIFwiJHtuZXdGaWxlUGF0aH1cIiBhbmQgZGVsZXRlIFwiJHtmaWxlLnBhdGh9XCIuXFxuJHtKU09OLnN0cmluZ2lmeSh7IGNhdXNlIH0pfWApO1xuICAgICAgICByZXR1cm4gZmlsZS5zb3VyY2U7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNTdGF0aWNQcm9wZXJ0eShwcm9wKSB7XG4gICAgcmV0dXJuIHByb3AudHlwZSA9PT0gJ1Byb3BlcnR5JyB8fCBwcm9wLnR5cGUgPT09ICdPYmplY3RQcm9wZXJ0eSc7XG59XG5mdW5jdGlvbiBnZW5lcmF0ZVVuaXF1ZUlkZW50aWZpZXIocm9vdCwgaiwgYmFzZU5hbWUpIHtcbiAgICAvLyBGaXJzdCBjaGVjayBpZiBiYXNlTmFtZSBpdHNlbGYgaXMgYXZhaWxhYmxlXG4gICAgaWYgKCFoYXNJZGVudGlmaWVySW5TY29wZShyb290LCBqLCBiYXNlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOYW1lO1xuICAgIH1cbiAgICAvLyBHZW5lcmF0ZSBfcHJveHkxLCBfcHJveHkyLCBldGMuXG4gICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGBfJHtiYXNlTmFtZX0ke2NvdW50ZXJ9YDtcbiAgICAgICAgaWYgKCFoYXNJZGVudGlmaWVySW5TY29wZShyb290LCBqLCBjYW5kaWRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICB9XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICB9XG59XG5mdW5jdGlvbiBoYXNJZGVudGlmaWVySW5TY29wZShyb290LCBqLCBuYW1lKSB7XG4gICAgLy8gQ2hlY2sgZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9uc1xuICAgIGNvbnN0IGhhc1ZhcmlhYmxlRGVjbGFyYXRpb24gPSByb290XG4gICAgICAgIC5maW5kKGouVmFyaWFibGVEZWNsYXJhdG9yKVxuICAgICAgICAuZmlsdGVyKChhc3RQYXRoKSA9PiBqLklkZW50aWZpZXIuY2hlY2soYXN0UGF0aC52YWx1ZS5pZCkgJiYgYXN0UGF0aC52YWx1ZS5pZC5uYW1lID09PSBuYW1lKS5sZW5ndGggPiAwO1xuICAgIC8vIENoZWNrIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnNcbiAgICBjb25zdCBoYXNGdW5jdGlvbkRlY2xhcmF0aW9uID0gcm9vdFxuICAgICAgICAuZmluZChqLkZ1bmN0aW9uRGVjbGFyYXRpb24pXG4gICAgICAgIC5maWx0ZXIoKGFzdFBhdGgpID0+IGFzdFBhdGgudmFsdWUuaWQgJiYgYXN0UGF0aC52YWx1ZS5pZC5uYW1lID09PSBuYW1lKS5sZW5ndGggPiAwO1xuICAgIC8vIENoZWNrIGZvciBpbXBvcnQgc3BlY2lmaWVyc1xuICAgIGNvbnN0IGhhc0ltcG9ydFNwZWNpZmllciA9IHJvb3RcbiAgICAgICAgLmZpbmQoai5JbXBvcnRTcGVjaWZpZXIpXG4gICAgICAgIC5maWx0ZXIoKGFzdFBhdGgpID0+IGouSWRlbnRpZmllci5jaGVjayhhc3RQYXRoLnZhbHVlLmxvY2FsKSAmJlxuICAgICAgICBhc3RQYXRoLnZhbHVlLmxvY2FsLm5hbWUgPT09IG5hbWUpLmxlbmd0aCA+IDA7XG4gICAgcmV0dXJuIGhhc1ZhcmlhYmxlRGVjbGFyYXRpb24gfHwgaGFzRnVuY3Rpb25EZWNsYXJhdGlvbiB8fCBoYXNJbXBvcnRTcGVjaWZpZXI7XG59XG5mdW5jdGlvbiBmaW5kTmV4dENvbmZpZ09iamVjdHMocm9vdCwgaikge1xuICAgIGNvbnN0IGNvbmZpZ09iamVjdHMgPSBbXTtcbiAgICAvLyBGaW5kIGlkZW50aWZpZXJzIHRoYXQgYXJlIGV4cG9ydGVkIGFzIGRlZmF1bHQgb3IgYXNzaWduZWQgdG8gbW9kdWxlLmV4cG9ydHNcbiAgICBjb25zdCBleHBvcnRlZE5hbWVzID0gbmV3IFNldCgpO1xuICAgIC8vIEhhbmRsZTogZXhwb3J0IGRlZmF1bHQgbmV4dENvbmZpZyBvciBleHBvcnQgZGVmYXVsdCB3cmFwcGVkRnVuY3Rpb24obmV4dENvbmZpZylcbiAgICByb290LmZpbmQoai5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24pLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKGouSWRlbnRpZmllci5jaGVjayhwYXRoLm5vZGUuZGVjbGFyYXRpb24pKSB7XG4gICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChwYXRoLm5vZGUuZGVjbGFyYXRpb24ubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoai5PYmplY3RFeHByZXNzaW9uLmNoZWNrKHBhdGgubm9kZS5kZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICAgIC8vIERpcmVjdCBvYmplY3QgZXhwb3J0OiBleHBvcnQgZGVmYXVsdCB7IC4uLiB9XG4gICAgICAgICAgICBjb25maWdPYmplY3RzLnB1c2gocGF0aC5nZXQoJ2RlY2xhcmF0aW9uJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGouQ2FsbEV4cHJlc3Npb24uY2hlY2socGF0aC5ub2RlLmRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIHdyYXBwZWQgZXhwb3J0czogZXhwb3J0IGRlZmF1bHQgd3JhcHBlcihjb25maWcpXG4gICAgICAgICAgICBleHRyYWN0T2JqZWN0c0Zyb21DYWxsRXhwcmVzc2lvbihwYXRoLm5vZGUuZGVjbGFyYXRpb24sIGNvbmZpZ09iamVjdHMsIGV4cG9ydGVkTmFtZXMsIGopO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gSGFuZGxlOiBtb2R1bGUuZXhwb3J0cyA9IG5leHRDb25maWcgb3IgbW9kdWxlLmV4cG9ydHMgPSB3cmFwcGVkRnVuY3Rpb24obmV4dENvbmZpZylcbiAgICByb290XG4gICAgICAgIC5maW5kKGouQXNzaWdubWVudEV4cHJlc3Npb24sIHtcbiAgICAgICAgbGVmdDoge1xuICAgICAgICAgICAgdHlwZTogJ01lbWJlckV4cHJlc3Npb24nLFxuICAgICAgICAgICAgb2JqZWN0OiB7IG5hbWU6ICdtb2R1bGUnIH0sXG4gICAgICAgICAgICBwcm9wZXJ0eTogeyBuYW1lOiAnZXhwb3J0cycgfSxcbiAgICAgICAgfSxcbiAgICB9KVxuICAgICAgICAuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICBpZiAoai5JZGVudGlmaWVyLmNoZWNrKHBhdGgubm9kZS5yaWdodCkpIHtcbiAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKHBhdGgubm9kZS5yaWdodC5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChqLk9iamVjdEV4cHJlc3Npb24uY2hlY2socGF0aC5ub2RlLnJpZ2h0KSkge1xuICAgICAgICAgICAgLy8gRGlyZWN0IG9iamVjdCBhc3NpZ25tZW50OiBtb2R1bGUuZXhwb3J0cyA9IHsgLi4uIH1cbiAgICAgICAgICAgIGNvbmZpZ09iamVjdHMucHVzaChwYXRoLmdldCgncmlnaHQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoai5DYWxsRXhwcmVzc2lvbi5jaGVjayhwYXRoLm5vZGUucmlnaHQpKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgd3JhcHBlZCBhc3NpZ25tZW50czogbW9kdWxlLmV4cG9ydHMgPSB3cmFwcGVyKGNvbmZpZylcbiAgICAgICAgICAgIGV4dHJhY3RPYmplY3RzRnJvbUNhbGxFeHByZXNzaW9uKHBhdGgubm9kZS5yaWdodCwgY29uZmlnT2JqZWN0cywgZXhwb3J0ZWROYW1lcywgaik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBGaW5kIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBmb3IgZXhwb3J0ZWQgbmFtZXNcbiAgICBleHBvcnRlZE5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgcm9vdFxuICAgICAgICAgICAgLmZpbmQoai5WYXJpYWJsZURlY2xhcmF0b3IsIHsgaWQ6IHsgbmFtZSB9IH0pXG4gICAgICAgICAgICAuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKGouT2JqZWN0RXhwcmVzc2lvbi5jaGVjayhwYXRoLm5vZGUuaW5pdCkpIHtcbiAgICAgICAgICAgICAgICBjb25maWdPYmplY3RzLnB1c2gocGF0aC5nZXQoJ2luaXQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWdPYmplY3RzO1xufVxuZnVuY3Rpb24gZmluZE5leHRDb25maWdGdW5jdGlvbnMocm9vdCwgaikge1xuICAgIGNvbnN0IGNvbmZpZ0Z1bmN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGV4cG9ydGVkTmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgLy8gSGFuZGxlOiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvciBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbk5hbWVcbiAgICByb290LmZpbmQoai5FeHBvcnREZWZhdWx0RGVjbGFyYXRpb24pLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKGouRnVuY3Rpb25EZWNsYXJhdGlvbi5jaGVjayhwYXRoLm5vZGUuZGVjbGFyYXRpb24pKSB7XG4gICAgICAgICAgICAvLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb25maWdGdW5jdGlvbigpIHsgLi4uIH1cbiAgICAgICAgICAgIGNvbmZpZ0Z1bmN0aW9ucy5wdXNoKHBhdGguZ2V0KCdkZWNsYXJhdGlvbicpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChqLklkZW50aWZpZXIuY2hlY2socGF0aC5ub2RlLmRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgZXhwb3J0ZWROYW1lcy5hZGQocGF0aC5ub2RlLmRlY2xhcmF0aW9uLm5hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gSGFuZGxlOiBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uXG4gICAgcm9vdFxuICAgICAgICAuZmluZChqLkFzc2lnbm1lbnRFeHByZXNzaW9uLCB7XG4gICAgICAgIGxlZnQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAgICAgICAgIG9iamVjdDogeyBuYW1lOiAnbW9kdWxlJyB9LFxuICAgICAgICAgICAgcHJvcGVydHk6IHsgbmFtZTogJ2V4cG9ydHMnIH0sXG4gICAgICAgIH0sXG4gICAgfSlcbiAgICAgICAgLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKGouRnVuY3Rpb25FeHByZXNzaW9uLmNoZWNrKHBhdGgubm9kZS5yaWdodCkpIHtcbiAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7IC4uLiB9XG4gICAgICAgICAgICBjb25maWdGdW5jdGlvbnMucHVzaChwYXRoLmdldCgncmlnaHQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoai5JZGVudGlmaWVyLmNoZWNrKHBhdGgubm9kZS5yaWdodCkpIHtcbiAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKHBhdGgubm9kZS5yaWdodC5uYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEZpbmQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZvciBleHBvcnRlZCBuYW1lc1xuICAgIGV4cG9ydGVkTmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICByb290XG4gICAgICAgICAgICAuZmluZChqLkZ1bmN0aW9uRGVjbGFyYXRpb24sIHsgaWQ6IHsgbmFtZSB9IH0pXG4gICAgICAgICAgICAuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgY29uZmlnRnVuY3Rpb25zLnB1c2gocGF0aCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWdGdW5jdGlvbnM7XG59XG5mdW5jdGlvbiBmaW5kTmV4dENvbmZpZ0Fycm93RnVuY3Rpb25zKHJvb3QsIGopIHtcbiAgICBjb25zdCBjb25maWdBcnJvd0Z1bmN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGV4cG9ydGVkTmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgLy8gSGFuZGxlOiBleHBvcnQgZGVmYXVsdCBhcnJvd0Z1bmN0aW9uXG4gICAgcm9vdC5maW5kKGouRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKS5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChqLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLmNoZWNrKHBhdGgubm9kZS5kZWNsYXJhdGlvbikpIHtcbiAgICAgICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0ICgpID0+IHsgLi4uIH1cbiAgICAgICAgICAgIGNvbmZpZ0Fycm93RnVuY3Rpb25zLnB1c2gocGF0aC5nZXQoJ2RlY2xhcmF0aW9uJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGouSWRlbnRpZmllci5jaGVjayhwYXRoLm5vZGUuZGVjbGFyYXRpb24pKSB7XG4gICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChwYXRoLm5vZGUuZGVjbGFyYXRpb24ubmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBIYW5kbGU6IG1vZHVsZS5leHBvcnRzID0gYXJyb3dGdW5jdGlvblxuICAgIHJvb3RcbiAgICAgICAgLmZpbmQoai5Bc3NpZ25tZW50RXhwcmVzc2lvbiwge1xuICAgICAgICBsZWZ0OiB7XG4gICAgICAgICAgICB0eXBlOiAnTWVtYmVyRXhwcmVzc2lvbicsXG4gICAgICAgICAgICBvYmplY3Q6IHsgbmFtZTogJ21vZHVsZScgfSxcbiAgICAgICAgICAgIHByb3BlcnR5OiB7IG5hbWU6ICdleHBvcnRzJyB9LFxuICAgICAgICB9LFxuICAgIH0pXG4gICAgICAgIC5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGlmIChqLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLmNoZWNrKHBhdGgubm9kZS5yaWdodCkpIHtcbiAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzID0gKCkgPT4geyAuLi4gfVxuICAgICAgICAgICAgY29uZmlnQXJyb3dGdW5jdGlvbnMucHVzaChwYXRoLmdldCgncmlnaHQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoai5JZGVudGlmaWVyLmNoZWNrKHBhdGgubm9kZS5yaWdodCkpIHtcbiAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKHBhdGgubm9kZS5yaWdodC5uYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8vIEZpbmQgdmFyaWFibGUgZGVjbGFyYXRpb25zIHdpdGggYXJyb3cgZnVuY3Rpb25zIGZvciBleHBvcnRlZCBuYW1lc1xuICAgIGV4cG9ydGVkTmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICByb290XG4gICAgICAgICAgICAuZmluZChqLlZhcmlhYmxlRGVjbGFyYXRvciwgeyBpZDogeyBuYW1lIH0gfSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoai5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbi5jaGVjayhwYXRoLm5vZGUuaW5pdCkpIHtcbiAgICAgICAgICAgICAgICBjb25maWdBcnJvd0Z1bmN0aW9ucy5wdXNoKHBhdGguZ2V0KCdpbml0JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlnQXJyb3dGdW5jdGlvbnM7XG59XG5mdW5jdGlvbiBleHRyYWN0T2JqZWN0c0Zyb21DYWxsRXhwcmVzc2lvbihjYWxsRXhwciwgY29uZmlnT2JqZWN0cywgZXhwb3J0ZWROYW1lcywgaikge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGV4dHJhY3QgYXJndW1lbnRzIGZyb20gY2FsbCBleHByZXNzaW9uc1xuICAgIC8vIEUuZy4sIHdyYXBwZXIoYW5vdGhlcldyYXBwZXIoY29uZmlnKSkgb3Igd3JhcHBlcihjb25maWcpXG4gICAgaWYgKGNhbGxFeHByLmFyZ3VtZW50cykge1xuICAgICAgICBjYWxsRXhwci5hcmd1bWVudHMuZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAgICAgICBpZiAoai5JZGVudGlmaWVyLmNoZWNrKGFyZykpIHtcbiAgICAgICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChhcmcubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChqLk9iamVjdEV4cHJlc3Npb24uY2hlY2soYXJnKSkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgd291bGQgYmUgdW51c3VhbCBidXQgaGFuZGxlIGRpcmVjdCBvYmplY3QgYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0aGUgcGF0aCBoZXJlLCBzbyB3ZSdsbCBza2lwIHRoaXMgY2FzZVxuICAgICAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRpcmVjdCBleHBvcnQgY2FzZSBhbnl3YXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGouQ2FsbEV4cHJlc3Npb24uY2hlY2soYXJnKSkge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RPYmplY3RzRnJvbUNhbGxFeHByZXNzaW9uKGFyZywgY29uZmlnT2JqZWN0cywgZXhwb3J0ZWROYW1lcywgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlbW92ZVJ1bnRpbWVDb25maWcocm9vdCwgaikge1xuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgLy8gUmVtb3ZlIGV4cG9ydCBjb25zdCBydW50aW1lID0gJ3N0cmluZydcbiAgICBjb25zdCBkaXJlY3RSdW50aW1lRXhwb3J0cyA9IHJvb3QuZmluZChqLkV4cG9ydE5hbWVkRGVjbGFyYXRpb24sIHtcbiAgICAgICAgZGVjbGFyYXRpb246IHtcbiAgICAgICAgICAgIHR5cGU6ICdWYXJpYWJsZURlY2xhcmF0aW9uJyxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHsgbmFtZTogJ3J1bnRpbWUnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgaWYgKGRpcmVjdFJ1bnRpbWVFeHBvcnRzLnNpemUoKSA+IDApIHtcbiAgICAgICAgZGlyZWN0UnVudGltZUV4cG9ydHMucmVtb3ZlKCk7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgIH1cbiAgICAvLyBSZW1vdmUgY29uc3QgcnVudGltZSA9ICdzdHJpbmcnIGRlY2xhcmF0aW9uc1xuICAgIGNvbnN0IHJ1bnRpbWVWYXJpYWJsZURlY2xhcmF0aW9ucyA9IHJvb3RcbiAgICAgICAgLmZpbmQoai5WYXJpYWJsZURlY2xhcmF0aW9uKVxuICAgICAgICAuZmlsdGVyKChwYXRoKSA9PiBwYXRoLm5vZGUuZGVjbGFyYXRpb25zLnNvbWUoKGRlY2wpID0+IHtcbiAgICAgICAgaWYgKGouVmFyaWFibGVEZWNsYXJhdG9yLmNoZWNrKGRlY2wpICYmIGouSWRlbnRpZmllci5jaGVjayhkZWNsLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlY2wuaWQubmFtZSA9PT0gJ3J1bnRpbWUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSk7XG4gICAgaWYgKHJ1bnRpbWVWYXJpYWJsZURlY2xhcmF0aW9ucy5zaXplKCkgPiAwKSB7XG4gICAgICAgIHJ1bnRpbWVWYXJpYWJsZURlY2xhcmF0aW9ucy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERlY2xhcmF0aW9ucyA9IHBhdGgubm9kZS5kZWNsYXJhdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZERlY2xhcmF0aW9ucyA9IG9yaWdpbmFsRGVjbGFyYXRpb25zLmZpbHRlcigoZGVjbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChqLlZhcmlhYmxlRGVjbGFyYXRvci5jaGVjayhkZWNsKSAmJiBqLklkZW50aWZpZXIuY2hlY2soZGVjbC5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlY2wuaWQubmFtZSAhPT0gJ3J1bnRpbWUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gSWYgd2UgZmlsdGVyZWQgb3V0IHNvbWUgZGVjbGFyYXRpb25zLCB1cGRhdGUgdGhlIG5vZGVcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZERlY2xhcmF0aW9ucy5sZW5ndGggIT09IG9yaWdpbmFsRGVjbGFyYXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZW50aXJlIGRlY2xhcmF0aW9uIG9ubHkgaWYgbm8gZGVjbGFyYXRvcnMgbGVmdFxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZERlY2xhcmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaihwYXRoKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGgubm9kZS5kZWNsYXJhdGlvbnMgPSBmaWx0ZXJlZERlY2xhcmF0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gSGFuZGxlIGV4cG9ydCB7IHJ1bnRpbWUgfSBhbmQgZXhwb3J0IHsgcnVudGltZSwgb3RoZXIgfVxuICAgIGNvbnN0IG5hbWVkRXhwb3J0cyA9IHJvb3RcbiAgICAgICAgLmZpbmQoai5FeHBvcnROYW1lZERlY2xhcmF0aW9uKVxuICAgICAgICAuZmlsdGVyKChwYXRoKSA9PiBwYXRoLm5vZGUuc3BlY2lmaWVycyAmJiBwYXRoLm5vZGUuc3BlY2lmaWVycy5sZW5ndGggPiAwKTtcbiAgICBuYW1lZEV4cG9ydHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBzcGVjaWZpZXJzID0gcGF0aC5ub2RlLnNwZWNpZmllcnM7XG4gICAgICAgIGlmICghc3BlY2lmaWVycylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRTcGVjaWZpZXJzID0gc3BlY2lmaWVycy5maWx0ZXIoKHNwZWMpID0+IHtcbiAgICAgICAgICAgIGlmIChqLkV4cG9ydFNwZWNpZmllci5jaGVjayhzcGVjKSAmJiBqLklkZW50aWZpZXIuY2hlY2soc3BlYy5sb2NhbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3BlYy5sb2NhbC5uYW1lICE9PSAncnVudGltZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIElmIHdlIHJlbW92ZWQgYW55IHNwZWNpZmllcnNcbiAgICAgICAgaWYgKGZpbHRlcmVkU3BlY2lmaWVycy5sZW5ndGggIT09IHNwZWNpZmllcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIElmIG5vIHNwZWNpZmllcnMgbGVmdCwgcmVtb3ZlIHRoZSBlbnRpcmUgZXhwb3J0IHN0YXRlbWVudFxuICAgICAgICAgICAgaWYgKGZpbHRlcmVkU3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBqKHBhdGgpLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpZXJzIGFycmF5XG4gICAgICAgICAgICAgICAgcGF0aC5ub2RlLnNwZWNpZmllcnMgPSBmaWx0ZXJlZFNwZWNpZmllcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBIYW5kbGUgcnVudGltZSBwcm9wZXJ0eSBpbiBjb25maWcgb2JqZWN0c1xuICAgIGNvbnN0IGNvbmZpZ0V4cG9ydHMgPSByb290LmZpbmQoai5FeHBvcnROYW1lZERlY2xhcmF0aW9uLCB7XG4gICAgICAgIGRlY2xhcmF0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiAnVmFyaWFibGVEZWNsYXJhdGlvbicsXG4gICAgICAgICAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB7IG5hbWU6ICdjb25maWcnIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uZmlnRXhwb3J0cy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uID0gcGF0aC5ub2RlLmRlY2xhcmF0aW9uO1xuICAgICAgICBpZiAoai5WYXJpYWJsZURlY2xhcmF0aW9uLmNoZWNrKGRlY2xhcmF0aW9uKSkge1xuICAgICAgICAgICAgZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zLmZvckVhY2goKGRlY2wpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoai5WYXJpYWJsZURlY2xhcmF0b3IuY2hlY2soZGVjbCkgJiZcbiAgICAgICAgICAgICAgICAgICAgai5JZGVudGlmaWVyLmNoZWNrKGRlY2wuaWQpICYmXG4gICAgICAgICAgICAgICAgICAgIGRlY2wuaWQubmFtZSA9PT0gJ2NvbmZpZycgJiZcbiAgICAgICAgICAgICAgICAgICAgai5PYmplY3RFeHByZXNzaW9uLmNoZWNrKGRlY2wuaW5pdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqRXhwciA9IGRlY2wuaW5pdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5pdGlhbExlbmd0aCA9IG9iakV4cHIucHJvcGVydGllcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcnVudGltZSBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICBvYmpFeHByLnByb3BlcnRpZXMgPSBvYmpFeHByLnByb3BlcnRpZXMuZmlsdGVyKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdGF0aWNQcm9wZXJ0eShwcm9wKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Aua2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5rZXkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Aua2V5Lm5hbWUgIT09ICdydW50aW1lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgcmVtb3ZlZCBhbnkgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICBpZiAob2JqRXhwci5wcm9wZXJ0aWVzLmxlbmd0aCAhPT0gaW5pdGlhbExlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyBwcm9wZXJ0aWVzIGxlZnQsIHJlbW92ZSB0aGUgZW50aXJlIGNvbmZpZyBleHBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmpFeHByLnByb3BlcnRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaihwYXRoKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGhhc0NoYW5nZXM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1taWRkbGV3YXJlLXRvLXByb3h5LmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixJQUFJQSxlQUFlLEdBQUksVUFBUSxTQUFLQSxlQUFlLElBQUssVUFBVUMsR0FBRyxFQUFFO0VB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","map":{"version":3,"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","default","transformer","fs_1","require","path_1","utils_1","parser_1","CONFIG_PROPERTY_MAP","middlewarePrefetch","middlewareClientMaxBodySize","externalMiddlewareRewritesResolve","skipMiddlewareUrlNormalize","MIDDLEWARE_TYPE_IMPORT_MAP","NextMiddleware","MiddlewareConfig","file","j","createParserFromPath","path","root","source","length","isNextConfig","isNextConfigFile","process","env","NODE_ENV","test","isMiddlewareFile","hasMiddlewareTypeImports","checkForNextServerTypeImports","hasChanges","typeImportChanges","transformMiddlewareTypeImports","middlewareChanges","transformMiddlewareFunction","runtimeChanges","removeRuntimeConfig","hasConfigChanges","transformNextConfig","toSource","handleMiddlewareFileRename","find","ImportDeclaration","ImportSpecifier","filter","node","imported","name","forEach","importPath","specifiers","specifier","check","oldImportName","newImportName","local","keys","oldType","TSTypeReference","typeName","type","configObjects","findNextConfigObjects","objPath","result","processConfigObject","configFunctions","findNextConfigFunctions","processFunctionConfig","configArrowFunctions","findNextConfigArrowFunctions","processArrowFunctionConfig","oldProp","newProp","startsWith","AssignmentExpression","left","object","property","configObj","experimentalProp","properties","prop","isStaticProperty","key","experimentalObj","ReturnStatement","returnPath","argument","body","proxyIdentifier","generateUniqueIdentifier","needsAlias","exportedAsProxy","ExportNamedDeclaration","nodePath","_declaration$id","declaration","FunctionDeclaration","id","ExportSpecifier","Identifier","exported","newSpecifier","exportSpecifier","from","identifier","specifierIndex","indexOf","ExportDefaultDeclaration","_declaration$id2","VariableDeclarator","astPath","parent","hasExportSpecifier","some","spec","exportDeclaration","exportNamedDeclaration","program","Program","get","push","dir","ext","parse","newFilePath","join","writeFileSync","unlinkSync","cause","console","error","JSON","stringify","baseName","hasIdentifierInScope","counter","candidate","hasVariableDeclaration","hasFunctionDeclaration","hasImportSpecifier","exportedNames","Set","add","ObjectExpression","CallExpression","extractObjectsFromCallExpression","right","init","FunctionExpression","ArrowFunctionExpression","callExpr","arguments","arg","directRuntimeExports","declarations","size","remove","runtimeVariableDeclarations","VariableDeclaration","decl","originalDeclarations","filteredDeclarations","namedExports","filteredSpecifiers","configExports","objExpr","initialLength"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/","sources":["middleware-to-proxy.js"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = transformer;\nconst fs_1 = __importDefault(require(\"fs\"));\nconst path_1 = require(\"path\");\nconst utils_1 = require(\"./lib/utils\");\nconst parser_1 = require(\"../lib/parser\");\n// Middleware config properties that need to be renamed to proxy equivalents\nconst CONFIG_PROPERTY_MAP = {\n    middlewarePrefetch: 'proxyPrefetch',\n    middlewareClientMaxBodySize: 'proxyClientMaxBodySize',\n    externalMiddlewareRewritesResolve: 'externalProxyRewritesResolve',\n    skipMiddlewareUrlNormalize: 'skipProxyUrlNormalize',\n};\n// Type imports from 'next/server' that need to be transformed\nconst MIDDLEWARE_TYPE_IMPORT_MAP = {\n    NextMiddleware: 'NextProxy',\n    MiddlewareConfig: 'ProxyConfig',\n};\nfunction transformer(file) {\n    const j = (0, parser_1.createParserFromPath)(file.path);\n    const root = j(file.source);\n    if (!root.length) {\n        return file.source;\n    }\n    const isNextConfig = (0, utils_1.isNextConfigFile)(file) ||\n        (process.env.NODE_ENV === 'test' && /next-config-/.test(file.path));\n    const isMiddlewareFile = /(^|[/\\\\])middleware\\.|[/\\\\]src[/\\\\]middleware\\./.test(file.path) ||\n        (process.env.NODE_ENV === 'test' && !isNextConfig);\n    const hasMiddlewareTypeImports = checkForNextServerTypeImports(root, j);\n    // In test mode, process all files. Otherwise, only process relevant files\n    if (process.env.NODE_ENV !== 'test') {\n        if (!isMiddlewareFile && !isNextConfig && !hasMiddlewareTypeImports) {\n            return file.source;\n        }\n    }\n    let hasChanges = false;\n    if (hasMiddlewareTypeImports) {\n        const typeImportChanges = transformMiddlewareTypeImports(root, j);\n        hasChanges = hasChanges || typeImportChanges;\n    }\n    if (isMiddlewareFile) {\n        const middlewareChanges = transformMiddlewareFunction(root, j);\n        hasChanges = hasChanges || middlewareChanges.hasChanges;\n        // Remove runtime segment config\n        const runtimeChanges = removeRuntimeConfig(root, j);\n        hasChanges = hasChanges || runtimeChanges;\n    }\n    if (isNextConfig) {\n        const { hasConfigChanges } = transformNextConfig(root, j);\n        hasChanges = hasChanges || hasConfigChanges;\n    }\n    if (!hasChanges) {\n        return file.source;\n    }\n    const source = root.toSource();\n    // Need to write proxy file and unlink the original middleware file.\n    if (isMiddlewareFile) {\n        return handleMiddlewareFileRename(file, source);\n    }\n    return source;\n}\nfunction checkForNextServerTypeImports(root, j) {\n    return (root\n        .find(j.ImportDeclaration, {\n        source: { value: 'next/server' },\n    })\n        .find(j.ImportSpecifier)\n        .filter((path) => MIDDLEWARE_TYPE_IMPORT_MAP[path.node.imported.name]).length > 0);\n}\nfunction transformMiddlewareTypeImports(root, j) {\n    let hasChanges = false;\n    // Transform type imports from 'next/server'\n    root\n        .find(j.ImportDeclaration, {\n        source: { value: 'next/server' },\n    })\n        .forEach((importPath) => {\n        const specifiers = importPath.node.specifiers;\n        if (!specifiers)\n            return;\n        specifiers.forEach((specifier) => {\n            if (j.ImportSpecifier.check(specifier) &&\n                specifier.imported &&\n                MIDDLEWARE_TYPE_IMPORT_MAP[specifier.imported.name]) {\n                const oldImportName = specifier.imported.name;\n                const newImportName = MIDDLEWARE_TYPE_IMPORT_MAP[oldImportName];\n                // Update the local name if it matches the original imported name\n                if (specifier.local && specifier.local.name === oldImportName) {\n                    specifier.local.name = newImportName;\n                }\n                // Transform the import name\n                specifier.imported.name = newImportName;\n                hasChanges = true;\n            }\n        });\n    });\n    // Also transform any type annotations using the old types\n    Object.keys(MIDDLEWARE_TYPE_IMPORT_MAP).forEach((oldType) => {\n        root\n            .find(j.TSTypeReference)\n            .filter((path) => {\n            return (path.node.typeName &&\n                path.node.typeName.type === 'Identifier' &&\n                path.node.typeName.name === oldType);\n        })\n            .forEach((path) => {\n            path.node.typeName.name = MIDDLEWARE_TYPE_IMPORT_MAP[oldType];\n            hasChanges = true;\n        });\n    });\n    return hasChanges;\n}\nfunction transformNextConfig(root, j) {\n    let hasConfigChanges = false;\n    // Collect config-related object expressions instead of processing all\n    const configObjects = findNextConfigObjects(root, j);\n    configObjects.forEach((objPath) => {\n        const result = processConfigObject(objPath.value);\n        hasConfigChanges = hasConfigChanges || result.hasChanges;\n    });\n    // Process function configurations that are likely to be Next.js config\n    const configFunctions = findNextConfigFunctions(root, j);\n    configFunctions.forEach((path) => {\n        const result = processFunctionConfig(path, j);\n        hasConfigChanges = hasConfigChanges || result.hasChanges;\n    });\n    // Process arrow function configurations that are likely to be Next.js config\n    const configArrowFunctions = findNextConfigArrowFunctions(root, j);\n    configArrowFunctions.forEach((path) => {\n        const result = processArrowFunctionConfig(path, j);\n        hasConfigChanges = hasConfigChanges || result.hasChanges;\n    });\n    // Process direct property assignments: config.experimental.middlewarePrefetch = value\n    Object.keys(CONFIG_PROPERTY_MAP).forEach((oldProp) => {\n        const newProp = CONFIG_PROPERTY_MAP[oldProp];\n        // Handle experimental.* properties\n        if (oldProp.startsWith('middleware') &&\n            oldProp !== 'skipMiddlewareUrlNormalize') {\n            root\n                .find(j.AssignmentExpression, {\n                left: {\n                    type: 'MemberExpression',\n                    object: {\n                        type: 'MemberExpression',\n                        property: { name: 'experimental' },\n                    },\n                    property: { name: oldProp },\n                },\n            })\n                .forEach((path) => {\n                path.node.left.property.name = newProp;\n                hasConfigChanges = true;\n            });\n        }\n        else {\n            // Handle top-level properties like skipMiddlewareUrlNormalize\n            root\n                .find(j.AssignmentExpression, {\n                left: {\n                    type: 'MemberExpression',\n                    property: { name: oldProp },\n                },\n            })\n                .forEach((path) => {\n                path.node.left.property.name = newProp;\n                hasConfigChanges = true;\n            });\n        }\n    });\n    return { hasConfigChanges };\n}\nfunction processConfigObject(configObj) {\n    let hasChanges = false;\n    // Check for experimental property\n    const experimentalProp = configObj.properties.find((prop) => isStaticProperty(prop) &&\n        prop.key &&\n        prop.key.type === 'Identifier' &&\n        prop.key.name === 'experimental');\n    if (experimentalProp && isStaticProperty(experimentalProp)) {\n        const experimentalObj = experimentalProp.value;\n        if (experimentalObj.type === 'ObjectExpression') {\n            // Transform properties in experimental object\n            experimentalObj.properties.forEach((prop) => {\n                if (isStaticProperty(prop) &&\n                    prop.key &&\n                    prop.key.type === 'Identifier' &&\n                    CONFIG_PROPERTY_MAP[prop.key.name] &&\n                    prop.key.name !== 'skipMiddlewareUrlNormalize' // This is top-level\n                ) {\n                    prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n                    hasChanges = true;\n                }\n            });\n        }\n    }\n    // Transform top-level properties\n    configObj.properties.forEach((prop) => {\n        if (isStaticProperty(prop) &&\n            prop.key &&\n            prop.key.type === 'Identifier' &&\n            prop.key.name === 'skipMiddlewareUrlNormalize') {\n            prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n            hasChanges = true;\n        }\n    });\n    // Also transform any top-level middleware properties (for spread scenarios)\n    configObj.properties.forEach((prop) => {\n        if (isStaticProperty(prop) &&\n            prop.key &&\n            prop.key.type === 'Identifier' &&\n            CONFIG_PROPERTY_MAP[prop.key.name] &&\n            prop.key.name !== 'skipMiddlewareUrlNormalize' // Already handled above\n        ) {\n            prop.key.name = CONFIG_PROPERTY_MAP[prop.key.name];\n            hasChanges = true;\n        }\n    });\n    return { hasChanges };\n}\nfunction processFunctionConfig(path, j) {\n    let hasChanges = false;\n    // Look for return statements with object expressions\n    j(path)\n        .find(j.ReturnStatement)\n        .forEach((returnPath) => {\n        if (returnPath.node.argument &&\n            returnPath.node.argument.type === 'ObjectExpression') {\n            const result = processConfigObject(returnPath.node.argument);\n            hasChanges = hasChanges || result.hasChanges;\n        }\n    });\n    return { hasChanges };\n}\nfunction processArrowFunctionConfig(path, j) {\n    let hasChanges = false;\n    const body = path.node.body;\n    // Handle: () => ({ ... })\n    if (body && body.type === 'ObjectExpression') {\n        const result = processConfigObject(body);\n        hasChanges = hasChanges || result.hasChanges;\n    }\n    // Handle: () => { return { ... } }\n    if (body && body.type === 'BlockStatement') {\n        j(path)\n            .find(j.ReturnStatement)\n            .forEach((returnPath) => {\n            if (returnPath.node.argument &&\n                returnPath.node.argument.type === 'ObjectExpression') {\n                const result = processConfigObject(returnPath.node.argument);\n                hasChanges = hasChanges || result.hasChanges;\n            }\n        });\n    }\n    return { hasChanges };\n}\nfunction transformMiddlewareFunction(root, j) {\n    const proxyIdentifier = generateUniqueIdentifier(root, j, 'proxy');\n    const needsAlias = proxyIdentifier !== 'proxy';\n    let hasChanges = false;\n    // Track if we exported something as 'proxy'\n    let exportedAsProxy = false;\n    // Handle named export declarations\n    root.find(j.ExportNamedDeclaration).forEach((nodePath) => {\n        const declaration = nodePath.node.declaration;\n        // Handle: export function middleware() {} or export async function middleware() {}\n        if (j.FunctionDeclaration.check(declaration) &&\n            declaration.id?.name === 'middleware') {\n            declaration.id.name = proxyIdentifier;\n            exportedAsProxy = true; // Exported function declarations become proxy\n            hasChanges = true;\n        }\n        // Handle: export { middleware }\n        if (nodePath.node.specifiers) {\n            nodePath.node.specifiers.forEach((specifier) => {\n                if (j.ExportSpecifier.check(specifier) &&\n                    j.Identifier.check(specifier.local) &&\n                    specifier.local.name === 'middleware') {\n                    // Check if this is exporting middleware as 'middleware' (which should become 'proxy')\n                    if (j.Identifier.check(specifier.exported) &&\n                        specifier.exported.name === 'middleware') {\n                        if (needsAlias) {\n                            // Create export alias: export { _proxy1 as proxy }\n                            const newSpecifier = j.exportSpecifier.from({\n                                local: j.identifier(proxyIdentifier),\n                                exported: j.identifier('proxy'),\n                            });\n                            // Replace in the specifiers array\n                            const specifierIndex = nodePath.node.specifiers.indexOf(specifier);\n                            nodePath.node.specifiers[specifierIndex] = newSpecifier;\n                        }\n                        else {\n                            // Simple rename: export { proxy }\n                            specifier.exported = j.identifier('proxy');\n                            specifier.local = j.identifier('proxy');\n                        }\n                        exportedAsProxy = true;\n                        hasChanges = true;\n                    }\n                    else {\n                        // This is exporting middleware as something else (e.g., export { middleware as randomName })\n                        // Just update the local reference to the new identifier\n                        specifier.local = j.identifier(proxyIdentifier);\n                        hasChanges = true;\n                    }\n                }\n            });\n        }\n    });\n    // Handle default export declarations\n    root.find(j.ExportDefaultDeclaration).forEach((nodePath) => {\n        const declaration = nodePath.node.declaration;\n        // Handle: export default function middleware() {} or export default async function middleware() {}\n        if (j.FunctionDeclaration.check(declaration) &&\n            declaration.id?.name === 'middleware') {\n            declaration.id.name = proxyIdentifier;\n            hasChanges = true;\n        }\n    });\n    // Handle function declarations that are later exported\n    root\n        .find(j.FunctionDeclaration, {\n        id: { name: 'middleware' },\n    })\n        .forEach((nodePath) => {\n        if (nodePath.node.id) {\n            nodePath.node.id.name = proxyIdentifier;\n            hasChanges = true;\n        }\n    });\n    // Handle variable declarations: const middleware = ...\n    root\n        .find(j.VariableDeclarator, {\n        id: { name: 'middleware' },\n    })\n        .forEach((nodePath) => {\n        if (j.Identifier.check(nodePath.node.id)) {\n            nodePath.node.id.name = proxyIdentifier;\n            hasChanges = true;\n        }\n    });\n    // Update all references to middleware in the scope\n    if (hasChanges && needsAlias) {\n        root\n            .find(j.Identifier, { name: 'middleware' })\n            .filter((astPath) => {\n            // Don't rename if it's part of an export specifier we already handled\n            const parent = astPath.parent;\n            if (j.ExportSpecifier.check(parent.node)) {\n                return false;\n            }\n            // Don't rename if it's a function/variable declaration we already handled\n            if ((j.FunctionDeclaration.check(parent.node) &&\n                parent.node.id === astPath.node) ||\n                (j.VariableDeclarator.check(parent.node) &&\n                    parent.node.id === astPath.node)) {\n                return false;\n            }\n            return true;\n        })\n            .forEach((astPath) => {\n            astPath.node.name = proxyIdentifier;\n        });\n    }\n    // If we used a unique identifier AND we exported `as proxy`, add an export alias\n    // This handles cases where the export was part of the declaration itself:\n    //   export function middleware() {} -> export function _proxy1() {} (needs alias)\n    // vs cases where export was separate:\n    //   export { middleware } -> export { _proxy1 as proxy } (already handled)\n    if (needsAlias && hasChanges && exportedAsProxy) {\n        // Check if we already created a proxy export (from export specifiers like `export { middleware }`)\n        const hasExportSpecifier = root.find(j.ExportNamedDeclaration).filter((astPath) => {\n            return (astPath.node.specifiers &&\n                astPath.node.specifiers.some((spec) => j.ExportSpecifier.check(spec) &&\n                    j.Identifier.check(spec.exported) &&\n                    spec.exported.name === 'proxy'));\n        }).length > 0;\n        // If no proxy export exists yet, create one to maintain the 'proxy' API\n        // Example: export function _proxy1() {} + export { _proxy1 as proxy }\n        if (!hasExportSpecifier) {\n            const exportSpecifier = j.exportSpecifier.from({\n                local: j.identifier(proxyIdentifier),\n                exported: j.identifier('proxy'),\n            });\n            const exportDeclaration = j.exportNamedDeclaration(null, [\n                exportSpecifier,\n            ]);\n            // Add the export at the end of the file\n            const program = root.find(j.Program);\n            if (program.length > 0) {\n                program.get('body').value.push(exportDeclaration);\n            }\n        }\n    }\n    return { hasChanges };\n}\nfunction handleMiddlewareFileRename(file, source) {\n    // We will not modify the original file in real world,\n    // so return the source here for testing.\n    if (process.env.NODE_ENV === 'test') {\n        return source;\n    }\n    const { dir, ext } = (0, path_1.parse)(file.path);\n    const newFilePath = (0, path_1.join)(dir, 'proxy' + ext);\n    try {\n        fs_1.default.writeFileSync(newFilePath, source);\n        fs_1.default.unlinkSync(file.path);\n        // Return empty string to indicate successful file replacement.\n        return '';\n    }\n    catch (cause) {\n        console.error(`Failed to write \"${newFilePath}\" and delete \"${file.path}\".\\n${JSON.stringify({ cause })}`);\n        return file.source;\n    }\n}\nfunction isStaticProperty(prop) {\n    return prop.type === 'Property' || prop.type === 'ObjectProperty';\n}\nfunction generateUniqueIdentifier(root, j, baseName) {\n    // First check if baseName itself is available\n    if (!hasIdentifierInScope(root, j, baseName)) {\n        return baseName;\n    }\n    // Generate _proxy1, _proxy2, etc.\n    let counter = 1;\n    while (true) {\n        const candidate = `_${baseName}${counter}`;\n        if (!hasIdentifierInScope(root, j, candidate)) {\n            return candidate;\n        }\n        counter++;\n    }\n}\nfunction hasIdentifierInScope(root, j, name) {\n    // Check for variable declarations\n    const hasVariableDeclaration = root\n        .find(j.VariableDeclarator)\n        .filter((astPath) => j.Identifier.check(astPath.value.id) && astPath.value.id.name === name).length > 0;\n    // Check for function declarations\n    const hasFunctionDeclaration = root\n        .find(j.FunctionDeclaration)\n        .filter((astPath) => astPath.value.id && astPath.value.id.name === name).length > 0;\n    // Check for import specifiers\n    const hasImportSpecifier = root\n        .find(j.ImportSpecifier)\n        .filter((astPath) => j.Identifier.check(astPath.value.local) &&\n        astPath.value.local.name === name).length > 0;\n    return hasVariableDeclaration || hasFunctionDeclaration || hasImportSpecifier;\n}\nfunction findNextConfigObjects(root, j) {\n    const configObjects = [];\n    // Find identifiers that are exported as default or assigned to module.exports\n    const exportedNames = new Set();\n    // Handle: export default nextConfig or export default wrappedFunction(nextConfig)\n    root.find(j.ExportDefaultDeclaration).forEach((path) => {\n        if (j.Identifier.check(path.node.declaration)) {\n            exportedNames.add(path.node.declaration.name);\n        }\n        else if (j.ObjectExpression.check(path.node.declaration)) {\n            // Direct object export: export default { ... }\n            configObjects.push(path.get('declaration'));\n        }\n        else if (j.CallExpression.check(path.node.declaration)) {\n            // Handle wrapped exports: export default wrapper(config)\n            extractObjectsFromCallExpression(path.node.declaration, configObjects, exportedNames, j);\n        }\n    });\n    // Handle: module.exports = nextConfig or module.exports = wrappedFunction(nextConfig)\n    root\n        .find(j.AssignmentExpression, {\n        left: {\n            type: 'MemberExpression',\n            object: { name: 'module' },\n            property: { name: 'exports' },\n        },\n    })\n        .forEach((path) => {\n        if (j.Identifier.check(path.node.right)) {\n            exportedNames.add(path.node.right.name);\n        }\n        else if (j.ObjectExpression.check(path.node.right)) {\n            // Direct object assignment: module.exports = { ... }\n            configObjects.push(path.get('right'));\n        }\n        else if (j.CallExpression.check(path.node.right)) {\n            // Handle wrapped assignments: module.exports = wrapper(config)\n            extractObjectsFromCallExpression(path.node.right, configObjects, exportedNames, j);\n        }\n    });\n    // Find variable declarations for exported names\n    exportedNames.forEach((name) => {\n        root\n            .find(j.VariableDeclarator, { id: { name } })\n            .forEach((path) => {\n            if (j.ObjectExpression.check(path.node.init)) {\n                configObjects.push(path.get('init'));\n            }\n        });\n    });\n    return configObjects;\n}\nfunction findNextConfigFunctions(root, j) {\n    const configFunctions = [];\n    const exportedNames = new Set();\n    // Handle: export default function or export default functionName\n    root.find(j.ExportDefaultDeclaration).forEach((path) => {\n        if (j.FunctionDeclaration.check(path.node.declaration)) {\n            // export default function configFunction() { ... }\n            configFunctions.push(path.get('declaration'));\n        }\n        else if (j.Identifier.check(path.node.declaration)) {\n            exportedNames.add(path.node.declaration.name);\n        }\n    });\n    // Handle: module.exports = function\n    root\n        .find(j.AssignmentExpression, {\n        left: {\n            type: 'MemberExpression',\n            object: { name: 'module' },\n            property: { name: 'exports' },\n        },\n    })\n        .forEach((path) => {\n        if (j.FunctionExpression.check(path.node.right)) {\n            // module.exports = function() { ... }\n            configFunctions.push(path.get('right'));\n        }\n        else if (j.Identifier.check(path.node.right)) {\n            exportedNames.add(path.node.right.name);\n        }\n    });\n    // Find function declarations for exported names\n    exportedNames.forEach((name) => {\n        root\n            .find(j.FunctionDeclaration, { id: { name } })\n            .forEach((path) => {\n            configFunctions.push(path);\n        });\n    });\n    return configFunctions;\n}\nfunction findNextConfigArrowFunctions(root, j) {\n    const configArrowFunctions = [];\n    const exportedNames = new Set();\n    // Handle: export default arrowFunction\n    root.find(j.ExportDefaultDeclaration).forEach((path) => {\n        if (j.ArrowFunctionExpression.check(path.node.declaration)) {\n            // export default () => { ... }\n            configArrowFunctions.push(path.get('declaration'));\n        }\n        else if (j.Identifier.check(path.node.declaration)) {\n            exportedNames.add(path.node.declaration.name);\n        }\n    });\n    // Handle: module.exports = arrowFunction\n    root\n        .find(j.AssignmentExpression, {\n        left: {\n            type: 'MemberExpression',\n            object: { name: 'module' },\n            property: { name: 'exports' },\n        },\n    })\n        .forEach((path) => {\n        if (j.ArrowFunctionExpression.check(path.node.right)) {\n            // module.exports = () => { ... }\n            configArrowFunctions.push(path.get('right'));\n        }\n        else if (j.Identifier.check(path.node.right)) {\n            exportedNames.add(path.node.right.name);\n        }\n    });\n    // Find variable declarations with arrow functions for exported names\n    exportedNames.forEach((name) => {\n        root\n            .find(j.VariableDeclarator, { id: { name } })\n            .forEach((path) => {\n            if (j.ArrowFunctionExpression.check(path.node.init)) {\n                configArrowFunctions.push(path.get('init'));\n            }\n        });\n    });\n    return configArrowFunctions;\n}\nfunction extractObjectsFromCallExpression(callExpr, configObjects, exportedNames, j) {\n    // Recursively extract arguments from call expressions\n    // E.g., wrapper(anotherWrapper(config)) or wrapper(config)\n    if (callExpr.arguments) {\n        callExpr.arguments.forEach((arg) => {\n            if (j.Identifier.check(arg)) {\n                exportedNames.add(arg.name);\n            }\n            else if (j.ObjectExpression.check(arg)) {\n                // This would be unusual but handle direct object arguments\n                // We don't have the path here, so we'll skip this case\n                // It would be handled by the direct export case anyway\n            }\n            else if (j.CallExpression.check(arg)) {\n                extractObjectsFromCallExpression(arg, configObjects, exportedNames, j);\n            }\n        });\n    }\n}\nfunction removeRuntimeConfig(root, j) {\n    let hasChanges = false;\n    // Remove export const runtime = 'string'\n    const directRuntimeExports = root.find(j.ExportNamedDeclaration, {\n        declaration: {\n            type: 'VariableDeclaration',\n            declarations: [\n                {\n                    id: { name: 'runtime' },\n                },\n            ],\n        },\n    });\n    if (directRuntimeExports.size() > 0) {\n        directRuntimeExports.remove();\n        hasChanges = true;\n    }\n    // Remove const runtime = 'string' declarations\n    const runtimeVariableDeclarations = root\n        .find(j.VariableDeclaration)\n        .filter((path) => path.node.declarations.some((decl) => {\n        if (j.VariableDeclarator.check(decl) && j.Identifier.check(decl.id)) {\n            return decl.id.name === 'runtime';\n        }\n        return false;\n    }));\n    if (runtimeVariableDeclarations.size() > 0) {\n        runtimeVariableDeclarations.forEach((path) => {\n            const originalDeclarations = path.node.declarations;\n            const filteredDeclarations = originalDeclarations.filter((decl) => {\n                if (j.VariableDeclarator.check(decl) && j.Identifier.check(decl.id)) {\n                    return decl.id.name !== 'runtime';\n                }\n                return true;\n            });\n            // If we filtered out some declarations, update the node\n            if (filteredDeclarations.length !== originalDeclarations.length) {\n                // Remove the entire declaration only if no declarators left\n                if (filteredDeclarations.length === 0) {\n                    j(path).remove();\n                }\n                else {\n                    path.node.declarations = filteredDeclarations;\n                }\n            }\n        });\n        hasChanges = true;\n    }\n    // Handle export { runtime } and export { runtime, other }\n    const namedExports = root\n        .find(j.ExportNamedDeclaration)\n        .filter((path) => path.node.specifiers && path.node.specifiers.length > 0);\n    namedExports.forEach((path) => {\n        const specifiers = path.node.specifiers;\n        if (!specifiers)\n            return;\n        const filteredSpecifiers = specifiers.filter((spec) => {\n            if (j.ExportSpecifier.check(spec) && j.Identifier.check(spec.local)) {\n                return spec.local.name !== 'runtime';\n            }\n            return true;\n        });\n        // If we removed any specifiers\n        if (filteredSpecifiers.length !== specifiers.length) {\n            hasChanges = true;\n            // If no specifiers left, remove the entire export statement\n            if (filteredSpecifiers.length === 0) {\n                j(path).remove();\n            }\n            else {\n                // Update the specifiers array\n                path.node.specifiers = filteredSpecifiers;\n            }\n        }\n    });\n    // Handle runtime property in config objects\n    const configExports = root.find(j.ExportNamedDeclaration, {\n        declaration: {\n            type: 'VariableDeclaration',\n            declarations: [\n                {\n                    id: { name: 'config' },\n                },\n            ],\n        },\n    });\n    configExports.forEach((path) => {\n        const declaration = path.node.declaration;\n        if (j.VariableDeclaration.check(declaration)) {\n            declaration.declarations.forEach((decl) => {\n                if (j.VariableDeclarator.check(decl) &&\n                    j.Identifier.check(decl.id) &&\n                    decl.id.name === 'config' &&\n                    j.ObjectExpression.check(decl.init)) {\n                    const objExpr = decl.init;\n                    const initialLength = objExpr.properties.length;\n                    // Filter out runtime property\n                    objExpr.properties = objExpr.properties.filter((prop) => {\n                        if (isStaticProperty(prop) &&\n                            prop.key &&\n                            prop.key.type === 'Identifier') {\n                            return prop.key.name !== 'runtime';\n                        }\n                        return true;\n                    });\n                    // If we removed any properties\n                    if (objExpr.properties.length !== initialLength) {\n                        hasChanges = true;\n                        // If no properties left, remove the entire config export\n                        if (objExpr.properties.length === 0) {\n                            j(path).remove();\n                        }\n                    }\n                }\n            });\n        }\n    });\n    return hasChanges;\n}\n//# sourceMappingURL=middleware-to-proxy.js.map"],"mappings":"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","ignoreList":[]}},"mtime":1770561845683},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/lib/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/lib/utils.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"\"use strict\";\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isNextConfigFile = isNextConfigFile;\nconst node_path_1 = __importDefault(require(\"node:path\"));\nfunction isNextConfigFile(file) {\n  const parsed = node_path_1.default.parse(file.path || '/');\n  return parsed.base === 'next.config.js' || parsed.base === 'next.config.ts' || parsed.base === 'next.config.mjs' || parsed.base === 'next.config.cjs';\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJpc05leHRDb25maWdGaWxlIiwibm9kZV9wYXRoXzEiLCJyZXF1aXJlIiwiZmlsZSIsInBhcnNlZCIsImRlZmF1bHQiLCJwYXJzZSIsInBhdGgiLCJiYXNlIl0sInNvdXJjZVJvb3QiOiIvaG9tZS9jY3VzZXIvLm5wbS9fbnB4LzZhMDkwNjY5ZTIxYjQzMDMvbm9kZV9tb2R1bGVzL0BuZXh0L2NvZGVtb2QvdHJhbnNmb3Jtcy9saWIvIiwic291cmNlcyI6WyJ1dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNOZXh0Q29uZmlnRmlsZSA9IGlzTmV4dENvbmZpZ0ZpbGU7XG5jb25zdCBub2RlX3BhdGhfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibm9kZTpwYXRoXCIpKTtcbmZ1bmN0aW9uIGlzTmV4dENvbmZpZ0ZpbGUoZmlsZSkge1xuICAgIGNvbnN0IHBhcnNlZCA9IG5vZGVfcGF0aF8xLmRlZmF1bHQucGFyc2UoZmlsZS5wYXRoIHx8ICcvJyk7XG4gICAgcmV0dXJuIChwYXJzZWQuYmFzZSA9PT0gJ25leHQuY29uZmlnLmpzJyB8fFxuICAgICAgICBwYXJzZWQuYmFzZSA9PT0gJ25leHQuY29uZmlnLnRzJyB8fFxuICAgICAgICBwYXJzZWQuYmFzZSA9PT0gJ25leHQuY29uZmlnLm1qcycgfHxcbiAgICAgICAgcGFyc2VkLmJhc2UgPT09ICduZXh0LmNvbmZpZy5janMnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcCJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixJQUFJQSxlQUFlLEdBQUksVUFBUSxTQUFLQSxlQUFlLElBQUssVUFBVUMsR0FBRyxFQUFFO0VBQ25FLE9BQVFBLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFVLEdBQUlELEdBQUcsR0FBRztJQUFFLFNBQVMsRUFBRUE7RUFBSSxDQUFDO0FBQzdELENBQUM7QUFDREUsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sRUFBRSxZQUFZLEVBQUU7RUFBRUMsS0FBSyxFQUFFO0FBQUssQ0FBQyxDQUFDO0FBQzdERCxPQUFPLENBQUNFLGdCQUFnQixHQUFHQSxnQkFBZ0I7QUFDM0MsTUFBTUMsV0FBVyxHQUFHUixlQUFlLENBQUNTLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RCxTQUFTRixnQkFBZ0JBLENBQUNHLElBQUksRUFBRTtFQUM1QixNQUFNQyxNQUFNLEdBQUdILFdBQVcsQ0FBQ0ksT0FBTyxDQUFDQyxLQUFLLENBQUNILElBQUksQ0FBQ0ksSUFBSSxJQUFJLEdBQUcsQ0FBQztFQUMxRCxPQUFRSCxNQUFNLENBQUNJLElBQUksS0FBSyxnQkFBZ0IsSUFDcENKLE1BQU0sQ0FBQ0ksSUFBSSxLQUFLLGdCQUFnQixJQUNoQ0osTUFBTSxDQUFDSSxJQUFJLEtBQUssaUJBQWlCLElBQ2pDSixNQUFNLENBQUNJLElBQUksS0FBSyxpQkFBaUI7QUFDekMiLCJpZ25vcmVMaXN0IjpbXX0=","map":{"version":3,"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","isNextConfigFile","node_path_1","require","file","parsed","default","parse","path","base"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/transforms/lib/","sources":["utils.js"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNextConfigFile = isNextConfigFile;\nconst node_path_1 = __importDefault(require(\"node:path\"));\nfunction isNextConfigFile(file) {\n    const parsed = node_path_1.default.parse(file.path || '/');\n    return (parsed.base === 'next.config.js' ||\n        parsed.base === 'next.config.ts' ||\n        parsed.base === 'next.config.mjs' ||\n        parsed.base === 'next.config.cjs');\n}\n//# sourceMappingURL=utils.js.map"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,eAAe,GAAI,UAAQ,SAAKA,eAAe,IAAK,UAAUC,GAAG,EAAE;EACnE,OAAQA,GAAG,IAAIA,GAAG,CAACC,UAAU,GAAID,GAAG,GAAG;IAAE,SAAS,EAAEA;EAAI,CAAC;AAC7D,CAAC;AACDE,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,gBAAgB,GAAGA,gBAAgB;AAC3C,MAAMC,WAAW,GAAGR,eAAe,CAACS,OAAO,CAAC,WAAW,CAAC,CAAC;AACzD,SAASF,gBAAgBA,CAACG,IAAI,EAAE;EAC5B,MAAMC,MAAM,GAAGH,WAAW,CAACI,OAAO,CAACC,KAAK,CAACH,IAAI,CAACI,IAAI,IAAI,GAAG,CAAC;EAC1D,OAAQH,MAAM,CAACI,IAAI,KAAK,gBAAgB,IACpCJ,MAAM,CAACI,IAAI,KAAK,gBAAgB,IAChCJ,MAAM,CAACI,IAAI,KAAK,iBAAiB,IACjCJ,MAAM,CAACI,IAAI,KAAK,iBAAiB;AACzC","ignoreList":[]}},"mtime":1770561845873},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/lib/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/lib/parser.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"\"use strict\";\n\nvar __importDefault = void 0 && (void 0).__importDefault || function (mod) {\n  return mod && mod.__esModule ? mod : {\n    \"default\": mod\n  };\n};\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createParserFromPath = createParserFromPath;\nconst jscodeshift_1 = __importDefault(require(\"jscodeshift\"));\nconst babylon_1 = __importDefault(require(\"jscodeshift/parser/babylon\"));\nconst tsOptions_1 = __importDefault(require(\"jscodeshift/parser/tsOptions\"));\nconst dtsOptions = {\n  ...tsOptions_1.default,\n  plugins: [...tsOptions_1.default.plugins.filter(plugin => plugin !== 'typescript'), ['typescript', {\n    dts: true\n  }]]\n};\nfunction createParserFromPath(filePath) {\n  const isDeclarationFile = /\\.d\\.(m|c)?ts$/.test(filePath);\n  if (isDeclarationFile) {\n    return jscodeshift_1.default.withParser((0, babylon_1.default)(dtsOptions));\n  }\n  // jsx is allowed in .js files, feed them into the tsx parser.\n  // tsx parser :.js, .jsx, .tsx\n  // ts parser: .ts, .mts, .cts\n  const isTsFile = /\\.(m|c)?.ts$/.test(filePath);\n  return isTsFile ? jscodeshift_1.default.withParser('ts') : jscodeshift_1.default.withParser('tsx');\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfX2ltcG9ydERlZmF1bHQiLCJtb2QiLCJfX2VzTW9kdWxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJjcmVhdGVQYXJzZXJGcm9tUGF0aCIsImpzY29kZXNoaWZ0XzEiLCJyZXF1aXJlIiwiYmFieWxvbl8xIiwidHNPcHRpb25zXzEiLCJkdHNPcHRpb25zIiwiZGVmYXVsdCIsInBsdWdpbnMiLCJmaWx0ZXIiLCJwbHVnaW4iLCJkdHMiLCJmaWxlUGF0aCIsImlzRGVjbGFyYXRpb25GaWxlIiwidGVzdCIsIndpdGhQYXJzZXIiLCJpc1RzRmlsZSJdLCJzb3VyY2VSb290IjoiL2hvbWUvY2N1c2VyLy5ucG0vX25weC82YTA5MDY2OWUyMWI0MzAzL25vZGVfbW9kdWxlcy9AbmV4dC9jb2RlbW9kL2xpYi8iLCJzb3VyY2VzIjpbInBhcnNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlUGFyc2VyRnJvbVBhdGggPSBjcmVhdGVQYXJzZXJGcm9tUGF0aDtcbmNvbnN0IGpzY29kZXNoaWZ0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImpzY29kZXNoaWZ0XCIpKTtcbmNvbnN0IGJhYnlsb25fMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwianNjb2Rlc2hpZnQvcGFyc2VyL2JhYnlsb25cIikpO1xuY29uc3QgdHNPcHRpb25zXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcImpzY29kZXNoaWZ0L3BhcnNlci90c09wdGlvbnNcIikpO1xuY29uc3QgZHRzT3B0aW9ucyA9IHtcbiAgICAuLi50c09wdGlvbnNfMS5kZWZhdWx0LFxuICAgIHBsdWdpbnM6IFtcbiAgICAgICAgLi4udHNPcHRpb25zXzEuZGVmYXVsdC5wbHVnaW5zLmZpbHRlcigocGx1Z2luKSA9PiBwbHVnaW4gIT09ICd0eXBlc2NyaXB0JyksXG4gICAgICAgIFsndHlwZXNjcmlwdCcsIHsgZHRzOiB0cnVlIH1dLFxuICAgIF0sXG59O1xuZnVuY3Rpb24gY3JlYXRlUGFyc2VyRnJvbVBhdGgoZmlsZVBhdGgpIHtcbiAgICBjb25zdCBpc0RlY2xhcmF0aW9uRmlsZSA9IC9cXC5kXFwuKG18Yyk/dHMkLy50ZXN0KGZpbGVQYXRoKTtcbiAgICBpZiAoaXNEZWNsYXJhdGlvbkZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGpzY29kZXNoaWZ0XzEuZGVmYXVsdC53aXRoUGFyc2VyKCgwLCBiYWJ5bG9uXzEuZGVmYXVsdCkoZHRzT3B0aW9ucykpO1xuICAgIH1cbiAgICAvLyBqc3ggaXMgYWxsb3dlZCBpbiAuanMgZmlsZXMsIGZlZWQgdGhlbSBpbnRvIHRoZSB0c3ggcGFyc2VyLlxuICAgIC8vIHRzeCBwYXJzZXIgOi5qcywgLmpzeCwgLnRzeFxuICAgIC8vIHRzIHBhcnNlcjogLnRzLCAubXRzLCAuY3RzXG4gICAgY29uc3QgaXNUc0ZpbGUgPSAvXFwuKG18Yyk/LnRzJC8udGVzdChmaWxlUGF0aCk7XG4gICAgcmV0dXJuIGlzVHNGaWxlID8ganNjb2Rlc2hpZnRfMS5kZWZhdWx0LndpdGhQYXJzZXIoJ3RzJykgOiBqc2NvZGVzaGlmdF8xLmRlZmF1bHQud2l0aFBhcnNlcigndHN4Jyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZXIuanMubWFwIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUNaLElBQUlBLGVBQWUsR0FBSSxVQUFRLFNBQUtBLGVBQWUsSUFBSyxVQUFVQyxHQUFHLEVBQUU7RUFDbkUsT0FBUUEsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVUsR0FBSUQsR0FBRyxHQUFHO0lBQUUsU0FBUyxFQUFFQTtFQUFJLENBQUM7QUFDN0QsQ0FBQztBQUNERSxNQUFNLENBQUNDLGNBQWMsQ0FBQ0MsT0FBTyxFQUFFLFlBQVksRUFBRTtFQUFFQyxLQUFLLEVBQUU7QUFBSyxDQUFDLENBQUM7QUFDN0RELE9BQU8sQ0FBQ0Usb0JBQW9CLEdBQUdBLG9CQUFvQjtBQUNuRCxNQUFNQyxhQUFhLEdBQUdSLGVBQWUsQ0FBQ1MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdELE1BQU1DLFNBQVMsR0FBR1YsZUFBZSxDQUFDUyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUN4RSxNQUFNRSxXQUFXLEdBQUdYLGVBQWUsQ0FBQ1MsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDNUUsTUFBTUcsVUFBVSxHQUFHO0VBQ2YsR0FBR0QsV0FBVyxDQUFDRSxPQUFPO0VBQ3RCQyxPQUFPLEVBQUUsQ0FDTCxHQUFHSCxXQUFXLENBQUNFLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDQyxNQUFNLENBQUVDLE1BQU0sSUFBS0EsTUFBTSxLQUFLLFlBQVksQ0FBQyxFQUMxRSxDQUFDLFlBQVksRUFBRTtJQUFFQyxHQUFHLEVBQUU7RUFBSyxDQUFDLENBQUM7QUFFckMsQ0FBQztBQUNELFNBQVNWLG9CQUFvQkEsQ0FBQ1csUUFBUSxFQUFFO0VBQ3BDLE1BQU1DLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDQyxJQUFJLENBQUNGLFFBQVEsQ0FBQztFQUN6RCxJQUFJQyxpQkFBaUIsRUFBRTtJQUNuQixPQUFPWCxhQUFhLENBQUNLLE9BQU8sQ0FBQ1EsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFWCxTQUFTLENBQUNHLE9BQU8sRUFBRUQsVUFBVSxDQUFDLENBQUM7RUFDL0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUFNVSxRQUFRLEdBQUcsY0FBYyxDQUFDRixJQUFJLENBQUNGLFFBQVEsQ0FBQztFQUM5QyxPQUFPSSxRQUFRLEdBQUdkLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDUSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUdiLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDUSxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQ3RHIiwiaWdub3JlTGlzdCI6W119","map":{"version":3,"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","createParserFromPath","jscodeshift_1","require","babylon_1","tsOptions_1","dtsOptions","default","plugins","filter","plugin","dts","filePath","isDeclarationFile","test","withParser","isTsFile"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/@next/codemod/lib/","sources":["parser.js"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createParserFromPath = createParserFromPath;\nconst jscodeshift_1 = __importDefault(require(\"jscodeshift\"));\nconst babylon_1 = __importDefault(require(\"jscodeshift/parser/babylon\"));\nconst tsOptions_1 = __importDefault(require(\"jscodeshift/parser/tsOptions\"));\nconst dtsOptions = {\n    ...tsOptions_1.default,\n    plugins: [\n        ...tsOptions_1.default.plugins.filter((plugin) => plugin !== 'typescript'),\n        ['typescript', { dts: true }],\n    ],\n};\nfunction createParserFromPath(filePath) {\n    const isDeclarationFile = /\\.d\\.(m|c)?ts$/.test(filePath);\n    if (isDeclarationFile) {\n        return jscodeshift_1.default.withParser((0, babylon_1.default)(dtsOptions));\n    }\n    // jsx is allowed in .js files, feed them into the tsx parser.\n    // tsx parser :.js, .jsx, .tsx\n    // ts parser: .ts, .mts, .cts\n    const isTsFile = /\\.(m|c)?.ts$/.test(filePath);\n    return isTsFile ? jscodeshift_1.default.withParser('ts') : jscodeshift_1.default.withParser('tsx');\n}\n//# sourceMappingURL=parser.js.map"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,eAAe,GAAI,UAAQ,SAAKA,eAAe,IAAK,UAAUC,GAAG,EAAE;EACnE,OAAQA,GAAG,IAAIA,GAAG,CAACC,UAAU,GAAID,GAAG,GAAG;IAAE,SAAS,EAAEA;EAAI,CAAC;AAC7D,CAAC;AACDE,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,oBAAoB,GAAGA,oBAAoB;AACnD,MAAMC,aAAa,GAAGR,eAAe,CAACS,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7D,MAAMC,SAAS,GAAGV,eAAe,CAACS,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACxE,MAAME,WAAW,GAAGX,eAAe,CAACS,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAC5E,MAAMG,UAAU,GAAG;EACf,GAAGD,WAAW,CAACE,OAAO;EACtBC,OAAO,EAAE,CACL,GAAGH,WAAW,CAACE,OAAO,CAACC,OAAO,CAACC,MAAM,CAAEC,MAAM,IAAKA,MAAM,KAAK,YAAY,CAAC,EAC1E,CAAC,YAAY,EAAE;IAAEC,GAAG,EAAE;EAAK,CAAC,CAAC;AAErC,CAAC;AACD,SAASV,oBAAoBA,CAACW,QAAQ,EAAE;EACpC,MAAMC,iBAAiB,GAAG,gBAAgB,CAACC,IAAI,CAACF,QAAQ,CAAC;EACzD,IAAIC,iBAAiB,EAAE;IACnB,OAAOX,aAAa,CAACK,OAAO,CAACQ,UAAU,CAAC,CAAC,CAAC,EAAEX,SAAS,CAACG,OAAO,EAAED,UAAU,CAAC,CAAC;EAC/E;EACA;EACA;EACA;EACA,MAAMU,QAAQ,GAAG,cAAc,CAACF,IAAI,CAACF,QAAQ,CAAC;EAC9C,OAAOI,QAAQ,GAAGd,aAAa,CAACK,OAAO,CAACQ,UAAU,CAAC,IAAI,CAAC,GAAGb,aAAa,CAACK,OAAO,CAACQ,UAAU,CAAC,KAAK,CAAC;AACtG","ignoreList":[]}},"mtime":1770561845806},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/index.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"\"use strict\";\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nmodule.exports = require('./src/core');\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicmVxdWlyZSJdLCJzb3VyY2VSb290IjoiL2hvbWUvY2N1c2VyLy5ucG0vX25weC82YTA5MDY2OWUyMWI0MzAzL25vZGVfbW9kdWxlcy9qc2NvZGVzaGlmdC8iLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vc3JjL2NvcmUnKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHQyxPQUFPLENBQUMsWUFBWSxDQUFDIiwiaWdub3JlTGlzdCI6W119","map":{"version":3,"names":["module","exports","require"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/","sources":["index.js"],"sourcesContent":["\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nmodule.exports = require('./src/core');\n"],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAA,MAAM,CAACC,OAAO,GAAGC,OAAO,CAAC,YAAY,CAAC","ignoreList":[]}},"mtime":1770561845687},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/babylon.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nconst babylon = require('@babel/parser');\nconst defaultOptions = {\n  sourceType: 'module',\n  allowImportExportEverywhere: true,\n  allowReturnOutsideFunction: true,\n  startLine: 1,\n  tokens: true,\n  plugins: [['flow', {\n    all: true\n  }], 'flowComments', 'jsx', 'asyncGenerators', 'bigInt', 'classProperties', 'classPrivateProperties', 'classPrivateMethods', ['decorators', {\n    decoratorsBeforeExport: false\n  }], 'doExpressions', 'dynamicImport', 'exportDefaultFrom', 'exportNamespaceFrom', 'functionBind', 'functionSent', 'importMeta', 'logicalAssignment', 'nullishCoalescingOperator', 'numericSeparator', 'objectRestSpread', 'optionalCatchBinding', 'optionalChaining', ['pipelineOperator', {\n    proposal: 'minimal'\n  }], 'throwExpressions']\n};\n\n/**\n * Wrapper to set default options\n */\nmodule.exports = function (options = defaultOptions) {\n  return {\n    parse(code) {\n      return babylon.parse(code, options);\n    }\n  };\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYWJ5bG9uIiwicmVxdWlyZSIsImRlZmF1bHRPcHRpb25zIiwic291cmNlVHlwZSIsImFsbG93SW1wb3J0RXhwb3J0RXZlcnl3aGVyZSIsImFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uIiwic3RhcnRMaW5lIiwidG9rZW5zIiwicGx1Z2lucyIsImFsbCIsImRlY29yYXRvcnNCZWZvcmVFeHBvcnQiLCJwcm9wb3NhbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJvcHRpb25zIiwicGFyc2UiLCJjb2RlIl0sInNvdXJjZVJvb3QiOiIvaG9tZS9jY3VzZXIvLm5wbS9fbnB4LzZhMDkwNjY5ZTIxYjQzMDMvbm9kZV9tb2R1bGVzL2pzY29kZXNoaWZ0L3BhcnNlci8iLCJzb3VyY2VzIjpbImJhYnlsb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuY29uc3QgYmFieWxvbiA9IHJlcXVpcmUoJ0BiYWJlbC9wYXJzZXInKTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICBhbGxvd0ltcG9ydEV4cG9ydEV2ZXJ5d2hlcmU6IHRydWUsXG4gIGFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uOiB0cnVlLFxuICBzdGFydExpbmU6IDEsXG4gIHRva2VuczogdHJ1ZSxcbiAgcGx1Z2luczogW1xuICAgIFsnZmxvdycsIHthbGw6IHRydWV9XSxcbiAgICAnZmxvd0NvbW1lbnRzJyxcbiAgICAnanN4JyxcblxuICAgICdhc3luY0dlbmVyYXRvcnMnLFxuICAgICdiaWdJbnQnLFxuICAgICdjbGFzc1Byb3BlcnRpZXMnLFxuICAgICdjbGFzc1ByaXZhdGVQcm9wZXJ0aWVzJyxcbiAgICAnY2xhc3NQcml2YXRlTWV0aG9kcycsXG4gICAgWydkZWNvcmF0b3JzJywge2RlY29yYXRvcnNCZWZvcmVFeHBvcnQ6IGZhbHNlfV0sXG4gICAgJ2RvRXhwcmVzc2lvbnMnLFxuICAgICdkeW5hbWljSW1wb3J0JyxcbiAgICAnZXhwb3J0RGVmYXVsdEZyb20nLFxuICAgICdleHBvcnROYW1lc3BhY2VGcm9tJyxcbiAgICAnZnVuY3Rpb25CaW5kJyxcbiAgICAnZnVuY3Rpb25TZW50JyxcbiAgICAnaW1wb3J0TWV0YScsXG4gICAgJ2xvZ2ljYWxBc3NpZ25tZW50JyxcbiAgICAnbnVsbGlzaENvYWxlc2NpbmdPcGVyYXRvcicsXG4gICAgJ251bWVyaWNTZXBhcmF0b3InLFxuICAgICdvYmplY3RSZXN0U3ByZWFkJyxcbiAgICAnb3B0aW9uYWxDYXRjaEJpbmRpbmcnLFxuICAgICdvcHRpb25hbENoYWluaW5nJyxcbiAgICBbJ3BpcGVsaW5lT3BlcmF0b3InLCB7cHJvcG9zYWw6ICdtaW5pbWFsJ31dLFxuICAgICd0aHJvd0V4cHJlc3Npb25zJyxcbiAgXSxcbn07XG5cbi8qKlxuICogV3JhcHBlciB0byBzZXQgZGVmYXVsdCBvcHRpb25zXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucz1kZWZhdWx0T3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIHBhcnNlKGNvZGUpIHtcbiAgICAgIHJldHVybiBiYWJ5bG9uLnBhcnNlKGNvZGUsIG9wdGlvbnMpO1xuICAgIH0sXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWTs7QUFFWixNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFFeEMsTUFBTUMsY0FBYyxHQUFHO0VBQ3JCQyxVQUFVLEVBQUUsUUFBUTtFQUNwQkMsMkJBQTJCLEVBQUUsSUFBSTtFQUNqQ0MsMEJBQTBCLEVBQUUsSUFBSTtFQUNoQ0MsU0FBUyxFQUFFLENBQUM7RUFDWkMsTUFBTSxFQUFFLElBQUk7RUFDWkMsT0FBTyxFQUFFLENBQ1AsQ0FBQyxNQUFNLEVBQUU7SUFBQ0MsR0FBRyxFQUFFO0VBQUksQ0FBQyxDQUFDLEVBQ3JCLGNBQWMsRUFDZCxLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixDQUFDLFlBQVksRUFBRTtJQUFDQyxzQkFBc0IsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUMvQyxlQUFlLEVBQ2YsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsQ0FBQyxrQkFBa0IsRUFBRTtJQUFDQyxRQUFRLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFDM0Msa0JBQWtCO0FBRXRCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0FDLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLFVBQVNDLE9BQU8sR0FBQ1osY0FBYyxFQUFFO0VBQ2hELE9BQU87SUFDTGEsS0FBS0EsQ0FBQ0MsSUFBSSxFQUFFO01BQ1YsT0FBT2hCLE9BQU8sQ0FBQ2UsS0FBSyxDQUFDQyxJQUFJLEVBQUVGLE9BQU8sQ0FBQztJQUNyQztFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119","map":{"version":3,"names":["babylon","require","defaultOptions","sourceType","allowImportExportEverywhere","allowReturnOutsideFunction","startLine","tokens","plugins","all","decoratorsBeforeExport","proposal","module","exports","options","parse","code"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/","sources":["babylon.js"],"sourcesContent":["\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nconst babylon = require('@babel/parser');\n\nconst defaultOptions = {\n  sourceType: 'module',\n  allowImportExportEverywhere: true,\n  allowReturnOutsideFunction: true,\n  startLine: 1,\n  tokens: true,\n  plugins: [\n    ['flow', {all: true}],\n    'flowComments',\n    'jsx',\n\n    'asyncGenerators',\n    'bigInt',\n    'classProperties',\n    'classPrivateProperties',\n    'classPrivateMethods',\n    ['decorators', {decoratorsBeforeExport: false}],\n    'doExpressions',\n    'dynamicImport',\n    'exportDefaultFrom',\n    'exportNamespaceFrom',\n    'functionBind',\n    'functionSent',\n    'importMeta',\n    'logicalAssignment',\n    'nullishCoalescingOperator',\n    'numericSeparator',\n    'objectRestSpread',\n    'optionalCatchBinding',\n    'optionalChaining',\n    ['pipelineOperator', {proposal: 'minimal'}],\n    'throwExpressions',\n  ],\n};\n\n/**\n * Wrapper to set default options\n */\nmodule.exports = function(options=defaultOptions) {\n  return {\n    parse(code) {\n      return babylon.parse(code, options);\n    },\n  };\n};\n"],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,MAAMA,OAAO,GAAGC,OAAO,CAAC,eAAe,CAAC;AAExC,MAAMC,cAAc,GAAG;EACrBC,UAAU,EAAE,QAAQ;EACpBC,2BAA2B,EAAE,IAAI;EACjCC,0BAA0B,EAAE,IAAI;EAChCC,SAAS,EAAE,CAAC;EACZC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CACP,CAAC,MAAM,EAAE;IAACC,GAAG,EAAE;EAAI,CAAC,CAAC,EACrB,cAAc,EACd,KAAK,EAEL,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,CAAC,YAAY,EAAE;IAACC,sBAAsB,EAAE;EAAK,CAAC,CAAC,EAC/C,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,CAAC,kBAAkB,EAAE;IAACC,QAAQ,EAAE;EAAS,CAAC,CAAC,EAC3C,kBAAkB;AAEtB,CAAC;;AAED;AACA;AACA;AACAC,MAAM,CAACC,OAAO,GAAG,UAASC,OAAO,GAACZ,cAAc,EAAE;EAChD,OAAO;IACLa,KAAKA,CAACC,IAAI,EAAE;MACV,OAAOhB,OAAO,CAACe,KAAK,CAACC,IAAI,EAAEF,OAAO,CAAC;IACrC;EACF,CAAC;AACH,CAAC","ignoreList":[]}},"mtime":1770561845468},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/tsOptions.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Options shared by the TypeScript and TSX parsers.\n */\nmodule.exports = {\n  sourceType: 'module',\n  allowImportExportEverywhere: true,\n  allowReturnOutsideFunction: true,\n  startLine: 1,\n  tokens: true,\n  plugins: ['asyncGenerators', 'decoratorAutoAccessors', 'bigInt', 'classPrivateMethods', 'classPrivateProperties', 'classProperties', 'decorators-legacy', 'doExpressions', 'dynamicImport', 'exportDefaultFrom', 'exportExtensions', 'exportNamespaceFrom', 'functionBind', 'functionSent', 'importAttributes', 'importMeta', 'nullishCoalescingOperator', 'numericSeparator', 'objectRestSpread', 'optionalCatchBinding', 'optionalChaining', ['pipelineOperator', {\n    proposal: 'minimal'\n  }], 'throwExpressions', 'typescript']\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwic291cmNlVHlwZSIsImFsbG93SW1wb3J0RXhwb3J0RXZlcnl3aGVyZSIsImFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uIiwic3RhcnRMaW5lIiwidG9rZW5zIiwicGx1Z2lucyIsInByb3Bvc2FsIl0sInNvdXJjZVJvb3QiOiIvaG9tZS9jY3VzZXIvLm5wbS9fbnB4LzZhMDkwNjY5ZTIxYjQzMDMvbm9kZV9tb2R1bGVzL2pzY29kZXNoaWZ0L3BhcnNlci8iLCJzb3VyY2VzIjpbInRzT3B0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE9wdGlvbnMgc2hhcmVkIGJ5IHRoZSBUeXBlU2NyaXB0IGFuZCBUU1ggcGFyc2Vycy5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICBhbGxvd0ltcG9ydEV4cG9ydEV2ZXJ5d2hlcmU6IHRydWUsXG4gIGFsbG93UmV0dXJuT3V0c2lkZUZ1bmN0aW9uOiB0cnVlLFxuICBzdGFydExpbmU6IDEsXG4gIHRva2VuczogdHJ1ZSxcbiAgcGx1Z2luczogW1xuICAgICdhc3luY0dlbmVyYXRvcnMnLFxuICAgICdkZWNvcmF0b3JBdXRvQWNjZXNzb3JzJyxcbiAgICAnYmlnSW50JyxcbiAgICAnY2xhc3NQcml2YXRlTWV0aG9kcycsXG4gICAgJ2NsYXNzUHJpdmF0ZVByb3BlcnRpZXMnLFxuICAgICdjbGFzc1Byb3BlcnRpZXMnLFxuICAgICdkZWNvcmF0b3JzLWxlZ2FjeScsXG4gICAgJ2RvRXhwcmVzc2lvbnMnLFxuICAgICdkeW5hbWljSW1wb3J0JyxcbiAgICAnZXhwb3J0RGVmYXVsdEZyb20nLFxuICAgICdleHBvcnRFeHRlbnNpb25zJyxcbiAgICAnZXhwb3J0TmFtZXNwYWNlRnJvbScsXG4gICAgJ2Z1bmN0aW9uQmluZCcsXG4gICAgJ2Z1bmN0aW9uU2VudCcsXG4gICAgJ2ltcG9ydEF0dHJpYnV0ZXMnLFxuICAgICdpbXBvcnRNZXRhJyxcbiAgICAnbnVsbGlzaENvYWxlc2NpbmdPcGVyYXRvcicsXG4gICAgJ251bWVyaWNTZXBhcmF0b3InLFxuICAgICdvYmplY3RSZXN0U3ByZWFkJyxcbiAgICAnb3B0aW9uYWxDYXRjaEJpbmRpbmcnLFxuICAgICdvcHRpb25hbENoYWluaW5nJyxcbiAgICBbJ3BpcGVsaW5lT3BlcmF0b3InLCB7IHByb3Bvc2FsOiAnbWluaW1hbCcgfV0sXG4gICAgJ3Rocm93RXhwcmVzc2lvbnMnLFxuICAgICd0eXBlc2NyaXB0J1xuICBdLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQywyQkFBMkIsRUFBRSxJQUFJO0VBQ2pDQywwQkFBMEIsRUFBRSxJQUFJO0VBQ2hDQyxTQUFTLEVBQUUsQ0FBQztFQUNaQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxPQUFPLEVBQUUsQ0FDUCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDUixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osMkJBQTJCLEVBQzNCLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixDQUFDLGtCQUFrQixFQUFFO0lBQUVDLFFBQVEsRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUM3QyxrQkFBa0IsRUFDbEIsWUFBWTtBQUVoQixDQUFDIiwiaWdub3JlTGlzdCI6W119","map":{"version":3,"names":["module","exports","sourceType","allowImportExportEverywhere","allowReturnOutsideFunction","startLine","tokens","plugins","proposal"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/","sources":["tsOptions.js"],"sourcesContent":["\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Options shared by the TypeScript and TSX parsers.\n */\nmodule.exports = {\n  sourceType: 'module',\n  allowImportExportEverywhere: true,\n  allowReturnOutsideFunction: true,\n  startLine: 1,\n  tokens: true,\n  plugins: [\n    'asyncGenerators',\n    'decoratorAutoAccessors',\n    'bigInt',\n    'classPrivateMethods',\n    'classPrivateProperties',\n    'classProperties',\n    'decorators-legacy',\n    'doExpressions',\n    'dynamicImport',\n    'exportDefaultFrom',\n    'exportExtensions',\n    'exportNamespaceFrom',\n    'functionBind',\n    'functionSent',\n    'importAttributes',\n    'importMeta',\n    'nullishCoalescingOperator',\n    'numericSeparator',\n    'objectRestSpread',\n    'optionalCatchBinding',\n    'optionalChaining',\n    ['pipelineOperator', { proposal: 'minimal' }],\n    'throwExpressions',\n    'typescript'\n  ],\n};\n"],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ;AACA;AACA;AACAA,MAAM,CAACC,OAAO,GAAG;EACfC,UAAU,EAAE,QAAQ;EACpBC,2BAA2B,EAAE,IAAI;EACjCC,0BAA0B,EAAE,IAAI;EAChCC,SAAS,EAAE,CAAC;EACZC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE,CACP,iBAAiB,EACjB,wBAAwB,EACxB,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,CAAC,kBAAkB,EAAE;IAAEC,QAAQ,EAAE;EAAU,CAAC,CAAC,EAC7C,kBAAkB,EAClB,YAAY;AAEhB,CAAC","ignoreList":[]}},"mtime":1770561845867},"{\"assumptions\":{},\"sourceRoot\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/\",\"configFile\":false,\"babelrc\":false,\"caller\":{\"name\":\"@babel/register\"},\"cwd\":\"/home/ccuser/the-50-dollar-app\",\"filename\":\"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/tsx.js\",\"targets\":{},\"cloneInputAst\":true,\"browserslistConfigFile\":false,\"passPerPreset\":false,\"envName\":\"development\",\"root\":\"/home/ccuser/the-50-dollar-app\",\"rootMode\":\"root\",\"plugins\":[{\"key\":\"transform-class-properties\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-nullish-coalescing-operator\",\"visitor\":{\"LogicalExpression\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-optional-chaining\",\"visitor\":{\"_exploded\":true,\"OptionalCallExpression\":{\"enter\":[null]},\"OptionalMemberExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-modules-commonjs\",\"visitor\":{\"Program\":{\"exit\":[null]},\"_exploded\":true,\"CallExpression\":{\"enter\":[null]},\"ImportExpression\":{\"enter\":[null]},\"_verified\":true},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-private-methods\",\"visitor\":{\"ExportDefaultDeclaration\":{\"enter\":[null]},\"_exploded\":true,\"_verified\":true,\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]},{\"key\":\"transform-flow-strip-types\",\"visitor\":{\"Program\":{\"enter\":[null]},\"ImportDeclaration\":{\"enter\":[null,null]},\"ClassPrivateProperty\":{\"enter\":[null]},\"AssignmentPattern\":{\"enter\":[null]},\"TypeCastExpression\":{\"enter\":[null,null]},\"CallExpression\":{\"enter\":[null]},\"JSXOpeningElement\":{\"enter\":[null]},\"OptionalCallExpression\":{\"enter\":[null]},\"NewExpression\":{\"enter\":[null]},\"ImportSpecifier\":{\"enter\":[null]},\"ClassExpression\":{\"enter\":[null]},\"ClassDeclaration\":{\"enter\":[null]},\"FunctionDeclaration\":{\"enter\":[null]},\"FunctionExpression\":{\"enter\":[null]},\"ObjectMethod\":{\"enter\":[null]},\"ArrowFunctionExpression\":{\"enter\":[null]},\"ClassMethod\":{\"enter\":[null]},\"ClassPrivateMethod\":{\"enter\":[null]},\"AnyTypeAnnotation\":{\"enter\":[null]},\"ArrayTypeAnnotation\":{\"enter\":[null]},\"BooleanTypeAnnotation\":{\"enter\":[null]},\"BooleanLiteralTypeAnnotation\":{\"enter\":[null]},\"NullLiteralTypeAnnotation\":{\"enter\":[null]},\"ClassImplements\":{\"enter\":[null]},\"DeclareClass\":{\"enter\":[null]},\"DeclareFunction\":{\"enter\":[null]},\"DeclareInterface\":{\"enter\":[null]},\"DeclareModule\":{\"enter\":[null]},\"DeclareModuleExports\":{\"enter\":[null]},\"DeclareTypeAlias\":{\"enter\":[null]},\"DeclareOpaqueType\":{\"enter\":[null]},\"DeclareVariable\":{\"enter\":[null]},\"DeclareExportDeclaration\":{\"enter\":[null]},\"DeclareExportAllDeclaration\":{\"enter\":[null]},\"DeclaredPredicate\":{\"enter\":[null]},\"ExistsTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeAnnotation\":{\"enter\":[null]},\"FunctionTypeParam\":{\"enter\":[null]},\"GenericTypeAnnotation\":{\"enter\":[null]},\"InferredPredicate\":{\"enter\":[null]},\"InterfaceExtends\":{\"enter\":[null]},\"InterfaceDeclaration\":{\"enter\":[null]},\"InterfaceTypeAnnotation\":{\"enter\":[null]},\"IntersectionTypeAnnotation\":{\"enter\":[null]},\"MixedTypeAnnotation\":{\"enter\":[null]},\"EmptyTypeAnnotation\":{\"enter\":[null]},\"NullableTypeAnnotation\":{\"enter\":[null]},\"NumberLiteralTypeAnnotation\":{\"enter\":[null]},\"NumberTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeAnnotation\":{\"enter\":[null]},\"ObjectTypeInternalSlot\":{\"enter\":[null]},\"ObjectTypeCallProperty\":{\"enter\":[null]},\"ObjectTypeIndexer\":{\"enter\":[null]},\"ObjectTypeProperty\":{\"enter\":[null]},\"ObjectTypeSpreadProperty\":{\"enter\":[null]},\"OpaqueType\":{\"enter\":[null]},\"QualifiedTypeIdentifier\":{\"enter\":[null]},\"StringLiteralTypeAnnotation\":{\"enter\":[null]},\"StringTypeAnnotation\":{\"enter\":[null]},\"SymbolTypeAnnotation\":{\"enter\":[null]},\"ThisTypeAnnotation\":{\"enter\":[null]},\"TupleTypeAnnotation\":{\"enter\":[null]},\"TypeofTypeAnnotation\":{\"enter\":[null]},\"TypeAlias\":{\"enter\":[null]},\"TypeAnnotation\":{\"enter\":[null]},\"TypeParameter\":{\"enter\":[null]},\"TypeParameterDeclaration\":{\"enter\":[null]},\"TypeParameterInstantiation\":{\"enter\":[null]},\"UnionTypeAnnotation\":{\"enter\":[null]},\"Variance\":{\"enter\":[null]},\"VoidTypeAnnotation\":{\"enter\":[null]},\"EnumDeclaration\":{\"enter\":[null]},\"EnumBooleanBody\":{\"enter\":[null]},\"EnumNumberBody\":{\"enter\":[null]},\"EnumStringBody\":{\"enter\":[null]},\"EnumSymbolBody\":{\"enter\":[null]},\"EnumBooleanMember\":{\"enter\":[null]},\"EnumNumberMember\":{\"enter\":[null]},\"EnumStringMember\":{\"enter\":[null]},\"EnumDefaultedMember\":{\"enter\":[null]},\"IndexedAccessType\":{\"enter\":[null]},\"OptionalIndexedAccessType\":{\"enter\":[null]},\"ExportAllDeclaration\":{\"enter\":[null]},\"ExportDefaultDeclaration\":{\"enter\":[null]},\"ExportNamedDeclaration\":{\"enter\":[null]}},\"options\":{},\"externalDependencies\":[]}],\"presets\":[]}:7.29.0:development":{"value":{"code":"/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nconst babylon = require('@babel/parser');\nconst baseOptions = require('./tsOptions');\nconst options = Object.assign({}, baseOptions);\noptions.plugins = ['jsx'].concat(baseOptions.plugins);\n\n/**\n * Doesn't accept custom options because babylon should be used directly in\n * that case.\n */\nmodule.exports = function () {\n  return {\n    parse(code) {\n      return babylon.parse(code, options);\n    }\n  };\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYWJ5bG9uIiwicmVxdWlyZSIsImJhc2VPcHRpb25zIiwib3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsInBsdWdpbnMiLCJjb25jYXQiLCJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJjb2RlIl0sInNvdXJjZVJvb3QiOiIvaG9tZS9jY3VzZXIvLm5wbS9fbnB4LzZhMDkwNjY5ZTIxYjQzMDMvbm9kZV9tb2R1bGVzL2pzY29kZXNoaWZ0L3BhcnNlci8iLCJzb3VyY2VzIjpbInRzeC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBiYWJ5bG9uID0gcmVxdWlyZSgnQGJhYmVsL3BhcnNlcicpO1xuY29uc3QgYmFzZU9wdGlvbnMgPSByZXF1aXJlKCcuL3RzT3B0aW9ucycpO1xuXG5jb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgYmFzZU9wdGlvbnMpO1xub3B0aW9ucy5wbHVnaW5zID0gWydqc3gnXS5jb25jYXQoYmFzZU9wdGlvbnMucGx1Z2lucyk7XG5cbi8qKlxuICogRG9lc24ndCBhY2NlcHQgY3VzdG9tIG9wdGlvbnMgYmVjYXVzZSBiYWJ5bG9uIHNob3VsZCBiZSB1c2VkIGRpcmVjdGx5IGluXG4gKiB0aGF0IGNhc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB7XG4gICAgcGFyc2UoY29kZSkge1xuICAgICAgcmV0dXJuIGJhYnlsb24ucGFyc2UoY29kZSwgb3B0aW9ucyk7XG4gICAgfSxcbiAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZOztBQUVaLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUN4QyxNQUFNQyxXQUFXLEdBQUdELE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFFMUMsTUFBTUUsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRUgsV0FBVyxDQUFDO0FBQzlDQyxPQUFPLENBQUNHLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDQyxNQUFNLENBQUNMLFdBQVcsQ0FBQ0ksT0FBTyxDQUFDOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBRSxNQUFNLENBQUNDLE9BQU8sR0FBRyxZQUFXO0VBQzFCLE9BQU87SUFDTEMsS0FBS0EsQ0FBQ0MsSUFBSSxFQUFFO01BQ1YsT0FBT1gsT0FBTyxDQUFDVSxLQUFLLENBQUNDLElBQUksRUFBRVIsT0FBTyxDQUFDO0lBQ3JDO0VBQ0YsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=","map":{"version":3,"names":["babylon","require","baseOptions","options","Object","assign","plugins","concat","module","exports","parse","code"],"sourceRoot":"/home/ccuser/.npm/_npx/6a090669e21b4303/node_modules/jscodeshift/parser/","sources":["tsx.js"],"sourcesContent":["\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nconst babylon = require('@babel/parser');\nconst baseOptions = require('./tsOptions');\n\nconst options = Object.assign({}, baseOptions);\noptions.plugins = ['jsx'].concat(baseOptions.plugins);\n\n/**\n * Doesn't accept custom options because babylon should be used directly in\n * that case.\n */\nmodule.exports = function() {\n  return {\n    parse(code) {\n      return babylon.parse(code, options);\n    },\n  };\n};\n"],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;;AAEZ,MAAMA,OAAO,GAAGC,OAAO,CAAC,eAAe,CAAC;AACxC,MAAMC,WAAW,GAAGD,OAAO,CAAC,aAAa,CAAC;AAE1C,MAAME,OAAO,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEH,WAAW,CAAC;AAC9CC,OAAO,CAACG,OAAO,GAAG,CAAC,KAAK,CAAC,CAACC,MAAM,CAACL,WAAW,CAACI,OAAO,CAAC;;AAErD;AACA;AACA;AACA;AACAE,MAAM,CAACC,OAAO,GAAG,YAAW;EAC1B,OAAO;IACLC,KAAKA,CAACC,IAAI,EAAE;MACV,OAAOX,OAAO,CAACU,KAAK,CAACC,IAAI,EAAER,OAAO,CAAC;IACrC;EACF,CAAC;AACH,CAAC","ignoreList":[]}},"mtime":1770561845869}}