|
(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_window.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, '7e353/c4UtDaKl95vKK/Jf8', 'guild_member_window');
|
// Scripts/mod/guild/view/guild_member_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: shiraho@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 公会成员窗体
|
// <br/>Create: new Date().toISOString()
|
// --------------------------------------------------------------------
|
var PathTool = require("pathtool");
|
|
var GuildController = require("guild_controller");
|
|
var GuildConst = require("guild_const");
|
|
var CommonScrollView = require("common_scrollview");
|
|
var RoleController = require("role_controller");
|
|
var GuildMemberItem = require("guild_member_item");
|
|
var GuildEvent = require("guild_event");
|
|
var RoleEvent = require("role_event");
|
|
var GuildMemberWindow = cc.Class({
|
"extends": BaseView,
|
ctor: function ctor() {
|
this.prefabPath = PathTool.getPrefabPath("guild", "guild_member_window");
|
this.win_type = WinType.Mini;
|
this.viewTag = SCENE_TAG.dialogue;
|
this.ctrl = GuildController.getInstance();
|
this.model = this.ctrl.getModel();
|
this.my_guild_info = this.model.getMyGuildInfo();
|
this.role_vo = RoleController.getInstance().getRoleVo();
|
},
|
openCallBack: function openCallBack() {
|
this.background = this.seekChild("background");
|
this.background.scale = FIT_SCALE;
|
this.main_panel = this.seekChild("main_panel");
|
this.scroll_container = this.seekChild("scroll_container");
|
this.desc = this.seekChild(this.main_panel, "desc", cc.Label);
|
this.close_btn = this.seekChild("close_btn");
|
this.exit_btn = this.seekChild(this.main_panel, "exit_btn");
|
this.exit_btn_label = this.seekChild(this.exit_btn, "label", cc.Label);
|
this.explain_btn = this.seekChild(this.main_panel, "explain_btn");
|
this.extend_container = this.seekChild(this.main_panel, "extend_container");
|
},
|
registerEvent: function registerEvent() {
|
Utils.onTouchEnd(this.background, function () {
|
this.ctrl.openGuildMemberWindow(false);
|
}.bind(this), 2);
|
Utils.onTouchEnd(this.close_btn, function () {
|
this.ctrl.openGuildMemberWindow(false);
|
}.bind(this), 2);
|
this.exit_btn.on(cc.Node.EventType.TOUCH_END, function () {
|
this.ctrl.requestExitGuild();
|
}, this);
|
this.explain_btn.on(cc.Node.EventType.TOUCH_END, function (event) {
|
var pos = event.touch.getLocation();
|
var config = Config.guild_data.data_const.game_rule;
|
if (config) require("tips_controller").getInstance().showCommonTips(StringUtil.parse(config.desc), pos, null, null, 500);
|
}, this);
|
this.addGlobalEvent(GuildEvent.UpdateMyInfoEvent, function (key, value) {
|
if (key == "members_num" || key == "members_max") this.updateMemberNum();
|
}, this);
|
this.addGlobalEvent(GuildEvent.UpdateMyMemberListEvent, function (type) {
|
if (type == 0) return;
|
this.updateMemberList(type);
|
}, this);
|
this.addGlobalEvent(GuildEvent.UpdateAssistantNumEvent, function () {
|
if (this.role_vo != null && this.role_vo.position != GuildConst.post_type.member) this.updateMemberNum();
|
}, this);
|
|
if (this.role_vo != null) {
|
if (this.role_assets_event == null) {
|
this.role_assets_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
|
if (key == "gid") {
|
if (value == 0) this.ctrl.openGuildMemberWindow(false);
|
} else if (key == "position") this.updateExitStatus();
|
}, this);
|
}
|
}
|
},
|
openRootWnd: function openRootWnd() {
|
this.ctrl.requestGuildMemberList();
|
this.updateMemberNum();
|
this.updateExitStatus();
|
},
|
updateExitStatus: function updateExitStatus() {
|
if (this.role_vo == null) return;
|
if (this.role_vo.position == GuildConst.post_type.leader) this.exit_btn_label.string = Utils.TI18N("解散公会");else this.exit_btn_label.string = Utils.TI18N("退出公会");
|
this.extend_container.active = this.role_vo.position != GuildConst.post_type.member;
|
},
|
//只有会长或者副会长才做这个处理
|
updateMemberNum: function updateMemberNum() {
|
if (this.my_guild_info != null && this.role_vo != null) {
|
if (this.role_vo.position == GuildConst.post_type.member) this.desc.string = cc.js.formatStr("人数:%s/%s", this.my_guild_info.members_num, this.my_guild_info.members_max);else {
|
var config = Config.guild_data.data_post[Utils.getNorKey(GuildConst.post_type.assistant, this.my_guild_info.lev)];
|
|
if (config != null) {
|
var num = this.model.getAssistantSum();
|
this.desc.string = cc.js.formatStr("%s%s/%s %s%s/%s", Utils.TI18N("人数:"), this.my_guild_info.members_num, this.my_guild_info.members_max, Utils.TI18N("副会长:"), num, config.num);
|
}
|
}
|
}
|
},
|
//打开窗体或者收到增删成员的时候才会更新
|
updateMemberList: function updateMemberList(type) {
|
var list = this.model.getGuildMemberList();
|
|
if (list != null && Utils.next(list) != null) {
|
if (this.scroll_view == null) {
|
var size = this.scroll_container.getContentSize();
|
var list_size = cc.size(size.width, size.height - 10);
|
var setting = {
|
item_class: GuildMemberItem,
|
// 单元类
|
start_x: 4,
|
// 第一个单元的X起点
|
space_x: 0,
|
// x方向的间隔
|
start_y: 0,
|
// 第一个单元的Y起点
|
space_y: 0,
|
// y方向的间隔
|
item_width: 600,
|
// 单元的尺寸width
|
item_height: 135,
|
// 单元的尺寸height
|
row: 0,
|
// 行数,作用于水平滚动类型
|
col: 1,
|
// 列数,作用于垂直滚动类型
|
need_dynamic: true
|
};
|
this.scroll_view = new CommonScrollView();
|
this.scroll_view.createScroll(this.scroll_container, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, list_size, setting, cc.v2(0.5, 0.5));
|
} // if (type == 1) {
|
|
|
list.sort(Utils.tableLowerSorter(["_index"]));
|
if (this.scroll_view) this.scroll_view.setData(list); // } else {
|
// var sort_func = Utils.tableLowerSorter(["_index"]);
|
// this.scroll_view.resetAddPosition(list, sort_func);
|
// }
|
}
|
},
|
closeCallBack: function closeCallBack() {
|
this.ctrl.openGuildMemberWindow(false);
|
|
if (this.role_vo != null) {
|
if (this.role_assets_event != null) {
|
this.role_vo.unbind(this.role_assets_event);
|
this.role_assets_event = null;
|
}
|
}
|
|
if (this.scroll_view) {
|
this.scroll_view.deleteMe();
|
this.scroll_view = null;
|
}
|
}
|
});
|
module.exports = GuildMemberWindow;
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxndWlsZFxcdmlld1xcZ3VpbGRfbWVtYmVyX3dpbmRvdy5qcyJdLCJuYW1lcyI6WyJQYXRoVG9vbCIsInJlcXVpcmUiLCJHdWlsZENvbnRyb2xsZXIiLCJHdWlsZENvbnN0IiwiQ29tbW9uU2Nyb2xsVmlldyIsIlJvbGVDb250cm9sbGVyIiwiR3VpbGRNZW1iZXJJdGVtIiwiR3VpbGRFdmVudCIsIlJvbGVFdmVudCIsIkd1aWxkTWVtYmVyV2luZG93IiwiY2MiLCJDbGFzcyIsIkJhc2VWaWV3IiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwid2luX3R5cGUiLCJXaW5UeXBlIiwiTWluaSIsInZpZXdUYWciLCJTQ0VORV9UQUciLCJkaWFsb2d1ZSIsImN0cmwiLCJnZXRJbnN0YW5jZSIsIm1vZGVsIiwiZ2V0TW9kZWwiLCJteV9ndWlsZF9pbmZvIiwiZ2V0TXlHdWlsZEluZm8iLCJyb2xlX3ZvIiwiZ2V0Um9sZVZvIiwib3BlbkNhbGxCYWNrIiwiYmFja2dyb3VuZCIsInNlZWtDaGlsZCIsInNjYWxlIiwiRklUX1NDQUxFIiwibWFpbl9wYW5lbCIsInNjcm9sbF9jb250YWluZXIiLCJkZXNjIiwiTGFiZWwiLCJjbG9zZV9idG4iLCJleGl0X2J0biIsImV4aXRfYnRuX2xhYmVsIiwiZXhwbGFpbl9idG4iLCJleHRlbmRfY29udGFpbmVyIiwicmVnaXN0ZXJFdmVudCIsIlV0aWxzIiwib25Ub3VjaEVuZCIsIm9wZW5HdWlsZE1lbWJlcldpbmRvdyIsImJpbmQiLCJvbiIsIk5vZGUiLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJyZXF1ZXN0RXhpdEd1aWxkIiwiZXZlbnQiLCJwb3MiLCJ0b3VjaCIsImdldExvY2F0aW9uIiwiY29uZmlnIiwiQ29uZmlnIiwiZ3VpbGRfZGF0YSIsImRhdGFfY29uc3QiLCJnYW1lX3J1bGUiLCJzaG93Q29tbW9uVGlwcyIsIlN0cmluZ1V0aWwiLCJwYXJzZSIsImFkZEdsb2JhbEV2ZW50IiwiVXBkYXRlTXlJbmZvRXZlbnQiLCJrZXkiLCJ2YWx1ZSIsInVwZGF0ZU1lbWJlck51bSIsIlVwZGF0ZU15TWVtYmVyTGlzdEV2ZW50IiwidHlwZSIsInVwZGF0ZU1lbWJlckxpc3QiLCJVcGRhdGVBc3Npc3RhbnROdW1FdmVudCIsInBvc2l0aW9uIiwicG9zdF90eXBlIiwibWVtYmVyIiwicm9sZV9hc3NldHNfZXZlbnQiLCJFdmVudElkIiwiVVBEQVRFX1JPTEVfQVRUUklCVVRFIiwidXBkYXRlRXhpdFN0YXR1cyIsIm9wZW5Sb290V25kIiwicmVxdWVzdEd1aWxkTWVtYmVyTGlzdCIsImxlYWRlciIsInN0cmluZyIsIlRJMThOIiwiYWN0aXZlIiwianMiLCJmb3JtYXRTdHIiLCJtZW1iZXJzX251bSIsIm1lbWJlcnNfbWF4IiwiZGF0YV9wb3N0IiwiZ2V0Tm9yS2V5IiwiYXNzaXN0YW50IiwibGV2IiwibnVtIiwiZ2V0QXNzaXN0YW50U3VtIiwibGlzdCIsImdldEd1aWxkTWVtYmVyTGlzdCIsIm5leHQiLCJzY3JvbGxfdmlldyIsInNpemUiLCJnZXRDb250ZW50U2l6ZSIsImxpc3Rfc2l6ZSIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0dGluZyIsIml0ZW1fY2xhc3MiLCJzdGFydF94Iiwic3BhY2VfeCIsInN0YXJ0X3kiLCJzcGFjZV95IiwiaXRlbV93aWR0aCIsIml0ZW1faGVpZ2h0Iiwicm93IiwiY29sIiwibmVlZF9keW5hbWljIiwiY3JlYXRlU2Nyb2xsIiwidjIiLCJTY3JvbGxWaWV3RGlyIiwidmVydGljYWwiLCJTY3JvbGxWaWV3U3RhcnRQb3MiLCJ0b3AiLCJzb3J0IiwidGFibGVMb3dlclNvcnRlciIsInNldERhdGEiLCJjbG9zZUNhbGxCYWNrIiwidW5iaW5kIiwiZGVsZXRlTWUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFFBQVEsR0FBR0MsT0FB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IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEBhdXRob3I6IHNoaXJhaG9Ac3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcclxuLy8gQGRlc2NyaXB0aW9uOlxyXG4vLyAgICAgIOWFrOS8muaIkOWRmOeql+S9k1xyXG4vLyA8YnIvPkNyZWF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG52YXIgUGF0aFRvb2wgPSByZXF1aXJlKFwicGF0aHRvb2xcIik7XHJcbnZhciBHdWlsZENvbnRyb2xsZXIgPSByZXF1aXJlKFwiZ3VpbGRfY29udHJvbGxlclwiKTtcclxudmFyIEd1aWxkQ29uc3QgPSByZXF1aXJlKFwiZ3VpbGRfY29uc3RcIik7XHJcbnZhciBDb21tb25TY3JvbGxWaWV3ID0gcmVxdWlyZShcImNvbW1vbl9zY3JvbGx2aWV3XCIpO1xyXG52YXIgUm9sZUNvbnRyb2xsZXIgPSByZXF1aXJlKFwicm9sZV9jb250cm9sbGVyXCIpO1xyXG52YXIgR3VpbGRNZW1iZXJJdGVtID0gcmVxdWlyZShcImd1aWxkX21lbWJlcl9pdGVtXCIpO1xyXG52YXIgR3VpbGRFdmVudCA9IHJlcXVpcmUoXCJndWlsZF9ldmVudFwiKTtcclxudmFyIFJvbGVFdmVudCA9IHJlcXVpcmUoXCJyb2xlX2V2ZW50XCIpO1xyXG5cclxudmFyIEd1aWxkTWVtYmVyV2luZG93ID0gY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogQmFzZVZpZXcsXHJcbiAgICBjdG9yOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmYWJQYXRoID0gUGF0aFRvb2wuZ2V0UHJlZmFiUGF0aChcImd1aWxkXCIsIFwiZ3VpbGRfbWVtYmVyX3dpbmRvd1wiKTtcclxuICAgICAgICB0aGlzLndpbl90eXBlID0gV2luVHlwZS5NaW5pO1xyXG4gICAgICAgIHRoaXMudmlld1RhZyA9IFNDRU5FX1RBRy5kaWFsb2d1ZTtcclxuICAgICAgICB0aGlzLmN0cmwgPSBHdWlsZENvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKTtcclxuICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5jdHJsLmdldE1vZGVsKCk7XHJcbiAgICAgICAgdGhpcy5teV9ndWlsZF9pbmZvID0gdGhpcy5tb2RlbC5nZXRNeUd1aWxkSW5mbygpO1xyXG4gICAgICAgIHRoaXMucm9sZV92byA9IFJvbGVDb250cm9sbGVyLmdldEluc3RhbmNlKCkuZ2V0Um9sZVZvKCk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICBvcGVuQ2FsbEJhY2s6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmJhY2tncm91bmQgPSB0aGlzLnNlZWtDaGlsZChcImJhY2tncm91bmRcIilcclxuICAgICAgICB0aGlzLmJhY2tncm91bmQuc2NhbGUgPSBGSVRfU0NBTEU7XHJcbiAgICAgICAgdGhpcy5tYWluX3BhbmVsID0gdGhpcy5zZWVrQ2hpbGQoXCJtYWluX3BhbmVsXCIpO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsX2NvbnRhaW5lciA9IHRoaXMuc2Vla0NoaWxkKFwic2Nyb2xsX2NvbnRhaW5lclwiKTtcclxuICAgICAgICB0aGlzLmRlc2MgPSB0aGlzLnNlZWtDaGlsZCh0aGlzLm1haW5fcGFuZWwsIFwiZGVzY1wiLCBjYy5MYWJlbCk7XHJcbiAgICAgICAgdGhpcy5jbG9zZV9idG4gPSB0aGlzLnNlZWtDaGlsZChcImNsb3NlX2J0blwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5leGl0X2J0biA9IHRoaXMuc2Vla0NoaWxkKHRoaXMubWFpbl9wYW5lbCwgXCJleGl0X2J0blwiKTtcclxuICAgICAgICB0aGlzLmV4aXRfYnRuX2xhYmVsID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5leGl0X2J0biwgXCJsYWJlbFwiLCBjYy5MYWJlbCk7XHJcblxyXG4gICAgICAgIHRoaXMuZXhwbGFpbl9idG4gPSB0aGlzLnNlZWtDaGlsZCh0aGlzLm1haW5fcGFuZWwsIFwiZXhwbGFpbl9idG5cIik7XHJcbiAgICAgICAgdGhpcy5leHRlbmRfY29udGFpbmVyID0gdGhpcy5zZWVrQ2hpbGQodGhpcy5tYWluX3BhbmVsLCBcImV4dGVuZF9jb250YWluZXJcIik7XHJcbiAgICB9LFxyXG5cclxuXHJcblxyXG4gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5iYWNrZ3JvdW5kLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3RybC5vcGVuR3VpbGRNZW1iZXJXaW5kb3coZmFsc2UpXHJcbiAgICAgICAgfS5iaW5kKHRoaXMpLCAyKVxyXG4gICAgICAgIFV0aWxzLm9uVG91Y2hFbmQodGhpcy5jbG9zZV9idG4sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5HdWlsZE1lbWJlcldpbmRvdyhmYWxzZSlcclxuICAgICAgICB9LmJpbmQodGhpcyksIDIpXHJcbiAgICAgICAgdGhpcy5leGl0X2J0bi5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RFeGl0R3VpbGQoKTtcclxuICAgICAgICB9LCB0aGlzKVxyXG4gICAgICAgIHRoaXMuZXhwbGFpbl9idG4ub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgdmFyIHBvcyA9IGV2ZW50LnRvdWNoLmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIHZhciBjb25maWcgPSBDb25maWcuZ3VpbGRfZGF0YS5kYXRhX2NvbnN0LmdhbWVfcnVsZTtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZylcclxuICAgICAgICAgICAgICAgIHJlcXVpcmUoXCJ0aXBzX2NvbnRyb2xsZXJcIikuZ2V0SW5zdGFuY2UoKS5zaG93Q29tbW9uVGlwcyhTdHJpbmdVdGlsLnBhcnNlKGNvbmZpZy5kZXNjKSwgcG9zLCBudWxsLCBudWxsLCA1MDApO1xyXG4gICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgdGhpcy5hZGRHbG9iYWxFdmVudChHdWlsZEV2ZW50LlVwZGF0ZU15SW5mb0V2ZW50LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBpZiAoa2V5ID09IFwibWVtYmVyc19udW1cIiB8fCBrZXkgPT0gXCJtZW1iZXJzX21heFwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVNZW1iZXJOdW0oKTtcclxuICAgICAgICB9LCB0aGlzKVxyXG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoR3VpbGRFdmVudC5VcGRhdGVNeU1lbWJlckxpc3RFdmVudCwgZnVuY3Rpb24gKHR5cGUpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1lbWJlckxpc3QodHlwZSlcclxuICAgICAgICB9LCB0aGlzKVxyXG4gICAgICAgIHRoaXMuYWRkR2xvYmFsRXZlbnQoR3VpbGRFdmVudC5VcGRhdGVBc3Npc3RhbnROdW1FdmVudCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb2xlX3ZvICE9IG51bGwgJiYgdGhpcy5yb2xlX3ZvLnBvc2l0aW9uICE9IEd1aWxkQ29uc3QucG9zdF90eXBlLm1lbWJlcilcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTWVtYmVyTnVtKCk7XHJcbiAgICAgICAgfSwgdGhpcylcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucm9sZV92byAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfYXNzZXRzX2V2ZW50ID09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvbGVfYXNzZXRzX2V2ZW50ID0gdGhpcy5yb2xlX3ZvLmJpbmQoRXZlbnRJZC5VUERBVEVfUk9MRV9BVFRSSUJVVEUsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBcImdpZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdHJsLm9wZW5HdWlsZE1lbWJlcldpbmRvdyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gXCJwb3NpdGlvblwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUV4aXRTdGF0dXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIHRoaXMpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIG9wZW5Sb290V25kOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5jdHJsLnJlcXVlc3RHdWlsZE1lbWJlckxpc3QoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZU1lbWJlck51bSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRXhpdFN0YXR1cygpO1xyXG4gICAgfSxcclxuXHJcbiAgICB1cGRhdGVFeGl0U3RhdHVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucm9sZV92byA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICBpZiAodGhpcy5yb2xlX3ZvLnBvc2l0aW9uID09IEd1aWxkQ29uc3QucG9zdF90eXBlLmxlYWRlcilcclxuICAgICAgICAgICAgdGhpcy5leGl0X2J0bl9sYWJlbC5zdHJpbmcgPSBVdGlscy5USTE4TihcIuino+aVo+WFrOS8mlwiKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuZXhpdF9idG5fbGFiZWwuc3RyaW5nID0gVXRpbHMuVEkxOE4oXCLpgIDlh7rlhazkvJpcIik7XHJcblxyXG4gICAgICAgIHRoaXMuZXh0ZW5kX2NvbnRhaW5lci5hY3RpdmUgPSB0aGlzLnJvbGVfdm8ucG9zaXRpb24gIT0gR3VpbGRDb25zdC5wb3N0X3R5cGUubWVtYmVyO1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+WPquacieS8mumVv+aIluiAheWJr+S8mumVv+aJjeWBmui/meS4quWkhOeQhlxyXG4gICAgdXBkYXRlTWVtYmVyTnVtOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubXlfZ3VpbGRfaW5mbyAhPSBudWxsICYmIHRoaXMucm9sZV92byAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfdm8ucG9zaXRpb24gPT0gR3VpbGRDb25zdC5wb3N0X3R5cGUubWVtYmVyKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXNjLnN0cmluZyA9IGNjLmpzLmZvcm1hdFN0cihcIuS6uuaVsO+8miVzLyVzXCIsIHRoaXMubXlfZ3VpbGRfaW5mby5tZW1iZXJzX251bSwgdGhpcy5teV9ndWlsZF9pbmZvLm1lbWJlcnNfbWF4KTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0gQ29uZmlnLmd1aWxkX2RhdGEuZGF0YV9wb3N0W1V0aWxzLmdldE5vcktleShHdWlsZENvbnN0LnBvc3RfdHlwZS5hc3Npc3RhbnQsIHRoaXMubXlfZ3VpbGRfaW5mby5sZXYpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBudW0gPSB0aGlzLm1vZGVsLmdldEFzc2lzdGFudFN1bSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVzYy5zdHJpbmcgPSBjYy5qcy5mb3JtYXRTdHIoXCIlcyVzLyVzICAgJXMlcy8lc1wiLCBVdGlscy5USTE4TihcIuS6uuaVsO+8mlwiKSwgdGhpcy5teV9ndWlsZF9pbmZvLm1lbWJlcnNfbnVtLCB0aGlzLm15X2d1aWxkX2luZm8ubWVtYmVyc19tYXgsIFV0aWxzLlRJMThOKFwi5Ymv5Lya6ZW/77yaXCIpLCBudW0sIGNvbmZpZy5udW0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5omT5byA56qX5L2T5oiW6ICF5pS25Yiw5aKe5Yig5oiQ5ZGY55qE5pe25YCZ5omN5Lya5pu05pawXHJcbiAgICB1cGRhdGVNZW1iZXJMaXN0OiBmdW5jdGlvbiAodHlwZSkge1xyXG4gICAgICAgIHZhciBsaXN0ID0gdGhpcy5tb2RlbC5nZXRHdWlsZE1lbWJlckxpc3QoKTtcclxuICAgICAgICBpZiAobGlzdCAhPSBudWxsICYmIFV0aWxzLm5leHQobGlzdCkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zY3JvbGxfdmlldyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuc2Nyb2xsX2NvbnRhaW5lci5nZXRDb250ZW50U2l6ZSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxpc3Rfc2l6ZSA9IGNjLnNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQgLSAxMCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2V0dGluZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtX2NsYXNzOiBHdWlsZE1lbWJlckl0ZW0sICAgICAgLy8g5Y2V5YWD57G7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRfeDogNCwgICAgICAgICAgICAgICAgICAgIC8vIOesrOS4gOS4quWNleWFg+eahFjotbfngrlcclxuICAgICAgICAgICAgICAgICAgICBzcGFjZV94OiAwLCAgICAgICAgICAgICAgICAgICAgLy8geOaWueWQkeeahOmXtOmalFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0X3k6IDAsICAgICAgICAgICAgICAgICAgICAvLyDnrKzkuIDkuKrljZXlhYPnmoRZ6LW354K5XHJcbiAgICAgICAgICAgICAgICAgICAgc3BhY2VfeTogMCwgICAgICAgICAgICAgICAgICAgLy8geeaWueWQkeeahOmXtOmalFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1fd2lkdGg6IDYwMCwgICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7h3aWR0aFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1faGVpZ2h0OiAxMzUsICAgICAgICAgICAgICAvLyDljZXlhYPnmoTlsLrlr7hoZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICByb3c6IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8g6KGM5pWw77yM5L2c55So5LqO5rC05bmz5rua5Yqo57G75Z6LXHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiAxLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWIl+aVsO+8jOS9nOeUqOS6juWeguebtOa7muWKqOexu+Wei1xyXG4gICAgICAgICAgICAgICAgICAgIG5lZWRfZHluYW1pYzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxfdmlldyA9IG5ldyBDb21tb25TY3JvbGxWaWV3KClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsX3ZpZXcuY3JlYXRlU2Nyb2xsKHRoaXMuc2Nyb2xsX2NvbnRhaW5lciwgY2MudjIoMCwgMCksIFNjcm9sbFZpZXdEaXIudmVydGljYWwsIFNjcm9sbFZpZXdTdGFydFBvcy50b3AsIGxpc3Rfc2l6ZSwgc2V0dGluZywgY2MudjIoMC41LCAwLjUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmICh0eXBlID09IDEpIHtcclxuICAgICAgICAgICAgbGlzdC5zb3J0KFV0aWxzLnRhYmxlTG93ZXJTb3J0ZXIoW1wiX2luZGV4XCJdKSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcm9sbF92aWV3KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxfdmlldy5zZXREYXRhKGxpc3QpO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgdmFyIHNvcnRfZnVuYyA9IFV0aWxzLnRhYmxlTG93ZXJTb3J0ZXIoW1wiX2luZGV4XCJdKTtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuc2Nyb2xsX3ZpZXcucmVzZXRBZGRQb3NpdGlvbihsaXN0LCBzb3J0X2Z1bmMpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjbG9zZUNhbGxCYWNrOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5jdHJsLm9wZW5HdWlsZE1lbWJlcldpbmRvdyhmYWxzZSk7XHJcbiAgICAgICAgaWYgKHRoaXMucm9sZV92byAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJvbGVfYXNzZXRzX2V2ZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm9sZV92by51bmJpbmQodGhpcy5yb2xlX2Fzc2V0c19ldmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvbGVfYXNzZXRzX2V2ZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zY3JvbGxfdmlldykge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbF92aWV3LmRlbGV0ZU1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsX3ZpZXcgPSBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEd1aWxkTWVtYmVyV2luZG93OyJdfQ==
|