(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Scripts/mod/role/role_vo.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, 'ea7eb0d9mFNdY0UoO3iYk7X', 'role_vo'); // Scripts/mod/role/role_vo.js "use strict"; /*-----------------------------------------------------+ * 角色数据模块 * @author whjing2012@163.com +-----------------------------------------------------*/ var RoleEvent = require("role_event"); var RoleVo = cc.Class({ "extends": gcore.BaseEvent, ctor: function ctor() { this.rid = 0; this.srv_id = ""; this.name = ""; this.lev = 0; this.exp = 0; this.exp_max = 0; this.sex = 0; this.gold = 0; this.coin = 0; this.vip_lev = 0; this.vip_exp = 0; this.is_vip = 0; //是否激活vip; this.face_id = 0; // 头像 this.avatar_base_id = 0; // 头像框 this.face_list = []; // 头像列表 this.title_id = 0; // 使用称号ID this.title_list = []; // 已获得称号列表 this.reg_time = 0; //注册时间 this.gid = 0; //公会id this.gsrv_id = ""; //公会服务器id this.position = 0; //公会职位 this.gname = ""; //所属帮派的名字 this.guild_lev = 0; //公会等级 this.guild_quit_time = 0; //上次退帮时间 this.friend_point = 0; //友情点 this.power = 0; //战力 this.max_power = 0; //最高战力 this.open_day = 0; // 开服天数 this.energy = 0; //远航情报 this.energy_max = 0; //远航情报上限 this.dic_action_assets = {}; // --活动资产信息 self.dic_action_assets[资产id] = 数量 this.recruithigh_hero = 0; // -- 先知殿积分 this.vip_card_exp = 0; }, // 更新角色数据 initAttributeData: function initAttributeData(data) { for (var k in data) { this.setRoleAttribute(k, data[k]); } }, // 设置单个属性信息 setRoleAttribute: function setRoleAttribute(key, value) { if (key == "srv_id") { var str = "srv_id" + gcore.SysEnv.get("user_name"); gcore.SysEnv.set(str, value); // console.log("key===",key,value,str); // console.log("存储的服务器", gcore.SysEnv.get(str)) } if (this[key] != value) { this[key] = value; this.dispatchUpdateAttrByKey(key, value); if (key == "lev" && (PLATFORM_TYPR == "SH_RH" || PLATFORM_TYPR == "SH_SDK")) { SDK.roleUpLevel(value); } } }, // 派发单个属性变化事件 dispatchUpdateAttrByKey: function dispatchUpdateAttrByKey(key, value) { this.fire(EventId.UPDATE_ROLE_ATTRIBUTE, key, value); }, // 角色基础数据变化 dispatchUpdateBaseAttr: function dispatchUpdateBaseAttr() { this.fire(EventId.ROLE_EVENT_BASE_ATTR); }, //判断是否有加入宗派 isHasGuild: function isHasGuild() { return this.gid != 0; }, // --[[角色活动资产信息]] // --@is_update 是否数据更新 initActionAssetsData: function initActionAssetsData(holiday_assets, is_update) { holiday_assets = holiday_assets || []; for (var i = 0; i < holiday_assets.length; ++i) { var v = holiday_assets[i]; this.dic_action_assets[v.id] = v.val; if (is_update) { this.fire(RoleEvent.UPDATE_ROLE_ACTION_ASSETS, v.id, v.val); } } }, // --获取活动资产数量 getActionAssetsNumByBid: function getActionAssetsNumByBid(bid) { var self = this; if (self.dic_action_assets && self.dic_action_assets[bid]) { return self.dic_action_assets[bid]; } else { return 0; } }, setPower: function setPower(value) { var old_value = this.power; this.power = value || 0; if (this.is_show_power == true) { if (old_value < value) { GlobalMessageMgr.getInstance().showPowerMove(value - old_value, null, old_value); } } if (this.power != old_value) { this.fire(EventId.UPDATE_ROLE_ATTRIBUTE, "power", this.power); } this.showPower(false); }, showPower: function showPower(bool) { this.is_show_power = bool; }, //设置最高战力 setMaxPower: function setMaxPower(value) { var old_value = this.max_power; this.max_power = value || 0; if (this.max_power != old_value) { this.fire(EventId.UPDATE_ROLE_ATTRIBUTE, "max_power", this.max_power); } } }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcbW9kXFxyb2xlXFxyb2xlX3ZvLmpzIl0sIm5hbWVzIjpbIlJvbGVFdmVudCIsInJlcXVpcmUiLCJSb2xlVm8iLCJjYyIsIkNsYXNzIiwiZ2NvcmUiLCJCYXNlRXZlbnQiLCJjdG9yIiwicmlkIiwic3J2X2lkIiwibmFtZSIsImxldiIsImV4cCIsImV4cF9tYXgiLCJzZXgiLCJnb2xkIiwiY29pbiIsInZpcF9sZXYiLCJ2aXBfZXhwIiwiaXNfdmlwIiwiZmFjZV9pZCIsImF2YXRhcl9iYXNlX2lkIiwiZmFjZV9saXN0IiwidGl0bGVfaWQiLCJ0aXRsZV9saXN0IiwicmVnX3RpbWUiLCJnaWQiLCJnc3J2X2lkIiwicG9zaXRpb24iLCJnbmFtZSIsImd1aWxkX2xldiIsImd1aWxkX3F1aXRfdGltZSIsImZyaWVuZF9wb2ludCIsInBvd2VyIiwibWF4X3Bvd2VyIiwib3Blbl9kYXkiLCJlbmVyZ3kiLCJlbmVyZ3lfbWF4IiwiZGljX2FjdGlvbl9hc3NldHMiLCJyZWNydWl0aGlnaF9oZXJvIiwidmlwX2NhcmRfZXhwIiwiaW5pdEF0dHJpYnV0ZURhdGEiLCJkYXRhIiwiayIsInNldFJvbGVBdHRyaWJ1dGUiLCJrZXkiLCJ2YWx1ZSIsInN0ciIsIlN5c0VudiIsImdldCIsInNldCIsImRpc3BhdGNoVXBkYXRlQXR0ckJ5S2V5IiwiUExBVEZPUk1fVFlQUiIsIlNESyIsInJvbGVVcExldmVsIiwiZmlyZSIsIkV2ZW50SWQiLCJVUERBVEVfUk9MRV9BVFRSSUJVVEUiLCJkaXNwYXRjaFVwZGF0ZUJhc2VBdHRyIiwiUk9MRV9FVkVOVF9CQVNFX0FUVFIiLCJpc0hhc0d1aWxkIiwiaW5pdEFjdGlvbkFzc2V0c0RhdGEiLCJob2xpZGF5X2Fzc2V0cyIsImlzX3VwZGF0ZSIsImkiLCJsZW5ndGgiLCJ2IiwiaWQiLCJ2YWwiLCJVUERBVEVfUk9MRV9BQ1RJT05fQVNTRVRTIiwiZ2V0QWN0aW9uQXNzZXRzTnVtQnlCaWQiLCJiaWQiLCJzZWxmIiwic2V0UG93ZXIiLCJvbGRfdmFsdWUiLCJpc19zaG93X3Bvd2VyIiwiR2xvYmFsTWVzc2FnZU1nciIsImdldEluc3RhbmNlIiwic2hvd1Bvd2VyTW92ZSIsInNob3dQb3dlciIsImJvb2wiLCJzZXRNYXhQb3dlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUlDLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBdkI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHQyxFQUFFLENBQUNDLEtBQUgsQ0FBUztBQUNuQixhQUFTQyxLQUFLLENBQUNDLFNBREk7QUFFbkJDLEVBQUFBLElBQUksRUFBQyxnQkFBVTtBQUNYLFNBQUtDLEdBQUwsR0FBVyxDQUFYO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxTQUFLQyxJQUFMLEdBQVksRUFBWjtBQUNBLFNBQUtDLEdBQUwsR0FBVyxDQUFYO0FBQ0EsU0FBS0MsR0FBTCxHQUFXLENBQVg7QUFDQSxTQUFLQyxPQUFMLEdBQWUsQ0FBZjtBQUNBLFNBQUtDLEdBQUwsR0FBVyxDQUFYO0FBQ0EsU0FBS0MsSUFBTCxHQUFZLENBQVo7QUFDQSxTQUFLQyxJQUFMLEdBQVksQ0FBWjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxDQUFmO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLENBQWY7QUFDQSxTQUFLQyxNQUFMLEdBQWMsQ0FBZCxDQVpXLENBWUs7O0FBQ2hCLFNBQUtDLE9BQUwsR0FBZSxDQUFmLENBYlcsQ0FhTzs7QUFDbEIsU0FBS0MsY0FBTCxHQUFzQixDQUF0QixDQWRXLENBY2M7O0FBQ3pCLFNBQUtDLFNBQUwsR0FBaUIsRUFBakIsQ0FmVyxDQWVVOztBQUNyQixTQUFLQyxRQUFMLEdBQWdCLENBQWhCLENBaEJXLENBZ0JROztBQUNuQixTQUFLQyxVQUFMLEdBQWtCLEVBQWxCLENBakJXLENBaUJXOztBQUN0QixTQUFLQyxRQUFMLEdBQWdCLENBQWhCLENBbEJXLENBa0JPOztBQUVsQixTQUFLQyxHQUFMLEdBQVcsQ0FBWCxD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Q0QsU0FBSzhDLFNBQUwsQ0FBZSxLQUFmO0FBQ0gsR0FySGtCO0FBc0huQkEsRUFBQUEsU0F0SG1CLHFCQXNIVEMsSUF0SFMsRUFzSEo7QUFDWCxTQUFLTCxhQUFMLEdBQW9CSyxJQUFwQjtBQUNILEdBeEhrQjtBQXlIbkI7QUFDQUMsRUFBQUEsV0FBVyxFQUFDLHFCQUFTbkMsS0FBVCxFQUFlO0FBQ3ZCLFFBQUk0QixTQUFTLEdBQUcsS0FBS3hDLFNBQXJCO0FBQ0EsU0FBS0EsU0FBTCxHQUFpQlksS0FBSyxJQUFJLENBQTFCOztBQUNBLFFBQUcsS0FBS1osU0FBTCxJQUFrQndDLFNBQXJCLEVBQStCO0FBQzNCLFdBQUtuQixJQUFMLENBQVVDLE9BQU8sQ0FBQ0MscUJBQWxCLEVBQXlDLFdBQXpDLEVBQXNELEtBQUt2QixTQUEzRDtBQUNIO0FBQ0o7QUFoSWtCLENBQVQsQ0FBYiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAqIOinkuiJsuaVsOaNruaooeWdl1xuICogQGF1dGhvciB3aGppbmcyMDEyQDE2My5jb21cbiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuIHZhciBSb2xlRXZlbnQgPSByZXF1aXJlKFwicm9sZV9ldmVudFwiKTtcbiB2YXIgUm9sZVZvID0gY2MuQ2xhc3Moe1xuICAgIGV4dGVuZHM6IGdjb3JlLkJhc2VFdmVudCxcbiAgICBjdG9yOmZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMucmlkID0gMDtcbiAgICAgICAgdGhpcy5zcnZfaWQgPSBcIlwiO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIlwiO1xuICAgICAgICB0aGlzLmxldiA9IDA7XG4gICAgICAgIHRoaXMuZXhwID0gMDtcbiAgICAgICAgdGhpcy5leHBfbWF4ID0gMDtcbiAgICAgICAgdGhpcy5zZXggPSAwO1xuICAgICAgICB0aGlzLmdvbGQgPSAwO1xuICAgICAgICB0aGlzLmNvaW4gPSAwO1xuICAgICAgICB0aGlzLnZpcF9sZXYgPSAwO1xuICAgICAgICB0aGlzLnZpcF9leHAgPSAwO1xuICAgICAgICB0aGlzLmlzX3ZpcCA9IDA7Ly/mmK/lkKbmv4DmtLt2aXA7XG4gICAgICAgIHRoaXMuZmFjZV9pZCA9IDA7IC8vIOWktOWDj1xuICAgICAgICB0aGlzLmF2YXRhcl9iYXNlX2lkID0gMDsgLy8g5aS05YOP5qGGXG4gICAgICAgIHRoaXMuZmFjZV9saXN0ID0gW107IC8vIOWktOWDj+WIl+ihqCBcbiAgICAgICAgdGhpcy50aXRsZV9pZCA9IDA7IC8vIOS9v+eUqOensOWPt0lEXG4gICAgICAgIHRoaXMudGl0bGVfbGlzdCA9IFtdOyAvLyDlt7Lojrflvpfnp7Dlj7fliJfooahcbiAgICAgICAgdGhpcy5yZWdfdGltZSA9IDA7Ly/ms6jlhozml7bpl7RcblxuICAgICAgICB0aGlzLmdpZCA9IDA7Ly/lhazkvJppZFxuICAgICAgICB0aGlzLmdzcnZfaWQgPSBcIlwiOy8v5YWs5Lya5pyN5Yqh5ZmoaWRcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IDA7Ly/lhazkvJrogYzkvY1cbiAgICAgICAgdGhpcy5nbmFtZSA9IFwiXCI7Ly/miYDlsZ7luK7mtL7nmoTlkI3lrZdcbiAgICAgICAgdGhpcy5ndWlsZF9sZXYgPSAwOy8v5YWs5Lya562J57qnXG4gICAgICAgIHRoaXMuZ3VpbGRfcXVpdF90aW1lID0gMDsvL+S4iuasoemAgOW4ruaXtumXtFxuICAgICAgICB0aGlzLmZyaWVuZF9wb2ludCA9IDA7Ly/lj4vmg4XngrlcblxuICAgICAgICB0aGlzLnBvd2VyID0gMDsvL+aImOWKm1xuICAgICAgICB0aGlzLm1heF9wb3dlciA9IDA7Ly/mnIDpq5jmiJjliptcblxuICAgICAgICB0aGlzLm9wZW5fZGF5ID0gMDsgICAgICAvLyDlvIDmnI3lpKnmlbBcblxuICAgICAgICB0aGlzLmVuZXJneSA9IDA7Ly/ov5zoiKrmg4XmiqVcbiAgICAgICAgdGhpcy5lbmVyZ3lfbWF4ID0gMDsvL+i/nOiIquaDheaKpeS4iumZkFxuXG4gICAgICAgIHRoaXMuZGljX2FjdGlvbl9hc3NldHM9IHt9ICAgICAgICAgICAgICAgICAgIC8vIC0t5rS75Yqo6LWE5Lqn5L+h5oGvIHNlbGYuZGljX2FjdGlvbl9hc3NldHNb6LWE5LqnaWRdID0g5pWw6YePXG5cbiAgICAgICAgdGhpcy5yZWNydWl0aGlnaF9oZXJvPSAwICAgICAgICAgICAgICAgICAgICAvLyAtLSDlhYjnn6Xmrr/np6/liIZcblxuICAgICAgICB0aGlzLnZpcF9jYXJkX2V4cCA9IDA7XG4gICAgfSxcblxuICAgIC8vIOabtOaWsOinkuiJsuaVsOaNrlxuICAgIGluaXRBdHRyaWJ1dGVEYXRhIDogZnVuY3Rpb24oZGF0YSl7XG4gICAgICAgIGZvcih2YXIgayBpbiBkYXRhKXtcbiAgICAgICAgICAgIHRoaXMuc2V0Um9sZUF0dHJpYnV0ZShrLCBkYXRhW2tdKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDorr7nva7ljZXkuKrlsZ7mgKfkv6Hmga9cbiAgICBzZXRSb2xlQXR0cmlidXRlIDogZnVuY3Rpb24oa2V5LCB2YWx1ZSl7XG4gICAgICAgIGlmKGtleSA9PSBcInNydl9pZFwiKXtcbiAgICAgICAgICAgIGxldCBzdHIgPSBcInNydl9pZFwiICsgZ2NvcmUuU3lzRW52LmdldChcInVzZXJfbmFtZVwiKTtcbiAgICAgICAgICAgIGdjb3JlLlN5c0Vudi5zZXQoc3RyLHZhbHVlKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwia2V5PT09XCIsa2V5LHZhbHVlLHN0cik7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWtmOWCqOeahOacjeWKoeWZqFwiLCBnY29yZS5TeXNFbnYuZ2V0KHN0cikpXG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpc1trZXldICE9IHZhbHVlKXtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaFVwZGF0ZUF0dHJCeUtleShrZXksIHZhbHVlKTtcbiAgICAgICAgICAgIGlmKGtleSA9PSBcImxldlwiICYmIChQTEFURk9STV9UWVBSID09IFwiU0hfUkhcIiB8fCBQTEFURk9STV9UWVBSID09IFwiU0hfU0RLXCIpKXtcbiAgICAgICAgICAgICAgICBTREsucm9sZVVwTGV2ZWwodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8vIOa0vuWPkeWNleS4quWxnuaAp+WPmOWMluS6i+S7tlxuICAgIGRpc3BhdGNoVXBkYXRlQXR0ckJ5S2V5KGtleSwgdmFsdWUpe1xuICAgICAgICB0aGlzLmZpcmUoRXZlbnRJZC5VUERBVEVfUk9MRV9BVFRSSUJVVEUsIGtleSwgdmFsdWUpO1xuICAgIH0sXG5cbiAgICAvLyDop5LoibLln7rnoYDmlbDmja7lj5jljJYgXG4gICAgZGlzcGF0Y2hVcGRhdGVCYXNlQXR0ciA6IGZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuZmlyZShFdmVudElkLlJPTEVfRVZFTlRfQkFTRV9BVFRSKTtcbiAgICB9LFxuXG4gICAgLy/liKTmlq3mmK/lkKbmnInliqDlhaXlrpfmtL5cbiAgICBpc0hhc0d1aWxkOmZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5naWQgIT0gMFxuICAgIH0sXG4gICAgLy8gLS1bW+inkuiJsua0u+WKqOi1hOS6p+S/oeaBr11dXG4gICAgLy8gLS1AaXNfdXBkYXRlIOaYr+WQpuaVsOaNruabtOaWsFxuICAgIGluaXRBY3Rpb25Bc3NldHNEYXRhKGhvbGlkYXlfYXNzZXRzLCBpc191cGRhdGUpe1xuICAgICAgICBob2xpZGF5X2Fzc2V0cyA9IGhvbGlkYXlfYXNzZXRzIHx8IFtdXG4gICAgICAgIGZvcihsZXQgaT0wO2k8aG9saWRheV9hc3NldHMubGVuZ3RoOysraSl7XG4gICAgICAgICAgICBsZXQgdiA9IGhvbGlkYXlfYXNzZXRzW2ldXG4gICAgICAgICAgICB0aGlzLmRpY19hY3Rpb25fYXNzZXRzW3YuaWRdID0gdi52YWxcbiAgICAgICAgICAgIGlmIChpc191cGRhdGUpe1xuICAgICAgICAgICAgICAgIHRoaXMuZmlyZShSb2xlRXZlbnQuVVBEQVRFX1JPTEVfQUNUSU9OX0FTU0VUUywgdi5pZCwgdi52YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIC8vIC0t6I635Y+W5rS75Yqo6LWE5Lqn5pWw6YePXG4gICAgZ2V0QWN0aW9uQXNzZXRzTnVtQnlCaWQoYmlkKXtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgICAgIGlmIChzZWxmLmRpY19hY3Rpb25fYXNzZXRzICYmIHNlbGYuZGljX2FjdGlvbl9hc3NldHNbYmlkXSl7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5kaWNfYWN0aW9uX2Fzc2V0c1tiaWRdXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBzZXRQb3dlcjogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdmFyIG9sZF92YWx1ZSA9IHRoaXMucG93ZXI7XG4gICAgICAgIHRoaXMucG93ZXIgPSB2YWx1ZSB8fCAwO1xuICAgICAgICBpZih0aGlzLmlzX3Nob3dfcG93ZXIgPT0gdHJ1ZSl7XG4gICAgICAgICAgICBpZihvbGRfdmFsdWUgPCB2YWx1ZSl7XG4gICAgICAgICAgICAgICAgR2xvYmFsTWVzc2FnZU1nci5nZXRJbnN0YW5jZSgpLnNob3dQb3dlck1vdmUodmFsdWUgLSBvbGRfdmFsdWUsIG51bGwsb2xkX3ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3dlciAhPSBvbGRfdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlyZShFdmVudElkLlVQREFURV9ST0xFX0FUVFJJQlVURSwgXCJwb3dlclwiLCB0aGlzLnBvd2VyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dQb3dlcihmYWxzZSlcbiAgICB9LFxuICAgIHNob3dQb3dlcihib29sKXtcbiAgICAgICAgdGhpcy5pc19zaG93X3Bvd2VyPSBib29sXG4gICAgfSxcbiAgICAvL+iuvue9ruacgOmrmOaImOWKm1xuICAgIHNldE1heFBvd2VyOmZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgICAgdmFyIG9sZF92YWx1ZSA9IHRoaXMubWF4X3Bvd2VyO1xuICAgICAgICB0aGlzLm1heF9wb3dlciA9IHZhbHVlIHx8IDA7XG4gICAgICAgIGlmKHRoaXMubWF4X3Bvd2VyICE9IG9sZF92YWx1ZSl7XG4gICAgICAgICAgICB0aGlzLmZpcmUoRXZlbnRJZC5VUERBVEVfUk9MRV9BVFRSSUJVVEUsIFwibWF4X3Bvd2VyXCIsIHRoaXMubWF4X3Bvd2VyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiB9KTsiXX0=