(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/mail/mail_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, '3ceddkww6ZLgYYJdNT1CFO/', 'mail_model'); // Scripts/mod/mail/mail_model.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里填写详细说明,主要填写该模块的功能简要 //
Create: 2018-12-08 14:17:36 // -------------------------------------------------------------------- var MailController = require("mail_controller"); var MailEvent = require("mail_event"); var MailVo = require("mail_vo"); var NoticeVo = require("notice_vo"); var MailModel_MAX_COUNT = 50; //最大邮件数量 var MailModel = cc.Class({ "extends": BaseClass, ctor: function ctor() { this.ctrl = MailController.getInstance(); this.initConfig(); }, properties: {}, initConfig: function initConfig() { this.mail_list = {}; //所有邮件 this.notice_list = {}; //公告列表 this.red_status_list = {}; //红点状态 }, //初始化邮件列表 initMailList: function initMailList(data_list) { if (data_list == null || Utils.next(data_list) == null) return; for (var i in data_list) { var v = data_list[i]; var key = Utils.getNorKey(v.id, v.srv_id); var mail_vo = this.mail_list[key]; if (mail_vo == null) { mail_vo = new MailVo(); this.mail_list[key] = mail_vo; } mail_vo.initAttrData(v); } //初始化红点 this.checkMailRedSum(); }, //设置邮件红点状态 checkMailRedSum: function checkMailRedSum() { var red_num = 0; for (var k in this.mail_list) { if (this.mail_list[k] && this.mail_list[k].status == 0) { red_num = red_num + 1; } } this.updateRedStatus(1, red_num); }, //新增邮件 10803 addMailItem: function addMailItem(data_list) { this.initMailList(data_list); //新增一个邮件的时候刷新邮件列表 gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM); }, //删除没有附件的邮件 10804 delMailItem: function delMailItem(data_list) { if (data_list == null || Utils.next(data_list) == null) return; for (var i in data_list) { var v = data_list[i]; if (v) { var key = Utils.getNorKey(v.id, v.srv_id); this.mail_list[key] = null; } } //删除一个邮件的时候刷新邮件列表 gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM); }, //读取一封邮件,这个时候需要设置一些状态 10805 readMailItem: function readMailItem(data) { if (data == null) return; var key = Utils.getNorKey(data.id, data.srv_id); var mail_vo = this.mail_list[key]; if (mail_vo == null) return; mail_vo.setReaded(data.read_time); this.checkMailRedSum(); //读取单封邮件的处理 gcore.GlobalEvent.fire(MailEvent.READ_MAIL_INFO, key); }, //提取一个邮件附件 10801 getMailGood: function getMailGood(data) { if (data == null) return; var key = Utils.getNorKey(data.id, data.srv_id); var mail_vo = this.mail_list[key]; mail_vo.removeAssets(); this.checkMailRedSum(); //提取一个邮件的物品 gcore.GlobalEvent.fire(MailEvent.GET_ITEM_ASSETS, key); }, //一键提取所有邮件 10802 getAllMailGood: function getAllMailGood(data_list) { if (data_list == null || Utils.next(data_list) == null) return; for (var i in data_list) { var v = data_list[i]; var key = Utils.getNorKey(v.id, v.srv_id); if (this.mail_list[key]) { this.mail_list[key].removeAssets(v.read_time); } } this.checkMailRedSum(); gcore.GlobalEvent.fire(MailEvent.UPDATE_ITEM); }, //获取邮件列表 getAllMailArray: function getAllMailArray() { var temp_list = []; for (var k in this.mail_list) { var v = this.mail_list[k]; // if (v.time_out <= gcore.SmartSocket.getTime() && Utils.getArrLen(v.assets) == 0 && Utils.getArrLen(v.items) == 0) { if (v && v.type == 1) { temp_list.push(v); } } if (temp_list.length > 0) { temp_list.sort(Utils.tableLowerSorter(["status", "is_has"])); } return temp_list; }, //获取已读且已经领取的邮件 getHasReadNonRewardList: function getHasReadNonRewardList() { var mail_ids = []; for (var i in this.mail_list) { var v = this.mail_list[i]; //删除邮件的已经领取的邮件 if (v && v.id != null && v.srv_id != null && (v.status == 2 || v.status == 1 && Utils.getArrLen(v.assets) == 0 && Utils.getArrLen(v.items) == 0) && v.type == 1) { var mail_data = {}; mail_data.id = v.id; mail_data.srv_id = v.srv_id; mail_ids.push(mail_data); } } return mail_ids; }, //更新红点状态 updateRedStatus: function updateRedStatus(bid, num) { var red_num = this.red_status_list[bid]; if (red_num == num) return; this.red_status_list[bid] = num; //红点 var list = { bid: bid, num: num }; var MainuiConst = require("mainui_const"); require("mainui_controller").getInstance().setFunctionTipsStatus(MainuiConst.icon.mail, list); //更新红点, 1为邮件 2位公告 gcore.GlobalEvent.fire(MailEvent.UPDATEREDSTATUS, bid, num); }, getRedSum: function getRedSum(bid) { return this.red_status_list[bid]; } }); module.exports = MailModel; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxtYWlsXFxtYWlsX21vZGVsLmpzIl0sIm5hbWVzIjpbIk1haWxDb250cm9sbGVyIiwicmVxdWlyZSIsIk1haWxFdmVudCIsIk1haWxWbyIsIk5vdGljZVZvIiwiTWFpbE1vZGVsX01BWF9DT1VOVCIsIk1haWxNb2RlbCIsImNjIiwiQ2xhc3MiLCJCYXNlQ2xhc3MiLCJjdG9yIiwiY3RybCIsImdldEluc3RhbmNlIiwiaW5pdENvbmZpZyIsInByb3BlcnRpZXMiLCJtYWlsX2xpc3QiLCJub3RpY2VfbGlzdCIsInJlZF9zdGF0dXNfbGlzdCIsImluaXRNYWlsTGlzdCIsImRhdGFfbGlzdCIsIlV0aWxzIiwibmV4dCIsImkiLCJ2Iiwia2V5IiwiZ2V0Tm9yS2V5IiwiaWQiLCJzcnZfaWQiLCJtYWlsX3ZvIiwiaW5pdEF0dHJEYXRhIiwiY2hlY2tNYWlsUmVkU3VtIiwicmVkX251bSIsImsiLCJzdGF0dXMiLCJ1cGRhdGVSZWRTdGF0dXMiLCJhZGRNYWlsSXRlbSIsImdjb3JlIiwiR2xvYmFsRXZlbnQiLCJmaXJlIiwiVVBEQVRFX0lURU0iLCJkZWxNYWlsSXRlbSIsInJlYWRNYWlsSXRlbSIsImRhdGEiLCJzZXRSZWFkZWQiLCJyZWFkX3RpbWUiLCJSRUFEX01BSUxfSU5GTyIsImdldE1haWxHb29kIiwicmVtb3ZlQXNzZXRzIiwiR0VUX0lURU1fQVNTRVRTIiwiZ2V0QWxsTWFpbEdvb2QiLCJnZXRBbGxNYWlsQXJyYXkiLCJ0ZW1wX2xpc3QiLCJ0eXBlIiwicHVzaCIsImxlbmd0aCIsInNvcnQiLCJ0YWJsZUxvd2VyU29ydGVyIiwiZ2V0SGFzUmVhZE5vblJld2FyZExpc3QiLCJtYWlsX2lkcyIsImdldEFyckxlbiIsImFzc2V0cyIsIml0ZW1zIiwibWFpbF9kYXRhIiwiYmlkIiwibnVtIiwibGlzdCIsIk1haW51aUNvbnN0Iiwic2V0RnVuY3Rpb25UaXBzU3RhdHVzIiwiaWNvbiIsIm1haWwiLCJVUERBVEVSRURTVEFU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LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHh4eEBzeWcuY29tKOW/heWhqywg5Yib5bu65qih5Z2X55qE5Lq65ZGYKVxuLy8gQGRlc2NyaXB0aW9uOlxuLy8gICAgICDov5nph4zloavlhpnor6bnu4bor7TmmI4s5Li76KaB5aGr5YaZ6K+l5qih5Z2X55qE5Yqf6IO9566A6KaBXG4vLyA8YnIvPkNyZWF0ZTogMjAxOC0xMi0wOCAxNDoxNzozNlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnZhciBNYWlsQ29udHJvbGxlciA9IHJlcXVpcmUoXCJtYWlsX2NvbnRyb2xsZXJcIik7XG52YXIgTWFpbEV2ZW50ID0gcmVxdWlyZShcIm1haWxfZXZlbnRcIik7XG52YXIgTWFpbFZvID0gcmVxdWlyZShcIm1haWxfdm9cIik7XG52YXIgTm90aWNlVm8gPSByZXF1aXJlKFwibm90aWNlX3ZvXCIpO1xuXG52YXIgTWFpbE1vZGVsX01BWF9DT1VOVCA9IDUwICAgICAgICAgICAgLy/mnIDlpKfpgq7ku7bmlbDph49cblxudmFyIE1haWxNb2RlbCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlQ2xhc3MsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmN0cmwgPSBNYWlsQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xuICAgICAgICB0aGlzLmluaXRDb25maWcoKVxuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgfSxcblxuICAgIGluaXRDb25maWc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tYWlsX2xpc3QgPSB7fTsgICAgICAgICAgICAgICAgLy/miYDmnInpgq7ku7ZcbiAgICAgICAgdGhpcy5ub3RpY2VfbGlzdCA9IHt9OyAgICAgICAgICAgICAgLy/lhazlkYrliJfooahcbiAgICAgICAgdGhpcy5yZWRfc3RhdHVzX2xpc3QgPSB7fTsgICAgICAgICAgLy/nuqLngrnnirbmgIFcbiAgICB9LFxuXG4gICAgLy/liJ3lp4vljJbpgq7ku7bliJfooahcbiAgICBpbml0TWFpbExpc3Q6IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICB2YXIgbWFpbF92byA9IHRoaXMubWFpbF9saXN0W2tleV07XG4gICAgICAgICAgICBpZiAobWFpbF92byA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWFpbF92byA9IG5ldyBNYWlsVm8oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haWxfbGlzdFtrZXldID0gbWFpbF92bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1haWxfdm8uaW5pdEF0dHJEYXRhKHYpXG4gICAgICAgIH1cbiAgICAgICAgLy/liJ3lp4vljJbnuqLngrlcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICB9LFxuXG4gICAgLy/orr7nva7pgq7ku7bnuqLngrnnirbmgIFcbiAgICBjaGVja01haWxSZWRTdW06IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlZF9udW0gPSAwO1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMubWFpbF9saXN0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWlsX2xpc3Rba10gJiYgdGhpcy5tYWlsX2xpc3Rba10uc3RhdHVzID09IDApIHtcbiAgICAgICAgICAgICAgICByZWRfbnVtID0gcmVkX251bSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVSZWRTdGF0dXMoMSwgcmVkX251bSk7XG4gICAgfSxcblxuICAgIC8v5paw5aKe6YKu5Lu2IDEwODAzIFxuICAgIGFkZE1haWxJdGVtOiBmdW5jdGlvbiAoZGF0YV9saXN0KSB7XG4gICAgICAgIHRoaXMuaW5pdE1haWxMaXN0KGRhdGFfbGlzdCk7XG4gICAgICAgIC8v5paw5aKe5LiA5Liq6YKu5Lu255qE5pe25YCZ5Yi35paw6YKu5Lu25YiX6KGoXG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTWFpbEV2ZW50LlVQREFURV9JVEVNKTtcbiAgICB9LFxuXG4gICAgLy/liKDpmaTmsqHmnInpmYTku7bnmoTpgq7ku7YgMTA4MDQgXG4gICAgZGVsTWFpbEl0ZW06IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgaWYodil7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWlsX2xpc3Rba2V5XSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy/liKDpmaTkuIDkuKrpgq7ku7bnmoTml7blgJnliLfmlrDpgq7ku7bliJfooahcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuVVBEQVRFX0lURU0pO1xuICAgIH0sXG5cbiAgICAvL+ivu+WPluS4gOWwgemCruS7tizov5nkuKrml7blgJnpnIDopoHorr7nva7kuIDkupvnirbmgIEgMTA4MDUgXG4gICAgcmVhZE1haWxJdGVtOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShkYXRhLmlkLCBkYXRhLnNydl9pZCk7XG4gICAgICAgIHZhciBtYWlsX3ZvID0gdGhpcy5tYWlsX2xpc3Rba2V5XTtcbiAgICAgICAgaWYgKG1haWxfdm8gPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIG1haWxfdm8uc2V0UmVhZGVkKGRhdGEucmVhZF90aW1lKTtcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICAgICAgLy/or7vlj5bljZXlsIHpgq7ku7bnmoTlpITnkIZcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuUkVBRF9NQUlMX0lORk8sIGtleSk7XG4gICAgfSxcblxuICAgIC8v5o+Q5Y+W5LiA5Liq6YKu5Lu26ZmE5Lu2IDEwODAxIFxuICAgIGdldE1haWxHb29kOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleShkYXRhLmlkLCBkYXRhLnNydl9pZCk7XG4gICAgICAgIHZhciBtYWlsX3ZvID0gdGhpcy5tYWlsX2xpc3Rba2V5XTtcbiAgICAgICAgbWFpbF92by5yZW1vdmVBc3NldHMoKTtcbiAgICAgICAgdGhpcy5jaGVja01haWxSZWRTdW0oKTtcbiAgICAgICAgLy/mj5Dlj5bkuIDkuKrpgq7ku7bnmoTnianlk4FcbiAgICAgICAgZ2NvcmUuR2xvYmFsRXZlbnQuZmlyZShNYWlsRXZlbnQuR0VUX0lURU1fQVNTRVRTLCBrZXkpO1xuICAgIH0sXG5cbiAgICAvL+S4gOmUruaPkOWPluaJgOaciemCruS7tiAgMTA4MDIgXG4gICAgZ2V0QWxsTWFpbEdvb2Q6IGZ1bmN0aW9uIChkYXRhX2xpc3QpIHtcbiAgICAgICAgaWYgKGRhdGFfbGlzdCA9PSBudWxsIHx8IFV0aWxzLm5leHQoZGF0YV9saXN0KSA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgZm9yICh2YXIgaSBpbiBkYXRhX2xpc3QpIHtcbiAgICAgICAgICAgIHZhciB2ID0gZGF0YV9saXN0W2ldO1xuICAgICAgICAgICAgdmFyIGtleSA9IFV0aWxzLmdldE5vcktleSh2LmlkLCB2LnNydl9pZCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWlsX2xpc3Rba2V5XSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbF9saXN0W2tleV0ucmVtb3ZlQXNzZXRzKHYucmVhZF90aW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hlY2tNYWlsUmVkU3VtKCk7XG4gICAgICAgIGdjb3JlLkdsb2JhbEV2ZW50LmZpcmUoTWFpbEV2ZW50LlVQREFURV9JVEVNKTtcbiAgICB9LFxuXG4gICAgLy/ojrflj5bpgq7ku7bliJfooahcbiAgICBnZXRBbGxNYWlsQXJyYXk6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRlbXBfbGlzdCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrIGluIHRoaXMubWFpbF9saXN0KSB7XG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMubWFpbF9saXN0W2tdO1xuICAgICAgICAgICAgLy8gaWYgKHYudGltZV9vdXQgPD0gZ2NvcmUuU21hcnRTb2NrZXQuZ2V0VGltZSgpICYmIFV0aWxzLmdldEFyckxlbih2LmFzc2V0cykgPT0gMCAmJiBVdGlscy5nZXRBcnJMZW4odi5pdGVtcykgPT0gMCkge1xuXG4gICAgICAgICAgICBpZiAodiAmJiB2LnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgICAgIHRlbXBfbGlzdC5wdXNoKHYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRlbXBfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0ZW1wX2xpc3Quc29ydChVdGlscy50YWJsZUxvd2VyU29ydGVyKFtcInN0YXR1c1wiLCBcImlzX2hhc1wiXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wX2xpc3RcbiAgICB9LFxuXG4gICAgLy/ojrflj5blt7Lor7vkuJTlt7Lnu4/pooblj5bnmoTpgq7ku7ZcbiAgICBnZXRIYXNSZWFkTm9uUmV3YXJkTGlzdDogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWFpbF9pZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLm1haWxfbGlzdCkge1xuICAgICAgICAgICAgdmFyIHYgPSB0aGlzLm1haWxfbGlzdFtpXTtcbiAgICAgICAgICAgIC8v5Yig6Zmk6YKu5Lu255qE5bey57uP6aKG5Y+W55qE6YKu5Lu2XG4gICAgICAgICAgICBpZiAodiAmJiB2LmlkICE9IG51bGwgJiYgdi5zcnZfaWQgIT0gbnVsbCAmJiAodi5zdGF0dXMgPT0gMiB8fCAodi5zdGF0dXMgPT0gMSAmJiBVdGlscy5nZXRBcnJMZW4odi5hc3NldHMpID09IDAgJiYgVXRpbHMuZ2V0QXJyTGVuKHYuaXRlbXMpID09IDApKSAmJiB2LnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgICAgIHZhciBtYWlsX2RhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICBtYWlsX2RhdGEuaWQgPSB2LmlkO1xuICAgICAgICAgICAgICAgIG1haWxfZGF0YS5zcnZfaWQgPSB2LnNydl9pZDtcbiAgICAgICAgICAgICAgICBtYWlsX2lkcy5wdXNoKG1haWxfZGF0YSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFpbF9pZHNcbiAgICB9LFxuXG4gICAgLy/mm7TmlrDnuqLngrnnirbmgIFcbiAgICB1cGRhdGVSZWRTdGF0dXM6IGZ1bmN0aW9uIChiaWQsIG51bSkge1xuICAgICAgICB2YXIgcmVkX251bSA9IHRoaXMucmVkX3N0YXR1c19saXN0W2JpZF07XG4gICAgICAgIGlmIChyZWRfbnVtID09IG51bSkgcmV0dXJuXG4gICAgICAgIHRoaXMucmVkX3N0YXR1c19saXN0W2JpZF0gPSBudW07XG4gICAgICAgIC8v57qi54K5XG4gICAgICAgIHZhciBsaXN0ID0geyBiaWQ6IGJpZCwgbnVtOiBudW0gfTtcbiAgICAgICAgdmFyIE1haW51aUNvbnN0ID0gcmVxdWlyZShcIm1haW51aV9jb25zdFwiKTtcbiAgICAgICAgcmVxdWlyZShcIm1haW51aV9jb250cm9sbGVyXCIpLmdldEluc3RhbmNlKCkuc2V0RnVuY3Rpb25UaXBzU3RhdHVzKE1haW51aUNvbnN0Lmljb24ubWFpbCwgbGlzdClcbiAgICAgICAgLy/mm7TmlrDnuqLngrksIDHkuLrpgq7ku7YgMuS9jeWFrOWRilxuICAgICAgICBnY29yZS5HbG9iYWxFdmVudC5maXJlKE1haWxFdmVudC5VUERBVEVSRURTVEFUVVMsIGJpZCwgbnVtKTtcbiAgICB9LFxuXG4gICAgZ2V0UmVkU3VtOiBmdW5jdGlvbiAoYmlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZF9zdGF0dXNfbGlzdFtiaWRdXG4gICAgfVxuXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYWlsTW9kZWw7Il19