257 lines
33 KiB
JavaScript
257 lines
33 KiB
JavaScript
|
|
(function() {
|
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
|
var __module = nodeEnv ? module : {exports:{}};
|
|
var __filename = 'preview-scripts/assets/Script/RankManager.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, '9c7ccNc8VlJ9Jy7qfTPoy0E', 'RankManager');
|
|
// Script/RankManager.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 });
|
|
var GameData_1 = require("./GameData");
|
|
var List_1 = require("./ListView/List");
|
|
var HttpUtil_1 = require("./crypto/HttpUtil");
|
|
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
|
//排行榜
|
|
var RankManager = /** @class */ (function (_super) {
|
|
__extends(RankManager, _super);
|
|
function RankManager() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
_this.Player = null;
|
|
_this.selfNode = null;
|
|
_this.phone = null;
|
|
return _this;
|
|
}
|
|
RankManager.prototype.onLoad = function () {
|
|
this.init();
|
|
};
|
|
//初始化数据
|
|
RankManager.prototype.init = function () {
|
|
this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default);
|
|
this.Player.getChildByName("rank").active = false;
|
|
this.listData = [];
|
|
this.selfData = null;
|
|
this.rankNumber = 100;
|
|
this.rankTotal = 100;
|
|
this.selfNode.opacity = 0;
|
|
};
|
|
RankManager.prototype.start = function () {
|
|
this.Player.active = false;
|
|
this.getRank();
|
|
};
|
|
//调用获取排行榜接口
|
|
RankManager.prototype.getRank = function () {
|
|
var postData = {
|
|
"page": 1,
|
|
"pageSize": 100
|
|
};
|
|
//回调进getRankData
|
|
HttpUtil_1.default.rankData(2, this.getRankData.bind(this), postData);
|
|
};
|
|
//实际设置排行数据
|
|
RankManager.prototype.getRankData = function (data) {
|
|
if (data) {
|
|
// console.log(data);
|
|
this.listData = data.data.list;
|
|
this.selfData = data.data.info;
|
|
var rankData = [];
|
|
var self = false;
|
|
for (var i = 0; i <= this.listData.length - 1; i++) {
|
|
rankData.push({ rank: (i + 1), name: this.listData[i].nickName, total: this.listData[i].score, pic: this.listData[i].pic });
|
|
if (GameData_1.default._instance.GM_INFO.userId == this.listData[i].userId) {
|
|
self = true;
|
|
this.rankNumber = i;
|
|
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + "";
|
|
}
|
|
if (i == (this.listData.length - 1) && self == false) {
|
|
this.rankNumber = 101;
|
|
//如果列表大于99显示99+ 否则显示未排名
|
|
if (this.listData.length >= 99)
|
|
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
|
|
else
|
|
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
|
}
|
|
}
|
|
//如果排行榜列表没有人
|
|
if (this.listData.length == 0)
|
|
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
|
this.rankList.setData(rankData);
|
|
if (this.selfData.nickName.length > 6) {
|
|
this.selfData.nickName = this.selfData.nickName.substring(0, 6) + "...";
|
|
}
|
|
this.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = this.selfData.nickName;
|
|
//如果没有排行分数信息
|
|
if (this.selfData.score) {
|
|
this.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = this.selfData.score;
|
|
}
|
|
this.setPic(this.selfData.pic);
|
|
if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "1") {
|
|
this.selfNode.getChildByName("rank").getChildByName("one").active = true;
|
|
}
|
|
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "2") {
|
|
this.selfNode.getChildByName("rank").getChildByName("two").active = true;
|
|
}
|
|
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "3") {
|
|
this.selfNode.getChildByName("rank").getChildByName("three").active = true;
|
|
}
|
|
else {
|
|
// this.selfNode.getChildByName("four").active = true;
|
|
}
|
|
this.selfNode.opacity = 255;
|
|
if (this.selfData.score == 0)
|
|
this.selfNode.opacity = 0;
|
|
}
|
|
};
|
|
//返回按钮
|
|
RankManager.prototype.backClick = function () {
|
|
cc.director.loadScene("LoadScene");
|
|
};
|
|
//最上方用户动画
|
|
RankManager.prototype.playerAction = function () {
|
|
var _this = this;
|
|
//-254 377 210 453
|
|
this.Player.getChildByName("rank").active = false;
|
|
var time = 1;
|
|
this.tween = cc.tween(this.Player)
|
|
.to(2, { position: cc.v3(210, 485, 0) })
|
|
.call(function () {
|
|
_this.Player.getChildByName("rank").active = true;
|
|
_this.Player.getChildByName("rank").getChildByName("number")
|
|
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
|
})
|
|
.start();
|
|
if (this.listData.length > 0) {
|
|
if (this.listData.length >= 99) {
|
|
if (this.rankNumber >= 99) {
|
|
time = this.getRankRandom();
|
|
}
|
|
else
|
|
time = (this.listData.length - this.rankNumber) / this.listData.length;
|
|
}
|
|
else {
|
|
if (this.rankNumber > 99) {
|
|
time = 0;
|
|
}
|
|
else
|
|
time = (this.listData.length - this.rankNumber) / this.listData.length;
|
|
}
|
|
}
|
|
else {
|
|
time = 0;
|
|
}
|
|
setTimeout(function () {
|
|
if (_this.tween)
|
|
_this.tween.stop();
|
|
if (_this.Player) {
|
|
_this.Player.getChildByName("rank").active = true;
|
|
_this.Player.getChildByName("rank").getChildByName("number")
|
|
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
|
}
|
|
}, time * 2000);
|
|
};
|
|
RankManager.prototype.getRankRandom = function () {
|
|
var time = (Math.random() * 49 + 1) / 100;
|
|
var matchId = cc.sys.localStorage.getItem("matchNumber");
|
|
if (matchId == null || matchId == undefined) {
|
|
time = 0;
|
|
}
|
|
return time;
|
|
};
|
|
//设置头像
|
|
RankManager.prototype.setPic = function (pic) {
|
|
var _this = this;
|
|
this.phone.node.parent.getChildByName("icon").active = false;
|
|
this.phone.node.active = false;
|
|
this.Player.active = true;
|
|
this.Player.opacity = 0;
|
|
this.Player.getChildByName("mask").getChildByName("icon").active = false;
|
|
this.Player.getChildByName("mask").getChildByName("phone").active = false;
|
|
fetch(pic)
|
|
.then(function (response) {
|
|
return response.headers.get('Content-Length');
|
|
})
|
|
.then(function (errNo) {
|
|
if (errNo == "5093") {
|
|
_this.phone.node.parent.getChildByName("icon").active = true;
|
|
_this.Player.getChildByName("mask").getChildByName("icon").active = true;
|
|
}
|
|
})
|
|
.catch(function (error) {
|
|
console.error('Error fetching X-Info:', error);
|
|
});
|
|
var self = this;
|
|
cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) {
|
|
self.Player.opacity = 255;
|
|
if (texture) {
|
|
self.phone.node.active = true;
|
|
self.phone.spriteFrame = new cc.SpriteFrame(texture);
|
|
self.Player.getChildByName("mask").getChildByName("icon").active = false;
|
|
self.Player.getChildByName("mask").getChildByName("phone").active = true;
|
|
self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite)
|
|
.spriteFrame = new cc.SpriteFrame(texture);
|
|
setTimeout(function () {
|
|
self.playerAction();
|
|
}, 500);
|
|
}
|
|
else {
|
|
self.Player.getChildByName("mask").getChildByName("icon").active = true;
|
|
setTimeout(function () {
|
|
self.playerAction();
|
|
}, 500);
|
|
}
|
|
});
|
|
};
|
|
__decorate([
|
|
property(cc.Node) //用户上方头像
|
|
], RankManager.prototype, "Player", void 0);
|
|
__decorate([
|
|
property(cc.Node) //用户最下方个人信息
|
|
], RankManager.prototype, "selfNode", void 0);
|
|
__decorate([
|
|
property(cc.Sprite) //用户头像换图
|
|
], RankManager.prototype, "phone", void 0);
|
|
RankManager = __decorate([
|
|
ccclass
|
|
], RankManager);
|
|
return RankManager;
|
|
}(cc.Component));
|
|
exports.default = RankManager;
|
|
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsd0NBQW1DO0FBQ25DLDhDQUF5QztBQUVuQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUM1QyxLQUFLO0FBRUw7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUE0TEM7UUExTEcsWUFBTSxHQUFZLElBQUksQ0FBQztRQUV2QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFdBQUssR0FBYyxJQUFJLENBQUM7O0lBc0w1QixDQUFDO0lBOUtHLDRCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU87SUFDUCwwQkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRSxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxP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QVE7OENBQ1o7SUFOUCxXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBNEwvQjtJQUFELGtCQUFDO0NBNUxELEFBNExDLENBNUx3QyxFQUFFLENBQUMsU0FBUyxHQTRMcEQ7a0JBNUxvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdhbWVEYXRhIGZyb20gXCIuL0dhbWVEYXRhXCI7XHJcbmltcG9ydCBMaXN0IGZyb20gXCIuL0xpc3RWaWV3L0xpc3RcIjtcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gXCIuL2NyeXB0by9IdHRwVXRpbFwiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuLy/mjpLooYzmppxcclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFua01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35LiK5pa55aS05YOPXHJcbiAgICBQbGF5ZXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpICAgICAgICAgIC8v55So5oi35pyA5LiL5pa55Liq5Lq65L+h5oGvXHJcbiAgICBzZWxmTm9kZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlKSAgICAgICAgLy/nlKjmiLflpLTlg4/mjaLlm75cclxuICAgIHBob25lOiBjYy5TcHJpdGUgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSByYW5rTGlzdDogTGlzdDsgICAgIC8v5o6S6KGM5qacXHJcbiAgICB0d2VlbjogY2MuVHdlZW48Y2MuTm9kZT47ICAgLy/mnIDkuIrmlrnnlKjmiLflpLTlg4/liqjnlLtcclxuICAgIGxpc3REYXRhOiBhbnk7ICAgICAgICAgICAgICAvL+aAu+WIl+ihqOS/oeaBr1xyXG4gICAgc2VsZkRhdGE6IGFueTsgICAgICAgICAgICAgIC8v6Ieq5bex5L+h5oGvXHJcbiAgICByYW5rTnVtYmVyOiBudW1iZXI7ICAgICAgICAgLy/nlKjmiLfoh6rlt7HmjpLlkI0g5pyJ5Y+v6IO95LiN5Zyo5o6S6KGM5qac5YaFOTkrXHJcbiAgICByYW5rVG90YWw6IG51bWJlcjsgICAgICAgICAgLy/ojrflj5bmjpLooYzmppznlKjmiLfmlbDph48g546w5Zyo5Li6MTAwXHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gICAgLy/liJ3lp4vljJbmlbDmja5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLnJhbmtMaXN0ID0gY2MuZmluZChcIlNjcm9sbFZpZXdcIiwgdGhpcy5ub2RlKS5nZXRDb21wb25lbnQoTGlzdCk7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGZEYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSAxMDA7XHJcbiAgICAgICAgdGhpcy5yYW5rVG90YWw9IDEwMDtcclxuICAgICAgICB0aGlzLnNlbGZOb2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG4gICAgLy/osIPnlKjojrflj5bmjpLooYzmppzmjqXlj6NcclxuICAgIGdldFJhbmsoKXtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwicGFnZVwiOjEsXHJcbiAgICAgICAgICAgIFwicGFnZVNpemVcIjoxMDBcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgSHR0cFV0aWwucmFua0RhdGEoMix0aGlzLmdldFJhbmtEYXRhLmJpbmQodGhpcykscG9zdERhdGEpO1xyXG4gICAgfVxyXG4gICAgLy/lrp7pmYXorr7nva7mjpLooYzmlbDmja5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IGRhdGEuZGF0YS5saXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgICAgIGxldCByYW5rRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc2VsZiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPD10aGlzLmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgICAgICByYW5rRGF0YS5wdXNoKHtyYW5rOihpKzEpLCBuYW1lOnRoaXMubGlzdERhdGFbaV0ubmlja05hbWUsIHRvdGFsOnRoaXMubGlzdERhdGFbaV0uc2NvcmUsIHBpYzp0aGlzLmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkID09IHRoaXMubGlzdERhdGFbaV0udXNlcklkKXtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoaSA9PSAodGhpcy5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5rTnVtYmVyID0gMTAxO1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5aaC5p6c5YiX6KGo5aSn5LqOOTnmmL7npLo5OSsg5ZCm5YiZ5pi+56S65pyq5o6S5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjk5K1wiOyBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCLmnKrmjpLlkI1cIiBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WmguaenOaOkuihjOamnOWIl+ihqOayoeacieS6ulxyXG4gICAgICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA9PSAwKSB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwi5pyq5o6S5ZCNXCIgXHJcbiAgICAgICAgICAgIHRoaXMucmFua0xpc3Quc2V0RGF0YShyYW5rRGF0YSk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuc2VsZkRhdGEubmlja05hbWUubGVuZ3RoID4gNil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lPSB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lLnN1YnN0cmluZygwLDYpICsgXCIuLi5cIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICAgICAgLy/lpoLmnpzmsqHmnInmjpLooYzliIbmlbDkv6Hmga9cclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmRGF0YS5zY29yZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNlbGZEYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKHRoaXMuc2VsZkRhdGEucGljKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID09IFwiMlwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9PSBcIjNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmb3VyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLnNjb3JlID09IDApIHRoaXMuc2VsZk5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxMCw0ODUsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID49IDk5KXtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5nZXRSYW5rUmFuZG9tKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlICB0aW1lID0gKHRoaXMubGlzdERhdGEubGVuZ3RoIC0gdGhpcy5yYW5rTnVtYmVyKS90aGlzLmxpc3REYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID4gOTkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWUgPSAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRpbWUgPSAodGhpcy5saXN0RGF0YS5sZW5ndGggLSB0aGlzLnJhbmtOdW1iZXIpL3RoaXMubGlzdERhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy50d2Vlbil0aGlzLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgaWYodGhpcy5QbGF5ZXIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCB0aW1lKjIwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJhbmtSYW5kb20oKXtcclxuICAgICAgICBsZXQgdGltZSA9IChNYXRoLnJhbmRvbSgpKjQ5KzEpLzEwMFxyXG4gICAgICAgIHZhciBtYXRjaElkID0gY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWF0Y2hOdW1iZXJcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBudWxsIHx8IG1hdGNoSWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgdGltZSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v6K6+572u5aS05YOPXHJcbiAgICBwdWJsaWMgc2V0UGljKHBpYyl7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBmZXRjaChwaWMpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgIGlmKGVyck5vID09IFwiNTA5M1wiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHBpYywge2V4dDonLnBuZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYuUGxheWVyLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5ub2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnBob25lLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcInBob25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKVxyXG4gICAgICAgICAgICAgICAgLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGF5ZXJBY3Rpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG4iXX0=
|