{"ast":null,"code":"var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n};\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { QiniuErrorName, QiniuError, QiniuRequestError } from '../errors';\nimport * as utils from '../utils';\nexport var DEFAULT_CHUNK_SIZE = 4; // 单位 MB\n// code 信息地址 https://developer.qiniu.com/kodo/3928/error-responses\nexport var FREEZE_CODE_LIST = [0, 502, 503, 504, 599]; // 将会冻结当前 host 的 code\nexport var RETRY_CODE_LIST = __spread(FREEZE_CODE_LIST, [612]); // 会进行重试的 code\nvar GB = Math.pow(1024, 3);\nvar Base = /** @class */function () {\n function Base(options, handlers, hostPool, logger) {\n this.hostPool = hostPool;\n this.logger = logger;\n this.aborted = false;\n this.retryCount = 0;\n this.xhrList = [];\n this.config = options.config;\n logger.info('config inited.', this.config);\n this.putExtra = __assign({\n fname: ''\n }, options.putExtra);\n logger.info('putExtra inited.', this.putExtra);\n this.key = options.key;\n this.file = options.file;\n this.token = options.token;\n this.onData = handlers.onData;\n this.onError = handlers.onError;\n this.onComplete = handlers.onComplete;\n try {\n var putPolicy = utils.getPutPolicy(this.token);\n this.bucketName = putPolicy.bucketName;\n this.assessKey = putPolicy.assessKey;\n } catch (error) {\n logger.error('get putPolicy from token failed.', error);\n this.onError(error);\n }\n }\n // 检查并更新 upload host\n Base.prototype.checkAndUpdateUploadHost = function () {\n return __awaiter(this, void 0, void 0, function () {\n var newHost;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 从 hostPool 中获取一个可用的 host 挂载在 this\n this.logger.info('get available upload host.');\n return [4 /*yield*/, this.hostPool.getUp(this.assessKey, this.bucketName, this.config.upprotocol)];\n case 1:\n newHost = _a.sent();\n if (newHost == null) {\n throw new QiniuError(QiniuErrorName.NotAvailableUploadHost, 'no available upload host.');\n }\n if (this.uploadHost != null && this.uploadHost.host !== newHost.host) {\n this.logger.warn(\"host switches from \" + this.uploadHost.host + \" to \" + newHost.host + \".\");\n } else {\n this.logger.info(\"use host \" + newHost.host + \".\");\n }\n this.uploadHost = newHost;\n return [2 /*return*/];\n }\n });\n });\n };\n // 检查并解冻当前的 host\n Base.prototype.checkAndUnfreezeHost = function () {\n this.logger.info('check unfreeze host.');\n if (this.uploadHost != null && this.uploadHost.isFrozen()) {\n this.logger.warn(this.uploadHost.host + \" will be unfrozen.\");\n this.uploadHost.unfreeze();\n }\n };\n // 检查并更新冻结当前的 host\n Base.prototype.checkAndFreezeHost = function (error) {\n this.logger.info('check freeze host.');\n if (error instanceof QiniuRequestError && this.uploadHost != null) {\n if (FREEZE_CODE_LIST.includes(error.code)) {\n this.logger.warn(this.uploadHost.host + \" will be temporarily frozen.\");\n this.uploadHost.freeze();\n }\n }\n };\n Base.prototype.handleError = function (error) {\n this.logger.error(error.message);\n this.onError(error);\n };\n /**\n * @returns Promise 返回结果与上传最终状态无关,状态信息请通过 [Subscriber] 获取。\n * @description 上传文件,状态信息请通过 [Subscriber] 获取。\n */\n Base.prototype.putFile = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result, err_1, notReachRetryCount, needRetry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.aborted = false;\n if (!this.putExtra.fname) {\n this.logger.info('use file.name as fname.');\n this.putExtra.fname = this.file.name;\n }\n if (this.file.size > 10000 * GB) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidFile, 'file size exceed maximum value 10000G'));\n return [2 /*return*/];\n }\n if (this.putExtra.customVars) {\n if (!utils.isCustomVarsValid(this.putExtra.customVars)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidCustomVars,\n // FIXME: width => with\n 'customVars key should start width x:'));\n return [2 /*return*/];\n }\n }\n if (this.putExtra.metadata) {\n if (!utils.isMetaDataValid(this.putExtra.metadata)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidMetadata, 'metadata key should start with x-qn-meta-'));\n return [2 /*return*/];\n }\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4,, 5]);\n this.uploadAt = new Date().getTime();\n return [4 /*yield*/, this.checkAndUpdateUploadHost()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.run()];\n case 3:\n result = _a.sent();\n this.onComplete(result.data);\n this.checkAndUnfreezeHost();\n this.sendLog(result.reqId, 200);\n return [2 /*return*/];\n case 4:\n err_1 = _a.sent();\n if (this.aborted) {\n this.logger.warn('upload is aborted.');\n this.sendLog('', -2);\n return [2 /*return*/];\n }\n this.clear();\n this.logger.error(err_1);\n if (err_1 instanceof QiniuRequestError) {\n this.sendLog(err_1.reqId, err_1.code);\n // 检查并冻结当前的 host\n this.checkAndFreezeHost(err_1);\n notReachRetryCount = ++this.retryCount <= this.config.retryCount;\n needRetry = RETRY_CODE_LIST.includes(err_1.code);\n // 以下条件满足其中之一则会进行重新上传:\n // 1. 满足 needRetry 的条件且 retryCount 不为 0\n // 2. uploadId 无效时在 resume 里会清除本地数据,并且这里触发重新上传\n if (needRetry && notReachRetryCount) {\n this.logger.warn(\"error auto retry: \" + this.retryCount + \"/\" + this.config.retryCount + \".\");\n this.putFile();\n return [2 /*return*/];\n }\n }\n this.onError(err_1);\n return [3 /*break*/, 5];\n case 5:\n return [2 /*return*/];\n }\n });\n });\n };\n Base.prototype.clear = function () {\n this.xhrList.forEach(function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n });\n this.xhrList = [];\n this.logger.info('cleanup uploading xhr.');\n };\n Base.prototype.stop = function () {\n this.logger.info('aborted.');\n this.clear();\n this.aborted = true;\n };\n Base.prototype.addXhr = function (xhr) {\n this.xhrList.push(xhr);\n };\n Base.prototype.sendLog = function (reqId, code) {\n var _a, _b;\n this.logger.report({\n code: code,\n reqId: reqId,\n remoteIp: '',\n upType: 'jssdk-h5',\n size: this.file.size,\n time: Math.floor(this.uploadAt / 1000),\n port: utils.getPortFromUrl((_a = this.uploadHost) === null || _a === void 0 ? void 0 : _a.getUrl()),\n host: utils.getDomainFromUrl((_b = this.uploadHost) === null || _b === void 0 ? void 0 : _b.getUrl()),\n bytesSent: this.progress ? this.progress.total.loaded : 0,\n duration: Math.floor((new Date().getTime() - this.uploadAt) / 1000)\n });\n };\n Base.prototype.getProgressInfoItem = function (loaded, size, fromCache) {\n return __assign({\n size: size,\n loaded: loaded,\n percent: loaded / size * 100\n }, fromCache == null ? {} : {\n fromCache: fromCache\n });\n };\n return Base;\n}();\nexport default Base;","map":{"version":3,"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","_","label","sent","trys","ops","f","y","g","verb","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","r","ar","error","__spread","concat","QiniuErrorName","QiniuError","QiniuRequestError","utils","DEFAULT_CHUNK_SIZE","FREEZE_CODE_LIST","RETRY_CODE_LIST","GB","Math","pow","Base","options","handlers","hostPool","logger","aborted","retryCount","xhrList","config","info","putExtra","fname","key","file","token","onData","onError","onComplete","putPolicy","getPutPolicy","bucketName","assessKey","checkAndUpdateUploadHost","newHost","_a","getUp","upprotocol","NotAvailableUploadHost","uploadHost","host","warn","checkAndUnfreezeHost","isFrozen","unfreeze","checkAndFreezeHost","includes","code","freeze","handleError","message","putFile","err_1","notReachRetryCount","needRetry","name","size","InvalidFile","customVars","isCustomVarsValid","InvalidCustomVars","metadata","isMetaDataValid","InvalidMetadata","uploadAt","Date","getTime","run","data","sendLog","reqId","clear","forEach","xhr","onreadystatechange","abort","stop","addXhr","_b","report","remoteIp","upType","time","floor","port","getPortFromUrl","getUrl","getDomainFromUrl","bytesSent","progress","total","loaded","duration","getProgressInfoItem","fromCache","percent"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/qiniu-js/esm/upload/base.js"],"sourcesContent":["var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { QiniuErrorName, QiniuError, QiniuRequestError } from '../errors';\nimport * as utils from '../utils';\nexport var DEFAULT_CHUNK_SIZE = 4; // 单位 MB\n// code 信息地址 https://developer.qiniu.com/kodo/3928/error-responses\nexport var FREEZE_CODE_LIST = [0, 502, 503, 504, 599]; // 将会冻结当前 host 的 code\nexport var RETRY_CODE_LIST = __spread(FREEZE_CODE_LIST, [612]); // 会进行重试的 code\nvar GB = Math.pow(1024, 3);\nvar Base = /** @class */ (function () {\n function Base(options, handlers, hostPool, logger) {\n this.hostPool = hostPool;\n this.logger = logger;\n this.aborted = false;\n this.retryCount = 0;\n this.xhrList = [];\n this.config = options.config;\n logger.info('config inited.', this.config);\n this.putExtra = __assign({ fname: '' }, options.putExtra);\n logger.info('putExtra inited.', this.putExtra);\n this.key = options.key;\n this.file = options.file;\n this.token = options.token;\n this.onData = handlers.onData;\n this.onError = handlers.onError;\n this.onComplete = handlers.onComplete;\n try {\n var putPolicy = utils.getPutPolicy(this.token);\n this.bucketName = putPolicy.bucketName;\n this.assessKey = putPolicy.assessKey;\n }\n catch (error) {\n logger.error('get putPolicy from token failed.', error);\n this.onError(error);\n }\n }\n // 检查并更新 upload host\n Base.prototype.checkAndUpdateUploadHost = function () {\n return __awaiter(this, void 0, void 0, function () {\n var newHost;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 从 hostPool 中获取一个可用的 host 挂载在 this\n this.logger.info('get available upload host.');\n return [4 /*yield*/, this.hostPool.getUp(this.assessKey, this.bucketName, this.config.upprotocol)];\n case 1:\n newHost = _a.sent();\n if (newHost == null) {\n throw new QiniuError(QiniuErrorName.NotAvailableUploadHost, 'no available upload host.');\n }\n if (this.uploadHost != null && this.uploadHost.host !== newHost.host) {\n this.logger.warn(\"host switches from \" + this.uploadHost.host + \" to \" + newHost.host + \".\");\n }\n else {\n this.logger.info(\"use host \" + newHost.host + \".\");\n }\n this.uploadHost = newHost;\n return [2 /*return*/];\n }\n });\n });\n };\n // 检查并解冻当前的 host\n Base.prototype.checkAndUnfreezeHost = function () {\n this.logger.info('check unfreeze host.');\n if (this.uploadHost != null && this.uploadHost.isFrozen()) {\n this.logger.warn(this.uploadHost.host + \" will be unfrozen.\");\n this.uploadHost.unfreeze();\n }\n };\n // 检查并更新冻结当前的 host\n Base.prototype.checkAndFreezeHost = function (error) {\n this.logger.info('check freeze host.');\n if (error instanceof QiniuRequestError && this.uploadHost != null) {\n if (FREEZE_CODE_LIST.includes(error.code)) {\n this.logger.warn(this.uploadHost.host + \" will be temporarily frozen.\");\n this.uploadHost.freeze();\n }\n }\n };\n Base.prototype.handleError = function (error) {\n this.logger.error(error.message);\n this.onError(error);\n };\n /**\n * @returns Promise 返回结果与上传最终状态无关,状态信息请通过 [Subscriber] 获取。\n * @description 上传文件,状态信息请通过 [Subscriber] 获取。\n */\n Base.prototype.putFile = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result, err_1, notReachRetryCount, needRetry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.aborted = false;\n if (!this.putExtra.fname) {\n this.logger.info('use file.name as fname.');\n this.putExtra.fname = this.file.name;\n }\n if (this.file.size > 10000 * GB) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidFile, 'file size exceed maximum value 10000G'));\n return [2 /*return*/];\n }\n if (this.putExtra.customVars) {\n if (!utils.isCustomVarsValid(this.putExtra.customVars)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidCustomVars, \n // FIXME: width => with\n 'customVars key should start width x:'));\n return [2 /*return*/];\n }\n }\n if (this.putExtra.metadata) {\n if (!utils.isMetaDataValid(this.putExtra.metadata)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidMetadata, 'metadata key should start with x-qn-meta-'));\n return [2 /*return*/];\n }\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n this.uploadAt = new Date().getTime();\n return [4 /*yield*/, this.checkAndUpdateUploadHost()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.run()];\n case 3:\n result = _a.sent();\n this.onComplete(result.data);\n this.checkAndUnfreezeHost();\n this.sendLog(result.reqId, 200);\n return [2 /*return*/];\n case 4:\n err_1 = _a.sent();\n if (this.aborted) {\n this.logger.warn('upload is aborted.');\n this.sendLog('', -2);\n return [2 /*return*/];\n }\n this.clear();\n this.logger.error(err_1);\n if (err_1 instanceof QiniuRequestError) {\n this.sendLog(err_1.reqId, err_1.code);\n // 检查并冻结当前的 host\n this.checkAndFreezeHost(err_1);\n notReachRetryCount = ++this.retryCount <= this.config.retryCount;\n needRetry = RETRY_CODE_LIST.includes(err_1.code);\n // 以下条件满足其中之一则会进行重新上传:\n // 1. 满足 needRetry 的条件且 retryCount 不为 0\n // 2. uploadId 无效时在 resume 里会清除本地数据,并且这里触发重新上传\n if (needRetry && notReachRetryCount) {\n this.logger.warn(\"error auto retry: \" + this.retryCount + \"/\" + this.config.retryCount + \".\");\n this.putFile();\n return [2 /*return*/];\n }\n }\n this.onError(err_1);\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Base.prototype.clear = function () {\n this.xhrList.forEach(function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n });\n this.xhrList = [];\n this.logger.info('cleanup uploading xhr.');\n };\n Base.prototype.stop = function () {\n this.logger.info('aborted.');\n this.clear();\n this.aborted = true;\n };\n Base.prototype.addXhr = function (xhr) {\n this.xhrList.push(xhr);\n };\n Base.prototype.sendLog = function (reqId, code) {\n var _a, _b;\n this.logger.report({\n code: code,\n reqId: reqId,\n remoteIp: '',\n upType: 'jssdk-h5',\n size: this.file.size,\n time: Math.floor(this.uploadAt / 1000),\n port: utils.getPortFromUrl((_a = this.uploadHost) === null || _a === void 0 ? void 0 : _a.getUrl()),\n host: utils.getDomainFromUrl((_b = this.uploadHost) === null || _b === void 0 ? void 0 : _b.getUrl()),\n bytesSent: this.progress ? this.progress.total.loaded : 0,\n duration: Math.floor((new Date().getTime() - this.uploadAt) / 1000)\n });\n };\n Base.prototype.getProgressInfoItem = function (loaded, size, fromCache) {\n return __assign({ size: size,\n loaded: loaded, percent: loaded / size * 100 }, (fromCache == null ? {} : { fromCache: fromCache }));\n };\n return Base;\n}());\nexport default Base;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}