(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/heroexpedit/heroexpedit_model.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, 'b8c23UwNytK6oKjkXgsjzI7', 'heroexpedit_model'); // Scripts/mod/heroexpedit/heroexpedit_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2019-03-11 14:13:49 // -------------------------------------------------------------------- var MainuiController = require("mainui_controller"); var RoleController = require("role_controller"); var HeroExpeditEvent = require("heroexpedit_event"); var EsecsiceConst = require("esecsice_const"); var MainUiConst = require("mainui_const"); var HeroexpeditModel = cc.Class({ "extends": BaseClass, ctor: function ctor() { this.ctrl = arguments[0]; }, properties: {}, initConfig: function initConfig() { this.levelRedPointStatus = 0; this.sendRedPointStatus = 0; }, // 24406 setEmployPartner: function setEmployPartner(data) { this.employPartner = data; }, getEmployPartner: function getEmployPartner() { return this.employPartner || {}; }, //24404 setPartnerMessage: function setPartnerMessage(data) { this.partnerMessage = data; }, getPartnerMessage: function getPartnerMessage() { return this.partnerMessage || {}; }, //远征的主界面数据 setExpeditData: function setExpeditData(data) { if (!data) return; this.expeditData = data; this.guard_id = data.guard_id; this.updateRedPoint(); }, updateRedPoint: function updateRedPoint() { RedMgr.getInstance().addCalHandler(this.checkRed.bind(this), RedIds.Heroexpedit); }, checkRed: function checkRed() { var status = this.checkRedStatus(); var SceneConst = require("scene_const"); MainuiController.getInstance().setBtnRedPoint(MainUiConst.btn_index.esecsice, { bid: SceneConst.RedPointType.heroexpedit, status: status }); }, getExpeditData: function getExpeditData() { return this.expeditData || {}; }, // 通关红点 setLevelRedPoint: function setLevelRedPoint(status) { this.levelRedPointStatus = status; }, // 派遣红点 setHeroSendRedPoint: function setHeroSendRedPoint(status) { if (status == 0) { status = 1; } else { status = 0; } this.sendRedPointStatus = status; gcore.GlobalEvent.fire(HeroExpeditEvent.Red_Point_Event); }, getHeroSendRedPoint: function getHeroSendRedPoint() { if (this.sendRedPointStatus == 1) { return true; } else { return false; } }, //远征红点 checkRedStatus: function checkRedStatus() { var open_data = Config.dailyplay_data.data_exerciseactivity; var bool = MainuiController.getInstance().checkIsOpenByActivate(open_data[EsecsiceConst.execsice_index.heroexpedit].activate); if (bool == false) return false; var num = this.levelRedPointStatus + this.sendRedPointStatus; var status = false; if (num <= 0) { status = false; } else { status = true; } return status; }, //获取宝箱的位置 getExpeditBoxData: function getExpeditBoxData() { var box = []; var data = Config.expedition_data.data_sign_info; for (var i in data) { if (data[i].type == 2) { box.push(i); } } return box; }, // 血条 setHeroBloodById: function setHeroBloodById(data) { this.HeroBloodData = []; this.hireHeroData = []; this.hireHeroIsUsedData = []; //雇佣的英雄是否使用过 this.setExpeditEmployData(data.list); // 本身的 var role_vo = RoleController.getInstance().getRoleVo(); var rid = 0; var srv_id = ""; if (role_vo) { rid = role_vo.rid; srv_id = role_vo.srv_id; } for (var i in data.p_list) { var key = Utils.getNorKey(rid, srv_id, data.p_list[i].id); this.HeroBloodData[key] = data.p_list[i].hp_per; } // 雇佣的 if (Utils.next(data.list) != null) { for (var j in data.list) { var key = Utils.getNorKey(data.list[j].rid, data.list[j].srv_id, data.list[j].id); this.hireHeroData[key] = true; this.HeroBloodData[key] = data.list[j].hp_per; this.hireHeroIsUsedData[key] = data.list[j].is_used; } } }, getHeroBloodById: function getHeroBloodById(id, rid, srv_id) { if (!this.HeroBloodData) return 100; if (!id || typeof id != "number") return 100; rid = rid || 0; srv_id = srv_id || ""; var key = Utils.getNorKey(rid, srv_id, id); if (this.HeroBloodData[key] == null) { return 100; } return this.HeroBloodData[key]; }, // 雇佣的 getHireHero: function getHireHero(id, rid, srv_id) { if (!this.hireHeroData) return false; if (!id || typeof id != "number") return false; rid = rid || 0; srv_id = srv_id || ""; var key = Utils.getNorKey(rid, srv_id, id); return this.hireHeroData[key] || false; }, // 雇佣使用的 getHireHeroIsUsed: function getHireHeroIsUsed(id, rid, srv_id) { if (!this.hireHeroIsUsedData) return 0; if (!id || typeof id != "number") return 0; rid = rid || 0; srv_id = srv_id || ""; var key = Utils.getNorKey(rid, srv_id, id); return this.hireHeroIsUsedData[key] || 0; }, // 英雄出征的雇佣英雄 setExpeditEmployData: function setExpeditEmployData(data) { this.expeditEmployData = data; }, getExpeditEmployData: function getExpeditEmployData() { return this.expeditEmployData || {}; }, __delete: function __delete() {} }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxoZXJvZXhwZWRpdFxcaGVyb2V4cGVkaXRfbW9kZWwuanMiXSwibmFtZXMiOlsiTWFpbnVpQ29udHJvbGxlciIsInJlcXVpcmUiLCJSb2xlQ29udHJvbGxlciIsIkhlcm9FeHBlZGl0RXZlbnQiLCJFc2Vjc2ljZUNvbnN0IiwiTWFpblVpQ29uc3QiLCJIZXJvZXhwZWRpdE1vZGVsIiwiY2MiLCJDbGFzcyIsIkJhc2VDbGFzcyIsImN0b3IiLCJjdHJsIiwiYXJndW1lbnRzIiwicHJvcGVydGllcyIsImluaXRDb25maWciLCJsZXZlbFJlZFBvaW50U3RhdHVzIiwic2VuZFJlZFBvaW50U3RhdHVzIiwic2V0RW1wbG95UGFydG5lciIsImRhdGEiLCJlbXBsb3lQYXJ0bmVyIiwiZ2V0RW1wbG95UGFydG5lciIsInNldFBhcnRuZXJNZXNzYWdlIiwicGFydG5lck1lc3NhZ2UiLCJnZXRQYXJ0bmVyTWVzc2FnZSIsInNldEV4cGVkaXREYXRhIiwiZXhwZWRpdERhdGEiLCJndWFyZF9pZCIsInVwZGF0ZVJlZFBvaW50IiwiUmVkTWdyIiwiZ2V0SW5zdGFuY2UiLCJhZGRDYWxIYW5kbGVyIiwiY2hlY2tSZWQiLCJiaW5kIiwiUmVkSWRzIiwiSGVyb2V4cGVkaXQiLCJzdGF0dXMiLCJjaGVja1JlZFN0YXR1cyIsIlNjZW5lQ29uc3QiLCJzZXRCdG5SZWRQb2ludCIsImJ0bl9pbmRleCIsImVzZWNzaWNlIiwiYmlkIiwiUmVkUG9pbnRUeXBlIiwiaGVyb2V4cGVkaXQiLCJnZXRFeHBlZGl0RGF0YSIsInNldExldmVsUmVkUG9pbnQiLCJzZXRIZXJvU2VuZFJlZFBvaW50IiwiZ2NvcmUiLCJHbG9iYWxFdmVudCIsImZpcmUiLCJSZWRfUG9pbnRfRXZlbnQiLCJnZXRIZXJvU2VuZFJlZFBvaW50Iiwib3Blbl9kYXRhIiwiQ29uZmlnIiwiZGFpbHlwbGF5X2RhdGEiLCJkYXRhX2V4ZXJjaXNlYWN0aXZpdHkiLCJib29sIiwiY2hlY2tJc09wZW5CeUFjdGl2YXRlIiwiZXhlY3NpY2VfaW5kZXgiLCJhY3RpdmF0ZSIsIm51bSIsImdldEV4cGVkaXRCb3hEYXRhIiwiYm94IiwiZXhwZWRpdGlvbl9kYXRhIiwiZGF0YV9zaWduX2luZm8iLCJpIiwidHlwZSIsInB1c2giLCJzZXRIZXJvQmxvb2RCeUlkIiwiSGVyb0Jsb29kRGF0YSIsImhpcmVIZXJvRGF0YSIsImhpcmVIZXJvSXNVc2VkRGF0YSIsInNldEV4cGVkaXRFbXBsb3lEYXRhIiwibGlzdCIsInJvbGVfdm8iLCJnZXRSb2xlVm8iLCJyaWQiLCJzcnZfaWQiLCJwX2xpc3QiLCJrZXkiLCJVdGlscyIsImdldE5vcktleSIsImlkIiwiaHBfcGVyIiwibmV4dCIsImoiLCJpc191c2VkIiwiZ2V0SGVyb0Jsb29kQnlJZCIsImdldEhpcmVIZXJvIiwiZ2V0SGlyZUhlcm9Jc1VzZWQiLCJleHBlZGl0RW1wbG95RGF0YSIsImdldEV4cGVkaXRFbXBsb3lEYXRhIiwiX19kZWxldGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsZ0JBQWdCLEdBQUdDLE9BQU8sQ0FBQyxtQkFBRCxDQUE5Qjs7QUFDQSxJQUFJQyxjQUFjLEdBQUdELE9BQU8sQ0FBQyxpQkFBRCxDQUE1Qjs7QUFDQSxJQUFJRSxnQkFBZ0IsR0FBR0YsT0FBTyxDQUFDLG1CQUFELENBQTlCOztBQUNBLElBQUlHLGFBQWEsR0FBR0gsT0FBTyxDQUFDLGdCQUFELENBQTNCOztBQUNBLElBQUlJLFdBQVcsR0FBR0osT0FBTyxDQUFDLGNBQUQsQ0FBekI7O0FBRUEsSUFBSUssZ0JBQWdCLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQzVCLGFBQVNDLFNBRG1CO0FBRTVCQyxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxTQUFLQyxJQUFMLEdBQVlDLFNBQVMsQ0FBQyxDQUFELENBQXJCO0FBQ0gsR0FKMkI7QUFNNUJDLEVBQUFBLFVBQVUsRUFBRSxFQU5nQjtBQVM1QkMsRUFBQUEsVUFBVSxFQUFFLHNCQUFZO0FBQ3BCLFNBQUtDLG1CQUFMLEdBQTJCLENBQTNCO0FBQ0gsU0FBS0Msa0JBQUwsR0FBMEIsQ0FBMUI7QUFDQSxHQVoyQjtBQWM1QjtBQUNBQyxFQUFBQSxnQkFBZ0IsRUFBQywwQkFBU0MsSUFBVCxFQUFjO0FBQzNCLFNBQUtDLGFBQUwsR0FBcUJELElBQXJCO0FBQ0gsR0FqQjJCO0FBbUI1QkUsRUFBQUEsZ0JBQWdCLEVBQUMsNEJBQVU7QUFDdkIsV0FBTyxLQUFLRCxhQUFMLElBQXNCLEVBQTdCO0FBQ0gsR0FyQjJCO0FBdUI1QjtBQUNBRSxFQUFBQSxpQkFBaUIsRUFBQywyQkFBU0gsSUFBVCxFQUFjO0FBQzVCLFNBQUtJLGNBQUwsR0FBc0JKLElBQXRCO0FBQ0gsR0ExQjJCO0FBNEI1QkssRUFBQUEsaUJBQWlCLEVBQUMsNkJBQVU7QUFDeEIsV0FBTyxLQUFLRCxjQUFMLElBQXVCLEVBQTlCO0FBQ0gsR0E5QjJCO0FBZ0M1QjtBQUNBRSxFQUFBQSxjQUFjLEVBQUMsd0JBQVNOLElBQVQsRUFBYztBQUN6QixRQUFHLENBQUNBLElBQUosRUFBUztBQUNULFNBQUtPLFdBQUwsR0FBbUJQLElBQW5CO0FBQ0EsU0FBS1EsUUFBTCxHQUFnQlIsSUFBSSxDQUFDUSxRQUFyQjtBQUNBLFNBQUtDLGNBQUw7QUFDSCxHQXRDMkI7QUF3QzVCQSxFQUFBQSxjQUFjLEVBQUUsMEJBQVc7QUFDdkJDLElBQUFBLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQkMsYUFBckIsQ0FBbUMsS0FBS0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQW5DLEVBQTZEQyxNQUFNLENBQUNDLFdBQXBFO0FBQ0gsR0ExQzJCO0FBNEM1QkgsRUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQ2YsUUFBSUksTUFBTSxHQUFHLEtBQUtDLGNBQUwsRUFBYjs7QUFDQSxRQUFJQyxVQUFVLEdBQUdwQyxPQUFPLENBQUMsYUFBRCxDQUF4Qjs7QUFDQUQsSUFBQUEsZ0JBQWdCLENBQUM2QixXQUFqQixHQUErQlMsY0FBL0IsQ0FBOENqQyxXQUFXLENBQUNrQyxTQUFaLENBQXNCQyxRQUFwRSxFQUE4RTtBQUFDQyxNQUFBQSxHQUFHLEVBQUNKLFVBQVUsQ0FBQ0ssWUFBWCxDQUF3QkMsV0FBN0I7QUFBMENSLE1BQUFBLE1BQU0sRUFBQ0E7QUFBakQsS0FBOUU7QUFDSCxHQWhEMkI7QUFrRDVCUyxFQUFBQSxjQUFjLEVBQUMsMEJBQVU7QUFDckIsV0FBTyxLQUFLbkIsV0FBTCxJQUFvQixFQUEzQjtBQUNILEdBcEQyQjtBQXNENUI7QUFDQW9CLEVBQUFBLGdCQUFnQixFQUFDLDBCQUFTVixNQUFULEVBQWdCO0FBQzdCLFNBQUtwQixtQkFBTCxHQUEyQm9CLE1BQTNCO0FBQ0gsR0F6RDJCO0FBMkQ1QjtBQUNBVyxFQUFBQSxtQkFBbUIsRUFBQyw2QkFBU1gsTUFBVCxFQUFnQjtBQUNoQyxRQUFHQSxNQUFNLElBQUksQ0FBYixFQUFlO0FBQ1hBLE1BQUFBLE1BQU0sR0FBRyxDQUFUO0FBQ0gsS0FGRCxNQUVLO0FBQ0RBLE1BQUFBLE1BQU0sR0FBRyxDQUFUO0FBQ0g7O0FBRUQsU0FBS25CLGtCQUFMLEdBQTBCbUIsTUFBMUI7QUFDQVksSUFBQUEsS0FBSyxDQUFDQyxXQUFOLENBQWtCQyxJQUFsQixDQUF1QjlDLGdCQUFnQixDQUFDK0MsZUFBeEM7QUFFSCxHQXRFMkI7QUF3RTVCQyxFQUFBQSxtQkFBbUIsRUFBQywrQkFBVTtBQUMxQixRQUFHLEtBQUtuQyxrQkFBTCxJQUEyQixDQUE5QixFQUFnQztBQUM1QixhQUFPLElBQVA7QUFDSCxLQUZELE1BRUs7QUFDRCxhQUFPLEtBQVA7QUFDSDtBQUNKLEdBOUUyQjtBQWdGNUI7QUFDQW9CLEVBQUFBLGNBQWMsRUFBQywwQkFBVTtBQUNyQixRQUFJZ0IsU0FBUyxHQUFHQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLHFCQUF0QztBQUNBLFFBQUlDLElBQUksR0FBR3hELGdCQUFnQixDQUFDNkIsV0FBakIsR0FBK0I0QixxQkFBL0IsQ0FBcURMLFNBQVMsQ0FBQ2hELGFBQWEsQ0FBQ3NELGNBQWQsQ0FBNkJmLFdBQTlCLENBQVQsQ0FBb0RnQixRQUF6RyxDQUFYO0FBQ0EsUUFBR0gsSUFBSSxJQUFJLEtBQVgsRUFBaUIsT0FBTyxLQUFQO0FBQ2pCLFFBQUlJLEdBQUcsR0FBRyxLQUFLN0MsbUJBQUwsR0FBMkIsS0FBS0Msa0JBQTFDO0FBQ0EsUUFBSW1CLE1BQU0sR0FBRyxLQUFiOztBQUNBLFFBQUd5QixHQUFHLElBQUksQ0FBVixFQUFZO0FBQ1J6QixNQUFBQSxNQUFNLEdBQUcsS0FBVDtBQUNILEtBRkQsTUFFSztBQUNEQSxNQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNIOztBQUNELFdBQU9BLE1BQVA7QUFDSCxHQTdGMkI7QUErRjVCO0FBQ0EwQixFQUFBQSxpQkFBaUIsRUFBQyw2QkFBVTtBQUN4QixRQUFJQyxHQUFHLEdBQUcsRUFBVjtBQUNBLFFBQUk1QyxJQUFJLEdBQUdtQyxNQUFNLENBQUNVLGVBQVAsQ0FBdUJDLGNBQWxDOztBQUNBLFNBQUksSUFBSUMsQ0FBUixJQUFhL0MsSUFBYixFQUFrQjtBQUNkLFVBQUdBLElBQUksQ0FBQytDLENBQUQsQ0FBSixDQUFRQyxJQUFSLElBQWdCLENBQW5CLEVBQXFCO0FBQ2pCSixRQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBU0YsQ0FBVDtBQUNIO0FBQ0o7O0FBQ0QsV0FBT0gsR0FBUDtBQUNILEdBekcyQjtBQTJHNUI7QUFDQU0sRUFBQUEsZ0JBQWdCLEVBQUMsMEJBQVNsRCxJQUFULEVBQWM7QUFDM0IsU0FBS21ELGFBQUwsR0FBcUIsRUFBckI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsRUFBMUIsQ0FIMkIsQ0FHRTs7QUFDN0IsU0FBS0Msb0JBQUwsQ0FBMEJ0RCxJQUFJLENBQUN1RCxJQUEvQixFQUoyQixDQUszQjs7QUFDQSxRQUFJQyxPQUFPLEdBQUd4RSxjQUFjLENBQUMyQixXQUFmLEdBQTZCOEMsU0FBN0IsRUFBZDtBQUNILFFBQUlDLEdBQUcsR0FBRyxDQUFWO0FBQ0csUUFBSUMsTUFBTSxHQUFHLEVBQWI7O0FBQ0EsUUFBR0gsT0FBSCxFQUFXO0FBQ1BFLE1BQUFBLEdBQUcsR0FBR0YsT0FBTyxDQUFDRSxHQUFkO0FBQ05DLE1BQUFBLE1BQU0sR0FBR0gsT0FBTyxDQUFDRyxNQUFqQjtBQUNHOztBQUNELFNBQUksSUFBSVosQ0FBUixJQUFhL0MsSUFBSSxDQUFDNEQsTUFBbEIsRUFBeUI7QUFDckIsVUFBSUMsR0FBRyxHQUFHQyxLQUFLLENBQUNDLFNBQU4sQ0FBZ0JMLEdBQWhCLEVBQXFCQyxNQUFyQixFQUE2QjNELElBQUksQ0FBQzRELE1BQUwsQ0FBWWIsQ0FBWixFQUFlaUIsRUFBNUMsQ0FBVjtBQUNOLFdBQUtiLGFBQUwsQ0FBbUJVLEdBQW5CLElBQTBCN0QsSUFBSSxDQUFDNEQsTUFBTCxDQUFZYixDQUFaLEVBQWVrQixNQUF6QztBQUNHLEtBaEIwQixDQWlCM0I7OztBQUNBLFFBQUdILEtBQUssQ0FBQ0ksSUFBTixDQUFXbEUsSUFBSSxDQUFDdUQsSUFBaEIsS0FBdUIsSUFBMUIsRUFBK0I7QUFDM0IsV0FBSSxJQUFJWSxDQUFSLElBQWFuRSxJQUFJLENBQUN1RCxJQUFsQixFQUF1QjtBQUNuQixZQUFJTSxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQi9ELElBQUksQ0FBQ3VELElBQUwsQ0FBVVksQ0FBVixFQUFhVCxHQUE3QixFQUFrQzFELElBQUksQ0FBQ3VELElBQUwsQ0FBVVksQ0FBVixFQUFhUixNQUEvQyxFQUF1RDNELElBQUksQ0FBQ3VELElBQUwsQ0FBVVksQ0FBVixFQUFhSCxFQUFwRSxDQUFWO0FBQ0EsYUFBS1osWUFBTCxDQUFrQlMsR0FBbEIsSUFBeUIsSUFBekI7QUFDQSxhQUFLVixhQUFMLENBQW1CVSxHQUFuQixJQUEwQjdELElBQUksQ0FBQ3VELElBQUwsQ0FBVVksQ0FBVixFQUFhRixNQUF2QztBQUNBLGFBQUtaLGtCQUFMLENBQXdCUSxHQUF4QixJQUErQjdELElBQUksQ0FBQ3VELElBQUwsQ0FBVVksQ0FBVixFQUFhQyxPQUE1QztBQUNIO0FBQ0o7QUFDSixHQXRJMkI7QUF3STVCQyxFQUFBQSxnQkFBZ0IsRUFBQywwQkFBU0wsRUFBVCxFQUFhTixHQUFiLEVBQWtCQyxNQUFsQixFQUF5QjtBQUN0QyxRQUFHLENBQUMsS0FBS1IsYUFBVCxFQUF1QixPQUFPLEdBQVA7QUFDdkIsUUFBRyxDQUFDYSxFQUFELElBQVEsT0FBT0EsRUFBUCxJQUFhLFFBQXhCLEVBQWtDLE9BQU8sR0FBUDtBQUNsQ04sSUFBQUEsR0FBRyxHQUFHQSxHQUFHLElBQUksQ0FBYjtBQUNBQyxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sSUFBSSxFQUFuQjtBQUNBLFFBQUlFLEdBQUcsR0FBR0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCTCxHQUFoQixFQUFxQkMsTUFBckIsRUFBNkJLLEVBQTdCLENBQVY7O0FBQ0EsUUFBRyxLQUFLYixhQUFMLENBQW1CVSxHQUFuQixLQUEyQixJQUE5QixFQUFtQztBQUMvQixhQUFPLEdBQVA7QUFDSDs7QUFDRCxXQUFPLEtBQUtWLGFBQUwsQ0FBbUJVLEdBQW5CLENBQVA7QUFDSCxHQWxKMkI7QUFvSjVCO0FBQ0FTLEVBQUFBLFdBQVcsRUFBQyxxQkFBU04sRUFBVCxFQUFhTixHQUFiLEVBQWtCQyxNQUFsQixFQUF5QjtBQUNqQyxRQUFHLENBQUMsS0FBS1AsWUFBVCxFQUFzQixPQUFPLEtBQVA7QUFDdEIsUUFBRyxDQUFDWSxFQUFELElBQVEsT0FBT0EsRUFBUCxJQUFhLFFBQXhCLEVBQWtDLE9BQU8sS0FBUDtBQUNsQ04sSUFBQUEsR0FBRyxHQUFHQSxHQUFHLElBQUksQ0FBYjtBQUNBQyxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sSUFBSSxFQUFuQjtBQUNBLFFBQUlFLEdBQUcsR0FBR0MsS0FBSyxDQUFDQyxTQUFOLENBQWdCTCxHQUFoQixFQUFxQkMsTUFBckIsRUFBNkJLLEVBQTdCLENBQVY7QUFDQSxXQUFPLEtBQUtaLFlBQUwsQ0FBa0JTLEdBQWxCLEtBQTBCLEtBQWpDO0FBQ0gsR0E1SjJCO0FBOEo1QjtBQUNBVSxFQUFBQSxpQkFBaUIsRUFBQywyQkFBU1AsRUFBVCxFQUFhTixHQUFiLEVBQWtCQyxNQUFsQixFQUF5QjtBQUN2QyxRQUFHLENBQUMsS0FBS04sa0JBQVQsRUFBNEIsT0FBTyxDQUFQO0FBQzVCLFFBQUcsQ0FBQ1csRUFBRCxJQUFRLE9BQU9BLEVBQVAsSUFBYSxRQUF4QixFQUFrQyxPQUFPLENBQVA7QUFDbENOLElBQUFBLEdBQUcsR0FBR0EsR0FBRyxJQUFJLENBQWI7QUFDQUMsSUFBQUEsTUFBTSxHQUFHQSxNQUFNLElBQUksRUFBbkI7QUFDQSxRQUFJRSxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsU0FBTixDQUFnQkwsR0FBaEIsRUFBcUJDLE1BQXJCLEVBQTZCSyxFQUE3QixDQUFWO0FBQ0EsV0FBTyxLQUFLWCxrQkFBTCxDQUF3QlEsR0FBeEIsS0FBZ0MsQ0FBdkM7QUFDSCxHQXRLMkI7QUF3SzVCO0FBQ0FQLEVBQUFBLG9CQUFvQixFQUFDLDhCQUFTdEQsSUFBVCxFQUFjO0FBQy9CLFNBQUt3RSxpQkFBTCxHQUF5QnhFLElBQXpCO0FBQ0gsR0EzSzJCO0FBNks1QnlFLEVBQUFBLG9CQUFvQixFQUFDLGdDQUFVO0FBQzNCLFdBQU8sS0FBS0QsaUJBQUwsSUFBMEIsRUFBakM7QUFDSCxHQS9LMkI7QUFpTDVCRSxFQUFBQSxRQUFRLEVBQUMsb0JBQVUsQ0FFbEI7QUFuTDJCLENBQVQsQ0FBdkIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAYXV0aG9yOiB4eHhAc3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg6L+Z6YeM5aGr5YaZ6K+m57uG6K+05piOLOS4u+imgeWhq+WGmeivpeaooeWdl+eahOWKn+iDveeugOimgVxuLy8gPGJyLz5DcmVhdGU6IDIwMTktMDMtMTEgMTQ6MTM6NDlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG52YXIgTWFpbnVpQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWludWlfY29udHJvbGxlclwiKTtcbnZhciBSb2xlQ29udHJvbGxlciA9IHJlcXVpcmUoXCJyb2xlX2NvbnRyb2xsZXJcIik7XG52YXIgSGVyb0V4cGVkaXRFdmVudCA9IHJlcXVpcmUoXCJoZXJvZXhwZWRpdF9ldmVudFwiKTtcbnZhciBFc2Vjc2ljZUNvbnN0ID0gcmVxdWlyZShcImVzZWNzaWNlX2NvbnN0XCIpO1xudmFyIE1haW5VaUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcblxudmFyIEhlcm9leHBlZGl0TW9kZWwgPSBjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogQmFzZUNsYXNzLFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5jdHJsID0gYXJndW1lbnRzWzBdO1xuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sZXZlbFJlZFBvaW50U3RhdHVzID0gMFxuXHQgICAgdGhpcy5zZW5kUmVkUG9pbnRTdGF0dXMgPSAwXG4gICAgfSxcblxuICAgIC8vIDI0NDA2XG4gICAgc2V0RW1wbG95UGFydG5lcjpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgdGhpcy5lbXBsb3lQYXJ0bmVyID0gZGF0YTtcbiAgICB9LFxuXG4gICAgZ2V0RW1wbG95UGFydG5lcjpmdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gdGhpcy5lbXBsb3lQYXJ0bmVyIHx8IHt9O1xuICAgIH0sXG4gICAgICAgIFxuICAgIC8vMjQ0MDRcbiAgICBzZXRQYXJ0bmVyTWVzc2FnZTpmdW5jdGlvbihkYXRhKXtcbiAgICAgICAgdGhpcy5wYXJ0bmVyTWVzc2FnZSA9IGRhdGE7XG4gICAgfSxcblxuICAgIGdldFBhcnRuZXJNZXNzYWdlOmZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRuZXJNZXNzYWdlIHx8IHt9O1xuICAgIH0sXG5cbiAgICAvL+i/nOW+geeahOS4u+eVjOmdouaVsOaNrlxuICAgIHNldEV4cGVkaXREYXRhOmZ1bmN0aW9uKGRhdGEpe1xuICAgICAgICBpZighZGF0YSlyZXR1cm47XG4gICAgICAgIHRoaXMuZXhwZWRpdERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmd1YXJkX2lkID0gZGF0YS5ndWFyZF9pZDtcbiAgICAgICAgdGhpcy51cGRhdGVSZWRQb2ludCgpO1xuICAgIH0sXG5cbiAgICB1cGRhdGVSZWRQb2ludDogZnVuY3Rpb24oKSB7XG4gICAgICAgIFJlZE1nci5nZXRJbnN0YW5jZSgpLmFkZENhbEhhbmRsZXIodGhpcy5jaGVja1JlZC5iaW5kKHRoaXMpLCBSZWRJZHMuSGVyb2V4cGVkaXQpO1xuICAgIH0sXG5cbiAgICBjaGVja1JlZDpmdW5jdGlvbigpe1xuICAgICAgICB2YXIgc3RhdHVzID0gdGhpcy5jaGVja1JlZFN0YXR1cygpO1xuICAgICAgICB2YXIgU2NlbmVDb25zdCA9IHJlcXVpcmUoXCJzY2VuZV9jb25zdFwiKTtcbiAgICAgICAgTWFpbnVpQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpLnNldEJ0blJlZFBvaW50KE1haW5VaUNvbnN0LmJ0bl9pbmRleC5lc2Vjc2ljZSwge2JpZDpTY2VuZUNvbnN0LlJlZFBvaW50VHlwZS5oZXJvZXhwZWRpdCwgc3RhdHVzOnN0YXR1c30pIFxuICAgIH0sXG5cbiAgICBnZXRFeHBlZGl0RGF0YTpmdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gdGhpcy5leHBlZGl0RGF0YSB8fCB7fTtcbiAgICB9LFxuXG4gICAgLy8g6YCa5YWz57qi54K5XG4gICAgc2V0TGV2ZWxSZWRQb2ludDpmdW5jdGlvbihzdGF0dXMpe1xuICAgICAgICB0aGlzLmxldmVsUmVkUG9pbnRTdGF0dXMgPSBzdGF0dXNcbiAgICB9LFxuXG4gICAgLy8g5rS+6YGj57qi54K5XG4gICAgc2V0SGVyb1NlbmRSZWRQb2ludDpmdW5jdGlvbihzdGF0dXMpe1xuICAgICAgICBpZihzdGF0dXMgPT0gMCl7XG4gICAgICAgICAgICBzdGF0dXMgPSAxXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgc3RhdHVzID0gMFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZW5kUmVkUG9pbnRTdGF0dXMgPSBzdGF0dXM7XG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoSGVyb0V4cGVkaXRFdmVudC5SZWRfUG9pbnRfRXZlbnQpO1xuXG4gICAgfSxcblxuICAgIGdldEhlcm9TZW5kUmVkUG9pbnQ6ZnVuY3Rpb24oKXtcbiAgICAgICAgaWYodGhpcy5zZW5kUmVkUG9pbnRTdGF0dXMgPT0gMSl7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy/ov5zlvoHnuqLngrlcbiAgICBjaGVja1JlZFN0YXR1czpmdW5jdGlvbigpe1xuICAgICAgICB2YXIgb3Blbl9kYXRhID0gQ29uZmlnLmRhaWx5cGxheV9kYXRhLmRhdGFfZXhlcmNpc2VhY3Rpdml0eTtcbiAgICAgICAgdmFyIGJvb2wgPSBNYWludWlDb250cm9sbGVyLmdldEluc3RhbmNlKCkuY2hlY2tJc09wZW5CeUFjdGl2YXRlKG9wZW5fZGF0YVtFc2Vjc2ljZUNvbnN0LmV4ZWNzaWNlX2luZGV4Lmhlcm9leHBlZGl0XS5hY3RpdmF0ZSk7XG4gICAgICAgIGlmKGJvb2wgPT0gZmFsc2UpcmV0dXJuIGZhbHNlO1xuICAgICAgICB2YXIgbnVtID0gdGhpcy5sZXZlbFJlZFBvaW50U3RhdHVzICsgdGhpcy5zZW5kUmVkUG9pbnRTdGF0dXM7XG4gICAgICAgIHZhciBzdGF0dXMgPSBmYWxzZTtcbiAgICAgICAgaWYobnVtIDw9IDApe1xuICAgICAgICAgICAgc3RhdHVzID0gZmFsc2VcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBzdGF0dXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfSxcblxuICAgIC8v6I635Y+W5a6d566x55qE5L2N572uXG4gICAgZ2V0RXhwZWRpdEJveERhdGE6ZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIGJveCA9IFtdO1xuICAgICAgICB2YXIgZGF0YSA9IENvbmZpZy5leHBlZGl0aW9uX2RhdGEuZGF0YV9zaWduX2luZm87XG4gICAgICAgIGZvcih2YXIgaSBpbiBkYXRhKXtcbiAgICAgICAgICAgIGlmKGRhdGFbaV0udHlwZSA9PSAyKXtcbiAgICAgICAgICAgICAgICBib3gucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYm94XG4gICAgfSxcblxuICAgIC8vIOihgOadoVxuICAgIHNldEhlcm9CbG9vZEJ5SWQ6ZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgIHRoaXMuSGVyb0Jsb29kRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmhpcmVIZXJvRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmhpcmVIZXJvSXNVc2VkRGF0YSA9IFtdIC8v6ZuH5L2j55qE6Iux6ZuE5piv5ZCm5L2/55So6L+HXG4gICAgICAgIHRoaXMuc2V0RXhwZWRpdEVtcGxveURhdGEoZGF0YS5saXN0KTtcbiAgICAgICAgLy8g5pys6Lqr55qEXG4gICAgICAgIHZhciByb2xlX3ZvID0gUm9sZUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5nZXRSb2xlVm8oKTtcblx0ICAgIHZhciByaWQgPSAwO1xuICAgICAgICB2YXIgc3J2X2lkID0gXCJcIjtcbiAgICAgICAgaWYocm9sZV92byl7XG4gICAgICAgICAgICByaWQgPSByb2xlX3ZvLnJpZDtcblx0XHQgICAgc3J2X2lkID0gcm9sZV92by5zcnZfaWQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yKHZhciBpIGluIGRhdGEucF9saXN0KXtcbiAgICAgICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkocmlkLCBzcnZfaWQsIGRhdGEucF9saXN0W2ldLmlkKVxuXHRcdCAgICB0aGlzLkhlcm9CbG9vZERhdGFba2V5XSA9IGRhdGEucF9saXN0W2ldLmhwX3BlcjtcbiAgICAgICAgfVxuICAgICAgICAvLyDpm4fkvaPnmoRcbiAgICAgICAgaWYoVXRpbHMubmV4dChkYXRhLmxpc3QpIT1udWxsKXtcbiAgICAgICAgICAgIGZvcih2YXIgaiBpbiBkYXRhLmxpc3Qpe1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkoZGF0YS5saXN0W2pdLnJpZCwgZGF0YS5saXN0W2pdLnNydl9pZCwgZGF0YS5saXN0W2pdLmlkKVxuICAgICAgICAgICAgICAgIHRoaXMuaGlyZUhlcm9EYXRhW2tleV0gPSB0cnVlXG4gICAgICAgICAgICAgICAgdGhpcy5IZXJvQmxvb2REYXRhW2tleV0gPSBkYXRhLmxpc3Rbal0uaHBfcGVyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXJlSGVyb0lzVXNlZERhdGFba2V5XSA9IGRhdGEubGlzdFtqXS5pc191c2VkXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0SGVyb0Jsb29kQnlJZDpmdW5jdGlvbihpZCwgcmlkLCBzcnZfaWQpe1xuICAgICAgICBpZighdGhpcy5IZXJvQmxvb2REYXRhKXJldHVybiAxMDA7XG4gICAgICAgIGlmKCFpZCB8fCAodHlwZW9mIGlkICE9IFwibnVtYmVyXCIpKXJldHVybiAxMDA7XG4gICAgICAgIHJpZCA9IHJpZCB8fCAwO1xuICAgICAgICBzcnZfaWQgPSBzcnZfaWQgfHwgXCJcIjtcbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShyaWQsIHNydl9pZCwgaWQpXG4gICAgICAgIGlmKHRoaXMuSGVyb0Jsb29kRGF0YVtrZXldID09IG51bGwpe1xuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5IZXJvQmxvb2REYXRhW2tleV07XG4gICAgfSxcblxuICAgIC8vIOmbh+S9o+eahFxuICAgIGdldEhpcmVIZXJvOmZ1bmN0aW9uKGlkLCByaWQsIHNydl9pZCl7XG4gICAgICAgIGlmKCF0aGlzLmhpcmVIZXJvRGF0YSlyZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmKCFpZCB8fCAodHlwZW9mIGlkICE9IFwibnVtYmVyXCIpKXJldHVybiBmYWxzZTtcbiAgICAgICAgcmlkID0gcmlkIHx8IDBcbiAgICAgICAgc3J2X2lkID0gc3J2X2lkIHx8IFwiXCJcbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShyaWQsIHNydl9pZCwgaWQpXG4gICAgICAgIHJldHVybiB0aGlzLmhpcmVIZXJvRGF0YVtrZXldIHx8IGZhbHNlO1xuICAgIH0sXG5cbiAgICAvLyDpm4fkvaPkvb/nlKjnmoRcbiAgICBnZXRIaXJlSGVyb0lzVXNlZDpmdW5jdGlvbihpZCwgcmlkLCBzcnZfaWQpe1xuICAgICAgICBpZighdGhpcy5oaXJlSGVyb0lzVXNlZERhdGEpcmV0dXJuIDA7XG4gICAgICAgIGlmKCFpZCB8fCAodHlwZW9mIGlkICE9IFwibnVtYmVyXCIpKXJldHVybiAwO1xuICAgICAgICByaWQgPSByaWQgfHwgMDtcbiAgICAgICAgc3J2X2lkID0gc3J2X2lkIHx8IFwiXCI7XG4gICAgICAgIHZhciBrZXkgPSBVdGlscy5nZXROb3JLZXkocmlkLCBzcnZfaWQsIGlkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlyZUhlcm9Jc1VzZWREYXRhW2tleV0gfHwgMDtcbiAgICB9LFxuXG4gICAgLy8g6Iux6ZuE5Ye65b6B55qE6ZuH5L2j6Iux6ZuEXG4gICAgc2V0RXhwZWRpdEVtcGxveURhdGE6ZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgIHRoaXMuZXhwZWRpdEVtcGxveURhdGEgPSBkYXRhXG4gICAgfSxcblxuICAgIGdldEV4cGVkaXRFbXBsb3lEYXRhOmZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGVkaXRFbXBsb3lEYXRhIHx8IHt9O1xuICAgIH0sXG5cbiAgICBfX2RlbGV0ZTpmdW5jdGlvbigpe1xuXG4gICAgfSxcbn0pOyJdfQ==