LeveRankItem.js
21.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/scripts/prefabs/LeveRankItem.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, '6bab23+1R5JurQ3NisvK/RF', 'LeveRankItem');
// scripts/prefabs/LeveRankItem.ts
"use strict";
// Learn TypeScript:
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
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 });
var SaveDataManager_1 = require("../component/SaveDataManager");
var Global_1 = require("../Global");
var BattleConst_1 = require("../kernel/battle/BattleConst");
var TableDefine_1 = require("../kernel/table/TableDefine");
var UIManager_1 = require("../ui/UIManager");
var UITitleData_1 = require("../ui/uiView/UITitleData");
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var LevelRankItem = /** @class */ (function (_super) {
__extends(LevelRankItem, _super);
function LevelRankItem() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._levelId = 0;
return _this;
}
LevelRankItem.prototype.onLoad = function () {
this._line = this.node.getChildByName('line');
};
LevelRankItem.prototype.start = function () {
BattleConst_1.getGlobalNode().on(Global_1.GlobalEvent.LEVEL_STAR_CHANGE, this.onStarChange, this);
};
LevelRankItem.prototype.onDestroy = function () {
BattleConst_1.getGlobalNode().targetOff(this);
};
LevelRankItem.prototype.setLevelId = function (id) {
this._levelId = id;
this.refresh();
};
LevelRankItem.prototype.setLineLayer = function (node) {
this._lineLayer = node;
// this._line.removeFromParent();
// this._lineLayer.addChild(this._line);
// this._line.active = true;
};
LevelRankItem.prototype.refresh = function () {
var isUnlocked = (this._levelId <= SaveDataManager_1.SaveDataManager.ins.runtimeData.curLevel);
this.node.getChildByName('btn').getComponentInChildren(cc.Label).string = this._levelId.toString();
var curNext = (this._levelId == SaveDataManager_1.SaveDataManager.ins.runtimeData.curLevel + 1);
if (!isUnlocked && curNext) {
this.node.getChildByName('back').active = false;
this.node.getChildByName('btn').active = true;
var backSp = this.node.getChildByName('btn').getChildByName('Background').getComponent(cc.Sprite);
backSp.spriteFrame = this.node.getChildByName('linkRes').getChildByName('UI_gqlb_2').getComponent(cc.Sprite).spriteFrame;
this.node.getChildByName('imgCur').active = true;
}
else {
this.node.getChildByName('btn').active = isUnlocked;
if (isUnlocked) {
var backSp = this.node.getChildByName('btn').getChildByName('Background').getComponent(cc.Sprite);
backSp.spriteFrame = this.node.getChildByName('linkRes').getChildByName('UI_gqlb_1').getComponent(cc.Sprite).spriteFrame;
}
this.node.getChildByName('back').active = !isUnlocked;
this.node.getChildByName('imgCur').active = false;
}
var star = 0;
if (SaveDataManager_1.SaveDataManager.ins.runtimeData.levelScoreMap[this._levelId]) {
star = SaveDataManager_1.SaveDataManager.ins.runtimeData.levelScoreMap[this._levelId];
}
var starContainer = cc.find('btn/Background/starContainer', this.node);
for (var i = 0; i < 3; ++i) {
var starNode = starContainer.children[i];
starNode.getComponent(cc.Sprite).spriteFrame = this.node.getChildByName('linkRes').getChildByName('star' + (i + 1 <= star ? '1' : '2')).getComponent(cc.Sprite).spriteFrame;
}
this.scheduleOnce(this.updateLine.bind(this), 0);
};
LevelRankItem.prototype.updateLine = function () {
if (this._line.parent != this._lineLayer) {
this._line.removeFromParent();
this._lineLayer.addChild(this._line);
this._line.active = true;
}
var nextLv = this._levelId + 1;
var maxLv = Global_1.tMgr.getConfig(TableDefine_1.TableName.GAME_PLAY, 22).Value;
if (nextLv > maxLv) {
this._line.active = false;
return;
}
var nextIsLihgt = (nextLv <= SaveDataManager_1.SaveDataManager.ins.runtimeData.curLevel + 1);
this._line.getComponent(cc.Sprite).spriteFrame = (this.node.getChildByName('linkRes').getChildByName('line' + (nextIsLihgt ? '1' : '2'))).getComponent(cc.Sprite).spriteFrame;
var isEnd = (this._levelId % 5 == 0);
var isReverse = (Math.ceil(this._levelId / 5) % 2 == 0); //是否反向
if (isEnd) {
this._line.angle = 90;
this._line.setPosition(this.node.position.x, this.node.position.y - this.node.height / 2);
}
else {
this._line.angle = 0;
this._line.setPosition(this.node.position.x + this.node.width / 2 * (isReverse ? -1 : 1), this.node.position.y);
}
};
LevelRankItem.prototype.onStarChange = function (level) {
if (level == this._levelId || level == this._levelId - 1) {
this.refresh();
}
};
LevelRankItem.prototype.onBtnClick = function () {
UITitleData_1.UITitleData.id = this._levelId;
// UIManager.ins.closeWindow(WindowName.LEVEL_RANK);
UIManager_1.UIManager.ins.openWindow(Global_1.WindowName.PREVIEW, UITitleData_1.UITitleData.id);
};
LevelRankItem = __decorate([
ccclass
], LevelRankItem);
return LevelRankItem;
}(cc.Component));
exports.default = LevelRankItem;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0c1xccHJlZmFic1xcTGV2ZVJhbmtJdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLGdFQUErRDtBQUMvRCxvQ0FBMEQ7QUFDMUQsNERBQTZEO0FBQzdELDJEQUF1RTtBQUN2RSw2Q0FBNEM7QUFDNUMsd0RBQXVEO0FBRWpELElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQTJDLGlDQUFZO0lBQXZEO1FBQUEscUVBaUhDO1FBL0dXLGNBQVEsR0FBVyxDQUFDLENBQUM7O0lBK0dqQyxDQUFDO0lBM0dzQiw4QkFBTSxHQUFOO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRWtCLDZCQUFLLEdBQUw7UUFDZiwyQkFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLG9CQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRVMsaUNBQVMsR0FBbkI7UUFDSSwyQkFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQ0FBVSxHQUFWLFVBQVcsRUFBVTtRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELG9DQUFZLEdBQVosVUFBYSxJQUFhO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGlDQUFpQztRQUNq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Q0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzlLLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtRQUUvRCxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzdGO2FBQ0k7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25IO0lBQ0wsQ0FBQztJQUVELG9DQUFZLEdBQVosVUFBYSxLQUFhO1FBQ3RCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxrQ0FBVSxHQUFWO1FBQ0kseUJBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixvREFBb0Q7UUFDcEQscUJBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLG1CQUFVLENBQUMsT0FBTyxFQUFFLHlCQUFXLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQS9HZ0IsYUFBYTtRQURqQyxPQUFPO09BQ2EsYUFBYSxDQWlIakM7SUFBRCxvQkFBQztDQWpIRCxBQWlIQyxDQWpIMEMsRUFBRSxDQUFDLFNBQVMsR0FpSHREO2tCQWpIb0IsYUFBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCB7IFNhdmVEYXRhTWFuYWdlciB9IGZyb20gXCIuLi9jb21wb25lbnQvU2F2ZURhdGFNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IEdsb2JhbEV2ZW50LCB0TWdyLCBXaW5kb3dOYW1lIH0gZnJvbSBcIi4uL0dsb2JhbFwiO1xyXG5pbXBvcnQgeyBnZXRHbG9iYWxOb2RlIH0gZnJvbSBcIi4uL2tlcm5lbC9iYXR0bGUvQmF0dGxlQ29uc3RcIjtcclxuaW1wb3J0IHsgR2FtZVBsYXlUYWJsZSwgVGFibGVOYW1lIH0gZnJvbSBcIi4uL2tlcm5lbC90YWJsZS9UYWJsZURlZmluZVwiO1xyXG5pbXBvcnQgeyBVSU1hbmFnZXIgfSBmcm9tIFwiLi4vdWkvVUlNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IFVJVGl0bGVEYXRhIH0gZnJvbSBcIi4uL3VpL3VpVmlldy9VSVRpdGxlRGF0YVwiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExldmVsUmFua0l0ZW0gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIHByaXZhdGUgX2xldmVsSWQ6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIF9saW5lTGF5ZXI6IGNjLk5vZGU7XHJcbiAgICBwcml2YXRlIF9saW5lOiBjYy5Ob2RlO1xyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvbkxvYWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGluZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnbGluZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBzdGFydCgpOiB2b2lkIHtcclxuICAgICAgICBnZXRHbG9iYWxOb2RlKCkub24oR2xvYmFsRXZlbnQuTEVWRUxfU1RBUl9DSEFOR0UsIHRoaXMub25TdGFyQ2hhbmdlLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGdldEdsb2JhbE5vZGUoKS50YXJnZXRPZmYodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGV2ZWxJZChpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5fbGV2ZWxJZCA9IGlkO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExpbmVMYXllcihub2RlOiBjYy5Ob2RlKSB7XHJcbiAgICAgICAgdGhpcy5fbGluZUxheWVyID0gbm9kZTtcclxuICAgICAgICAvLyB0aGlzLl9saW5lLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAvLyB0aGlzLl9saW5lTGF5ZXIuYWRkQ2hpbGQodGhpcy5fbGluZSk7XHJcbiAgICAgICAgLy8gdGhpcy5fbGluZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgbGV0IGlzVW5sb2NrZWQgPSAodGhpcy5fbGV2ZWxJZCA8PSBTYXZlRGF0YU1hbmFnZXIuaW5zLnJ1bnRpbWVEYXRhLmN1ckxldmVsKTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnYnRuJykuZ2V0Q29tcG9uZW50SW5DaGlsZHJlbihjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5fbGV2ZWxJZC50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBsZXQgY3VyTmV4dCA9ICh0aGlzLl9sZXZlbElkID09IFNhdmVEYXRhTWFuYWdlci5pbnMucnVudGltZURhdGEuY3VyTGV2ZWwgKyAxKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc1VubG9ja2VkICYmIGN1ck5leHQpIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdiYWNrJykuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnYnRuJykuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgbGV0IGJhY2tTcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnYnRuJykuZ2V0Q2hpbGRCeU5hbWUoJ0JhY2tncm91bmQnKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgYmFja1NwLnNwcml0ZUZyYW1lID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdsaW5rUmVzJykuZ2V0Q2hpbGRCeU5hbWUoJ1VJX2dxbGJfMicpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ2ltZ0N1cicpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdidG4nKS5hY3RpdmUgPSBpc1VubG9ja2VkO1xyXG4gICAgICAgICAgICBpZiAoaXNVbmxvY2tlZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhY2tTcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnYnRuJykuZ2V0Q2hpbGRCeU5hbWUoJ0JhY2tncm91bmQnKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGJhY2tTcC5zcHJpdGVGcmFtZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnbGlua1JlcycpLmdldENoaWxkQnlOYW1lKCdVSV9ncWxiXzEnKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoJ2JhY2snKS5hY3RpdmUgPSAhaXNVbmxvY2tlZDtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdpbWdDdXInKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGFyID0gMDtcclxuICAgICAgICBpZiAoU2F2ZURhdGFNYW5hZ2VyLmlucy5ydW50aW1lRGF0YS5sZXZlbFNjb3JlTWFwW3RoaXMuX2xldmVsSWRdKSB7XHJcbiAgICAgICAgICAgIHN0YXIgPSBTYXZlRGF0YU1hbmFnZXIuaW5zLnJ1bnRpbWVEYXRhLmxldmVsU2NvcmVNYXBbdGhpcy5fbGV2ZWxJZF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3RhckNvbnRhaW5lciA9IGNjLmZpbmQoJ2J0bi9CYWNrZ3JvdW5kL3N0YXJDb250YWluZXInLCB0aGlzLm5vZGUpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgKytpKSB7XHJcbiAgICAgICAgICAgIGxldCBzdGFyTm9kZSA9IHN0YXJDb250YWluZXIuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHN0YXJOb2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdsaW5rUmVzJykuZ2V0Q2hpbGRCeU5hbWUoJ3N0YXInICsgKGkgKyAxIDw9IHN0YXIgPyAnMScgOiAnMicpKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVPbmNlKHRoaXMudXBkYXRlTGluZS5iaW5kKHRoaXMpLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUxpbmUoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9saW5lLnBhcmVudCAhPSB0aGlzLl9saW5lTGF5ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGluZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xpbmVMYXllci5hZGRDaGlsZCh0aGlzLl9saW5lKTtcclxuICAgICAgICAgICAgdGhpcy5fbGluZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5leHRMdiA9IHRoaXMuX2xldmVsSWQgKyAxO1xyXG5cclxuICAgICAgICBsZXQgbWF4THYgPSAodE1nci5nZXRDb25maWcoVGFibGVOYW1lLkdBTUVfUExBWSwgMjIpIGFzIEdhbWVQbGF5VGFibGUpLlZhbHVlO1xyXG4gICAgICAgIGlmIChuZXh0THYgPiBtYXhMdikge1xyXG4gICAgICAgICAgICB0aGlzLl9saW5lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbmV4dElzTGloZ3QgPSAobmV4dEx2IDw9IFNhdmVEYXRhTWFuYWdlci5pbnMucnVudGltZURhdGEuY3VyTGV2ZWwgKyAxKTtcclxuICAgICAgICB0aGlzLl9saW5lLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZSgnbGlua1JlcycpLmdldENoaWxkQnlOYW1lKCdsaW5lJyArIChuZXh0SXNMaWhndCA/ICcxJyA6ICcyJykpKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZTtcclxuICAgICAgICBsZXQgaXNFbmQgPSAodGhpcy5fbGV2ZWxJZCAlIDUgPT0gMCk7XHJcbiAgICAgICAgbGV0IGlzUmV2ZXJzZSA9IChNYXRoLmNlaWwodGhpcy5fbGV2ZWxJZCAvIDUpICUgMiA9PSAwKTsgLy/mmK/lkKblj43lkJFcclxuXHJcbiAgICAgICAgaWYgKGlzRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xpbmUuYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgdGhpcy5fbGluZS5zZXRQb3NpdGlvbih0aGlzLm5vZGUucG9zaXRpb24ueCwgdGhpcy5ub2RlLnBvc2l0aW9uLnkgLSB0aGlzLm5vZGUuaGVpZ2h0IC8gMik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9saW5lLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgdGhpcy5fbGluZS5zZXRQb3NpdGlvbih0aGlzLm5vZGUucG9zaXRpb24ueCArIHRoaXMubm9kZS53aWR0aCAvIDIgKiAoaXNSZXZlcnNlID8gLTEgOiAxKSwgdGhpcy5ub2RlLnBvc2l0aW9uLnkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblN0YXJDaGFuZ2UobGV2ZWw6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChsZXZlbCA9PSB0aGlzLl9sZXZlbElkIHx8IGxldmVsID09IHRoaXMuX2xldmVsSWQgLSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkJ0bkNsaWNrKCkge1xyXG4gICAgICAgIFVJVGl0bGVEYXRhLmlkID0gdGhpcy5fbGV2ZWxJZDtcclxuICAgICAgICAvLyBVSU1hbmFnZXIuaW5zLmNsb3NlV2luZG93KFdpbmRvd05hbWUuTEVWRUxfUkFOSyk7XHJcbiAgICAgICAgVUlNYW5hZ2VyLmlucy5vcGVuV2luZG93KFdpbmRvd05hbWUuUFJFVklFVywgVUlUaXRsZURhdGEuaWQpXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==