|
(function() {
|
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
var __module = nodeEnv ? module : {exports:{}};
|
var __filename = 'preview-scripts/assets/Scripts/mod/guild/view/guild_member_item.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, '8c7a4ozZjhGa7XwxBfj3IeV', 'guild_member_item');
|
// Scripts/mod/guild/view/guild_member_item.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: @syg.com(必填, 创建模块的人员)
|
// @description:
|
// 成员列表单元
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var GuildController = require("guild_controller");
|
|
var PlayerHead = require("playerhead");
|
|
var RoleController = require("role_controller");
|
|
var GuildConst = require("guild_const");
|
|
var GuildEvent = require("guild_event");
|
|
var GuildApplyItem = cc.Class({
|
"extends": BasePanel,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("guild", "guild_member_item");
|
this.ctrl = GuildController.getInstance();
|
},
|
initPanel: function initPanel() {
|
var container = this.seekChild("container");
|
this.container_img = this.seekChild("container", cc.Sprite);
|
this.set_post_btn = this.seekChild("set_post_btn");
|
this.role_online = this.seekChild("role_online", cc.Label);
|
this.role_name = this.seekChild("role_name", cc.Label);
|
this.role_position = this.seekChild("role_position", cc.Label);
|
this.role_donate = this.seekChild("role_donate", cc.Label);
|
this.role_day_donate = this.seekChild("role_day_donate", cc.Label);
|
this.role_action = this.seekChild("role_action", cc.Label);
|
this.role_head = new PlayerHead();
|
this.role_head.setParent(container);
|
this.role_head.show();
|
this.role_head.setLev(99);
|
this.role_head.setPosition(-230, 0);
|
this.role_head.addCallBack(function () {
|
if (this.data != null) {
|
if (this.data.is_self == true) message(Utils.TI18N("怎么?自己都不认识了?"));else require("friend_controller").getInstance().openFriendCheckPanel(true, {
|
srv_id: this.data.srv_id,
|
rid: this.data.rid
|
});
|
}
|
}.bind(this));
|
},
|
registerEvent: function registerEvent() {
|
this.set_post_btn.on(cc.Node.EventType.TOUCH_END, function () {
|
if (this.data == null) return;
|
var role_vo = RoleController.getInstance().getRoleVo();
|
|
if (role_vo.position == 1) {
|
if (this.data.post != GuildConst.post_type.leader) this.ctrl.openGuildOperationPostWindow(true, this.data);
|
} else if (role_vo.position == 2) {
|
if (this.data.post == GuildConst.post_type.member) this.ctrl.openGuildOperationPostWindow(true, this.data);else if (this.data.post == GuildConst.post_type.leader) this.ctrl.openGuildImpeachPostWindow(true);
|
} else if (role_vo.position == 3) {
|
if (this.data.post == GuildConst.post_type.leader) this.ctrl.openGuildImpeachPostWindow(true);
|
}
|
}, this);
|
this.addGlobalEvent(GuildEvent.UpdateMyMemberItemEvent, function (key, value) {
|
if (key == "post" || key == "role_post") {
|
this.setPostInfo();
|
this.updateBtnStatusByRolePost();
|
}
|
}, this);
|
},
|
setData: function setData(data) {
|
this.data = data;
|
if (this.root_wnd) this.onShow();
|
},
|
onShow: function onShow() {
|
if (this.data == null) return;
|
var data = this.data;
|
this.set_post_btn.active = true;
|
this.setBaseData();
|
this.setOnLineStatus();
|
this.updateBtnStatusByRolePost();
|
|
if (data.is_self == true) {
|
// this.loadRes(PathTool.getResFrame("common", "common"), function (res_object) {
|
// this.container_img.spriteFrame = res_object.getSpriteFrame("common_1020");
|
// }.bind(this))
|
this.loadRes(PathTool.getCommonIcomPath("common_1020"), function (sf_obj) {
|
this.container_img.spriteFrame = sf_obj;
|
}.bind(this));
|
} else {
|
// this.loadRes(PathTool.getResFrame("common", "common"), function (res_object) {
|
// this.container_img.spriteFrame = res_object.getSpriteFrame("common_1029");
|
// }.bind(this))
|
this.loadRes(PathTool.getCommonIcomPath("common_1029"), function (sf_obj) {
|
this.container_img.spriteFrame = sf_obj;
|
}.bind(this));
|
}
|
},
|
setBaseData: function setBaseData() {
|
if (this.data == null) return;
|
var data = this.data;
|
this.role_name.string = data.name;
|
this.role_head.setHeadRes(data.face);
|
this.role_head.setLev(data.lev);
|
this.role_donate.string = cc.js.formatStr(Utils.TI18N("贡献:%s"), data.donate);
|
this.role_day_donate.string = cc.js.formatStr(Utils.TI18N("今日贡献:%s"), data.day_donate);
|
this.role_action.string = cc.js.formatStr(Utils.TI18N("活跃等级:%s"), data.active_lev);
|
this.setPostInfo();
|
},
|
//按钮的一些状态判断,比如说是否是自己需要怎么显示,以及自己是什么职位需要怎么显示
|
updateBtnStatusByRolePost: function updateBtnStatusByRolePost() {
|
if (this.data == null) return;
|
var imprachTime = Config.guild_data.data_const.impeach_offline_day.val;
|
var role_vo = RoleController.getInstance().getRoleVo();
|
|
if (role_vo.position == 1) {
|
if (this.data.post == GuildConst.post_type.leader) this.set_post_btn.active = false;else this.set_post_btn.active = true;
|
} else if (role_vo.position == 2) {
|
if (role_vo.position == this.data.post) this.set_post_btn.active = false;
|
|
if (this.data.post == GuildConst.post_type.leader) {
|
var time = gcore.SmartSocket.getTime() - this.data.login_time;
|
if (time >= 86400 * imprachTime) this.set_post_btn.active = true;else this.set_post_btn.active = false;
|
}
|
} else if (role_vo.position == 3) {
|
if (this.data.post == GuildConst.post_type.leader) {
|
var time = gcore.SmartSocket.getTime() - this.data.login_time;
|
if (time >= 86400 * imprachTime) this.set_post_btn.active = true;else this.set_post_btn.active = false;
|
} else {
|
this.set_post_btn.active = false;
|
}
|
}
|
},
|
setOnLineStatus: function setOnLineStatus() {
|
if (this.data == null) return;
|
var data = this.data;
|
|
if (data.online == 0) {
|
this.role_online.node.color = new cc.Color(0xd9, 0x50, 0x14, 0xff);
|
var pass_time = gcore.SmartSocket.getTime() - this.data.login_time;
|
|
if (pass_time <= 60) {
|
this.role_online.string = Utils.TI18N("刚刚");
|
} else if (pass_time > 60 && pass_time <= 3600) {
|
this.role_online.string = cc.js.formatStr(Utils.TI18N("%s分钟前"), Math.floor(pass_time / 60));
|
} else if (pass_time > 3600 && pass_time <= 86400) {
|
this.role_online.string = cc.js.formatStr(Utils.TI18N("%s小时前"), Math.floor(pass_time / 3600));
|
} else if (pass_time > 86400 && pass_time <= 604800) {
|
this.role_online.string = cc.js.formatStr(Utils.TI18N("%s天前"), Math.floor(pass_time / 86400));
|
} else {
|
this.role_online.string = Utils.TI18N("7天前");
|
}
|
} else {
|
this.role_online.node.color = new cc.Color(51, 150, 13, 0xff);
|
this.role_online.string = Utils.TI18N("在线");
|
}
|
},
|
setPostInfo: function setPostInfo() {
|
if (this.data == null) return;
|
var config = Config.guild_data.data_position[this.data.post];
|
|
if (config != null) {
|
if (this.data.post == GuildConst.post_type.member) this.role_position.node.color = new cc.Color(0x68, 0x45, 0x2a, 0xff);else this.role_position.node.color = new cc.Color(0xa8, 0x38, 0xbc, 0xff);
|
this.role_position.string = config.name;
|
}
|
},
|
suspendAllActions: function suspendAllActions() {},
|
onDelete: function onDelete() {
|
if (this.role_head) this.role_head.deleteMe();
|
this.role_head = null;
|
}
|
});
|
module.exports = GuildApplyItem;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZFxcdmlld1xcZ3VpbGRfbWVtYmVyX2l0ZW0uanMiXSwibmFtZXMiOlsiUGF0aFRvb2wiLCJyZXF1aXJlIiwiR3VpbGRDb250cm9sbGVyIiwiUGxheWVySGVhZCIsIlJvbGVDb250cm9sbGVyIiwiR3VpbGRDb25zdCIsIkd1aWxkRXZlbnQiLCJHdWlsZEFwcGx5SXRlbSIsImNjIiwiQ2xhc3MiLCJCYXNlUGFuZWwiLCJjdG9yIiwicHJlZmFiUGF0aCIsImdldFByZWZhYlBhdGgiLCJjdHJsIiwiZ2V0SW5zdGFuY2UiLCJpbml0UGFuZWwiLCJjb250YWluZXIiLCJzZWVrQ2hpbGQiLCJjb250YWluZXJfaW1nIiwiU3ByaXRlIiwic2V0X3Bvc3RfYnRuIiwicm9sZV9vbmxpbmUiLCJMYWJlbCIsInJvbGVfbmFtZSIsInJvbGVfcG9zaXRpb24iLCJyb2xlX2RvbmF0ZSIsInJvbGVfZGF5X2RvbmF0ZSIsInJvbGVfYWN0aW9uIiwicm9sZV9oZWFkIiwic2V0UGFyZW50Iiwic2hvdyIsInNldExldiIsInNldFBvc2l0aW9uIiwiYWRkQ2FsbEJhY2siLCJkYXRhIiwiaXNfc2VsZiIsIm1lc3NhZ2UiLCJVdGlscyIsIlRJMThOIiwib3BlbkZyaWVuZENoZWNrUGFuZWwiLCJzcnZfaWQiLCJyaWQiLCJiaW5kIiwicmVnaXN0ZXJFdmVudCIsIm9uIiwiTm9kZSIsIkV2ZW50VHlwZSIsIlRPVUNIX0VORCIsInJvbGVfdm8iLCJnZXRSb2xlVm8iLCJwb3NpdGlvbiIsInBvc3QiLCJwb3N0X3R5cGUiLCJsZWFkZXIiLCJvcGVuR3VpbGRPcGVyYXRpb25Qb3N0V2luZG93IiwibWVtYmVyIiwib3Blbkd1aWxkSW1wZWFjaFBvc3RXaW5kb3ciLCJhZGRHbG9iYWxFdmVudCIsIlVwZGF0ZU15TWVtYmVySXRlbUV2ZW50Iiwia2V5IiwidmFsdWUiLCJzZXRQb3N0SW5mbyIsInVwZGF0ZUJ0blN0YXR1c0J5Um9sZVBvc3QiLCJzZXREYXRhIiwicm9vdF93bmQiLCJvblNob3ciLCJhY3RpdmUiLCJzZXRCYXNlRGF0YSIsInNldE9uTGluZVN0YXR1cyIsImxvYWRSZXMiLCJnZXRDb21tb25JY29tUGF0aCIsInNmX29iaiIsInNwcml0ZUZyYW1lIiwic3RyaW5nIiwibmFtZSIsInNldEhlYWRSZXMiLCJmYWNlIiwibGV2IiwianMiLCJmb3JtYXRTdHIiLCJkb25hdGUiLCJkYXlfZG9uYXRlIiwiYWN0aXZlX2xldiIsImltcHJhY2hUaW1lIiwiQ29uZmlnIiwiZ3VpbGRfZGF0YSIsImRhdGFfY29uc3QiLCJpbXBlYWNoX29mZmxpbmVfZGF5IiwidmFsIiwidGltZSIsImdjb3JlIiwiU21hcnRTb2NrZXQiLCJnZXRUaW1lIiwibG9naW5fdGltZSIsIm9ubGluZSIsIm5vZGUiLCJjb2xvciIsIkNvbG9yIiwicGFzc190aW1lIiwiTWF0aCIsImZsb29yIiwiY29uZmlnIiwiZGF0YV9wb3NpdGlvbiIsInN1c3BlbmRBbGxBY3Rpb25zIiwib25EZWxldGUiLCJkZWxldGVNZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxrQkFBRCxDQUE3Qjs7QUFDQSxJQUFJRSxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQXhCOztBQUNBLElBQUlHLGNBQWMsR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQTVCOztBQUNBLElBQUlJLFVBQVUsR0FBR0osT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsSUFBSUssVUFBVSxHQUFHTCxPQUFPLENBQUMsYUFBRCxDQUF4Qjs7QUFFQSxJQUFJTSxjQUFjLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzFCLGFBQVNDLFNBRGlCO0FBRTFCQyxFQUFBQSxJQUFJLEVBQUUsZ0JB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S0FBUCxDQUFhLElBQWIsRUFBa0IsSUFBbEIsRUFBdUIsSUFBdkIsRUFBNEIsSUFBNUIsQ0FBaEM7QUFDSixXQUFLekUsYUFBTCxDQUFtQmlELE1BQW5CLEdBQTRCNEIsTUFBTSxDQUFDM0IsSUFBbkM7QUFDSDtBQUNKLEdBbEx5QjtBQW9MMUI2QixFQUFBQSxpQkFBaUIsRUFBQyw2QkFBVSxDQUUzQixDQXRMeUI7QUF3TDFCQyxFQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsUUFBSSxLQUFLNUUsU0FBVCxFQUNJLEtBQUtBLFNBQUwsQ0FBZTZFLFFBQWY7QUFDSixTQUFLN0UsU0FBTCxHQUFpQixJQUFqQjtBQUNIO0FBNUx5QixDQUFULENBQXJCO0FBK0xBOEUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckcsY0FBakIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEBhdXRob3I6IEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxyXG4vLyBAZGVzY3JpcHRpb246XHJcbi8vICAgICAg5oiQ5ZGY5YiX6KGo5Y2V5YWDXHJcbi8vIDxici8+Q3JlYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbnZhciBQYXRoVG9vbCA9IHJlcXVpcmUoXCJwYXRodG9vbFwiKTtcclxudmFyIEd1aWxkQ29udHJvbGxlciA9IHJlcXVpcmUoXCJndWlsZF9jb250cm9sbGVyXCIpO1xyXG52YXIgUGxheWVySGVhZCA9IHJlcXVpcmUoXCJwbGF5ZXJoZWFkXCIpO1xyXG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xyXG52YXIgR3VpbGRDb25zdCA9IHJlcXVpcmUoXCJndWlsZF9jb25zdFwiKTtcclxudmFyIEd1aWxkRXZlbnQgPSByZXF1aXJlKFwiZ3VpbGRfZXZlbnRcIik7XHJcblxyXG52YXIgR3VpbGRBcHBseUl0ZW0gPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXHJcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcImd1aWxkXCIsIFwiZ3VpbGRfbWVtYmVyX2l0ZW1cIik7XHJcbiAgICAgICAgdGhpcy5jdHJsID0gR3VpbGRDb250cm9sbGVyLmdldEluc3RhbmNlKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGluaXRQYW5lbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLnNlZWtDaGlsZChcImNvbnRhaW5lclwiKTtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lcl9pbWcgPSB0aGlzLnNlZWtDaGlsZChcImNvbnRhaW5lclwiLCBjYy5TcHJpdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0X3Bvc3RfYnRuID0gdGhpcy5zZWVrQ2hpbGQoXCJzZXRfcG9zdF9idG5cIik7XHJcbiAgICAgICAgdGhpcy5yb2xlX29ubGluZSA9IHRoaXMuc2Vla0NoaWxkKFwicm9sZV9vbmxpbmVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMucm9sZV9uYW1lID0gdGhpcy5zZWVrQ2hpbGQoXCJyb2xlX25hbWVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMucm9sZV9wb3NpdGlvbiA9IHRoaXMuc2Vla0NoaWxkKFwicm9sZV9wb3NpdGlvblwiLCBjYy5MYWJlbCk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2RvbmF0ZSA9IHRoaXMuc2Vla0NoaWxkKFwicm9sZV9kb25hdGVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMucm9sZV9kYXlfZG9uYXRlID0gdGhpcy5zZWVrQ2hpbGQoXCJyb2xlX2RheV9kb25hdGVcIiwgY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMucm9sZV9hY3Rpb24gPSB0aGlzLnNlZWtDaGlsZChcInJvbGVfYWN0aW9uXCIsIGNjLkxhYmVsKTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMucm9sZV9oZWFkID0gbmV3IFBsYXllckhlYWQoKTtcclxuICAgICAgICB0aGlzLnJvbGVfaGVhZC5zZXRQYXJlbnQoY29udGFpbmVyKTtcclxuICAgICAgICB0aGlzLnJvbGVfaGVhZC5zaG93KClcclxuICAgICAgICB0aGlzLnJvbGVfaGVhZC5zZXRMZXYoOTkpO1xyXG4gICAgICAgIHRoaXMucm9sZV9oZWFkLnNldFBvc2l0aW9uKC0yMzAsMCk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2hlYWQuYWRkQ2FsbEJhY2soKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhLmlzX3NlbGYgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKFV0aWxzLlRJMThOKFwi5oCO5LmI77yf6Ieq5bex6YO95LiN6K6k6K+G5LqG77yfXCIpKTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlKFwiZnJpZW5kX2NvbnRyb2xsZXJcIikuZ2V0SW5zdGFuY2UoKS5vcGVuRnJpZW5kQ2hlY2tQYW5lbCh0cnVlLCB7IHNydl9pZDogdGhpcy5kYXRhLnNydl9pZCwgcmlkOiB0aGlzLmRhdGEucmlkIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkuYmluZCh0aGlzKSlcclxuICAgIH0sXHJcblxyXG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuc2V0X3Bvc3RfYnRuLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgICAgIHZhciByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcclxuICAgICAgICAgICAgaWYgKHJvbGVfdm8ucG9zaXRpb24gPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5wb3N0ICE9IEd1aWxkQ29uc3QucG9zdF90eXBlLmxlYWRlcilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cmwub3Blbkd1aWxkT3BlcmF0aW9uUG9zdFdpbmRvdyh0cnVlLCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGVfdm8ucG9zaXRpb24gPT0gMikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5wb3N0ID09IEd1aWxkQ29uc3QucG9zdF90eXBlLm1lbWJlcilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN0cmwub3Blbkd1aWxkT3BlcmF0aW9uUG9zdFdpbmRvdyh0cnVlLCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhLnBvc3QgPT0gR3VpbGRDb25zdC5wb3N0X3R5cGUubGVhZGVyKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuR3VpbGRJbXBlYWNoUG9zdFdpbmRvdyh0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChyb2xlX3ZvLnBvc2l0aW9uID09IDMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEucG9zdCA9PSBHdWlsZENvbnN0LnBvc3RfdHlwZS5sZWFkZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5HdWlsZEltcGVhY2hQb3N0V2luZG93KHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgdGhpcylcclxuXHJcbiAgICAgICAgdGhpcy5hZGRHbG9iYWxFdmVudChHdWlsZEV2ZW50LlVwZGF0ZU15TWVtYmVySXRlbUV2ZW50LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09IFwicG9zdFwiIHx8IGtleSA9PSBcInJvbGVfcG9zdFwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBvc3RJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJ0blN0YXR1c0J5Um9sZVBvc3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIHRoaXMpXHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBzZXREYXRhOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpXHJcbiAgICAgICAgICAgIHRoaXMub25TaG93KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uU2hvdzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5zZXRfcG9zdF9idG4uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldEJhc2VEYXRhKCk7XHJcbiAgICAgICAgdGhpcy5zZXRPbkxpbmVTdGF0dXMoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUJ0blN0YXR1c0J5Um9sZVBvc3QoKTtcclxuICAgICAgICBpZiAoZGF0YS5pc19zZWxmID09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldFJlc0ZyYW1lKFwiY29tbW9uXCIsIFwiY29tbW9uXCIpLCBmdW5jdGlvbiAocmVzX29iamVjdCkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5jb250YWluZXJfaW1nLnNwcml0ZUZyYW1lID0gcmVzX29iamVjdC5nZXRTcHJpdGVGcmFtZShcImNvbW1vbl8xMDIwXCIpO1xyXG4gICAgICAgICAgICAvLyB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRDb21tb25JY29tUGF0aChcImNvbW1vbl8xMDIwXCIpLCBmdW5jdGlvbihzZl9vYmope1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJfaW1nLnNwcml0ZUZyYW1lID0gc2Zfb2JqO1xyXG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldFJlc0ZyYW1lKFwiY29tbW9uXCIsIFwiY29tbW9uXCIpLCBmdW5jdGlvbiAocmVzX29iamVjdCkge1xyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5jb250YWluZXJfaW1nLnNwcml0ZUZyYW1lID0gcmVzX29iamVjdC5nZXRTcHJpdGVGcmFtZShcImNvbW1vbl8xMDI5XCIpO1xyXG4gICAgICAgICAgICAvLyB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRDb21tb25JY29tUGF0aChcImNvbW1vbl8xMDI5XCIpLCBmdW5jdGlvbihzZl9vYmope1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJfaW1nLnNwcml0ZUZyYW1lID0gc2Zfb2JqO1xyXG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgc2V0QmFzZURhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgICAgIHRoaXMucm9sZV9uYW1lLnN0cmluZyA9IGRhdGEubmFtZTtcclxuICAgICAgICB0aGlzLnJvbGVfaGVhZC5zZXRIZWFkUmVzKGRhdGEuZmFjZSk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2hlYWQuc2V0TGV2KGRhdGEubGV2KTtcclxuICAgICAgICB0aGlzLnJvbGVfZG9uYXRlLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihVdGlscy5USTE4TihcIui0oeeMru+8miVzXCIpLCBkYXRhLmRvbmF0ZSk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2RheV9kb25hdGUuc3RyaW5nID0gY2MuanMuZm9ybWF0U3RyKFV0aWxzLlRJMThOKFwi5LuK5pel6LSh54yu77yaJXNcIiksIGRhdGEuZGF5X2RvbmF0ZSk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2FjdGlvbi5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCLmtLvot4PnrYnnuqfvvJolc1wiKSwgZGF0YS5hY3RpdmVfbGV2KTtcclxuICAgICAgICB0aGlzLnNldFBvc3RJbmZvKCk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5oyJ6ZKu55qE5LiA5Lqb54q25oCB5Yik5pat77yM5q+U5aaC6K+05piv5ZCm5piv6Ieq5bex6ZyA6KaB5oCO5LmI5pi+56S677yM5Lul5Y+K6Ieq5bex5piv5LuA5LmI6IGM5L2N6ZyA6KaB5oCO5LmI5pi+56S6XHJcbiAgICB1cGRhdGVCdG5TdGF0dXNCeVJvbGVQb3N0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB2YXIgaW1wcmFjaFRpbWUgPSBDb25maWcuZ3VpbGRfZGF0YS5kYXRhX2NvbnN0LmltcGVhY2hfb2ZmbGluZV9kYXkudmFsO1xyXG4gICAgICAgIHZhciByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcclxuICAgICAgICBpZiAocm9sZV92by5wb3NpdGlvbiA9PSAxKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEucG9zdCA9PSBHdWlsZENvbnN0LnBvc3RfdHlwZS5sZWFkZXIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldF9wb3N0X2J0bi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRfcG9zdF9idG4uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJvbGVfdm8ucG9zaXRpb24gPT0gMikge1xyXG4gICAgICAgICAgICBpZiAocm9sZV92by5wb3NpdGlvbiA9PSB0aGlzLmRhdGEucG9zdClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0X3Bvc3RfYnRuLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLnBvc3QgPT0gR3VpbGRDb25zdC5wb3N0X3R5cGUubGVhZGVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZSA9IGdjb3JlLlNtYXJ0U29ja2V0LmdldFRpbWUoKSAtIHRoaXMuZGF0YS5sb2dpbl90aW1lO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWUgPj0gODY0MDAgKiBpbXByYWNoVGltZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldF9wb3N0X2J0bi5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0X3Bvc3RfYnRuLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChyb2xlX3ZvLnBvc2l0aW9uID09IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5wb3N0ID09IEd1aWxkQ29uc3QucG9zdF90eXBlLmxlYWRlcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRpbWUgPSBnY29yZS5TbWFydFNvY2tldC5nZXRUaW1lKCkgLSB0aGlzLmRhdGEubG9naW5fdGltZTtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lID49IDg2NDAwICogaW1wcmFjaFRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRfcG9zdF9idG4uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldF9wb3N0X2J0bi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0X3Bvc3RfYnRuLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBzZXRPbkxpbmVTdGF0dXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBcclxuICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgICAgICBpZiAoZGF0YS5vbmxpbmUgPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvbGVfb25saW5lLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoMHhkOSwgMHg1MCwgMHgxNCwgMHhmZik7XHJcbiAgICAgICAgICAgIHZhciBwYXNzX3RpbWUgPSBnY29yZS5TbWFydFNvY2tldC5nZXRUaW1lKCkgLSB0aGlzLmRhdGEubG9naW5fdGltZTtcclxuICAgICAgICAgICAgaWYgKHBhc3NfdGltZSA8PSA2MCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb2xlX29ubGluZS5zdHJpbmcgPSBVdGlscy5USTE4TihcIuWImuWImlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXNzX3RpbWUgPiA2MCAmJiBwYXNzX3RpbWUgPD0gMzYwMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb2xlX29ubGluZS5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCIlc+WIhumSn+WJjVwiKSwgTWF0aC5mbG9vcihwYXNzX3RpbWUgLyA2MCkpO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZiAocGFzc190aW1lID4gMzYwMCAmJiBwYXNzX3RpbWUgPD0gODY0MDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb2xlX29ubGluZS5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoVXRpbHMuVEkxOE4oXCIlc+Wwj+aXtuWJjVwiKSwgTWF0aC5mbG9vcihwYXNzX3RpbWUgLyAzNjAwKSk7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmIChwYXNzX3RpbWUgPiA4NjQwMCAmJiBwYXNzX3RpbWUgPD0gNjA0ODAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucm9sZV9vbmxpbmUuc3RyaW5nID0gY2MuanMuZm9ybWF0U3RyKFV0aWxzLlRJMThOKFwiJXPlpKnliY1cIiksIE1hdGguZmxvb3IocGFzc190aW1lIC8gODY0MDApKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvbGVfb25saW5lLnN0cmluZyA9IFV0aWxzLlRJMThOKFwiN+WkqeWJjVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLnJvbGVfb25saW5lLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoNTEsIDE1MCwgMTMsIDB4ZmYpO1xyXG4gICAgICAgICAgICB0aGlzLnJvbGVfb25saW5lLnN0cmluZyA9IFV0aWxzLlRJMThOKFwi5Zyo57q/XCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9LFxyXG5cclxuICAgIHNldFBvc3RJbmZvOmZ1bmN0aW9uKCl7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICAgIHZhciBjb25maWcgPSBDb25maWcuZ3VpbGRfZGF0YS5kYXRhX3Bvc2l0aW9uW3RoaXMuZGF0YS5wb3N0XTtcclxuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpe1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLnBvc3QgPT0gR3VpbGRDb25zdC5wb3N0X3R5cGUubWVtYmVyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb2xlX3Bvc2l0aW9uLm5vZGUuY29sb3IgPSBuZXcgY2MuQ29sb3IoMHg2OCwweDQ1LDB4MmEsMHhmZik7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMucm9sZV9wb3NpdGlvbi5ub2RlLmNvbG9yID0gbmV3IGNjLkNvbG9yKDB4YTgsMHgzOCwweGJjLDB4ZmYpO1xyXG4gICAgICAgICAgICB0aGlzLnJvbGVfcG9zaXRpb24uc3RyaW5nID0gY29uZmlnLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBzdXNwZW5kQWxsQWN0aW9uczpmdW5jdGlvbigpe1xyXG5cclxuICAgIH0sXHJcblxyXG4gICAgb25EZWxldGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5yb2xlX2hlYWQpXHJcbiAgICAgICAgICAgIHRoaXMucm9sZV9oZWFkLmRlbGV0ZU1lKCk7XHJcbiAgICAgICAgdGhpcy5yb2xlX2hlYWQgPSBudWxsO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gR3VpbGRBcHBseUl0ZW07Il19
|