difenduandada
2024-12-31 34abe6963b344c882358274957f4b992456fee40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/common/playerhead.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, '70f383+TA9FNYsybDVLsVk6', 'playerhead');
// Scripts/common/playerhead.js
 
"use strict";
 
// --------------------------------------------------------------------
// @author: shiraho@syg.com(必填, 创建模块的人员)
// @description:
//      圆形头像
// <br/>Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
 
var PlayerHead = cc.Class({
  "extends": BasePanel,
  ctor: function ctor() {
    this.prefabPath = PathTool.getPrefabPath("mainui", "head_item");
  },
  initPanel: function initPanel() {
    // 头像部分
    this.container = this.root_wnd.getChildByName("container");
    this.icon = this.container.getChildByName("icon").getComponent(cc.Sprite); // 头像框
 
    this.frame = this.root_wnd.getChildByName("frame").getComponent(cc.Sprite); // 等级部分
 
    this.lev_container = this.root_wnd.getChildByName("lev_container");
    this.lev_container.active = false;
    this.lev = this.lev_container.getChildByName("lev").getComponent(cc.Label);
    this.click_icon = this.root_wnd.getChildByName("click");
 
    if (this.lev_value != null) {
      this.lev.string = this.lev_value;
      this.lev_container.active = true;
    }
 
    if (this.head_res) {
      this.loadHeadRes(this.head_res);
    }
 
    if (this.frame_res != null) {
      this.loadFrameRes(this.frame_res, this.frame_scale);
    }
 
    if (this.scale_value != null) {
      this.setScale(this.scale_value);
    }
 
    if (this.grey_bool != null) {
      this.setLockStatus(this.grey_bool);
    }
  },
  registerEvent: function registerEvent() {
    if (this.call_back) {
      this.click_icon.on(cc.Node.EventType.TOUCH_END, function () {
        this.call_back(this);
      }, this);
    }
  },
  onShow: function onShow() {},
  onHide: function onHide() {},
  // 点击事件
  addCallBack: function addCallBack(call_back) {
    this.call_back = call_back;
  },
  // 设置头像资源
  setHeadRes: function setHeadRes(res) {
    if (this.root_wnd) {
      this.loadHeadRes(res);
    } else {
      this.head_res = res;
    }
  },
  // 设置头像框资源
  setFrameRes: function setFrameRes(res, scale) {
    if (this.root_wnd) {
      this.loadFrameRes(res, scale);
    } else {
      this.frame_res = res;
      this.frame_scale = scale;
    }
  },
  // 设置等级显示
  setLev: function setLev(lev) {
    if (this.root_wnd) {
      this.lev.string = lev;
      this.lev_container.active = true;
    } else {
      this.lev_value = lev;
    }
  },
  // 设置锁定状态
  setLockStatus: function setLockStatus(bool) {
    this.grey_bool = bool;
    if (this.root_wnd == null) return;
 
    if (bool) {
      this.icon.setState(cc.Sprite.State.NORMAL);
      this.frame.setState(cc.Sprite.State.NORMAL);
    } else {
      this.icon.setState(cc.Sprite.State.GRAY);
      this.frame.setState(cc.Sprite.State.GRAY);
    }
  },
  // 加载资源,这里可能需要判断一下加载回来的是不是我需要的资源,私有方法 不能外部调用,外部滴啊用请用 setHeadRes
  loadHeadRes: function loadHeadRes(res_id) {
    var res_path = PathTool.getHeadRes(res_id);
    this.loadRes(res_path, function (resObject) {
      this.icon.spriteFrame = resObject;
    }.bind(this));
  },
  // 加载资源,这里可能需要判断一下加载回来的是不是我需要的资源,私有方法 不能外部调用,外部滴啊用请用 setFrameRes
  //scale默认比例是大部分需要缩放所以用了100/117,其他情况结合自己界面修改scale值
  loadFrameRes: function loadFrameRes(bid, scale) {
    if (scale == null) {
      scale = 100 / 117;
    }
 
    if (typeof bid == "number") {
      var config = Config.avatar_data.data_avatar[bid];
 
      if (!config) {
        return;
      }
 
      var res_path = PathTool.getHeadcircle(config.res_id);
      this.loadRes(res_path, function (resObject) {
        this.frame.spriteFrame = resObject;
      }.bind(this));
      this.frame.node.scale = scale;
 
      if (bid == 1000) {
        this.frame.node.y = 0;
      } else {
        this.frame.node.y = 5;
      }
    } else {
      this.loadRes(bid, function (resObject) {
        this.frame.spriteFrame = resObject;
      }.bind(this));
      this.frame.node.scale = scale;
    }
  },
  setScale: function setScale(value) {
    this.scale_value = value;
    if (this.root_wnd) this.root_wnd.scale = value;
  },
  //背景框
  showBg: function showBg(res, scale) {
    this.setFrameRes(res, scale);
  },
  setSex: function setSex(sex, pos) {
    if (sex == null || typeof sex != "number") return;
    if (sex >= 2) return;
 
    if (this.sex_icon_sp == null) {
      this.sex_icon_sp = Utils.createImage(this.root_wnd, null, 0, 0, cc.v2(0, 0));
    }
 
    this.loadRes(PathTool.getUIIconPath("common", "common_sex" + sex), function (sp) {
      this.sex_icon_sp.spriteFrame = sp;
    }.bind(this));
 
    if (pos != null && this.sex_icon_sp != null) {
      this.sex_icon_sp.node.setPosition(pos);
    }
  },
  onDelete: function onDelete() {// this.container.off(cc.Node.EventType.TOUCH_END, function () {}, this);
  },
  clearHead: function clearHead() {
    this.icon.spriteFrame = null;
  }
});
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcY29tbW9uXFxwbGF5ZXJoZWFkLmpzIl0sIm5hbWVzIjpbIlBhdGhUb29sIiwicmVxdWlyZSIsIlBsYXllckhlYWQiLCJjYyIsIkNsYXNzIiwiQmFzZVBhbmVsIiwiY3RvciIsInByZWZhYlBhdGgiLCJnZXRQcmVmYWJQYXRoIiwiaW5pdFBhbmVsIiwiY29udGFpbmVyIiwicm9vdF93bmQiLCJnZXRDaGlsZEJ5TmFtZSIsImljb24iLCJnZXRDb21wb25lbnQiLCJTcHJpdGUiLCJmcmFtZSIsImxldl9jb250YWluZXIiLCJhY3RpdmUiLCJsZXYiLCJMYWJlbCIsImNsaWNrX2ljb24iLCJsZXZfdmFsdWUiLCJzdHJpbmciLCJoZWFkX3JlcyIsImxvYWRIZWFkUmVzIiwiZnJhbWVfcmVzIiwibG9hZEZyYW1lUmVzIiwiZnJhbWVfc2NhbGUiLCJzY2FsZV92YWx1ZSIsInNldFNjYWxlIiwiZ3JleV9ib29sIiwic2V0TG9ja1N0YXR1cyIsInJlZ2lzdGVyRXZlbnQiLCJjYWxsX2JhY2siLCJvbiIsIk5vZGUiLCJFdmVudFR5cGUiLCJUT1VDSF9FTkQiLCJvblNob3ciLCJvbkhpZGUiLCJhZGRDYWxsQmFjayIsInNldEhlYWRSZXMiLCJyZXMiLCJzZXRGcmFtZVJlcyIsInNjYWxlIiwic2V0TGV2IiwiYm9vbCIsInNldFN0YXRlIiwiU3RhdGUiLCJOT1JNQUwiLCJHUkFZIiwicmVzX2lkIiwicmVzX3BhdGgiLCJnZXRIZWFkUmVzIiwibG9hZFJlcyIsInJlc09iamVjdCIsInNwcml0ZUZyYW1lIiwiYmluZCIsImJpZCIsImNvbmZpZyIsIkNvbmZpZyIsImF2YXRhcl9kYXRhIiwiZGF0YV9hdmF0YXIiLCJnZXRIZWFkY2lyY2xlIiwibm9kZSIsInkiLCJ2YWx1ZSIsInNob3dCZyIsInNldFNleCIsInNleCIsInBvcyIsInNleF9pY29uX3NwIiwiVXRpbHMiLCJjcmVhdGVJbWFnZSIsInYyIiwiZ2V0VUlJY29uUGF0aCIsInNwIiwic2V0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Q0FBQ0MsV0FBTixDQUFrQixLQUFLL0QsUUFBdkIsRUFBaUMsSUFBakMsRUFBdUMsQ0FBdkMsRUFBMEMsQ0FBMUMsRUFBNkNSLEVBQUUsQ0FBQ3dFLEVBQUgsQ0FBTSxDQUFOLEVBQVEsQ0FBUixDQUE3QyxDQUFuQjtBQUNIOztBQUNELFNBQUtwQixPQUFMLENBQWF2RCxRQUFRLENBQUM0RSxhQUFULENBQXVCLFFBQXZCLEVBQWdDLGVBQWFOLEdBQTdDLENBQWIsRUFBK0QsVUFBU08sRUFBVCxFQUFZO0FBQ3ZFLFdBQUtMLFdBQUwsQ0FBaUJmLFdBQWpCLEdBQStCb0IsRUFBL0I7QUFDSCxLQUY4RCxDQUU3RG5CLElBRjZELENBRXhELElBRndELENBQS9EOztBQUdBLFFBQUdhLEdBQUcsSUFBSSxJQUFQLElBQWUsS0FBS0MsV0FBTCxJQUFvQixJQUF0QyxFQUEyQztBQUN2QyxXQUFLQSxXQUFMLENBQWlCUCxJQUFqQixDQUFzQmEsV0FBdEIsQ0FBa0NQLEdBQWxDO0FBQ0g7QUFDSixHQWxLcUI7QUFvS3RCUSxFQUFBQSxRQUFRLEVBQUUsb0JBQVksQ0FDbEI7QUFDSCxHQXRLcUI7QUF3S3RCQyxFQUFBQSxTQUFTLEVBQUUscUJBQVc7QUFDakIsU0FBS25FLElBQUwsQ0FBVTRDLFdBQVYsR0FBd0IsSUFBeEI7QUFDSjtBQTFLcUIsQ0FBVCxDQUFqQiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBhdXRob3I6IHNoaXJhaG9Ac3lnLmNvbSjlv4XloassIOWIm+W7uuaooeWdl+eahOS6uuWRmClcbi8vIEBkZXNjcmlwdGlvbjpcbi8vICAgICAg5ZyG5b2i5aS05YOPXG4vLyA8YnIvPkNyZWF0ZTogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudmFyIFBhdGhUb29sID0gcmVxdWlyZShcInBhdGh0b29sXCIpO1xuXG52YXIgUGxheWVySGVhZCA9IGNjLkNsYXNzKHtcbiAgICBleHRlbmRzOiBCYXNlUGFuZWwsXG4gICAgY3RvcjogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnByZWZhYlBhdGggPSBQYXRoVG9vbC5nZXRQcmVmYWJQYXRoKFwibWFpbnVpXCIsIFwiaGVhZF9pdGVtXCIpO1xuICAgIH0sXG5cbiAgICBpbml0UGFuZWw6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8g5aS05YOP6YOo5YiGXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcImNvbnRhaW5lclwiKTtcbiAgICAgICAgdGhpcy5pY29uID0gdGhpcy5jb250YWluZXIuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuXG4gICAgICAgIC8vIOWktOWDj+ahhlxuICAgICAgICB0aGlzLmZyYW1lID0gdGhpcy5yb290X3duZC5nZXRDaGlsZEJ5TmFtZShcImZyYW1lXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xuXG4gICAgICAgIC8vIOetiee6p+mDqOWIhlxuICAgICAgICB0aGlzLmxldl9jb250YWluZXIgPSB0aGlzLnJvb3Rfd25kLmdldENoaWxkQnlOYW1lKFwibGV2X2NvbnRhaW5lclwiKTtcbiAgICAgICAgdGhpcy5sZXZfY29udGFpbmVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxldiA9IHRoaXMubGV2X2NvbnRhaW5lci5nZXRDaGlsZEJ5TmFtZShcImxldlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xuXG4gICAgICAgIHRoaXMuY2xpY2tfaWNvbiA9IHRoaXMucm9vdF93bmQuZ2V0Q2hpbGRCeU5hbWUoXCJjbGlja1wiKTtcbiAgICAgICAgaWYgKHRoaXMubGV2X3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubGV2LnN0cmluZyA9IHRoaXMubGV2X3ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5sZXZfY29udGFpbmVyLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGVhZF9yZXMpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYWRSZXModGhpcy5oZWFkX3Jlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZnJhbWVfcmVzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZyYW1lUmVzKHRoaXMuZnJhbWVfcmVzLHRoaXMuZnJhbWVfc2NhbGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNjYWxlX3ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2NhbGUodGhpcy5zY2FsZV92YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncmV5X2Jvb2wgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2NrU3RhdHVzKHRoaXMuZ3JleV9ib29sKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZWdpc3RlckV2ZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNhbGxfYmFjaykge1xuICAgICAgICAgICAgdGhpcy5jbGlja19pY29uLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbF9iYWNrKHRoaXMpO1xuICAgICAgICAgICAgfSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLy8g54K55Ye75LqL5Lu2XG4gICAgYWRkQ2FsbEJhY2s6IGZ1bmN0aW9uIChjYWxsX2JhY2spIHtcbiAgICAgICAgdGhpcy5jYWxsX2JhY2sgPSBjYWxsX2JhY2s7XG4gICAgfSxcblxuICAgIC8vIOiuvue9ruWktOWDj+i1hOa6kFxuICAgIHNldEhlYWRSZXM6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEhlYWRSZXMocmVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZF9yZXMgPSByZXM7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g6K6+572u5aS05YOP5qGG6LWE5rqQXG4gICAgc2V0RnJhbWVSZXM6IGZ1bmN0aW9uIChyZXMsc2NhbGUpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZyYW1lUmVzKHJlcyxzY2FsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZyYW1lX3JlcyA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuZnJhbWVfc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyDorr7nva7nrYnnuqfmmL7npLpcbiAgICBzZXRMZXY6IGZ1bmN0aW9uIChsZXYpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpIHtcbiAgICAgICAgICAgIHRoaXMubGV2LnN0cmluZyA9IGxldjtcbiAgICAgICAgICAgIHRoaXMubGV2X2NvbnRhaW5lci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sZXZfdmFsdWUgPSBsZXY7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g6K6+572u6ZSB5a6a54q25oCBXG4gICAgc2V0TG9ja1N0YXR1czogZnVuY3Rpb24gKGJvb2wpIHtcbiAgICAgICAgdGhpcy5ncmV5X2Jvb2wgPSBib29sO1xuICAgICAgICBpZiAodGhpcy5yb290X3duZCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgaWYgKGJvb2wpIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbi5zZXRTdGF0ZShjYy5TcHJpdGUuU3RhdGUuTk9STUFMKTtcbiAgICAgICAgICAgIHRoaXMuZnJhbWUuc2V0U3RhdGUoY2MuU3ByaXRlLlN0YXRlLk5PUk1BTCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmljb24uc2V0U3RhdGUoY2MuU3ByaXRlLlN0YXRlLkdSQVkpO1xuICAgICAgICAgICAgdGhpcy5mcmFtZS5zZXRTdGF0ZShjYy5TcHJpdGUuU3RhdGUuR1JBWSk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8g5Yqg6L296LWE5rqQLOi/memHjOWPr+iDvemcgOimgeWIpOaWreS4gOS4i+WKoOi9veWbnuadpeeahOaYr+S4jeaYr+aIkemcgOimgeeahOi1hOa6kCznp4HmnInmlrnms5Ug5LiN6IO95aSW6YOo6LCD55SoLOWklumDqOa7tOWViueUqOivt+eUqCBzZXRIZWFkUmVzXG4gICAgbG9hZEhlYWRSZXM6IGZ1bmN0aW9uIChyZXNfaWQpIHtcbiAgICAgICAgdmFyIHJlc19wYXRoID0gUGF0aFRvb2wuZ2V0SGVhZFJlcyhyZXNfaWQpO1xuICAgICAgICB0aGlzLmxvYWRSZXMocmVzX3BhdGgsIGZ1bmN0aW9uIChyZXNPYmplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbi5zcHJpdGVGcmFtZSA9IHJlc09iamVjdDtcbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgIH0sXG5cbiAgICAvLyDliqDovb3otYTmupAs6L+Z6YeM5Y+v6IO96ZyA6KaB5Yik5pat5LiA5LiL5Yqg6L295Zue5p2l55qE5piv5LiN5piv5oiR6ZyA6KaB55qE6LWE5rqQLOengeacieaWueazlSDkuI3og73lpJbpg6josIPnlKgs5aSW6YOo5ru05ZWK55So6K+355SoIHNldEZyYW1lUmVzXG4gICAgLy9zY2FsZem7mOiupOavlOS+i+aYr+Wkp+mDqOWIhumcgOimgee8qeaUvuaJgOS7peeUqOS6hjEwMC8xMTfvvIzlhbbku5bmg4XlhrXnu5PlkIjoh6rlt7HnlYzpnaLkv67mlLlzY2FsZeWAvFxuICAgIGxvYWRGcmFtZVJlczogZnVuY3Rpb24gKGJpZCxzY2FsZSkge1xuICAgICAgICBpZihzY2FsZSA9PSBudWxsKXtcbiAgICAgICAgICAgIHNjYWxlID0gMTAwLzExNztcbiAgICAgICAgfVxuICAgICAgICBpZih0eXBlb2YgKGJpZCkgPT0gXCJudW1iZXJcIil7XG4gICAgICAgICAgICB2YXIgY29uZmlnID0gQ29uZmlnLmF2YXRhcl9kYXRhLmRhdGFfYXZhdGFyW2JpZF07XG4gICAgICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlc19wYXRoID0gUGF0aFRvb2wuZ2V0SGVhZGNpcmNsZShjb25maWcucmVzX2lkKTtcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhyZXNfcGF0aCwgZnVuY3Rpb24gKHJlc09iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWUuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUuc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgICAgIGlmKGJpZCA9PSAxMDAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUueSA9IDA7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUueSA9IDU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdGhpcy5sb2FkUmVzKGJpZCwgZnVuY3Rpb24gKHJlc09iamVjdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZnJhbWUuc3ByaXRlRnJhbWUgPSByZXNPYmplY3Q7XG4gICAgICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgICAgICB0aGlzLmZyYW1lLm5vZGUuc2NhbGUgPSBzY2FsZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBzZXRTY2FsZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2NhbGVfdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMucm9vdF93bmQpXG4gICAgICAgICAgICB0aGlzLnJvb3Rfd25kLnNjYWxlID0gdmFsdWU7XG4gICAgfSxcblxuICAgIC8v6IOM5pmv5qGGXG4gICAgc2hvd0JnOmZ1bmN0aW9uKHJlcyxzY2FsZSl7XG4gICAgICAgIHRoaXMuc2V0RnJhbWVSZXMocmVzLHNjYWxlKTtcbiAgICB9LFxuXG4gICAgc2V0U2V4OmZ1bmN0aW9uKHNleCxwb3Mpe1xuICAgICAgICBpZihzZXggPT0gbnVsbCB8fCB0eXBlb2Yoc2V4KSAhPSBcIm51bWJlclwiKXJldHVyblxuICAgICAgICBpZihzZXggPj0gMilyZXR1cm5cbiAgICAgICAgaWYodGhpcy5zZXhfaWNvbl9zcCA9PSBudWxsKXtcbiAgICAgICAgICAgIHRoaXMuc2V4X2ljb25fc3AgPSBVdGlscy5jcmVhdGVJbWFnZSh0aGlzLnJvb3Rfd25kLCBudWxsLCAwLCAwLCBjYy52MigwLDApKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRSZXMoUGF0aFRvb2wuZ2V0VUlJY29uUGF0aChcImNvbW1vblwiLFwiY29tbW9uX3NleFwiK3NleCksZnVuY3Rpb24oc3Ape1xuICAgICAgICAgICAgdGhpcy5zZXhfaWNvbl9zcC5zcHJpdGVGcmFtZSA9IHNwO1xuICAgICAgICB9LmJpbmQodGhpcykpXG4gICAgICAgIGlmKHBvcyAhPSBudWxsICYmIHRoaXMuc2V4X2ljb25fc3AgIT0gbnVsbCl7XG4gICAgICAgICAgICB0aGlzLnNleF9pY29uX3NwLm5vZGUuc2V0UG9zaXRpb24ocG9zKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvbkRlbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyB0aGlzLmNvbnRhaW5lci5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCBmdW5jdGlvbiAoKSB7fSwgdGhpcyk7XG4gICAgfSxcblxuICAgIGNsZWFySGVhZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICB0aGlzLmljb24uc3ByaXRlRnJhbWUgPSBudWxsO1xuICAgIH0sXG59KTsiXX0=