ResBaseAsset.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/compment/ResBaseAsset.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, '283c7FZZ+BGD5DWfS+6geT+', 'ResBaseAsset');
  13. // script/frameWork/compment/ResBaseAsset.ts
  14. "use strict";
  15. var __extends = (this && this.__extends) || (function () {
  16. var extendStatics = function (d, b) {
  17. extendStatics = Object.setPrototypeOf ||
  18. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  19. function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
  20. return extendStatics(d, b);
  21. };
  22. return function (d, b) {
  23. extendStatics(d, b);
  24. function __() { this.constructor = d; }
  25. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  26. };
  27. })();
  28. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  29. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  30. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  31. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  32. return c > 3 && r && Object.defineProperty(target, key, r), r;
  33. };
  34. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  35. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  36. return new (P || (P = Promise))(function (resolve, reject) {
  37. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  38. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  39. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  40. step((generator = generator.apply(thisArg, _arguments || [])).next());
  41. });
  42. };
  43. var __generator = (this && this.__generator) || function (thisArg, body) {
  44. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  45. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  46. function verb(n) { return function (v) { return step([n, v]); }; }
  47. function step(op) {
  48. if (f) throw new TypeError("Generator is already executing.");
  49. while (_) try {
  50. 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;
  51. if (y = 0, t) op = [op[0] & 2, t.value];
  52. switch (op[0]) {
  53. case 0: case 1: t = op; break;
  54. case 4: _.label++; return { value: op[1], done: false };
  55. case 5: _.label++; y = op[1]; op = [0]; continue;
  56. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  57. default:
  58. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  59. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  60. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  61. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  62. if (t[2]) _.ops.pop();
  63. _.trys.pop(); continue;
  64. }
  65. op = body.call(thisArg, _);
  66. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  67. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  68. }
  69. };
  70. Object.defineProperty(exports, "__esModule", { value: true });
  71. exports.ResBaseAsset = exports.EResType = void 0;
  72. var AssetsBundleMgr_1 = require("../../utils/AssetsBundleMgr");
  73. var _a = cc._decorator, ccclass = _a.ccclass, disallowMultiple = _a.disallowMultiple;
  74. var EResType;
  75. (function (EResType) {
  76. EResType[EResType["UI"] = 0] = "UI";
  77. EResType[EResType["Prefab"] = 1] = "Prefab"; /** 直接加载预制的形式 */
  78. EResType[EResType["SpriteFrame"] = 2] = "SpriteFrame";
  79. EResType[EResType["SpriteAtlas"] = 3] = "SpriteAtlas";
  80. EResType[EResType["Spine"] = 4] = "Spine";
  81. EResType[EResType["DragonBones"] = 5] = "DragonBones";
  82. EResType[EResType["Texture2D"] = 6] = "Texture2D";
  83. EResType[EResType["ImageAsset"] = 7] = "ImageAsset";
  84. EResType[EResType["Material"] = 8] = "Material";
  85. EResType[EResType["Audio"] = 9] = "Audio";
  86. EResType[EResType["TTFFont"] = 10] = "TTFFont"; /** TTF 字体 */
  87. EResType[EResType["Text"] = 11] = "Text"; /** Txt 文件 */
  88. EResType[EResType["ParticleAsset"] = 12] = "ParticleAsset"; /** 粒子资源 */
  89. EResType[EResType["FntFont"] = 13] = "FntFont"; /** Fnt 字体 */
  90. EResType[EResType["Json"] = 14] = "Json";
  91. })(EResType = exports.EResType || (exports.EResType = {}));
  92. /**
  93. * 精灵组件,自动管理资源的引用计数
  94. */
  95. var ResBaseAsset = /** @class */ (function (_super) {
  96. __extends(ResBaseAsset, _super);
  97. function ResBaseAsset() {
  98. var _this = _super !== null && _super.apply(this, arguments) || this;
  99. // 动态加载的资源
  100. _this.m_Asset = undefined;
  101. _this.m_AssetUrl = undefined;
  102. return _this;
  103. }
  104. Object.defineProperty(ResBaseAsset.prototype, "Asset", {
  105. get: function () {
  106. return this.m_Asset;
  107. },
  108. enumerable: false,
  109. configurable: true
  110. });
  111. ResBaseAsset.prototype.onEnable = function () { };
  112. /**
  113. * 加载 url 资源,只会回调最后一次加载
  114. * @param bundle
  115. * @param url
  116. * @param cb
  117. * @returns
  118. */
  119. ResBaseAsset.prototype.loadAsset = function (bundle, url, type, cb) {
  120. return __awaiter(this, void 0, void 0, function () {
  121. var that;
  122. var _this = this;
  123. return __generator(this, function (_a) {
  124. that = this;
  125. AssetsBundleMgr_1.default.loadBundle(bundle, function (err, bundle) {
  126. if (err) {
  127. console.log("SpineNode:bundle load failed:", url, err);
  128. cb(null);
  129. return;
  130. }
  131. var cacheAsset = bundle.get(url, type);
  132. if (cacheAsset) {
  133. if (that.m_Asset) {
  134. _this.addDelayRelease(that.m_Asset);
  135. }
  136. cacheAsset.addRef();
  137. that.m_Asset = cacheAsset;
  138. cb(cacheAsset);
  139. }
  140. else {
  141. bundle.load(url, type, function (err, asset) {
  142. if (err) {
  143. console.warn("asset not found:", url, err.message);
  144. cb(null);
  145. return;
  146. }
  147. if (that.m_Asset) {
  148. // that.m_Asset.decRef();
  149. _this.addDelayRelease(that.m_Asset);
  150. }
  151. asset.addRef();
  152. that.m_Asset = asset;
  153. cb(asset);
  154. });
  155. }
  156. });
  157. return [2 /*return*/];
  158. });
  159. });
  160. };
  161. /**
  162. * 重置资源
  163. */
  164. ResBaseAsset.prototype.resetRes = function () {
  165. if (this.m_Asset) {
  166. // this.m_Asset.decRef();
  167. this.addDelayRelease(this.m_Asset);
  168. this.m_Asset = null;
  169. this.m_AssetUrl = null;
  170. }
  171. };
  172. ResBaseAsset.prototype.onDestroy = function () {
  173. this.resetRes();
  174. };
  175. /** 10秒延迟释放资源 */
  176. ResBaseAsset.prototype.addDelayRelease = function (asset) {
  177. setTimeout(function () {
  178. asset.decRef();
  179. }, 30000);
  180. };
  181. ResBaseAsset = __decorate([
  182. ccclass,
  183. disallowMultiple
  184. ], ResBaseAsset);
  185. return ResBaseAsset;
  186. }(cc.Component));
  187. exports.ResBaseAsset = ResBaseAsset;
  188. cc._RF.pop();
  189. }
  190. if (nodeEnv) {
  191. __define(__module.exports, __require, __module);
  192. }
  193. else {
  194. __quick_compile_project__.registerModuleFunc(__filename, function () {
  195. __define(__module.exports, __require, __module);
  196. });
  197. }
  198. })();
  199. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL2NvbXBtZW50L1Jlc0Jhc2VBc3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0RBQTBEO0FBRXBELElBQUEsS0FBZ0MsRUFBRSxDQUFDLFVBQVUsRUFBM0MsT0FBTyxhQUFBLEVBQUUsZ0JBQWdCLHNCQUFrQixDQUFDO0FBQ3BELElBQVksUUFnQlg7QUFoQkQsV0FBWSxRQUFRO0lBQ25CLG1DQUFFLENBQUE7SUFDRiwyQ0FBTSxDQUFBLENBQUMsZ0JBQWdCO0lBQ3ZCLHFEQUFXLENBQUE7SUFDWCxxREFBVyxDQUFBO0lBQ1gseUNBQUssQ0FBQTtJQUNMLHFEQUFXLENBQUE7SUFDWCxpREFBUyxDQUFBO0lBQ1QsbURBQVUsQ0FBQTtJQUNWLCtDQUFRLENBQUE7SUFDUix5Q0FBSyxDQUFBO0lBQ0wsOENBQU8sQ0FBQSxDQUFDLGFBQWE7SUFDckIsd0NBQUksQ0FBQSxDQUFDLGFBQWE7SUFDbEIsMERBQWEsQ0FBQSxDQUFDLFdBQVc7SUFDekIsOENBQU8sQ0FBQSxDQUFDLGFBQWE7SUFDckIsd0NBQUksQ0FBQTtBQUNMLENBQUMsRUFoQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFnQm5CO0FBQ0Q7O0dBRUc7QUFHSDtJQUErRCxnQ0FBWTtJQUEzRTtRQUFBLHFFQTJFQztRQTFFQSxVQUFVO1FBQ0YsYUFBTyxHQUFNLFNBQVMsQ0FBQztRQUN2QixnQkFBVSxHQUFXLFNBQVMsQ0FBQzs7SUF3RXhDLENBQUM7SUF0RUEsc0JBQUksK0JBQUs7YUFBVDtZQUNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDOzs7T0FBQTtJQUVTLCtCQUFRLEdBQWxCLGNBQTZCLENBQUM7SUFFOUI7Ozs7OztPQU1HO0lBQ2EsZ0NBQVMsR0FBekIsVUFBMEIsTUFBYyxFQUFFLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBdUI7Ozs7O2dCQUNwRixJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNoQix5QkFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBQyxHQUFHLEVBQUUsTUFBTTtvQkFDOUMsSUFBSSxHQUFHLEVBQUU7d0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3ZELEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDVCxPQUFPO3FCQUNQO29CQUNELElBQUksVUFBVSxHQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMxQyxJQUFJLFVBQVUsRUFBRTt3QkFDZixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ2pCLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUNuQzt3QkFDRCxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO3dCQUMxQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ2Y7eUJBQU07d0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQUMsR0FBVSxFQUFFLEtBQVE7NEJBQzNDLElBQUksR0FBRyxFQUFFO2dDQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQ0FDbkQsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNULE9BQU87NkJBQ1A7NEJBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNqQix5QkFBeUI7Z0NBQ3pCLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUNuQzs0QkFDRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7NEJBQ3JCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDWCxDQUFDLENBQUMsQ0FBQztxQkFDSDtnQkFDRixDQUFDLENBQUMsQ0FBQzs7OztLQUNIO0lBRUQ7O09BRUc7SUFDSSwrQkFBUSxHQUFmO1FBQ0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLHlCQUF5QjtZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNGLENBQUM7SUFFUyxnQ0FBUyxHQUFuQjtRQUNDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZ0JBQWdCO0lBQ04sc0NBQWUsR0FBekIsVUFBMEIsS0FBZTtRQUN4QyxVQUFVLENBQUM7WUFDVixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQTFFb0IsWUFBWTtRQUZqQyxPQUFPO1FBQ1AsZ0JBQWdCO09BQ0ssWUFBWSxDQTJFakM7SUFBRCxtQkFBQztDQTNFRCxBQTJFQyxDQTNFOEQsRUFBRSxDQUFDLFNBQVMsR0EyRTFFO0FBM0VxQixvQ0FBWSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBc3NldHNCdW5kbGVNZ3IgZnJvbSBcIi4uLy4uL3V0aWxzL0Fzc2V0c0J1bmRsZU1nclwiO1xuXG5jb25zdCB7IGNjY2xhc3MsIGRpc2FsbG93TXVsdGlwbGUgfSA9IGNjLl9kZWNvcmF0b3I7XG5leHBvcnQgZW51bSBFUmVzVHlwZSB7XG5cdFVJLFxuXHRQcmVmYWIgLyoqIOebtOaOpeWKoOi9vemihOWItueahOW9ouW8jyAqLyxcblx0U3ByaXRlRnJhbWUsXG5cdFNwcml0ZUF0bGFzLFxuXHRTcGluZSxcblx0RHJhZ29uQm9uZXMsXG5cdFRleHR1cmUyRCxcblx0SW1hZ2VBc3NldCxcblx0TWF0ZXJpYWwsXG5cdEF1ZGlvLFxuXHRUVEZGb250IC8qKiBUVEYg5a2X5L2TICovLFxuXHRUZXh0IC8qKiBUeHQg5paH5Lu2ICovLFxuXHRQYXJ0aWNsZUFzc2V0IC8qKiDnspLlrZDotYTmupAgKi8sXG5cdEZudEZvbnQgLyoqIEZudCDlrZfkvZMgKi8sXG5cdEpzb24sXG59XG4vKipcbiAqIOeyvueBtee7hOS7tu+8jOiHquWKqOeuoeeQhui1hOa6kOeahOW8leeUqOiuoeaVsFxuICovXG5AY2NjbGFzc1xuQGRpc2FsbG93TXVsdGlwbGVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNCYXNlQXNzZXQ8VCBleHRlbmRzIGNjLkFzc2V0PiBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG5cdC8vIOWKqOaAgeWKoOi9veeahOi1hOa6kFxuXHRwcml2YXRlIG1fQXNzZXQ6IFQgPSB1bmRlZmluZWQ7XG5cdHByaXZhdGUgbV9Bc3NldFVybDogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG5cdGdldCBBc3NldCgpOiBUIHtcblx0XHRyZXR1cm4gdGhpcy5tX0Fzc2V0O1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uRW5hYmxlKCk6IHZvaWQgeyB9XG5cblx0LyoqXG5cdCAqIOWKoOi9vSB1cmwg6LWE5rqQ77yM5Y+q5Lya5Zue6LCD5pyA5ZCO5LiA5qyh5Yqg6L29XG5cdCAqIEBwYXJhbSBidW5kbGVcblx0ICogQHBhcmFtIHVybFxuXHQgKiBAcGFyYW0gY2Jcblx0ICogQHJldHVybnNcblx0ICovXG5cdHByb3RlY3RlZCBhc3luYyBsb2FkQXNzZXQoYnVuZGxlOiBzdHJpbmcsIHVybDogc3RyaW5nLCB0eXBlOiBhbnksIGNiPzogKGFzc2V0OiBUKSA9PiB2b2lkKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXHRcdEFzc2V0c0J1bmRsZU1nci5sb2FkQnVuZGxlKGJ1bmRsZSwgKGVyciwgYnVuZGxlKSA9PiB7XG5cdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiU3BpbmVOb2RlOmJ1bmRsZSBsb2FkIGZhaWxlZDpcIiwgdXJsLCBlcnIpO1xuXHRcdFx0XHRjYihudWxsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGNhY2hlQXNzZXQ6IFQgPSBidW5kbGUuZ2V0KHVybCwgdHlwZSk7XG5cdFx0XHRpZiAoY2FjaGVBc3NldCkge1xuXHRcdFx0XHRpZiAodGhhdC5tX0Fzc2V0KSB7XG5cdFx0XHRcdFx0dGhpcy5hZGREZWxheVJlbGVhc2UodGhhdC5tX0Fzc2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjYWNoZUFzc2V0LmFkZFJlZigpO1xuXHRcdFx0XHR0aGF0Lm1fQXNzZXQgPSBjYWNoZUFzc2V0O1xuXHRcdFx0XHRjYihjYWNoZUFzc2V0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1bmRsZS5sb2FkKHVybCwgdHlwZSwgKGVycjogRXJyb3IsIGFzc2V0OiBUKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKFwiYXNzZXQgbm90IGZvdW5kOlwiLCB1cmwsIGVyci5tZXNzYWdlKTtcblx0XHRcdFx0XHRcdGNiKG51bGwpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGhhdC5tX0Fzc2V0KSB7XG5cdFx0XHRcdFx0XHQvLyB0aGF0Lm1fQXNzZXQuZGVjUmVmKCk7XG5cdFx0XHRcdFx0XHR0aGlzLmFkZERlbGF5UmVsZWFzZSh0aGF0Lm1fQXNzZXQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhc3NldC5hZGRSZWYoKTtcblx0XHRcdFx0XHR0aGF0Lm1fQXNzZXQgPSBhc3NldDtcblx0XHRcdFx0XHRjYihhc3NldCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIOmHjee9rui1hOa6kFxuXHQgKi9cblx0cHVibGljIHJlc2V0UmVzKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm1fQXNzZXQpIHtcblx0XHRcdC8vIHRoaXMubV9Bc3NldC5kZWNSZWYoKTtcblx0XHRcdHRoaXMuYWRkRGVsYXlSZWxlYXNlKHRoaXMubV9Bc3NldCk7XG5cdFx0XHR0aGlzLm1fQXNzZXQgPSBudWxsO1xuXHRcdFx0dGhpcy5tX0Fzc2V0VXJsID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMucmVzZXRSZXMoKTtcblx0fVxuXG5cdC8qKiAxMOenkuW7tui/n+mHiuaUvui1hOa6kCAqL1xuXHRwcm90ZWN0ZWQgYWRkRGVsYXlSZWxlYXNlKGFzc2V0OiBjYy5Bc3NldCkge1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0YXNzZXQuZGVjUmVmKCk7XG5cdFx0fSwgMzAwMDApO1xuXHR9XG59XG4iXX0=