123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/frameWork/compment/ResBaseAsset.js';
- var __require = nodeEnv ? function (request) {
- return cc.require(request);
- } : function (request) {
- return __quick_compile_project__.require(request, __filename);
- };
- function __define (exports, require, module) {
- if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
- cc._RF.push(module, '283c7FZZ+BGD5DWfS+6geT+', 'ResBaseAsset');
- // script/frameWork/compment/ResBaseAsset.ts
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = function (d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
- };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- 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;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- 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;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.ResBaseAsset = exports.EResType = void 0;
- var AssetsBundleMgr_1 = require("../../utils/AssetsBundleMgr");
- var _a = cc._decorator, ccclass = _a.ccclass, disallowMultiple = _a.disallowMultiple;
- var EResType;
- (function (EResType) {
- EResType[EResType["UI"] = 0] = "UI";
- EResType[EResType["Prefab"] = 1] = "Prefab"; /** 直接加载预制的形式 */
- EResType[EResType["SpriteFrame"] = 2] = "SpriteFrame";
- EResType[EResType["SpriteAtlas"] = 3] = "SpriteAtlas";
- EResType[EResType["Spine"] = 4] = "Spine";
- EResType[EResType["DragonBones"] = 5] = "DragonBones";
- EResType[EResType["Texture2D"] = 6] = "Texture2D";
- EResType[EResType["ImageAsset"] = 7] = "ImageAsset";
- EResType[EResType["Material"] = 8] = "Material";
- EResType[EResType["Audio"] = 9] = "Audio";
- EResType[EResType["TTFFont"] = 10] = "TTFFont"; /** TTF 字体 */
- EResType[EResType["Text"] = 11] = "Text"; /** Txt 文件 */
- EResType[EResType["ParticleAsset"] = 12] = "ParticleAsset"; /** 粒子资源 */
- EResType[EResType["FntFont"] = 13] = "FntFont"; /** Fnt 字体 */
- EResType[EResType["Json"] = 14] = "Json";
- })(EResType = exports.EResType || (exports.EResType = {}));
- /**
- * 精灵组件,自动管理资源的引用计数
- */
- var ResBaseAsset = /** @class */ (function (_super) {
- __extends(ResBaseAsset, _super);
- function ResBaseAsset() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- // 动态加载的资源
- _this.m_Asset = undefined;
- _this.m_AssetUrl = undefined;
- return _this;
- }
- Object.defineProperty(ResBaseAsset.prototype, "Asset", {
- get: function () {
- return this.m_Asset;
- },
- enumerable: false,
- configurable: true
- });
- ResBaseAsset.prototype.onEnable = function () { };
- /**
- * 加载 url 资源,只会回调最后一次加载
- * @param bundle
- * @param url
- * @param cb
- * @returns
- */
- ResBaseAsset.prototype.loadAsset = function (bundle, url, type, cb) {
- return __awaiter(this, void 0, void 0, function () {
- var that;
- var _this = this;
- return __generator(this, function (_a) {
- that = this;
- AssetsBundleMgr_1.default.loadBundle(bundle, function (err, bundle) {
- if (err) {
- console.log("SpineNode:bundle load failed:", url, err);
- cb(null);
- return;
- }
- var cacheAsset = bundle.get(url, type);
- if (cacheAsset) {
- if (that.m_Asset) {
- _this.addDelayRelease(that.m_Asset);
- }
- cacheAsset.addRef();
- that.m_Asset = cacheAsset;
- cb(cacheAsset);
- }
- else {
- bundle.load(url, type, function (err, asset) {
- if (err) {
- console.warn("asset not found:", url, err.message);
- cb(null);
- return;
- }
- if (that.m_Asset) {
- // that.m_Asset.decRef();
- _this.addDelayRelease(that.m_Asset);
- }
- asset.addRef();
- that.m_Asset = asset;
- cb(asset);
- });
- }
- });
- return [2 /*return*/];
- });
- });
- };
- /**
- * 重置资源
- */
- ResBaseAsset.prototype.resetRes = function () {
- if (this.m_Asset) {
- // this.m_Asset.decRef();
- this.addDelayRelease(this.m_Asset);
- this.m_Asset = null;
- this.m_AssetUrl = null;
- }
- };
- ResBaseAsset.prototype.onDestroy = function () {
- this.resetRes();
- };
- /** 10秒延迟释放资源 */
- ResBaseAsset.prototype.addDelayRelease = function (asset) {
- setTimeout(function () {
- asset.decRef();
- }, 30000);
- };
- ResBaseAsset = __decorate([
- ccclass,
- disallowMultiple
- ], ResBaseAsset);
- return ResBaseAsset;
- }(cc.Component));
- exports.ResBaseAsset = ResBaseAsset;
- cc._RF.pop();
- }
- if (nodeEnv) {
- __define(__module.exports, __require, __module);
- }
- else {
- __quick_compile_project__.registerModuleFunc(__filename, function () {
- __define(__module.exports, __require, __module);
- });
- }
- })();
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL2NvbXBtZW50L1Jlc0Jhc2VBc3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0RBQTBEO0FBRXBELElBQUEsS0FBZ0MsRUFBRSxDQUFDLFVBQVUsRUFBM0MsT0FBTyxhQUFBLEVBQUUsZ0JBQWdCLHNCQUFrQixDQUFDO0FBQ3BELElBQVksUUFnQlg7QUFoQkQsV0FBWSxRQUFRO0lBQ25CLG1DQUFFLENBQUE7SUFDRiwyQ0FBTSxDQUFBLENBQUMsZ0JBQWdCO0lBQ3ZCLHFEQUFXLENBQUE7SUFDWCxxREFBVyxDQUFBO0lBQ1gseUNBQUssQ0FBQTtJQUNMLHFEQUFXLENBQUE7SUFDWCxpREFBUyxDQUFBO0lBQ1QsbURBQVUsQ0FBQTtJQUNWLCtDQUFRLENBQUE7SUFDUix5Q0FBSyxDQUFBO0lBQ0wsOENBQU8sQ0FBQSxDQUFDLGFBQWE7SUFDckIsd0NBQUksQ0FBQSxDQUFDLGFBQWE7SUFDbEIsMERBQWEsQ0FBQSxDQUFDLFdBQVc7SUFDekIsOENBQU8sQ0FBQSxDQUFDLGFBQWE7SUFDckIsd0NBQUksQ0FBQTtBQUNMLENBQUMsRUFoQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFnQm5CO0FBQ0Q7O0dBRUc7QUFHSDtJQUErRCxnQ0FBWTtJQUEzRTtRQUFBLHFFQTJFQztRQTFFQSxVQUFVO1FBQ0YsYUFBTyxHQUFNLFNBQVMsQ0FBQztRQUN2QixnQkFBVSxHQUFXLFNBQVMsQ0FBQzs7SUF3RXhDLENBQUM7SUF0RUEsc0JBQUksK0JBQUs7YUFBVDtZQUNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNyQixDQUFDOzs7T0FBQTtJQUVTLCtCQUFRLEdBQWxCLGNBQTZCLENBQUM7SUFFOUI7Ozs7OztPQU1HO0lBQ2EsZ0NBQVMsR0FBekIsVUFBMEIsTUFBYyxFQUFFLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBdUI7Ozs7O2dCQUNwRixJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNoQix5QkFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBQyxHQUFHLEVBQUUsTUFBTTtvQkFDOUMsSUFBSSxHQUFHLEVBQUU7d0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3ZELEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDVCxPQUFPO3FCQUNQO29CQUNELElBQUksVUFBVSxHQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMxQyxJQUFJLFVBQVUsRUFBRTt3QkFDZixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7NEJBQ2pCLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUNuQzt3QkFDRCxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO3dCQUMxQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQ2Y7eUJBQU07d0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQUMsR0FBVSxFQUFFLEtBQVE7NEJBQzNDLElBQUksR0FBRyxFQUFFO2dDQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQ0FDbkQsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUNULE9BQU87NkJBQ1A7NEJBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dDQUNqQix5QkFBeUI7Z0NBQ3pCLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOzZCQUNuQzs0QkFDRCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7NEJBQ3JCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDWCxDQUFDLENBQUMsQ0FBQztxQkFDSDtnQkFDRixDQUFDLENBQUMsQ0FBQzs7OztLQUNIO0lBRUQ7O09BRUc7SUFDSSwrQkFBUSxHQUFmO1FBQ0MsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLHlCQUF5QjtZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN2QjtJQUNGLENBQUM7SUFFUyxnQ0FBUyxHQUFuQjtRQUNDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZ0JBQWdCO0lBQ04sc0NBQWUsR0FBekIsVUFBMEIsS0FBZTtRQUN4QyxVQUFVLENBQUM7WUFDVixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQTFFb0IsWUFBWTtRQUZqQyxPQUFPO1FBQ1AsZ0JBQWdCO09BQ0ssWUFBWSxDQTJFakM7SUFBRCxtQkFBQztDQTNFRCxBQTJFQyxDQTNFOEQsRUFBRSxDQUFDLFNBQVMsR0EyRTFFO0FBM0VxQixvQ0FBWSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBc3NldHNCdW5kbGVNZ3IgZnJvbSBcIi4uLy4uL3V0aWxzL0Fzc2V0c0J1bmRsZU1nclwiO1xuXG5jb25zdCB7IGNjY2xhc3MsIGRpc2FsbG93TXVsdGlwbGUgfSA9IGNjLl9kZWNvcmF0b3I7XG5leHBvcnQgZW51bSBFUmVzVHlwZSB7XG5cdFVJLFxuXHRQcmVmYWIgLyoqIOebtOaOpeWKoOi9vemihOWItueahOW9ouW8jyAqLyxcblx0U3ByaXRlRnJhbWUsXG5cdFNwcml0ZUF0bGFzLFxuXHRTcGluZSxcblx0RHJhZ29uQm9uZXMsXG5cdFRleHR1cmUyRCxcblx0SW1hZ2VBc3NldCxcblx0TWF0ZXJpYWwsXG5cdEF1ZGlvLFxuXHRUVEZGb250IC8qKiBUVEYg5a2X5L2TICovLFxuXHRUZXh0IC8qKiBUeHQg5paH5Lu2ICovLFxuXHRQYXJ0aWNsZUFzc2V0IC8qKiDnspLlrZDotYTmupAgKi8sXG5cdEZudEZvbnQgLyoqIEZudCDlrZfkvZMgKi8sXG5cdEpzb24sXG59XG4vKipcbiAqIOeyvueBtee7hOS7tu+8jOiHquWKqOeuoeeQhui1hOa6kOeahOW8leeUqOiuoeaVsFxuICovXG5AY2NjbGFzc1xuQGRpc2FsbG93TXVsdGlwbGVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXNCYXNlQXNzZXQ8VCBleHRlbmRzIGNjLkFzc2V0PiBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG5cdC8vIOWKqOaAgeWKoOi9veeahOi1hOa6kFxuXHRwcml2YXRlIG1fQXNzZXQ6IFQgPSB1bmRlZmluZWQ7XG5cdHByaXZhdGUgbV9Bc3NldFVybDogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG5cdGdldCBBc3NldCgpOiBUIHtcblx0XHRyZXR1cm4gdGhpcy5tX0Fzc2V0O1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uRW5hYmxlKCk6IHZvaWQgeyB9XG5cblx0LyoqXG5cdCAqIOWKoOi9vSB1cmwg6LWE5rqQ77yM5Y+q5Lya5Zue6LCD5pyA5ZCO5LiA5qyh5Yqg6L29XG5cdCAqIEBwYXJhbSBidW5kbGVcblx0ICogQHBhcmFtIHVybFxuXHQgKiBAcGFyYW0gY2Jcblx0ICogQHJldHVybnNcblx0ICovXG5cdHByb3RlY3RlZCBhc3luYyBsb2FkQXNzZXQoYnVuZGxlOiBzdHJpbmcsIHVybDogc3RyaW5nLCB0eXBlOiBhbnksIGNiPzogKGFzc2V0OiBUKSA9PiB2b2lkKSB7XG5cdFx0bGV0IHRoYXQgPSB0aGlzO1xuXHRcdEFzc2V0c0J1bmRsZU1nci5sb2FkQnVuZGxlKGJ1bmRsZSwgKGVyciwgYnVuZGxlKSA9PiB7XG5cdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiU3BpbmVOb2RlOmJ1bmRsZSBsb2FkIGZhaWxlZDpcIiwgdXJsLCBlcnIpO1xuXHRcdFx0XHRjYihudWxsKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0bGV0IGNhY2hlQXNzZXQ6IFQgPSBidW5kbGUuZ2V0KHVybCwgdHlwZSk7XG5cdFx0XHRpZiAoY2FjaGVBc3NldCkge1xuXHRcdFx0XHRpZiAodGhhdC5tX0Fzc2V0KSB7XG5cdFx0XHRcdFx0dGhpcy5hZGREZWxheVJlbGVhc2UodGhhdC5tX0Fzc2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjYWNoZUFzc2V0LmFkZFJlZigpO1xuXHRcdFx0XHR0aGF0Lm1fQXNzZXQgPSBjYWNoZUFzc2V0O1xuXHRcdFx0XHRjYihjYWNoZUFzc2V0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ1bmRsZS5sb2FkKHVybCwgdHlwZSwgKGVycjogRXJyb3IsIGFzc2V0OiBUKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKFwiYXNzZXQgbm90IGZvdW5kOlwiLCB1cmwsIGVyci5tZXNzYWdlKTtcblx0XHRcdFx0XHRcdGNiKG51bGwpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAodGhhdC5tX0Fzc2V0KSB7XG5cdFx0XHRcdFx0XHQvLyB0aGF0Lm1fQXNzZXQuZGVjUmVmKCk7XG5cdFx0XHRcdFx0XHR0aGlzLmFkZERlbGF5UmVsZWFzZSh0aGF0Lm1fQXNzZXQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhc3NldC5hZGRSZWYoKTtcblx0XHRcdFx0XHR0aGF0Lm1fQXNzZXQgPSBhc3NldDtcblx0XHRcdFx0XHRjYihhc3NldCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIOmHjee9rui1hOa6kFxuXHQgKi9cblx0cHVibGljIHJlc2V0UmVzKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLm1fQXNzZXQpIHtcblx0XHRcdC8vIHRoaXMubV9Bc3NldC5kZWNSZWYoKTtcblx0XHRcdHRoaXMuYWRkRGVsYXlSZWxlYXNlKHRoaXMubV9Bc3NldCk7XG5cdFx0XHR0aGlzLm1fQXNzZXQgPSBudWxsO1xuXHRcdFx0dGhpcy5tX0Fzc2V0VXJsID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMucmVzZXRSZXMoKTtcblx0fVxuXG5cdC8qKiAxMOenkuW7tui/n+mHiuaUvui1hOa6kCAqL1xuXHRwcm90ZWN0ZWQgYWRkRGVsYXlSZWxlYXNlKGFzc2V0OiBjYy5Bc3NldCkge1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0YXNzZXQuZGVjUmVmKCk7XG5cdFx0fSwgMzAwMDApO1xuXHR9XG59XG4iXX0=
|