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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
 
                (function() {
                    var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
                    var __module = nodeEnv ? module : {exports:{}};
                    var __filename = 'preview-scripts/assets/Scripts/common/globalmessagemgr.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, '9060fLBPhlATpjglAtlk3gA', 'globalmessagemgr');
// Scripts/common/globalmessagemgr.js
 
"use strict";
 
/*-----------------------------------------------------+
 * 消息处理类相关处理
 * @author whjing2012@163.com
 +-----------------------------------------------------*/
window.GlobalMessageMgr = cc.Class({
  cotr: function cotr() {},
  properties: {
    vertical_array: [],
    vertical_array_tmp: []
  },
  statics: {
    instance: null
  },
  showMoveVertical: function showMoveVertical(msg, color) {
    if (msg == "") return;
 
    if (this.vertical_array.length >= 3) {
      this.vertical_array_tmp.push({
        msg: msg,
        color: color
      });
 
      if (this.vertical_array_tmp.length > 10) {
        this.vertical_array_tmp.shift();
      }
 
      return;
    }
 
    var parent_wnd = ViewManager.getInstance().getSceneNode(SCENE_TAG.msg);
    var container = new cc.Node();
    container.setAnchorPoint(0.5, 0.5);
    container.setPosition(0, 300);
    parent_wnd.addChild(container); //背景
 
    var image = container.addComponent(cc.Sprite);
    this.loadRes(PathTool.getUIIconPath("common", "common_90056"), function (sp) {
      if (container && container.isValid) {
        image.spriteFrame = sp;
      }
    }.bind(this));
    image.type = cc.Sprite.Type.SLICED;
    image.sizeMode = cc.Sprite.SizeMode.CUSTOM;
    image.node.setContentSize(500, 60); // var richText = container.addComponent(cc.RichText);
 
    var richText = Utils.createRichLabel(24, new cc.Color(0xff, 0xda, 0x2f, 0xff), cc.v2(0.5, 0.5), cc.v2(0, 0), 26, 500, container);
    richText.handleTouchEvent = false;
    richText.horizontalAlign = cc.macro.TextAlignment.CENTER; // richText.maxWidth = 500;
    // richText.fontSize = 24;
    // richText.node.color = new cc.Color(0xff, 0xda, 0x2f, 0xff);
 
    richText.string = StringUtil.parseStr(msg).string;
    var resArr = StringUtil.parseStr(msg).resArr;
 
    if (resArr) {
      for (var i in resArr) {
        this.loadRes(PathTool.getItemRes(resArr[i]), function (resObject) {
          if (container && container.isValid) {
            richText.addSpriteFrame(resObject);
          }
        }.bind(this));
      }
    }
 
    container.rict_text_nd = richText.node;
    var seq = cc.sequence( // cc.moveBy(1, 0, 100),
    cc.delayTime(2), cc.removeSelf(), cc.callFunc(function () {
      var node = this.vertical_array.shift();
      node.destroy();
      node = null;
 
      if (this.vertical_array_tmp.length > 0) {
        var o = this.vertical_array_tmp.shift();
        this.showMoveVertical(o.msg, o.color);
      }
    }, this));
    this.vertical_array.push(container);
    this.sortPosition();
    container.rict_text_nd.runAction(seq);
  },
  sortPosition: function sortPosition() {
    var size = this.vertical_array.length;
 
    if (size > 0) {
      var _y = 230; //起始点
 
      var _x = 0;
      var last_height = this.vertical_array[size - 1].height;
      var last_y;
 
      for (var i = size; i > 0; i--) {
        var item = this.vertical_array[i - 1];
        if (item == null) return;
        item.stopAllActions();
 
        if (size == i) {
          item.setPosition(cc.v2(_x, _y));
          last_y = _y + item.height;
        } else {
          item.setPosition(cc.v2(_x, last_y));
          last_y = last_y + item.height;
        }
 
        item.runAction(cc.moveBy(0.5, 0, last_height));
      }
    }
  },
  loadRes: function loadRes(path, callback) {
    if (this.res_list == null) {
      this.res_list = {};
    }
 
    if (this.res_list[path]) {
      callback(this.res_list[path]);
      return;
    } else {
      LoaderManager.getInstance().loadRes(path, function (res_object) {
        if (this.is_close || this["delete"]) {
          return;
        }
 
        this.res_list[path] = res_object;
        callback(res_object);
      }.bind(this));
    }
  },
  showPowerMove: function showPowerMove(num, res, old_num) {
    var MainUIController = require("mainui_controller");
 
    MainUIController.getInstance().showPower(num, old_num);
  },
  showMoveHorizontal: function showMoveHorizontal(msg, color) {
    var curr_scene = ViewManager.getInstance().getSceneNode(SCENE_TAG.msg);
    if (!curr_scene) return;
    var self = this;
    var size = cc.size(682, 38);
 
    if (this.per_bg_icon == null) {
      var node = new cc.Node();
      var widget = node.addComponent(cc.Widget);
      widget.isAlignTop = true;
      widget.isAlignHorizontalCenter = true;
      widget.top = 55;
      widget.horizontalCenter = 0;
      var image = node.addComponent(cc.Sprite);
      this.loadRes(PathTool.getUIIconPath("common", "common_90056"), function (sp) {
        if (node && node.isValid) {
          image.spriteFrame = sp;
        }
      }.bind(this));
      image.type = cc.Sprite.Type.SLICED;
      image.sizeMode = cc.Sprite.SizeMode.CUSTOM;
      node.setAnchorPoint(0.5, 1);
      node.setContentSize(size);
      curr_scene.addChild(node);
      widget.updateAlignment(); // node.setPosition(0, SCREEN_HEIGHT*0.5 - 55)
 
      this.per_bg_icon = node;
    }
 
    if (this.msg_save_arr == null) {
      this.msg_save_arr = [];
    } //创建文本
 
 
    function createLabel(msg, color) {
      // msg = "<size = 15>" + msg + "</size>"
      var temp_msg = self.createhorizontalLabel(msg, color, 0, 20);
      temp_msg.node.setAnchorPoint(cc.v2(0, 0.5));
      temp_msg.node.setPosition(cc.v2(0, -size.height / 2 - size.height));
      self.per_bg_icon.addChild(temp_msg.node);
      return temp_msg;
    } //只存储5条传闻
 
 
    if (this.msg_save_arr.length > 5) {
      this.msg_save_arr.pop();
    }
 
    this.msg_save_arr.push({
      msg: msg,
      delay_time: 3,
      color: color
    }); //如果当前有滚动
 
    if (this.has_msg_moveing == true) return;
 
    function deleteMsg() {
      self.has_msg_moveing = false;
 
      if (self.per_move_msg_word) {
        self.per_move_msg_word.node.destroy();
        self.per_move_msg_word = null;
      }
 
      if (self.msg_save_arr.length > 0) {
        self.has_msg_moveing = true;
        var temp_tab = self.msg_save_arr.pop();
        var msg_word = createLabel(temp_tab.msg, temp_tab.color);
        var show_time = temp_tab.delay_time || 3;
        self.per_move_msg_word = msg_word;
        var sequence_1 = null;
        var font_size = msg_word.node;
 
        if (font_size.width > size.width) {
          msg_word.node.x = -size.width / 2;
          var move_to_ = cc.moveTo(0.1, cc.v2(msg_word.node.x, -size.height / 2));
          var move_to = cc.moveTo(show_time, cc.v2(msg_word.node.x - (font_size.width - size.width) - 5, -size.height / 2));
          var delay_time = cc.delayTime(1);
          sequence_1 = cc.sequence(move_to_, move_to, delay_time, cc.callFunc(deleteMsg));
        } else {
          msg_word.node.x = -font_size.width / 2;
 
          var _delay_time = cc.delayTime(show_time);
 
          var _move_to_ = cc.moveTo(0.1, cc.v2(msg_word.node.x, -size.height / 2));
 
          sequence_1 = cc.sequence(_move_to_, _delay_time, cc.callFunc(deleteMsg));
        }
 
        msg_word.node.runAction(sequence_1);
      } else {
        self.msg_save_arr = null;
 
        if (self.per_bg_icon) {
          self.per_bg_icon.destroy();
          self.per_bg_icon = null;
        }
      }
    }
 
    deleteMsg();
  },
  createhorizontalLabel: function createhorizontalLabel(msg, color, max_width, fontsize) {
    var richText = new cc.Node().addComponent(cc.RichText);
    richText.node.color = color || new cc.Color(25, 30, 40);
    richText.maxWidth = max_width || 0;
    richText.fontSize = fontsize;
    richText.string = msg;
    return richText;
  }
}); // 实例化单利
 
GlobalMessageMgr.getInstance = function () {
  if (!GlobalMessageMgr.instance) {
    GlobalMessageMgr.instance = new GlobalMessageMgr();
  }
 
  return GlobalMessageMgr.instance;
}; //全局 message 提示方法
 
 
window.message = function (msg, color) {
  if (msg == null || msg == "") {
    return;
  }
 
  GlobalMessageMgr.getInstance().showMoveVertical(msg, color);
}; //资产提示
 
 
window.showAssetsMsg = function (msg, color) {
  message(msg, color);
};
 
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0c1xcY29tbW9uXFxnbG9iYWxtZXNzYWdlbWdyLmpzIl0sIm5hbWVzIjpbIndpbmRvdyIsIkdsb2JhbE1lc3NhZ2VNZ3IiLCJjYyIsIkNsYXNzIiwiY290ciIsInByb3BlcnRpZXMiLCJ2ZXJ0aWNhbF9hcnJheSIsInZlcnRpY2FsX2FycmF5X3RtcCIsInN0YXRpY3MiLCJpbnN0YW5jZSIsInNob3dNb3ZlVmVydGljYWwiLCJtc2ciLCJjb2xvciIsImxlbmd0aCIsInB1c2giLCJzaGlmdCIsInBhcmVudF93bmQiLCJWaWV3TWFuYWdlciIsImdldEluc3RhbmNlIiwiZ2V0U2NlbmVOb2RlIiwiU0NFTkVfVEFHIiwiY29udGFpbmVyIiwiTm9kZSIsInNldEFuY2hvclBvaW50Iiwic2V0UG9zaXRpb24iLCJhZGRDaGlsZCIsImltYWdlIiwiYWRkQ29tcG9uZW50IiwiU3ByaXRlIiwibG9hZFJlcyIsIlBhdGhUb29sIiwiZ2V0VUlJY29uUGF0aCIsInNwIiwiaXNWYWxpZCIsInNwcml0ZUZyYW1lIiwiYmluZCIsInR5cGUiLCJUeXBlIiwiU0xJQ0VEIiwic2l6ZU1vZGUiLCJTaXplTW9kZSIsIkNVU1RPTSIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsInJpY2hUZXh0IiwiVXRpbHMiLCJjcmVhdGVSaWNoTGFiZWwiLCJDb2xvciIsInYyIiwiaGFuZGxlVG91Y2hFdmVudCIsImhvcml6b250YWxBbGlnbiIsIm1hY3JvIiwiVGV4dEFsaWdubWVudCIsIkNFTlRFUiIsInN0cmluZyIsIlN0cmluZ1V0aWwiLCJwYXJzZVN0ciIsInJlc0FyciIsImkiLCJnZXRJdGVtUmVzIiwicmVzT2JqZWN0IiwiYWRkU3ByaXRlRnJhbWUiLCJyaWN0X3RleHRfbmQiLCJzZXEiLCJzZXF1ZW5jZSIsImRlbGF5VGltZSIsInJlbW92ZVNlbGYiLCJjYWxsRnVuYyIsImRlc3Ryb3kiLCJvIiwic29ydFBvc2l0aW9uIiwicnVuQWN0aW9uIiwic2l6ZSIsIl95IiwiX3giLCJsYXN0X2hlaWdodCIsImhlaWdodCIsImxhc3RfeSIsIml0ZW0iLCJzdG9wQWxsQWN0aW9ucyIsIm1vdmVCeSIsInBhdGgiLCJjYWxsYmFjayIsInJlc19saXN0IiwiTG9hZGVyTWFuYWdlciIsInJlc19vYmplY3QiLCJpc19jbG9zZSIsInNob3dQb3dlck1vdmUiLCJudW0iLCJyZXMiLCJvbGRfbnVtIiwiTWFpblVJQ29udHJvbGxlciIsInJlcXVpcmUiLCJzaG93UG93ZXIiLCJzaG93TW92ZUhvcml6b250YWwiLCJjdXJyX3NjZW5lIiwic2VsZiIsInBlcl9iZ19pY29uIiwid2lkZ2V0IiwiV2lkZ2V0IiwiaXNBbGlnblRvcCIsImlzQWxpZ25Ib3Jpem9udGFsQ2VudGVyIiwidG9wIiwiaG9yaXpvbnRhbENlbnRlciIsInVwZGF0ZUFsaWdubWVudCIsIm1zZ19zYXZlX2FyciIsImNyZWF0ZUxhYmVsIiwidGVtcF9tc2ciLCJjcmVhdGVob3Jpem9udGFsTGFiZWwiLCJwb3AiLCJkZWxheV90aW1lIiwiaGFzX21zZ19tb3ZlaW5nIiwiZGVsZXRlTXNnIiwicGVyX21vdmVfbXNnX3dvcmQiLCJ0ZW1wX3RhYiIsIm1zZ193b3JkIiwic2hvd190aW1lIiwic2VxdWVuY2VfMSIsImZvbnRfc2l6ZSIsIndpZHRoIiwieCIsIm1vdmVfdG9fIiwibW92ZVRvIiwibW92ZV90byIsIm1heF93aWR0aCIsImZvbnRzaXplIiwiUmljaFRleHQiLCJtYXhXaWR0aCIsImZvbnRTaXplIiwibWVzc2FnZSIsInNob3dBc3NldHNNc2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFLQUEsTUFBTSxDQUFDQyxnQkFBUCxHQUEwQkMsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDL0JDLEVBQUFBLElBQUksRUFBRSxnQkFBWSxDQUNqQixDQUY4QjtBQUkvQkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1JDLElBQUFBLGNBQWMsRUFBRSxFQURSO0FBRVJDLElBQUFBLGtCQUFrQixFQUFFO0FBRlosR0FKbUI7QUFTL0JDLEVBQUFBLE9BQU8sRUFBRTtBQUNMQyxJQUFBQSxRQUFRLEVBQUU7QUFETCxHQVRzQjtBQWEvQkMsRUFBQUEsZ0JBQWdCLEVBQUUsMEJBQVVDLEdBQVYsRUFBZUMsS0FBZixFQUFzQjtBQUNwQyxRQUFHRCxHQUFHLElBQUksRUFBVixFQUFhOztBQUNiLFFBQUksS0FBS0wsY0FBTCxDQUFvQk8sTUFBcEIsSUFBOEIsQ0FBbEMsRUFBcUM7QUFDakMsV0FBS04sa0JBQUwsQ0FBd0JPLElBQXhCLENBQTZCO0FBQUVILFFBQUFBLEdBQUcsRUFBRUEsR0FBUDtBQUFZQyxRQUFBQSxLQUFLLEVBQUVBO0FBQW5CLE9BQTdCOztBQUNBLFVBQUksS0FBS0wsa0JBQUwsQ0FBd0JNLE1BQXhCLEdBQWlDLEVBQXJDLEVBQXlDO0FBQ3JDLGFBQUtOLGtCQUFMLENBQXdCUSxLQUF4QjtBQUNIOztBQUNEO0FBQ0g7O0FBQ0QsUUFBSUMsVUFBVSxHQUFHQyxXQUFXLENBQUNDLFdBQVosR0FBMEJDLFlBQTFCLENBQXVDQyxTQUFTLENBQUNULEdBQWpELENBQWpCO0FBQ0EsUUFBSVUsU0FBUyxHQUFHLElBQUluQixFQUFFLENBQUNvQixJQUFQLEVBQWhCO0FBQ0FELElBQUFBLFNBQVMsQ0FBQ0UsY0FBVixDQUF5QixHQUF6QixFQUE4QixHQUE5QjtBQUNBRixJQUFBQSxTQUFTLENBQUNHLFdBQVYsQ0FBc0IsQ0FBdEIsRUFBeUIsR0FBekI7QUFDQVIsSUFBQUEsVUFBVSxDQUFDUyxRQUFYLENBQW9CSixTQUFwQixFQWJvQyxDQWVwQzs7QUFDQSxRQUFJSyxLQUFLLEdBQUdMLFNBQVMsQ0FBQ00sWUFBVixDQUF1QnpCLEVBQUUsQ0FBQzBCLE1BQTFCLENBQVo7QUFDQSxTQUFLQyxPQUFMLENBQWFDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixRQUF2QixFQUFpQyxjQUFqQyxDQUFiLEVBQStELFVBQVVDLEVBQVYsRUFBYztBQUN6RSxVQUFHWCxTQUFTLElBQUlBLFNBQVMsQ0FBQ1ksT0FBMUIsRUFBa0M7QUFDOUJQLFFBQUFBLEtBQUssQ0FBQ1EsV0FBTixHQUFvQkYsRUFBcEI7QUFDSDtBQUNKLEtBSjhELENBSTdERyxJQUo2RCxDQUl4RCxJQUp3RCxDQUEvRDtBQU1BVCxJQUFBQSxLQUFLLENBQUNVLElBQU4sR0FBYWxDLEVBQUUsQ0FBQzBCLE1BQUgsQ0FBVVMsSUFBVixDQUFlQyxNQUE1QjtBQUNBWixJQUFBQSxLQUFLLENBQUNhLFFBQU4sR0FBaUJyQyxFQUFFLENBQUMwQixNQUFILENBQVVZLFFBQVYsQ0FBbUJDLE1BQXBDO0FBQ0FmLElBQUFBLEtBQUssQ0FBQ2dCLElBQU4sQ0FBV0MsY0FBWCxDQUEwQixHQUExQixFQUErQixFQUEvQixFQXpCb0MsQ0EyQnBDOztBQUNBLFFBQUlDLFFBQVEsR0FBR0MsS0FBSyxDQUFDQyxlQUFOLENBQXNCLEVBQXRCLEVBQTBCLElBQUk1QyxFQUFFLENBQUM2QyxLQUFQLENBQWEsSUFBYixFQUFtQixJQUFuQixFQUF5QixJQUF6QixFQUErQixJQUEvQixDQUExQixFQUFnRTdDLEVBQUUsQ0FBQzhDLEVBQUgsQ0FBTSxHQUFOLEVBQVUsR0FBVixDQUFoRSxFQUFnRjlDLEVBQUUsQ0FBQzhDLEVBQUgsQ0FBTSxDQUFOLEVBQVEsQ0FBUixDQUFoRixFQUE0RixFQUE1RixFQUFnRyxHQUFoRyxFQUFxRzNCLFNBQXJHLENBQWY7QUFDQXVCLElBQUFBLFFBQVEsQ0FBQ0ssZ0JBQVQsR0FBNEIsS0FBNUI7QUFDQUwsSUFBQUEsUUFBUSxDQUFDTSxlQUFULEdBQTJCaEQsRUFBRSxDQUFDaUQsS0FBSCxDQUFTQyxhQUFULENBQXVCQyxNQUFsRCxDQTlCb0MsQ0ErQnBDO0FBQ0E7QUFDQTs7QUFDQVQsSUFBQUEsUUFBUSxDQUFDVSxNQUFULEdBQWtCQyxVQUFVLENBQUNDLFFBQVgsQ0FBb0I3QyxHQUFwQixFQUF5QjJDLE1BQTNDO0FBQ0EsUUFBSUcsTUFBTSxHQUFHRixVQUFVLENBQUNDLFFBQVgsQ0FBb0I3QyxHQUFwQixFQUF5QjhDLE1BQXRDOztBQUNBLFFBQUlBLE1BQUosRUFBWTtBQUNSLFdBQUssSUFBSUMsQ0FBVCxJQUFjRCxNQUFkLEVBQXNCO0FBQ2xCLGFBQUs1QixPQUFMLENBQWFDLFFBQVEsQ0FBQzZCLFVBQVQsQ0FBb0JGLE1BQU0sQ0FBQ0MsQ0FBRCxDQUExQixDQUFiLEVBQThDLFVBQVVFLFNBQVYsRUFBcUI7QUFDL0QsY0FBR3ZDLFNBQVMsSUFBSUEsU0FBUyxDQUFDWSxPQUExQixFQUFrQztBQUM5QlcsWUFBQUEsUUFBUSxDQUFDaUIsY0FBVCxDQUF3QkQsU0FBeEI7QUFDSDtBQUNKLFNBSjRDLENBSTFDekIsSUFKMEMsQ0FJckMsSUFKcUMsQ0FBN0M7QUFLSDtBQUNKOztBQUNEZCxJQUFBQSxTQUFTLENBQUN5QyxZQUFWLEdBQXlCbEIsUUFBUSxDQUFDRixJQUFsQztBQUVBLFFBQUlxQixHQUFHLEdBQUc3RCxFQUFFLENBQUM4RCxRQUFILEVBQ047QUFDQTlELElBQUFBLEVBQUUsQ0FBQytELFNBQUgsQ0FBYSxDQUFiLENBRk0sRUFHTi9ELEVBQUUsQ0FBQ2dFLFVBQUgsRUFITSxFQUlOaEUsRUFBRSxDQUFDaUUsUUFBSCxDQUFZLFlBQVk7QUFDcEIsVUFBSXpCLElBQUksR0FBRyxLQUFLcEMsY0FBTCxDQUFvQlMsS0FBcEIsRUFBWDtBQUNBMkIsTUFBQUEsSUFBSSxDQUFDMEIsT0FBTDtBQUNBMUIsTUFBQUEsSUFBSSxHQUFHLElBQVA7O0FBQ0EsVUFBSSxLQUFLbkMsa0JBQUwsQ0FBd0JNLE1BQXhCLEdBQWlDLENBQXJDLEVBQXdDO0FBQ3BDLFlBQUl3RCxDQUFDLEdBQUcsS0FBSzlELGtCQUFMLENBQXdCUSxLQUF4QixFQUFSO0FBQ0EsYUFBS0wsZ0JBQUwsQ0FBc0IyRCxDQUFDLENBQUMxRCxHQUF4QixFQUE2QjBELENBQUMsQ0FBQ3pELEtBQS9CO0FBQ0g7QUFDSixLQVJELEVBUUcsSUFSSCxDQUpNLENBQVY7QUFjQSxTQUFLTixjQUFMLENBQW9CUSxJQUFwQixDQUF5Qk8sU0FBekI7QUFDQSxTQUFLaUQsWUFBTDtBQUNBakQsSUFBQUEsU0FBUyxDQUFDeUMsWUFBVixDQUF1QlMsU0FBdkIsQ0FBaUNSLEdBQWpDO0FBQ0gsR0E3RThCO0FBK0UvQk8sRUFBQUEsWUFBWSxFQUFFLHdCQUFZO0FBQ3RCLFFBQUlFLElBQUksR0FBRyxLQUFLbEUsY0FBTCxDQUFvQk8sTUFBL0I7O0FBQ0EsUUFBSTJELElBQUksR0FBRyxDQUFYLEVBQWM7QUFDVixVQUFJQyxFQUFFLEdBQUcsR0FBVCxDQURVLENBQ0c7O0FBQ2IsVUFBSUMsRUFBRSxHQUFHLENBQVQ7QUFDQSxVQUFJQyxXQUFXLEdBQUcsS0FBS3JFLGNBQUwsQ0FBb0JrRSxJQUFJLEdBQUcsQ0FBM0IsRUFBOEJJLE1BQWhEO0FBQ0EsVUFBSUMsTUFBSjs7QUFDQSxXQUFLLElBQUluQixDQUFDLEdBQUdjLElBQWIsRUFBbUJkLENBQUMsR0FBRyxDQUF2QixFQUEwQkEsQ0FBQyxFQUEzQixFQUErQjtBQUMzQixZQUFJb0IsSUFBSSxHQUFHLEtBQUt4RSxjQUFMLENBQW9Cb0QsQ0FBQyxHQUFFLENBQXZCLENBQVg7QUFDQSxZQUFHb0IsSUFBSSxJQUFJLElBQVgsRUFBZ0I7QUFDaEJBLFFBQUFBLElBQUksQ0FBQ0MsY0FBTDs7QUFDQSxZQUFHUCxJQUFJLElBQUlkLENBQVgsRUFBYTtBQUNUb0IsVUFBQUEsSUFBSSxDQUFDdEQsV0FBTCxDQUFpQnRCLEVBQUUsQ0FBQzhDLEVBQUgsQ0FBTTBCLEVBQU4sRUFBU0QsRUFBVCxDQUFqQjtBQUNBSSxVQUFBQSxNQUFNLEdBQUdKLEVBQUUsR0FBR0ssSUFBSSxDQUFDRixNQUFuQjtBQUNILFNBSEQsTUFHSztBQUNERSxVQUFBQSxJQUFJLENBQUN0RCxXQUFMLENBQWlCdEIsRUFBRSxDQUFDOEMsRUFBSCxDQUFNMEIsRUFBTixFQUFTRyxNQUFULENBQWpCO0FBQ0FBLFVBQUFBLE1BQU0sR0FBR0EsTUFBTSxHQUFHQyxJQUFJLENBQUNGLE1BQXZCO0FBQ0g7O0FBQ0RFLFFBQUFBLElBQUksQ0FBQ1AsU0FBTCxDQUFlckUsRUFBRSxDQUFDOEUsTUFBSCxDQUFVLEdBQVYsRUFBYyxDQUFkLEVBQWdCTCxXQUFoQixDQUFmO0FBQ0g7QUFDSjtBQUNKLEdBcEc4QjtBQXNHL0I5QyxFQUFBQSxPQUFPLEVBQUUsaUJBQVVvRCxJQUFWLEVBQWdCQyxRQUFoQixFQUEwQjtBQUMvQixRQUFJLEtBQUtDLFFBQUwsSUFBaUIsSUFBckIsRUFBMkI7QUFDdkIsV0FBS0EsUUFBTCxHQUFnQixFQUFoQjtBQUNIOztBQUNELFFBQUksS0FBS0EsUUFBTCxDQUFjRixJQUFkLENBQUosRUFBeUI7QUFDckJDLE1BQUFBLFFBQVEsQ0FBQyxLQUFLQyxRQUFMLENBQWNGLElBQWQsQ0FBRCxDQUFSO0FBQ0E7QUFDSCxLQUhELE1BR087QUFDSEcsTUFBQUEsYUFBYSxDQUFDbEUsV0FBZCxHQUE0QlcsT0FBNUIsQ0FBb0NvRCxJQUFwQyxFQUEwQyxVQUFVSSxVQUFWLEVBQXNCO0FBQzVELFlBQUksS0FBS0MsUUFBTCxJQUFpQixjQUFyQixFQUFrQztBQUM5QjtBQUNIOztBQUNELGFBQUtILFFBQUwsQ0FBY0YsSUFBZCxJQUFzQkksVUFBdEI7QUFDQUgsUUFBQUEsUUFBUSxDQUFDRyxVQUFELENBQVI7QUFDSCxPQU55QyxDQU14Q2xELElBTndDLENBTW5DLElBTm1DLENBQTFDO0FBT0g7QUFDSixHQXRIOEI7QUF3SC9Cb0QsRUFBQUEsYUFBYSxFQUFFLHVCQUFVQyxHQUFWLEVBQWVDLEdBQWYsRUFBb0JDLE9BQXBCLEVBQTZCO0FBQ3hDLFFBQUlDLGdCQUFnQixHQUFHQyxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0FELElBQUFBLGdCQUFnQixDQUFDekUsV0FBakIsR0FBK0IyRSxTQUEvQixDQUF5Q0wsR0FBekMsRUFBOENFLE9BQTlDO0FBQ0gsR0EzSDhCO0FBNEgvQkksRUFBQUEsa0JBNUgrQiw4QkE0SFpuRixHQTVIWSxFQTRIUEMsS0E1SE8sRUE0SEQ7QUFDMUIsUUFBSW1GLFVBQVUsR0FBRzlFLFdBQVcsQ0FBQ0MsV0FBWixHQUEwQkMsWUFBMUIsQ0FBdUNDLFNBQVMsQ0FBQ1QsR0FBakQsQ0FBakI7QUFDQSxRQUFHLENBQUNvRixVQUFKLEVBQWdCO0FBQ2hCLFFBQUlDLElBQUksR0FBRyxJQUFYO0FBQ0EsUUFBSXhCLElBQUksR0FBR3RFLEVBQUUsQ0FBQ3NFLElBQUgsQ0FBUSxHQUFSLEVBQWEsRUFBYixDQUFYOztBQUNBLFFBQUcsS0FBS3lCLFdBQUwsSUFBb0IsSUFBdkIsRUFBNEI7QUFDeEIsVUFBSXZELElBQUksR0FBRyxJQUFJeEMsRUFBRSxDQUFDb0IsSUFBUCxFQUFYO0FBQ0EsVUFBSTRFLE1BQU0sR0FBR3hELElBQUksQ0FBQ2YsWUFBTCxDQUFrQnpCLEVBQUUsQ0FBQ2lHLE1BQXJCLENBQWI7QUFDQUQsTUFBQUEsTUFBTSxDQUFDRSxVQUFQLEdBQW9CLElBQXBCO0FBQ0FGLE1BQUFBLE1BQU0sQ0FBQ0csdUJBQVAsR0FBaUMsSUFBakM7QUFDQUgsTUFBQUEsTUFBTSxDQUFDSSxHQUFQLEdBQWEsRUFBYjtBQUNBSixNQUFBQSxNQUFNLENBQUNLLGdCQUFQLEdBQTBCLENBQTFCO0FBQ0EsVUFBSTdFLEtBQUssR0FBR2dCLElBQUksQ0FBQ2YsWUFBTCxDQUFrQnpCLEVBQUUsQ0FBQzBCLE1BQXJCLENBQVo7QUFDQSxXQUFLQyxPQUFMLENBQWFDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixRQUF2QixFQUFpQyxjQUFqQyxDQUFiLEVBQStELFVBQVVDLEVBQVYsRUFBYztBQUN6RSxZQUFHVSxJQUFJLElBQUlBLElBQUksQ0FBQ1QsT0FBaEIsRUFBd0I7QUFDcEJQLFVBQUFBLEtBQUssQ0FBQ1EsV0FBTixHQUFvQkYsRUFBcEI7QUFDSDtBQUNKLE9BSjhELENBSTdERyxJQUo2RCxDQUl4RCxJQUp3RCxDQUEvRDtBQUtBVCxNQUFBQSxLQUFLLENBQUNVLElBQU4sR0FBYWxDLEVBQUUsQ0FBQzBCLE1BQUgsQ0FBVVMsSUFBVixDQUFlQyxNQUE1QjtBQUNBWixNQUFBQSxLQUFLLENBQUNhLFFBQU4sR0FBaUJyQyxFQUFFLENBQUMwQixNQUFILENBQVVZLFFBQVYsQ0FBbUJDLE1BQXBDO0FBQ0FDLE1BQUFBLElBQUksQ0FBQ25CLGNBQUwsQ0FBb0IsR0FBcEIsRUFBeUIsQ0FBekI7QUFDQW1CLE1BQUFBLElBQUksQ0FBQ0MsY0FBTCxDQUFvQjZCLElBQXBCO0FBQ0F1QixNQUFBQSxVQUFVLENBQUN0RSxRQUFYLENBQW9CaUIsSUFBcEI7QUFDQXdELE1BQUFBLE1BQU0sQ0FBQ00sZUFBUCxHQWxCd0IsQ0FtQnhCOztBQUNBLFdBQUtQLFdBQUwsR0FBbUJ2RCxJQUFuQjtBQUNIOztBQUNELFFBQUcsS0FBSytELFlBQUwsSUFBcUIsSUFBeEIsRUFBNkI7QUFDekIsV0FBS0EsWUFBTCxHQUFvQixFQUFwQjtBQUNILEtBN0J5QixDQStCMUI7OztBQUNBLGFBQVNDLFdBQVQsQ0FBcUIvRixHQUFyQixFQUEwQkMsS0FBMUIsRUFBZ0M7QUFDNUI7QUFDQSxVQUFJK0YsUUFBUSxHQUFHWCxJQUFJLENBQUNZLHFCQUFMLENBQTJCakcsR0FBM0IsRUFBZ0NDLEtBQWhDLEVBQXVDLENBQXZDLEVBQTBDLEVBQTFDLENBQWY7QUFDQStGLE1BQUFBLFFBQVEsQ0FBQ2pFLElBQVQsQ0FBY25CLGNBQWQsQ0FBNkJyQixFQUFFLENBQUM4QyxFQUFILENBQU0sQ0FBTixFQUFTLEdBQVQsQ0FBN0I7QUFDQTJELE1BQUFBLFFBQVEsQ0FBQ2pFLElBQVQsQ0FBY2xCLFdBQWQsQ0FBMEJ0QixFQUFFLENBQUM4QyxFQUFILENBQU0sQ0FBTixFQUFTLENBQUN3QixJQUFJLENBQUNJLE1BQU4sR0FBZSxDQUFmLEdBQW1CSixJQUFJLENBQUNJLE1BQWpDLENBQTFCO0FBQ0FvQixNQUFBQSxJQUFJLENBQUNDLFdBQUwsQ0FBaUJ4RSxRQUFqQixDQUEwQmtGLFFBQVEsQ0FBQ2pFLElBQW5DO0FBQ0EsYUFBT2lFLFFBQVA7QUFDSCxLQXZDeUIsQ0F5QzFCOzs7QUFDQSxRQUFHLEtBQUtGLFlBQUwsQ0FBa0I1RixNQUFsQixHQUEyQixDQUE5QixFQUFnQztBQUM1QixXQUFLNEYsWUFBTCxDQUFrQkksR0FBbEI7QUFDSDs7QUFFRCxTQUFLSixZQUFMLENBQWtCM0YsSUFBbEIsQ0FBdUI7QUFBQ0gsTUFBQUEsR0FBRyxFQUFHQSxHQUFQO0FBQVltRyxNQUFBQSxVQUFVLEVBQUcsQ0FBekI7QUFBNEJsRyxNQUFBQSxLQUFLLEVBQUdBO0FBQXBDLEtBQXZCLEVBOUMwQixDQWdEMUI7O0FBQ0EsUUFBRyxLQUFLbUcsZUFBTCxJQUF3QixJQUEzQixFQUFpQzs7QUFDakMsYUFBU0MsU0FBVCxHQUFvQjtBQUNoQmhCLE1BQUFBLElBQUksQ0FBQ2UsZUFBTCxHQUF1QixLQUF2Qjs7QUFDQSxVQUFHZixJQUFJLENBQUNpQixpQkFBUixFQUEwQjtBQUN0QmpCLFFBQUFBLElBQUksQ0FBQ2lCLGlCQUFMLENBQXVCdkUsSUFBdkIsQ0FBNEIwQixPQUE1QjtBQUNBNEIsUUFBQUEsSUFBSSxDQUFDaUIsaUJBQUwsR0FBeUIsSUFBekI7QUFDSDs7QUFDRCxVQUFHakIsSUFBSSxDQUFDUyxZQUFMLENBQWtCNUYsTUFBbEIsR0FBMkIsQ0FBOUIsRUFBZ0M7QUFDNUJtRixRQUFBQSxJQUFJLENBQUNlLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxZQUFJRyxRQUFRLEdBQUdsQixJQUFJLENBQUNTLFlBQUwsQ0FBa0JJLEdBQWxCLEVBQWY7QUFDQSxZQUFJTSxRQUFRLEdBQUdULFdBQVcsQ0FBQ1EsUUFBUSxDQUFDdkcsR0FBVixFQUFldUcsUUFBUSxDQUFDdEcsS0FBeEIsQ0FBMUI7QUFDQSxZQUFJd0csU0FBUyxHQUFHRixRQUFRLENBQUNKLFVBQVQsSUFBdUIsQ0FBdkM7QUFDQWQsUUFBQUEsSUFBSSxDQUFDaUIsaUJBQUwsR0FBeUJFLFFBQXpCO0FBQ0EsWUFBSUUsVUFBVSxHQUFHLElBQWpCO0FBQ0EsWUFBSUMsU0FBUyxHQUFHSCxRQUFRLENBQUN6RSxJQUF6Qjs7QUFDQSxZQUFHNEUsU0FBUyxDQUFDQyxLQUFWLEdBQWtCL0MsSUFBSSxDQUFDK0MsS0FBMUIsRUFBZ0M7QUFDNUJKLFVBQUFBLFFBQVEsQ0FBQ3pFLElBQVQsQ0FBYzhFLENBQWQsR0FBa0IsQ0FBQ2hELElBQUksQ0FBQytDLEtBQU4sR0FBWSxDQUE5QjtBQUNBLGNBQUlFLFFBQVEsR0FBR3ZILEVBQUUsQ0FBQ3dILE1BQUgsQ0FBVSxHQUFWLEVBQWN4SCxFQUFFLENBQUM4QyxFQUFILENBQU1tRSxRQUFRLENBQUN6RSxJQUFULENBQWM4RSxDQUFwQixFQUF1QixDQUFDaEQsSUFBSSxDQUFDSSxNQUFOLEdBQWUsQ0FBdEMsQ0FBZCxDQUFmO0FBQ0EsY0FBSStDLE9BQU8sR0FBR3pILEVBQUUsQ0FBQ3dILE1BQUgsQ0FBVU4sU0FBVixFQUFxQmxILEVBQUUsQ0FBQzhDLEVBQUgsQ0FBTW1FLFFBQVEsQ0FBQ3pFLElBQVQsQ0FBYzhFLENBQWQsSUFBbUJGLFNBQVMsQ0FBQ0MsS0FBVixHQUFrQi9DLElBQUksQ0FBQytDLEtBQTFDLElBQW1ELENBQXpELEVBQTRELENBQUMvQyxJQUFJLENBQUNJLE1BQU4sR0FBZSxDQUEzRSxDQUFyQixDQUFkO0FBQ0EsY0FBSWtDLFVBQVUsR0FBRzVHLEVBQUUsQ0FBQytELFNBQUgsQ0FBYSxDQUFiLENBQWpCO0FBQ0FvRCxVQUFBQSxVQUFVLEdBQUduSCxFQUFFLENBQUM4RCxRQUFILENBQVl5RCxRQUFaLEVBQXFCRSxPQUFyQixFQUE2QmIsVUFBN0IsRUFBd0M1RyxFQUFFLENBQUNpRSxRQUFILENBQVk2QyxTQUFaLENBQXhDLENBQWI7QUFDSCxTQU5ELE1BTUs7QUFDREcsVUFBQUEsUUFBUSxDQUFDekUsSUFBVCxDQUFjOEUsQ0FBZCxHQUFrQixDQUFDRixTQUFTLENBQUNDLEtBQVgsR0FBbUIsQ0FBckM7O0FBQ0EsY0FBSVQsV0FBVSxHQUFHNUcsRUFBRSxDQUFDK0QsU0FBSCxDQUFhbUQsU0FBYixDQUFqQjs7QUFDQSxjQUFJSyxTQUFRLEdBQUd2SCxFQUFFLENBQUN3SCxNQUFILENBQVUsR0FBVixFQUFjeEgsRUFBRSxDQUFDOEMsRUFBSCxDQUFNbUUsUUFBUSxDQUFDekUsSUFBVCxDQUFjOEUsQ0FBcEIsRUFBdUIsQ0FBQ2hELElBQUksQ0FBQ0ksTUFBTixHQUFlLENBQXRDLENBQWQsQ0FBZjs7QUFDQXlDLFVBQUFBLFVBQVUsR0FBR25ILEVBQUUsQ0FBQzhELFFBQUgsQ0FBWXlELFNBQVosRUFBcUJYLFdBQXJCLEVBQWdDNUcsRUFBRSxDQUFDaUUsUUFBSCxDQUFZNkMsU0FBWixDQUFoQyxDQUFiO0FBQ0g7O0FBQ0RHLFFBQUFBLFFBQVEsQ0FBQ3pFLElBQVQsQ0FBYzZCLFNBQWQsQ0FBd0I4QyxVQUF4QjtBQUNILE9BckJELE1BcUJLO0FBQ0RyQixRQUFBQSxJQUFJLENBQUNTLFlBQUwsR0FBb0IsSUFBcEI7O0FBQ0EsWUFBR1QsSUFBSSxDQUFDQyxXQUFSLEVBQW9CO0FBQ2hCRCxVQUFBQSxJQUFJLENBQUNDLFdBQUwsQ0FBaUI3QixPQUFqQjtBQUNBNEIsVUFBQUEsSUFBSSxDQUFDQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0g7QUFDSjtBQUNKOztBQUNEZSxJQUFBQSxTQUFTO0FBQ1osR0FsTjhCO0FBbU4vQkosRUFBQUEscUJBbk4rQixpQ0FtTlRqRyxHQW5OUyxFQW1OSkMsS0FuTkksRUFtTkdnSCxTQW5OSCxFQW1OY0MsUUFuTmQsRUFtTnVCO0FBQ2xELFFBQUlqRixRQUFRLEdBQUcsSUFBSTFDLEVBQUUsQ0FBQ29CLElBQVAsR0FBY0ssWUFBZCxDQUEyQnpCLEVBQUUsQ0FBQzRILFFBQTlCLENBQWY7QUFDQWxGLElBQUFBLFFBQVEsQ0FBQ0YsSUFBVCxDQUFjOUIsS0FBZCxHQUFzQkEsS0FBSyxJQUFJLElBQUlWLEVBQUUsQ0FBQzZDLEtBQVAsQ0FBYSxFQUFiLEVBQWdCLEVBQWhCLEVBQW1CLEVBQW5CLENBQS9CO0FBQ0FILElBQUFBLFFBQVEsQ0FBQ21GLFFBQVQsR0FBb0JILFNBQVMsSUFBSSxDQUFqQztBQUNBaEYsSUFBQUEsUUFBUSxDQUFDb0YsUUFBVCxHQUFvQkgsUUFBcEI7QUFDQWpGLElBQUFBLFFBQVEsQ0FBQ1UsTUFBVCxHQUFrQjNDLEdBQWxCO0FBQ0EsV0FBT2lDLFFBQVA7QUFDSDtBQTFOOEIsQ0FBVCxDQUExQixFQTZOQTs7QUFDQTNDLGdCQUFnQixDQUFDaUIsV0FBakIsR0FBK0IsWUFBWTtBQUN2QyxNQUFJLENBQUNqQixnQkFBZ0IsQ0FBQ1EsUUFBdEIsRUFBZ0M7QUFDNUJSLElBQUFBLGdCQUFnQixDQUFDUSxRQUFqQixHQUE0QixJQUFJUixnQkFBSixFQUE1QjtBQUNIOztBQUNELFNBQU9BLGdCQUFnQixDQUFDUSxRQUF4QjtBQUNILENBTEQsRUFPQTs7O0FBQ0FULE1BQU0sQ0FBQ2lJLE9BQVAsR0FBaUIsVUFBVXRILEdBQVYsRUFBZUMsS0FBZixFQUFzQjtBQUNuQyxNQUFJRCxHQUFHLElBQUksSUFBUCxJQUFlQSxHQUFHLElBQUksRUFBMUIsRUFBOEI7QUFDMUI7QUFDSDs7QUFDRFYsRUFBQUEsZ0JBQWdCLENBQUNpQixXQUFqQixHQUErQlIsZ0JBQS9CLENBQWdEQyxHQUFoRCxFQUFxREMsS0FBckQ7QUFDSCxDQUxELEVBT0E7OztBQUNBWixNQUFNLENBQUNrSSxhQUFQLEdBQXVCLFVBQVV2SCxHQUFWLEVBQWVDLEtBQWYsRUFBc0I7QUFDekNxSCxFQUFBQSxPQUFPLENBQUN0SCxHQUFELEVBQU1DLEtBQU4sQ0FBUDtBQUNILENBRkQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiDmtojmga/lpITnkIbnsbvnm7jlhbPlpITnkIZcbiAqIEBhdXRob3Igd2hqaW5nMjAxMkAxNjMuY29tXG4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxud2luZG93Lkdsb2JhbE1lc3NhZ2VNZ3IgPSBjYy5DbGFzcyh7XG4gICAgY290cjogZnVuY3Rpb24gKCkge1xuICAgIH0sXG5cbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHZlcnRpY2FsX2FycmF5OiBbXSxcbiAgICAgICAgdmVydGljYWxfYXJyYXlfdG1wOiBbXVxuICAgIH0sXG5cbiAgICBzdGF0aWNzOiB7XG4gICAgICAgIGluc3RhbmNlOiBudWxsLFxuICAgIH0sXG5cbiAgICBzaG93TW92ZVZlcnRpY2FsOiBmdW5jdGlvbiAobXNnLCBjb2xvcikge1xuICAgICAgICBpZihtc2cgPT0gXCJcIilyZXR1cm5cbiAgICAgICAgaWYgKHRoaXMudmVydGljYWxfYXJyYXkubGVuZ3RoID49IDMpIHtcbiAgICAgICAgICAgIHRoaXMudmVydGljYWxfYXJyYXlfdG1wLnB1c2goeyBtc2c6IG1zZywgY29sb3I6IGNvbG9yIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMudmVydGljYWxfYXJyYXlfdG1wLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJ0aWNhbF9hcnJheV90bXAuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGFyZW50X3duZCA9IFZpZXdNYW5hZ2VyLmdldEluc3RhbmNlKCkuZ2V0U2NlbmVOb2RlKFNDRU5FX1RBRy5tc2cpO1xuICAgICAgICB2YXIgY29udGFpbmVyID0gbmV3IGNjLk5vZGUoKTtcbiAgICAgICAgY29udGFpbmVyLnNldEFuY2hvclBvaW50KDAuNSwgMC41KTtcbiAgICAgICAgY29udGFpbmVyLnNldFBvc2l0aW9uKDAsIDMwMCk7XG4gICAgICAgIHBhcmVudF93bmQuYWRkQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICAvL+iDjOaZr1xuICAgICAgICB2YXIgaW1hZ2UgPSBjb250YWluZXIuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XG4gICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRVSUljb25QYXRoKFwiY29tbW9uXCIsIFwiY29tbW9uXzkwMDU2XCIpLCBmdW5jdGlvbiAoc3ApIHtcbiAgICAgICAgICAgIGlmKGNvbnRhaW5lciAmJiBjb250YWluZXIuaXNWYWxpZCl7XG4gICAgICAgICAgICAgICAgaW1hZ2Uuc3ByaXRlRnJhbWUgPSBzcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpKVxuXG4gICAgICAgIGltYWdlLnR5cGUgPSBjYy5TcHJpdGUuVHlwZS5TTElDRUQ7XG4gICAgICAgIGltYWdlLnNpemVNb2RlID0gY2MuU3ByaXRlLlNpemVNb2RlLkNVU1RPTTtcbiAgICAgICAgaW1hZ2Uubm9kZS5zZXRDb250ZW50U2l6ZSg1MDAsIDYwKTtcblxuICAgICAgICAvLyB2YXIgcmljaFRleHQgPSBjb250YWluZXIuYWRkQ29tcG9uZW50KGNjLlJpY2hUZXh0KTtcbiAgICAgICAgdmFyIHJpY2hUZXh0ID0gVXRpbHMuY3JlYXRlUmljaExhYmVsKDI0LCBuZXcgY2MuQ29sb3IoMHhmZiwgMHhkYSwgMHgyZiwgMHhmZiksIGNjLnYyKDAuNSwwLjUpLCBjYy52MigwLDApLCAyNiwgNTAwLCBjb250YWluZXIpO1xuICAgICAgICByaWNoVGV4dC5oYW5kbGVUb3VjaEV2ZW50ID0gZmFsc2U7XG4gICAgICAgIHJpY2hUZXh0Lmhvcml6b250YWxBbGlnbiA9IGNjLm1hY3JvLlRleHRBbGlnbm1lbnQuQ0VOVEVSO1xuICAgICAgICAvLyByaWNoVGV4dC5tYXhXaWR0aCA9IDUwMDtcbiAgICAgICAgLy8gcmljaFRleHQuZm9udFNpemUgPSAyNDtcbiAgICAgICAgLy8gcmljaFRleHQubm9kZS5jb2xvciA9IG5ldyBjYy5Db2xvcigweGZmLCAweGRhLCAweDJmLCAweGZmKTtcbiAgICAgICAgcmljaFRleHQuc3RyaW5nID0gU3RyaW5nVXRpbC5wYXJzZVN0cihtc2cpLnN0cmluZztcbiAgICAgICAgdmFyIHJlc0FyciA9IFN0cmluZ1V0aWwucGFyc2VTdHIobXNnKS5yZXNBcnI7XG4gICAgICAgIGlmIChyZXNBcnIpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcmVzQXJyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUmVzKFBhdGhUb29sLmdldEl0ZW1SZXMocmVzQXJyW2ldKSwgKGZ1bmN0aW9uIChyZXNPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoY29udGFpbmVyICYmIGNvbnRhaW5lci5pc1ZhbGlkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpY2hUZXh0LmFkZFNwcml0ZUZyYW1lKHJlc09iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIucmljdF90ZXh0X25kID0gcmljaFRleHQubm9kZTtcblxuICAgICAgICB2YXIgc2VxID0gY2Muc2VxdWVuY2UoXG4gICAgICAgICAgICAvLyBjYy5tb3ZlQnkoMSwgMCwgMTAwKSxcbiAgICAgICAgICAgIGNjLmRlbGF5VGltZSgyKSxcbiAgICAgICAgICAgIGNjLnJlbW92ZVNlbGYoKSxcbiAgICAgICAgICAgIGNjLmNhbGxGdW5jKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMudmVydGljYWxfYXJyYXkuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBub2RlLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICBub2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52ZXJ0aWNhbF9hcnJheV90bXAubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbyA9IHRoaXMudmVydGljYWxfYXJyYXlfdG1wLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vdmVWZXJ0aWNhbChvLm1zZywgby5jb2xvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy52ZXJ0aWNhbF9hcnJheS5wdXNoKGNvbnRhaW5lcik7XG4gICAgICAgIHRoaXMuc29ydFBvc2l0aW9uKCk7XG4gICAgICAgIGNvbnRhaW5lci5yaWN0X3RleHRfbmQucnVuQWN0aW9uKHNlcSk7XG4gICAgfSxcblxuICAgIHNvcnRQb3NpdGlvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2l6ZSA9IHRoaXMudmVydGljYWxfYXJyYXkubGVuZ3RoO1xuICAgICAgICBpZiAoc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHZhciBfeSA9IDIzMDsvL+i1t+Wni+eCuVxuICAgICAgICAgICAgdmFyIF94ID0gMDtcbiAgICAgICAgICAgIHZhciBsYXN0X2hlaWdodCA9IHRoaXMudmVydGljYWxfYXJyYXlbc2l6ZSAtIDFdLmhlaWdodDtcbiAgICAgICAgICAgIHZhciBsYXN0X3k7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gc2l6ZTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy52ZXJ0aWNhbF9hcnJheVtpIC0xXTtcbiAgICAgICAgICAgICAgICBpZihpdGVtID09IG51bGwpcmV0dXJuXG4gICAgICAgICAgICAgICAgaXRlbS5zdG9wQWxsQWN0aW9ucygpO1xuICAgICAgICAgICAgICAgIGlmKHNpemUgPT0gaSl7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oY2MudjIoX3gsX3kpKTtcbiAgICAgICAgICAgICAgICAgICAgbGFzdF95ID0gX3kgKyBpdGVtLmhlaWdodDtcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihjYy52MihfeCxsYXN0X3kpKTtcbiAgICAgICAgICAgICAgICAgICAgbGFzdF95ID0gbGFzdF95ICsgaXRlbS5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZW0ucnVuQWN0aW9uKGNjLm1vdmVCeSgwLjUsMCxsYXN0X2hlaWdodCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIGxvYWRSZXM6IGZ1bmN0aW9uIChwYXRoLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAodGhpcy5yZXNfbGlzdCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc19saXN0ID0ge31cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNfbGlzdFtwYXRoXSkge1xuICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5yZXNfbGlzdFtwYXRoXSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgTG9hZGVyTWFuYWdlci5nZXRJbnN0YW5jZSgpLmxvYWRSZXMocGF0aCwgZnVuY3Rpb24gKHJlc19vYmplY3QpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc19jbG9zZSB8fCB0aGlzLmRlbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVzX2xpc3RbcGF0aF0gPSByZXNfb2JqZWN0XG4gICAgICAgICAgICAgICAgY2FsbGJhY2socmVzX29iamVjdClcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSlcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG93UG93ZXJNb3ZlOiBmdW5jdGlvbiAobnVtLCByZXMsIG9sZF9udW0pIHtcbiAgICAgICAgdmFyIE1haW5VSUNvbnRyb2xsZXIgPSByZXF1aXJlKFwibWFpbnVpX2NvbnRyb2xsZXJcIik7XG4gICAgICAgIE1haW5VSUNvbnRyb2xsZXIuZ2V0SW5zdGFuY2UoKS5zaG93UG93ZXIobnVtLCBvbGRfbnVtKTtcbiAgICB9LFxuICAgIHNob3dNb3ZlSG9yaXpvbnRhbChtc2csIGNvbG9yKXtcbiAgICAgICAgbGV0IGN1cnJfc2NlbmUgPSBWaWV3TWFuYWdlci5nZXRJbnN0YW5jZSgpLmdldFNjZW5lTm9kZShTQ0VORV9UQUcubXNnKVxuICAgICAgICBpZighY3Vycl9zY2VuZSkgcmV0dXJuO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICAgICAgbGV0IHNpemUgPSBjYy5zaXplKDY4MiwgMzgpXG4gICAgICAgIGlmKHRoaXMucGVyX2JnX2ljb24gPT0gbnVsbCl7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBjYy5Ob2RlKClcbiAgICAgICAgICAgIGxldCB3aWRnZXQgPSBub2RlLmFkZENvbXBvbmVudChjYy5XaWRnZXQpXG4gICAgICAgICAgICB3aWRnZXQuaXNBbGlnblRvcCA9IHRydWU7XG4gICAgICAgICAgICB3aWRnZXQuaXNBbGlnbkhvcml6b250YWxDZW50ZXIgPSB0cnVlO1xuICAgICAgICAgICAgd2lkZ2V0LnRvcCA9IDU1XG4gICAgICAgICAgICB3aWRnZXQuaG9yaXpvbnRhbENlbnRlciA9IDBcbiAgICAgICAgICAgIGxldCBpbWFnZSA9IG5vZGUuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSlcbiAgICAgICAgICAgIHRoaXMubG9hZFJlcyhQYXRoVG9vbC5nZXRVSUljb25QYXRoKFwiY29tbW9uXCIsIFwiY29tbW9uXzkwMDU2XCIpLCBmdW5jdGlvbiAoc3ApIHtcbiAgICAgICAgICAgICAgICBpZihub2RlICYmIG5vZGUuaXNWYWxpZCl7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNwcml0ZUZyYW1lID0gc3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgICAgICAgaW1hZ2UudHlwZSA9IGNjLlNwcml0ZS5UeXBlLlNMSUNFRDtcbiAgICAgICAgICAgIGltYWdlLnNpemVNb2RlID0gY2MuU3ByaXRlLlNpemVNb2RlLkNVU1RPTTtcbiAgICAgICAgICAgIG5vZGUuc2V0QW5jaG9yUG9pbnQoMC41LCAxKVxuICAgICAgICAgICAgbm9kZS5zZXRDb250ZW50U2l6ZShzaXplKVxuICAgICAgICAgICAgY3Vycl9zY2VuZS5hZGRDaGlsZChub2RlKVxuICAgICAgICAgICAgd2lkZ2V0LnVwZGF0ZUFsaWdubWVudCgpXG4gICAgICAgICAgICAvLyBub2RlLnNldFBvc2l0aW9uKDAsIFNDUkVFTl9IRUlHSFQqMC41IC0gNTUpXG4gICAgICAgICAgICB0aGlzLnBlcl9iZ19pY29uID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMubXNnX3NhdmVfYXJyID09IG51bGwpe1xuICAgICAgICAgICAgdGhpcy5tc2dfc2F2ZV9hcnIgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8v5Yib5bu65paH5pysXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUxhYmVsKG1zZywgY29sb3Ipe1xuICAgICAgICAgICAgLy8gbXNnID0gXCI8c2l6ZSA9IDE1PlwiICsgbXNnICsgXCI8L3NpemU+XCJcbiAgICAgICAgICAgIGxldCB0ZW1wX21zZyA9IHNlbGYuY3JlYXRlaG9yaXpvbnRhbExhYmVsKG1zZywgY29sb3IsIDAsIDIwKVxuICAgICAgICAgICAgdGVtcF9tc2cubm9kZS5zZXRBbmNob3JQb2ludChjYy52MigwLCAwLjUpKVxuICAgICAgICAgICAgdGVtcF9tc2cubm9kZS5zZXRQb3NpdGlvbihjYy52MigwLCAtc2l6ZS5oZWlnaHQgLyAyIC0gc2l6ZS5oZWlnaHQpKVxuICAgICAgICAgICAgc2VsZi5wZXJfYmdfaWNvbi5hZGRDaGlsZCh0ZW1wX21zZy5ub2RlKVxuICAgICAgICAgICAgcmV0dXJuIHRlbXBfbXNnXG4gICAgICAgIH1cblxuICAgICAgICAvL+WPquWtmOWCqDXmnaHkvKDpl7tcbiAgICAgICAgaWYodGhpcy5tc2dfc2F2ZV9hcnIubGVuZ3RoID4gNSl7XG4gICAgICAgICAgICB0aGlzLm1zZ19zYXZlX2Fyci5wb3AoKVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tc2dfc2F2ZV9hcnIucHVzaCh7bXNnIDogbXNnLCBkZWxheV90aW1lIDogMywgY29sb3IgOiBjb2xvcn0pXG5cbiAgICAgICAgLy/lpoLmnpzlvZPliY3mnInmu5rliqhcbiAgICAgICAgaWYodGhpcy5oYXNfbXNnX21vdmVpbmcgPT0gdHJ1ZSkgcmV0dXJuO1xuICAgICAgICBmdW5jdGlvbiBkZWxldGVNc2coKXtcbiAgICAgICAgICAgIHNlbGYuaGFzX21zZ19tb3ZlaW5nID0gZmFsc2VcbiAgICAgICAgICAgIGlmKHNlbGYucGVyX21vdmVfbXNnX3dvcmQpe1xuICAgICAgICAgICAgICAgIHNlbGYucGVyX21vdmVfbXNnX3dvcmQubm9kZS5kZXN0cm95KClcbiAgICAgICAgICAgICAgICBzZWxmLnBlcl9tb3ZlX21zZ193b3JkID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHNlbGYubXNnX3NhdmVfYXJyLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIHNlbGYuaGFzX21zZ19tb3ZlaW5nID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGxldCB0ZW1wX3RhYiA9IHNlbGYubXNnX3NhdmVfYXJyLnBvcCgpXG4gICAgICAgICAgICAgICAgbGV0IG1zZ193b3JkID0gY3JlYXRlTGFiZWwodGVtcF90YWIubXNnLCB0ZW1wX3RhYi5jb2xvcilcbiAgICAgICAgICAgICAgICBsZXQgc2hvd190aW1lID0gdGVtcF90YWIuZGVsYXlfdGltZSB8fCAzO1xuICAgICAgICAgICAgICAgIHNlbGYucGVyX21vdmVfbXNnX3dvcmQgPSBtc2dfd29yZFxuICAgICAgICAgICAgICAgIGxldCBzZXF1ZW5jZV8xID0gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgZm9udF9zaXplID0gbXNnX3dvcmQubm9kZVxuICAgICAgICAgICAgICAgIGlmKGZvbnRfc2l6ZS53aWR0aCA+IHNpemUud2lkdGgpe1xuICAgICAgICAgICAgICAgICAgICBtc2dfd29yZC5ub2RlLnggPSAtc2l6ZS53aWR0aC8yO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZV90b18gPSBjYy5tb3ZlVG8oMC4xLGNjLnYyKG1zZ193b3JkLm5vZGUueCwgLXNpemUuaGVpZ2h0IC8gMikpXG4gICAgICAgICAgICAgICAgICAgIGxldCBtb3ZlX3RvID0gY2MubW92ZVRvKHNob3dfdGltZSwgY2MudjIobXNnX3dvcmQubm9kZS54IC0gKGZvbnRfc2l6ZS53aWR0aCAtIHNpemUud2lkdGgpIC0gNSwgLXNpemUuaGVpZ2h0IC8gMikpXG4gICAgICAgICAgICAgICAgICAgIGxldCBkZWxheV90aW1lID0gY2MuZGVsYXlUaW1lKDEpXG4gICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlXzEgPSBjYy5zZXF1ZW5jZShtb3ZlX3RvXyxtb3ZlX3RvLGRlbGF5X3RpbWUsY2MuY2FsbEZ1bmMoZGVsZXRlTXNnKSlcbiAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgbXNnX3dvcmQubm9kZS54ID0gLWZvbnRfc2l6ZS53aWR0aCAvIDJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlbGF5X3RpbWUgPSBjYy5kZWxheVRpbWUoc2hvd190aW1lKVxuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZV90b18gPSBjYy5tb3ZlVG8oMC4xLGNjLnYyKG1zZ193b3JkLm5vZGUueCwgLXNpemUuaGVpZ2h0IC8gMikpXG4gICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlXzEgPSBjYy5zZXF1ZW5jZShtb3ZlX3RvXyxkZWxheV90aW1lLGNjLmNhbGxGdW5jKGRlbGV0ZU1zZykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1zZ193b3JkLm5vZGUucnVuQWN0aW9uKHNlcXVlbmNlXzEpXG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBzZWxmLm1zZ19zYXZlX2FyciA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYoc2VsZi5wZXJfYmdfaWNvbil7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGVyX2JnX2ljb24uZGVzdHJveSgpXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGVyX2JnX2ljb24gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWxldGVNc2coKVxuICAgIH0sXG4gICAgY3JlYXRlaG9yaXpvbnRhbExhYmVsKG1zZywgY29sb3IsIG1heF93aWR0aCwgZm9udHNpemUpe1xuICAgICAgICBsZXQgcmljaFRleHQgPSBuZXcgY2MuTm9kZSgpLmFkZENvbXBvbmVudChjYy5SaWNoVGV4dCk7XG4gICAgICAgIHJpY2hUZXh0Lm5vZGUuY29sb3IgPSBjb2xvciB8fCBuZXcgY2MuQ29sb3IoMjUsMzAsNDApO1xuICAgICAgICByaWNoVGV4dC5tYXhXaWR0aCA9IG1heF93aWR0aCB8fCAwO1xuICAgICAgICByaWNoVGV4dC5mb250U2l6ZSA9IGZvbnRzaXplO1xuICAgICAgICByaWNoVGV4dC5zdHJpbmcgPSBtc2dcbiAgICAgICAgcmV0dXJuIHJpY2hUZXh0XG4gICAgfSxcbn0pO1xuXG4vLyDlrp7kvovljJbljZXliKlcbkdsb2JhbE1lc3NhZ2VNZ3IuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFHbG9iYWxNZXNzYWdlTWdyLmluc3RhbmNlKSB7XG4gICAgICAgIEdsb2JhbE1lc3NhZ2VNZ3IuaW5zdGFuY2UgPSBuZXcgR2xvYmFsTWVzc2FnZU1ncigpO1xuICAgIH1cbiAgICByZXR1cm4gR2xvYmFsTWVzc2FnZU1nci5pbnN0YW5jZTtcbn1cblxuLy/lhajlsYAgbWVzc2FnZSDmj5DnpLrmlrnms5VcbndpbmRvdy5tZXNzYWdlID0gZnVuY3Rpb24gKG1zZywgY29sb3IpIHtcbiAgICBpZiAobXNnID09IG51bGwgfHwgbXNnID09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBHbG9iYWxNZXNzYWdlTWdyLmdldEluc3RhbmNlKCkuc2hvd01vdmVWZXJ0aWNhbChtc2csIGNvbG9yKTtcbn1cblxuLy/otYTkuqfmj5DnpLpcbndpbmRvdy5zaG93QXNzZXRzTXNnID0gZnVuY3Rpb24gKG1zZywgY29sb3IpIHtcbiAgICBtZXNzYWdlKG1zZywgY29sb3IpXG59Il19