nsc-react-component 4.1.6 → 4.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,8 +18,8 @@ import dayjs from "dayjs";
18
18
  import "./index.module.less";
19
19
  import lodash from "lodash";
20
20
  import Button from "../../base/button";
21
- import Upload from '../../base/upload';
22
- import cls from 'classnames';
21
+ import Upload from "../../base/upload";
22
+ import cls from "classnames";
23
23
  class FormPage extends PureComponent {
24
24
  constructor() {
25
25
  super(...arguments);
@@ -36,6 +36,7 @@ class FormPage extends PureComponent {
36
36
  _defineProperty(this, "dateValueFormat", {});
37
37
  _defineProperty(this, "dateFormat", {});
38
38
  _defineProperty(this, "fileFormat", []);
39
+ _defineProperty(this, "rangerDate", {});
39
40
  _defineProperty(this, "refList", {});
40
41
  _defineProperty(this, "submitFlag", true);
41
42
  }
@@ -134,7 +135,7 @@ class FormPage extends PureComponent {
134
135
  data = _objectSpread(_objectSpread({}, data), newFileList);
135
136
  }
136
137
  if (!this.submitFlag) {
137
- message.error('请等待所有文件上传完成!');
138
+ message.error("请等待所有文件上传完成!");
138
139
  return;
139
140
  }
140
141
  if (!isEmptyObj(this.dateValueFormat)) {
@@ -143,6 +144,13 @@ class FormPage extends PureComponent {
143
144
  if (olddata) {
144
145
  if (Array.isArray(olddata)) {
145
146
  data[key] = [dayjs(olddata[0]).format(this.dateValueFormat[key]), dayjs(olddata[1]).format(this.dateValueFormat[key])];
147
+ if (this.rangerDate[key]) {
148
+ try {
149
+ data[this.rangerDate[key][0]] = dayjs(olddata[0]).format(this.dateFormat[key]);
150
+ data[this.rangerDate[key][1]] = dayjs(olddata[1]).format(this.dateFormat[key]);
151
+ delete data[key];
152
+ } catch (e) {}
153
+ }
146
154
  } else {
147
155
  data[key] = dayjs(olddata).format(this.dateValueFormat[key]);
148
156
  }
@@ -207,23 +215,23 @@ class FormPage extends PureComponent {
207
215
  addParams,
208
216
  editorParams
209
217
  } = requestObject;
210
- let url = '';
218
+ let url = "";
211
219
  let params = {};
212
- if (label == '新增') {
220
+ if (label == "新增") {
213
221
  url = addUrl ? addUrl : submitUrl;
214
- if (addParams && typeof addParams == 'string') {
222
+ if (addParams && typeof addParams == "string") {
215
223
  const Utils = this.props.Utils || {};
216
- let func = new Function('Utils', addParams);
224
+ let func = new Function("Utils", addParams);
217
225
  let converParams = func(Utils);
218
226
  params = converParams;
219
227
  } else {
220
228
  params = addParams ? addParams : submitParams;
221
229
  }
222
- } else if (label == '编辑') {
230
+ } else if (label == "编辑") {
223
231
  url = editorUrl ? editorUrl : submitUrl;
224
- if (editorParams && typeof editorParams == 'string') {
232
+ if (editorParams && typeof editorParams == "string") {
225
233
  const Utils = this.props.Utils || {};
226
- let func = new Function('Utils', editorParams);
234
+ let func = new Function("Utils", editorParams);
227
235
  let converParams = func(Utils);
228
236
  params = converParams;
229
237
  } else {
@@ -258,7 +266,7 @@ class FormPage extends PureComponent {
258
266
  });
259
267
  }
260
268
  getFileList(data) {
261
- let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '新增';
269
+ let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "新增";
262
270
  this.submitFlag = true;
263
271
  let fileList = [];
264
272
  if (data && data.length > 0) {
@@ -267,10 +275,10 @@ class FormPage extends PureComponent {
267
275
  fileId: item.fileId,
268
276
  fileName: item.fileName
269
277
  };
270
- if (label == '查看') {
271
- obj.status = 'done';
278
+ if (label == "查看") {
279
+ obj.status = "done";
272
280
  }
273
- if (label !== '查看' && item.status !== 'done') {
281
+ if (label !== "查看" && item.status !== "done") {
274
282
  this.submitFlag = false;
275
283
  }
276
284
  fileList.push(obj);
@@ -325,9 +333,9 @@ class FormPage extends PureComponent {
325
333
  }
326
334
  }
327
335
  if (props.onChange) {
328
- if (typeof props.onChange == 'function') {
336
+ if (typeof props.onChange == "function") {
329
337
  props.onChange(value, valueOption, data);
330
- } else if (typeof props.onChange == 'string') {
338
+ } else if (typeof props.onChange == "string") {
331
339
  const eventOption = {
332
340
  value,
333
341
  data,
@@ -336,13 +344,13 @@ class FormPage extends PureComponent {
336
344
  refs: this.refList
337
345
  };
338
346
  const Utils = this.props.Utils || {};
339
- if (type == 'Select') {
347
+ if (type == "Select") {
340
348
  eventOption.valueOption = valueOption;
341
349
  eventOption.data = data;
342
- } else if (type == 'DatePicker' || type == 'RangePicker') {
350
+ } else if (type == "DatePicker" || type == "RangePicker") {
343
351
  eventOption.valueStr = valueOption;
344
352
  }
345
- const selfFunc = new Function('eventOption', 'Utils', props.onChange);
353
+ const selfFunc = new Function("eventOption", "Utils", props.onChange);
346
354
  selfFunc(eventOption, Utils);
347
355
  }
348
356
  }
@@ -360,6 +368,9 @@ class FormPage extends PureComponent {
360
368
  if (itemProps.format) {
361
369
  this.dateFormat[item.name] = itemProps.format;
362
370
  }
371
+ if (item.type == "RangePicker" && item.name.split(",").length > 1) {
372
+ this.rangerDate[item.name] = item.name.split(",");
373
+ }
363
374
  let allowChars = ((_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.allowChars) || false;
364
375
  let props = _objectSpread(_objectSpread({
365
376
  placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
@@ -377,7 +388,7 @@ class FormPage extends PureComponent {
377
388
  delete props.dataType;
378
389
  if (label == "查看") {
379
390
  props.disabled = true;
380
- props.placeholder = '';
391
+ props.placeholder = "";
381
392
  }
382
393
  if (item.rules && item.rules.length > 0 || item.required === true) {
383
394
  newValid.push(item.name);
@@ -387,13 +398,13 @@ class FormPage extends PureComponent {
387
398
  }
388
399
  const itemRef = /*#__PURE__*/React.createRef();
389
400
  this.refList[item.name] = itemRef;
390
- if (item.type !== 'Upload') {
401
+ if (item.type !== "Upload") {
391
402
  var _item$props2;
392
403
  return /*#__PURE__*/React.createElement(Col, {
393
404
  span: item.span || 12,
394
405
  key: index,
395
406
  style: {
396
- display: item.hide ? 'none' : 'block'
407
+ display: item.hide ? "none" : "block"
397
408
  }
398
409
  }, /*#__PURE__*/React.createElement(Form.Item, {
399
410
  label: item.label,
@@ -414,7 +425,7 @@ class FormPage extends PureComponent {
414
425
  span: item.span || 12,
415
426
  key: index,
416
427
  style: {
417
- display: item.hide ? 'none' : 'block'
428
+ display: item.hide ? "none" : "block"
418
429
  }
419
430
  }, /*#__PURE__*/React.createElement(Form.Item, {
420
431
  label: item.label,
@@ -437,10 +448,10 @@ class FormPage extends PureComponent {
437
448
  },
438
449
  showUploadList: {
439
450
  showDownloadIcon: true,
440
- showRemoveIcon: label !== '查看'
451
+ showRemoveIcon: label !== "查看"
441
452
  },
442
453
  ref: itemRef
443
- }, props), (_item$props4 = item.props) !== null && _item$props4 !== void 0 && _item$props4.children ? (_item$props5 = item.props) === null || _item$props5 === void 0 ? void 0 : _item$props5.children : label !== '查看' && /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
454
+ }, props), (_item$props4 = item.props) !== null && _item$props4 !== void 0 && _item$props4.children ? (_item$props5 = item.props) === null || _item$props5 === void 0 ? void 0 : _item$props5.children : label !== "查看" && /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
444
455
  }
445
456
  }));
446
457
  }
@@ -499,16 +510,16 @@ class FormPage extends PureComponent {
499
510
  });
500
511
  newFormsObj[item] = groupForms;
501
512
  });
502
- newFormsObj['noGroupName'] = otherGrups;
513
+ newFormsObj["noGroupName"] = otherGrups;
503
514
  }
504
515
  //自定义按钮
505
516
  let selfButtons = [];
506
517
  if (Array.isArray(children)) {
507
518
  children.map(item => {
508
- typeof item == 'object' && selfButtons.push(item);
519
+ typeof item == "object" && selfButtons.push(item);
509
520
  });
510
521
  } else if (children) {
511
- typeof children == 'object' && selfButtons.push(children);
522
+ typeof children == "object" && selfButtons.push(children);
512
523
  }
513
524
  return /*#__PURE__*/React.createElement(Form, _extends({
514
525
  ref: this.formRef,
@@ -542,7 +553,7 @@ class FormPage extends PureComponent {
542
553
  className: "nsc-form-content"
543
554
  }, this.renderForm(newFormsObj[key], label)));
544
555
  }), !this.props.formType && footer == true && /*#__PURE__*/React.createElement("div", {
545
- className: cls('nsc-form-page-footer', this.props.footerClassName)
556
+ className: cls("nsc-form-page-footer", this.props.footerClassName)
546
557
  }, /*#__PURE__*/React.createElement(Button, _extends({}, this.props.cancelButtonProps, {
547
558
  onClick: () => {
548
559
  if (this.props.onCancel) {
@@ -560,14 +571,14 @@ class FormPage extends PureComponent {
560
571
  this.onSubmit();
561
572
  },
562
573
  loading: this.state.loading,
563
- className: 'nsc-form-page-footer-btn'
574
+ className: "nsc-form-page-footer-btn"
564
575
  }), "\u4FDD\u5B58"), selfButtons.map((item, index) => {
565
576
  return /*#__PURE__*/React.createElement("div", {
566
- className: 'nsc-form-page-footer-btn',
577
+ className: "nsc-form-page-footer-btn",
567
578
  key: index
568
579
  }, item);
569
580
  })), !this.props.formType && footer !== true && this.props.footer));
570
581
  }
571
582
  }
572
583
  export default FormPage;
573
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2VsZkJ1dHRvbnMiLCJzaG93TW9kZWwiLCJmb3JtVHlwZSIsImxhYmVsQ29sIiwiZmxleCIsIndyYXBwZXJDb2wiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImtleXMiLCJmb290ZXJDbGFzc05hbWUiLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Zvcm1QYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFVwbG9hZCBmcm9tICcuLi8uLi9iYXNlL3VwbG9hZCdcclxuaW1wb3J0IGNscyBmcm9tICdjbGFzc25hbWVzJ1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcInNyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVBhZ2VQcm9wcyB7XHJcbiAgZm9ybXM/OiBBcnJheTxhbnk+OyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgZm9vdGVyQ2xhc3NOYW1lPzogYW55O1xyXG4gIG9rQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgY2FuY2VsQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgZm9vdGVyPzogUmVhY3ROb2RlIHwgYm9vbGVhbjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvbkZvcm1DaGFuZ2U/OiAodmFsdWU/OiBhbnksIGFsbFZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIHN1Ym1pdFBhcmFtcz86IGFueTsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHJvcHM/OiBJRm9ybVByb3BzO1xyXG4gIHJlcXVlc3RPYmplY3Q/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmcsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmcsXHJcbiAgICBhZGRQYXJhbXM/OiBhbnksXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBhbnlcclxuICB9XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueVxyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBGb3JtUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8Rm9ybVBhZ2VQcm9wcywgYW55PiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIGxhYmVsOiBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnlcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJlZkxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgc3VibWl0RmxhZyA9IHRydWVcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUob3JnVmFsdWUsIGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjaylcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KVxyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzXHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHsgc3VibWl0VXJsLCBzdWJtaXRQYXJhbXMgPSB7fSwgY2FsbEJhY2ssIHJlcXVlc3RPYmplY3QgPSB7fSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3RcclxuICAgIGxldCB1cmwgPSAnJztcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxhYmVsID09ICfmlrDlop4nKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ1V0aWxzJywgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscylcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBhZGRQYXJhbXMgPyBhZGRQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gJ+e8lui+kScpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge31cclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbignVXRpbHMnLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKVxyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtc1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGVkaXRvclBhcmFtcyA/IGVkaXRvclBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIumFjee9rlVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9ICfmlrDlop4nKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSAn5p+l55yLJykge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9ICdkb25lJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSAn5p+l55yLJyAmJiBpdGVtLnN0YXR1cyAhPT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9O1xyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKClcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7IHZhbHVlLCBkYXRhLCBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIHx8IHt9LCByZWZzOiB0aGlzLnJlZkxpc3QgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gJ1NlbGVjdCcpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnRGF0ZVBpY2tlcicgfHwgdHlwZSA9PSAnUmFuZ2VQaWNrZXInKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZVN0ciA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbignZXZlbnRPcHRpb24nLCAnVXRpbHMnLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7ICAvL2Zvcm0uaXRlbSDkvb/nlKhpbnB1dOe7hOS7tmFsbG93Q2hhcnPlv4Xpobvpu5jorqR0cnVlLOS4jeeEtui+k+WFpeeJueauiuWtl+espuaLv+WIsOeahOWAvOS4jeWvuVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gJydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbVJlZjogYW55ID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKVxyXG4gICAgICAgIHRoaXMucmVmTGlzdFtpdGVtLm5hbWVdID0gaXRlbVJlZlxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgIT09ICdVcGxvYWQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKSA6IGdldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgIHJlZjogaXRlbVJlZixcclxuICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7IHNob3dEb3dubG9hZEljb246IHRydWUsIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gJ+afpeeciycgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW4gPyBpdGVtLnByb3BzPy5jaGlsZHJlbiA6IChsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pfVxyXG4gICAgPC9Sb3c+XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybXMgPSBbXSwgcHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnByb3BzLmZvcm1UeXBlID8gdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkgOiA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj57dGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCl9PC9kaXY+IDogT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+e3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoJ25zYy1mb3JtLXBhZ2UtZm9vdGVyJywgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWUpfT5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfSBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIH19PuWPlua2iDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyduc2MtZm9ybS1wYWdlLWZvb3Rlci1idG4nfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ30ga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0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
584
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsInJhbmdlckRhdGUiLCJkYXRlRm9ybWF0IiwiZSIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJuZXdWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDciLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJyZXF1ZXN0T2JqZWN0IiwicmVxdWVzdENvbmZpZyIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyIsInVybCIsInBhcmFtcyIsIlV0aWxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDkiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwidGhlbiIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsImZ1bmNzIiwicmVmcyIsInJlZkxpc3QiLCJ2YWx1ZVN0ciIsInNlbGZGdW5jIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInNwbGl0IiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwiYmluZCIsImRhdGFUeXBlIiwiZGlzYWJsZWQiLCJydWxlcyIsInJlcXVpcmVkIiwiaXRlbVJlZiIsIl9pdGVtJHByb3BzMiIsInNwYW4iLCJzdHlsZSIsImRpc3BsYXkiLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm5vU3R5bGUiLCJmb3JtUmVuZGVyIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2l0ZW0kcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsIndpZHRoIiwiZHJhd2VyUHJvcHMiLCJvbkNsb3NlIiwibmV3Rm9ybXNPYmoiLCJmb3JtR3JvdXBzIiwib3RoZXJHcnVwcyIsImdyb3VwTmFtZSIsImluZGV4T2YiLCJncm91cEZvcm1zIiwiZm9ybSIsInNlbGZCdXR0b25zIiwic2hvd01vZGVsIiwiZm9ybVR5cGUiLCJsYWJlbENvbCIsImZsZXgiLCJ3cmFwcGVyQ29sIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nO1xyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nO1xyXG4gICAgYWRkUGFyYW1zPzogYW55O1xyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55O1xyXG4gIH07XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55LFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBsZXQgbGFiZWwgPSBcIuaWsOWinlwiO1xyXG4gICAgaWYgKG9yZ1ZhbHVlICYmIGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIikge1xyXG4gICAgICBsYWJlbCA9IFwi57yW6L6RXCI7XHJcbiAgICB9IGVsc2UgaWYgKG9yZ1ZhbHVlICYmIChlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIgfHwgZWRpdG9yZmxhZyA9PSBcInNlYXJjaFwiKSkge1xyXG4gICAgICBsYWJlbCA9IFwi5p+l55yLXCI7XHJcbiAgICB9XHJcbiAgICBpZiAob3JnVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICB2YWx1ZTogb3JnVmFsdWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZShvcmdWYWx1ZSwgbGFiZWwpO1xyXG4gICAgICAgICAgLy/lpITnkIbmlofku7bmlbDmja5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZmlsZUxpc3RbaXRlbV0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFmb3JtVmFsdWVbaXRlbV0pIHtcclxuICAgICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KGZpbGVMaXN0W2l0ZW1dIHx8IFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCAuLi5uZXdGaWxlTGlzdCB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcIuivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlVmFsdWVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJhbmdlckRhdGVba2V5XSkge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzBdXSA9IGRheWpzKG9sZGRhdGFbMF0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkYXRhW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzFdXSA9IGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2tleV1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tpdGVtXTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KTtcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxuICB9XHJcbiAgc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGZvcm1kYXRhLCBsYWJlbCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBjYWxsQmFjayxcclxuICAgICAgcmVxdWVzdE9iamVjdCA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0O1xyXG4gICAgbGV0IHVybCA9IFwiXCI7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSBcIuaWsOWinlwiKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9IFwiZG9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgIT09IFwi5p+l55yLXCIgJiYgaXRlbS5zdGF0dXMgIT09IFwiZG9uZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgeyBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcyh2YWxpZClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRGb3JtVmFsdWUoKTtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsXHJcbiAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSxcclxuICAgICAgICAgIHJlZnM6IHRoaXMucmVmTGlzdCxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVPcHRpb24gPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIiB8fCB0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvblwiLCBcIlV0aWxzXCIsIHByb3BzLm9uQ2hhbmdlKTtcclxuICAgICAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiICYmIGl0ZW0ubmFtZS5zcGxpdChcIixcIikubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTsgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWY7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgbm9TdHlsZT17aXRlbS5ub1N0eWxlIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmZvcm1SZW5kZXIocHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSBcIuafpeeci1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1zID0gW10sIHByb3BzID0ge30sIGZvb3RlciA9IHRydWUsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgfVxyXG4gICAgLy/oh6rlrprkuYnmjInpkq5cclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYWdlXCI+XHJcbiAgICAgICAgICB7Zm9ybUdyb3Vwcy5sZW5ndGggPT0gMCA/IChcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JtVHlwZSA/IChcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhuZXdGb3Jtc09iaikubWFwKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7a2V5ICE9IFwibm9Hcm91cE5hbWVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgXCJuc2MtZm9ybS1wYWdlLWZvb3RlclwiLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWVcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuY2FuY2VsQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAge3NlbGZCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsU0FBa0JDLE9BQU8sUUFBUSxhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBd0I1QixNQUFNQyxRQUFRLFNBQVNaLGFBQWEsQ0FBcUI7RUFBQWEsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSwrQkFDN0NoQixLQUFLLENBQUNpQixTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLGdCQUN4QjtNQUNORSxPQUFPLEVBQUUsS0FBSztNQUNkQyxLQUFLLEVBQUUsRUFBRTtNQUNUQyxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsS0FBSyxFQUFFLENBQUMsQ0FBUTtNQUNoQkMsU0FBUyxFQUFFLENBQUMsQ0FBUTtN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