123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/logic/ui/UIBase.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, '76454/+dxNA36XaoEgldO2R', 'UIBase');
- // script/logic/ui/UIBase.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;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.BASE_POP = void 0;
- var TypeConst_1 = require("../../data/const/TypeConst");
- var GameDataCenter_1 = require("../../data/GameDataCenter");
- var EventMng_1 = require("../../manager/EventMng");
- var UICommon_1 = require("../../utils/UICommon");
- // 弹出方式
- var BASE_POP;
- (function (BASE_POP) {
- BASE_POP["MAIN"] = "MAIN";
- BASE_POP["UI"] = "UI";
- BASE_POP["UI_HALF"] = "UI_HALF";
- BASE_POP["FULL"] = "FULL";
- BASE_POP["POP"] = "POP";
- BASE_POP["MemuBottom"] = "MemuBottom";
- BASE_POP["Battle"] = "Battle"; // 战斗弹窗
- })(BASE_POP = exports.BASE_POP || (exports.BASE_POP = {}));
- var PREFAB_UI_DIR = 'prefab/';
- var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
- var UIBase = /** @class */ (function (_super) {
- __extends(UIBase, _super);
- function UIBase() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.belong = null;
- _this.showAnim = true;
- _this.bgm = TypeConst_1.AudioConst.empty;
- /** 是否注册防穿透事件 */
- _this.isRegisterStopEvent = true;
- _this.registerCount = 0;
- return _this;
- }
- UIBase.onCollectRes = function () {
- };
- Object.defineProperty(UIBase.prototype, "tag", {
- get: function () {
- return this.mTag;
- },
- set: function (value) {
- this.mTag = value;
- },
- enumerable: false,
- configurable: true
- });
- /**
- * 得到prefab的路径,相对于resources目录
- */
- UIBase.getUrl = function () {
- return this.prefabUrl;
- //return PREFAB_UI_DIR + this.prefabUrl;
- };
- /**
- * 类名,用于给UI命名
- */
- UIBase.getName = function () {
- return this.className;
- };
- UIBase.getPop = function () {
- return this.pop;
- };
- UIBase.getZindex = function () {
- return this._zindex;
- };
- /* ----------------------------- 以下方法不能在子类重写 ----------------------------- */
- /**初始化函数,在onLoad之前被调用,params为打开ui是传入的不定参数数组 */
- UIBase.prototype.init = function (params) {
- this.onInit(params);
- };
- /**onLoad 会在组件被首次加载的时候被回调。且优先于任何start */
- UIBase.prototype.onLoad = function () {
- this._notifyEventList = new Map();
- // this._registerEventList = new Map<string, RegisterEvent>();
- this.onUILoad();
- };
- UIBase.prototype.onDestroy = function () {
- this.onUIDestroy();
- };
- UIBase.prototype.onEnable = function () {
- // if (this.isRegisterStopEvent) {
- // this.onRegisterEvent(this.node, this.touchEvent, this);
- // }
- if (this.bgm != TypeConst_1.AudioConst.empty) {
- GameDataCenter_1.default.audio.playMusic(this.bgm);
- }
- this.onShow();
- };
- UIBase.prototype.onDisable = function () {
- if (this.isRegisterStopEvent) {
- this.unRegisterEvent(this.node);
- }
- this.onHide();
- try {
- var self_1 = this;
- this._notifyEventList.forEach(function (f, key) {
- // console.log("_notifyEventList key = "+key)
- EventMng_1.default.off(key, f, self_1);
- }, this);
- this._notifyEventList.clear();
- }
- catch (error) {
- console.error("onDisable->" + error);
- }
- if (this.registerCount > 0) {
- console.error(this.name + " 按钮注册后没off掉啊喂 \n(╯-_-)╯╧╧ ");
- }
- };
- /**注册notice事件,disable的时候会自动移除 */
- UIBase.prototype.initEvent = function (eventName, cb) {
- EventMng_1.default.on(eventName, cb, this);
- this._notifyEventList.set(eventName, cb);
- };
- UIBase.prototype.touchEvent = function (event) {
- event.stopPropagation();
- };
- UIBase.prototype.start = function () {
- // this.onStart(); // 改在UiMng中,在init和添加到父节点之后触发
- };
- UIBase.prototype.update = function (dt) {
- this.onUpdate(dt);
- };
- /* ---------------------------------------------------------------------------------- */
- UIBase.prototype.onInit = function (params) {
- };
- UIBase.prototype.onUILoad = function () {
- };
- UIBase.prototype.onUIDestroy = function () {
- };
- UIBase.prototype.onShow = function () {
- };
- UIBase.prototype.onHide = function () {
- };
- UIBase.prototype.onStart = function (isFirstTime) {
- };
- UIBase.prototype.onUpdate = function (dt) {
- };
- UIBase.prototype.onClose = function () {
- };
- /**
- * 注册touch事件
- * @param node
- * @param callback
- * @param target
- * @param playAudio 是否播放音效,默认播放
- */
- UIBase.prototype.onRegisterEvent = function (node, callback, target, params, audio) {
- if (target === void 0) { target = null; }
- if (params === void 0) { params = []; }
- if (audio === void 0) { audio = TypeConst_1.AudioConst.effect_click; }
- this.registerCount++;
- UICommon_1.uiCommon.onRegisterEvent(node, callback, target, params, audio);
- };
- UIBase.prototype.unRegisterEvent = function (node) {
- this.registerCount--;
- UICommon_1.uiCommon.unRegisterEvent(node);
- };
- UIBase.pop = BASE_POP.UI;
- UIBase = __decorate([
- ccclass
- ], UIBase);
- return UIBase;
- }(cc.Component));
- exports.default = UIBase;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvbG9naWMvdWkvVUlCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBd0Q7QUFDeEQsNERBQXVEO0FBQ3ZELG1EQUE4QztBQUM5QyxpREFBZ0Q7QUFXaEQsT0FBTztBQUNQLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNoQix5QkFBYSxDQUFBO0lBQ2IscUJBQVMsQ0FBQTtJQUNULCtCQUFtQixDQUFBO0lBQ25CLHlCQUFhLENBQUE7SUFDYix1QkFBVyxDQUFBO0lBQ1gscUNBQXlCLENBQUE7SUFDekIsNkJBQWlCLENBQUEsQ0FBQyxPQUFPO0FBQzdCLENBQUMsRUFSVyxRQUFRLEdBQVIsZ0JBQVEsS0FBUixnQkFBUSxRQVFuQjtBQVFELElBQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUUxQixJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUU1QztJQUE2QywwQkFBWTtJQUF6RDtRQUFBLHFFQTJLQztRQXBJVSxZQUFNLEdBQVEsSUFBSSxDQUFBO1FBRWxCLGNBQVEsR0FBWSxJQUFJLENBQUE7UUFDeEIsU0FBRyxHQUFlLHNCQUFVLENBQUMsS0FBSyxDQUFBO1FBRXpDLGdCQUFnQjtRQUNOLHlCQUFtQixHQUFZLElBQUksQ0FBQztRQTZHOUMsbUJBQWEsR0FBVyxDQUFDLENBQUE7O0lBaUI3QixDQUFDO0lBdktVLG1CQUFZLEdBQW5CO0lBRUEsQ0FBQztJQUVELHNCQUFXLHVCQUFHO2FBQWQ7WUFDSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsQ0FBQzthQUNELFVBQWUsS0FBVTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDOzs7T0FIQTtJQUtEOztPQUVHO0lBQ1csYUFBTSxHQUFwQjtRQUNJLE9BQU8sSUFBSSxDQUFD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Q0FBQztJQUVELHVCQUFNLEdBQU47SUFFQSxDQUFDO0lBRUQsd0JBQU8sR0FBUCxVQUFRLFdBQW9CO0lBRTVCLENBQUM7SUFFRCx5QkFBUSxHQUFSLFVBQVMsRUFBVTtJQUVuQixDQUFDO0lBRUQsd0JBQU8sR0FBUDtJQUVBLENBQUM7SUFHRDs7Ozs7O09BTUc7SUFDSCxnQ0FBZSxHQUFmLFVBQWdCLElBQWEsRUFBRSxRQUFRLEVBQUUsTUFBYSxFQUFFLE1BQWdCLEVBQUUsS0FBMkM7UUFBNUUsdUJBQUEsRUFBQSxhQUFhO1FBQUUsdUJBQUEsRUFBQSxXQUFnQjtRQUFFLHNCQUFBLEVBQUEsUUFBb0Isc0JBQVUsQ0FBQyxZQUFZO1FBQ2pILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNwQixtQkFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUVELGdDQUFlLEdBQWYsVUFBZ0IsSUFBYTtRQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEIsbUJBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQTVJZ0IsVUFBRyxHQUFhLFFBQVEsQ0FBQyxFQUFFLENBQUE7SUE5QmxCLE1BQU07UUFEbkMsT0FBTztPQUNzQixNQUFNLENBMktuQztJQUFELGFBQUM7Q0EzS0QsQUEyS0MsQ0EzSzRDLEVBQUUsQ0FBQyxTQUFTLEdBMkt4RDtrQkEzSzZCLE1BQU0iLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdWRpb0NvbnN0IH0gZnJvbSBcIi4uLy4uL2RhdGEvY29uc3QvVHlwZUNvbnN0XCI7XG5pbXBvcnQgR2FtZURhdGFDZW50ZXIgZnJvbSBcIi4uLy4uL2RhdGEvR2FtZURhdGFDZW50ZXJcIjtcbmltcG9ydCBFdmVudE1uZyBmcm9tIFwiLi4vLi4vbWFuYWdlci9FdmVudE1uZ1wiO1xuaW1wb3J0IHsgdWlDb21tb24gfSBmcm9tIFwiLi4vLi4vdXRpbHMvVUlDb21tb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBVSUNsYXNzPFQgZXh0ZW5kcyBVSUJhc2U+IHtcbiAgICBuZXcoKTogVDtcbiAgICBnZXRVcmwoKTogc3RyaW5nO1xuICAgIGdldE5hbWUoKTogc3RyaW5nO1xuICAgIGdldFBvcCgpOiBCQVNFX1BPUDtcbiAgICBnZXRaaW5kZXgoKTogbnVtYmVyO1xuICAgIC8qKiDpooTliqDovb3pobXpnaLmiYDpnIDotYTmupAgKi9cbiAgICBvbkNvbGxlY3RSZXMoKTogdm9pZDtcbn1cbi8vIOW8ueWHuuaWueW8j1xuZXhwb3J0IGVudW0gQkFTRV9QT1Age1xuICAgIE1BSU4gPSBcIk1BSU5cIiwvL+S4u+WcuuaZr1xuICAgIFVJID0gXCJVSVwiLCAgIC8v6Zmk5LqGTUFJTuS7peWklueahOWFtuS7lumdnuW8ueeql1VJXG4gICAgVUlfSEFMRiA9IFwiVUlfSEFMRlwiLC8vIOS4jlVJ57G75Ly8LOS9huS4jeWxleekuuW6lemDqOaMiemSrizlj6rmmL7npLrpobbpg6jotYTmupDmoI9cbiAgICBGVUxMID0gXCJGVUxMXCIsLy8g55uW5L2P6I+c5Y2V55WM6Z2i55qE56qX5Y+jXG4gICAgUE9QID0gXCJQT1BcIiwgLy8g5by556qXXG4gICAgTWVtdUJvdHRvbSA9IFwiTWVtdUJvdHRvbVwiLCAvLyDkuLvnlYzpnaLnmoTlupXpg6joj5zljZXmoI91aVxuICAgIEJhdHRsZSA9IFwiQmF0dGxlXCIgLy8g5oiY5paX5by556qXXG59XG5cbmludGVyZmFjZSBSZWdpc3RlckV2ZW50IHtcbiAgICBjYWxsYmFjazogRnVuY3Rpb24sXG4gICAgdGFyZ2V0PzogYW55LFxuICAgIHBsYXlBdWRpbz86IGJvb2xlYW4sXG59XG5cbmNvbnN0IFBSRUZBQl9VSV9ESVIgPSAncHJlZmFiLyc7XG5cbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgVUlCYXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIHByZWZhYlVybDtcbiAgICBwcm90ZWN0ZWQgc3RhdGljIGNsYXNzTmFtZTtcblxuICAgIHN0YXRpYyBvbkNvbGxlY3RSZXMoKSB7XG5cbiAgICB9XG4gICAgcHJvdGVjdGVkIG1UYWc6IGFueTtcbiAgICBwdWJsaWMgZ2V0IHRhZygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5tVGFnO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHRhZyh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMubVRhZyA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOW+l+WIsHByZWZhYueahOi3r+W+hO+8jOebuOWvueS6jnJlc291cmNlc+ebruW9lVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZhYlVybDtcbiAgICAgICAgLy9yZXR1cm4gUFJFRkFCX1VJX0RJUiArIHRoaXMucHJlZmFiVXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOexu+WQje+8jOeUqOS6jue7mVVJ5ZG95ZCNXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBvcDogQkFTRV9QT1AgPSBCQVNFX1BPUC5VSVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UG9wKCk6IEJBU0VfUE9QIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wXG4gICAgfVxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3ppbmRleDogbnVtYmVyXG4gICAgcHVibGljIHN0YXRpYyBnZXRaaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ppbmRleFxuICAgIH1cblxuICAgIHB1YmxpYyBiZWxvbmc6IGFueSA9IG51bGxcblxuICAgIHB1YmxpYyBzaG93QW5pbTogYm9vbGVhbiA9IHRydWVcbiAgICBwdWJsaWMgYmdtOiBBdWRpb0NvbnN0ID0gQXVkaW9Db25zdC5lbXB0eVxuXG4gICAgLyoqIOaYr+WQpuazqOWGjOmYsuepv+mAj+S6i+S7tiAqL1xuICAgIHByb3RlY3RlZCBpc1JlZ2lzdGVyU3RvcEV2ZW50OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKumAmuefpeS6i+S7tuWIl+ihqCAqL1xuICAgIHByaXZhdGUgX25vdGlmeUV2ZW50TGlzdDogTWFwPHN0cmluZywgRnVuY3Rpb24+O1xuICAgIC8qKueCueWHu+S6i+S7tuWIl+ihqCAqL1xuICAgIHByaXZhdGUgX3JlZ2lzdGVyRXZlbnRMaXN0OiBNYXA8c3RyaW5nLCBSZWdpc3RlckV2ZW50PjtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIOS7peS4i+aWueazleS4jeiDveWcqOWtkOexu+mHjeWGmSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIC8qKuWIneWni+WMluWHveaVsO+8jOWcqG9uTG9hZOS5i+WJjeiiq+iwg+eUqO+8jHBhcmFtc+S4uuaJk+W8gHVp5piv5Lyg5YWl55qE5LiN5a6a5Y+C5pWw5pWw57uEICovXG4gICAgaW5pdChwYXJhbXMpIHtcbiAgICAgICAgdGhpcy5vbkluaXQocGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipvbkxvYWQg5Lya5Zyo57uE5Lu26KKr6aaW5qyh5Yqg6L2955qE5pe25YCZ6KKr5Zue6LCD44CC5LiU5LyY5YWI5LqO5Lu75L2Vc3RhcnQgKi9cbiAgICBvbkxvYWQoKSB7XG4gICAgICAgIHRoaXMuX25vdGlmeUV2ZW50TGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBGdW5jdGlvbj4oKTtcbiAgICAgICAgLy8gdGhpcy5fcmVnaXN0ZXJFdmVudExpc3QgPSBuZXcgTWFwPHN0cmluZywgUmVnaXN0ZXJFdmVudD4oKTtcblxuICAgICAgICB0aGlzLm9uVUlMb2FkKCk7XG4gICAgfVxuXG4gICAgb25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uVUlEZXN0cm95KCk7XG4gICAgfVxuXG4gICAgb25FbmFibGUoKSB7XG4gICAgICAgIC8vIGlmICh0aGlzLmlzUmVnaXN0ZXJTdG9wRXZlbnQpIHtcbiAgICAgICAgLy8gICAgIHRoaXMub25SZWdpc3RlckV2ZW50KHRoaXMubm9kZSwgdGhpcy50b3VjaEV2ZW50LCB0aGlzKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAodGhpcy5iZ20gIT0gQXVkaW9Db25zdC5lbXB0eSkge1xuICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIuYXVkaW8ucGxheU11c2ljKHRoaXMuYmdtKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25TaG93KCk7XG4gICAgfVxuXG4gICAgb25EaXNhYmxlKCkge1xuICAgICAgICBpZiAodGhpcy5pc1JlZ2lzdGVyU3RvcEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnVuUmVnaXN0ZXJFdmVudCh0aGlzLm5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkhpZGUoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIHRoaXMuX25vdGlmeUV2ZW50TGlzdC5mb3JFYWNoKChmLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIl9ub3RpZnlFdmVudExpc3Qga2V5ID0gXCIra2V5KVxuICAgICAgICAgICAgICAgIEV2ZW50TW5nLm9mZihrZXksIGYsIHNlbGYpO1xuICAgICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZnlFdmVudExpc3QuY2xlYXIoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJvbkRpc2FibGUtPlwiICsgZXJyb3IpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWdpc3RlckNvdW50ID4gMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcih0aGlzLm5hbWUgKyBcIiDmjInpkq7ms6jlhozlkI7msqFvZmbmjonllYrlloIgXFxu77yI4pWv77yN77y/77yN77yJ4pWv4pWn4pWnIFwiKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoq5rOo5YaMbm90aWNl5LqL5Lu277yMZGlzYWJsZeeahOaXtuWAmeS8muiHquWKqOenu+mZpCAqL1xuICAgIGluaXRFdmVudChldmVudE5hbWU6IHN0cmluZywgY2I6IEZ1bmN0aW9uKSB7XG4gICAgICAgIEV2ZW50TW5nLm9uKGV2ZW50TmFtZSwgY2IsIHRoaXMpO1xuICAgICAgICB0aGlzLl9ub3RpZnlFdmVudExpc3Quc2V0KGV2ZW50TmFtZSwgY2IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG91Y2hFdmVudChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBzdGFydCgpIHtcbiAgICAgICAgLy8gdGhpcy5vblN0YXJ0KCk7IC8vIOaUueWcqFVpTW5n5LitLOWcqGluaXTlkozmt7vliqDliLDniLboioLngrnkuYvlkI7op6blj5FcbiAgICB9XG5cbiAgICB1cGRhdGUoZHQpIHtcbiAgICAgICAgdGhpcy5vblVwZGF0ZShkdCk7XG4gICAgfVxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG4gICAgb25Jbml0KHBhcmFtcykge1xuXG4gICAgfVxuXG4gICAgb25VSUxvYWQoKSB7XG5cbiAgICB9XG5cbiAgICBvblVJRGVzdHJveSgpIHtcblxuICAgIH1cblxuICAgIG9uU2hvdygpIHtcblxuICAgIH1cblxuICAgIG9uSGlkZSgpIHtcblxuICAgIH1cblxuICAgIG9uU3RhcnQoaXNGaXJzdFRpbWU6IGJvb2xlYW4pIHtcblxuICAgIH1cblxuICAgIG9uVXBkYXRlKGR0OiBudW1iZXIpIHtcblxuICAgIH1cblxuICAgIG9uQ2xvc2UoKSB7XG5cbiAgICB9XG5cbiAgICByZWdpc3RlckNvdW50OiBudW1iZXIgPSAwXG4gICAgLyoqXG4gICAgICog5rOo5YaMdG91Y2jkuovku7ZcbiAgICAgKiBAcGFyYW0gbm9kZSBcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgXG4gICAgICogQHBhcmFtIHRhcmdldCBcbiAgICAgKiBAcGFyYW0gcGxheUF1ZGlvIOaYr+WQpuaSreaUvumfs+aViO+8jOm7mOiupOaSreaUvlxuICAgICAqL1xuICAgIG9uUmVnaXN0ZXJFdmVudChub2RlOiBjYy5Ob2RlLCBjYWxsYmFjaywgdGFyZ2V0ID0gbnVsbCwgcGFyYW1zOiBhbnkgPSBbXSwgYXVkaW86IEF1ZGlvQ29uc3QgPSBBdWRpb0NvbnN0LmVmZmVjdF9jbGljaykge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ291bnQrK1xuICAgICAgICB1aUNvbW1vbi5vblJlZ2lzdGVyRXZlbnQobm9kZSwgY2FsbGJhY2ssIHRhcmdldCwgcGFyYW1zLCBhdWRpbylcbiAgICB9XG5cbiAgICB1blJlZ2lzdGVyRXZlbnQobm9kZTogY2MuTm9kZSkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyQ291bnQtLVxuICAgICAgICB1aUNvbW1vbi51blJlZ2lzdGVyRXZlbnQobm9kZSlcbiAgICB9XG59Il19
|