nsc-react-component 3.2.6 → 3.2.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.
@@ -113,6 +113,11 @@ class BasePage extends PureComponent {
113
113
  (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 || _this$searchRef$curre.setSearchParams(params);
114
114
  callBack && callBack(params);
115
115
  }
116
+ doSubmit(data) {
117
+ var _this$editorRef$curre;
118
+ let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "编辑";
119
+ (_this$editorRef$curre = this.editorRef.current) === null || _this$editorRef$curre === void 0 || _this$editorRef$curre.doSubmit(data, label);
120
+ }
116
121
  //显示表单
117
122
  showForm(value) {
118
123
  var _this$editorRef;
@@ -123,20 +128,20 @@ class BasePage extends PureComponent {
123
128
 
124
129
  //关闭表单
125
130
  hideForm() {
126
- var _this$editorRef$curre;
127
- (_this$editorRef$curre = this.editorRef.current) === null || _this$editorRef$curre === void 0 || _this$editorRef$curre.hideForm();
131
+ var _this$editorRef$curre2;
132
+ (_this$editorRef$curre2 = this.editorRef.current) === null || _this$editorRef$curre2 === void 0 || _this$editorRef$curre2.hideForm();
128
133
  }
129
134
  setLoading(loading) {
130
- var _this$editorRef$curre2;
131
- (_this$editorRef$curre2 = this.editorRef.current) === null || _this$editorRef$curre2 === void 0 || _this$editorRef$curre2.setLoading(loading);
135
+ var _this$editorRef$curre3;
136
+ (_this$editorRef$curre3 = this.editorRef.current) === null || _this$editorRef$curre3 === void 0 || _this$editorRef$curre3.setLoading(loading);
132
137
  }
133
138
  setEditFormValues(value) {
134
- var _this$editorRef$curre3;
135
- (_this$editorRef$curre3 = this.editorRef.current) === null || _this$editorRef$curre3 === void 0 || _this$editorRef$curre3.setFieldsValue(value);
139
+ var _this$editorRef$curre4;
140
+ (_this$editorRef$curre4 = this.editorRef.current) === null || _this$editorRef$curre4 === void 0 || _this$editorRef$curre4.setFieldsValue(value);
136
141
  }
137
142
  getEditFormValues() {
138
- var _this$editorRef$curre4;
139
- return (_this$editorRef$curre4 = this.editorRef.current) === null || _this$editorRef$curre4 === void 0 ? void 0 : _this$editorRef$curre4.getFieldsValue();
143
+ var _this$editorRef$curre5;
144
+ return (_this$editorRef$curre5 = this.editorRef.current) === null || _this$editorRef$curre5 === void 0 ? void 0 : _this$editorRef$curre5.getFieldsValue();
140
145
  }
141
146
 
142
147
  //批量删除
@@ -245,9 +250,17 @@ class BasePage extends PureComponent {
245
250
  var _this$tableRef$curren6;
246
251
  return (_this$tableRef$curren6 = this.tableRef.current) === null || _this$tableRef$curren6 === void 0 ? void 0 : _this$tableRef$curren6.getSelectedRowDatas();
247
252
  }
248
- resetSelectedRowKeys() {
253
+ setSelectedRowKeys(data) {
249
254
  var _this$tableRef$curren7;
250
- return (_this$tableRef$curren7 = this.tableRef.current) === null || _this$tableRef$curren7 === void 0 ? void 0 : _this$tableRef$curren7.resetSelectedRowKeys();
255
+ return (_this$tableRef$curren7 = this.tableRef.current) === null || _this$tableRef$curren7 === void 0 ? void 0 : _this$tableRef$curren7.setSelectedRowKeys(data);
256
+ }
257
+ setSelectedRowDatas(data) {
258
+ var _this$tableRef$curren8;
259
+ return (_this$tableRef$curren8 = this.tableRef.current) === null || _this$tableRef$curren8 === void 0 ? void 0 : _this$tableRef$curren8.setSelectedRowDatas(data);
260
+ }
261
+ resetSelectedRowKeys() {
262
+ var _this$tableRef$curren9;
263
+ return (_this$tableRef$curren9 = this.tableRef.current) === null || _this$tableRef$curren9 === void 0 ? void 0 : _this$tableRef$curren9.resetSelectedRowKeys();
251
264
  }
252
265
  getSearchValues() {
253
266
  var _this$searchRef2;
@@ -582,8 +595,8 @@ class BasePage extends PureComponent {
582
595
  return newText;
583
596
  }
584
597
  setTableData(data) {
585
- var _this$tableRef$curren8;
586
- (_this$tableRef$curren8 = this.tableRef.current) === null || _this$tableRef$curren8 === void 0 || (_this$tableRef$curren8 = _this$tableRef$curren8.store) === null || _this$tableRef$curren8 === void 0 || _this$tableRef$curren8.setData(data);
598
+ var _this$tableRef$curren10;
599
+ (_this$tableRef$curren10 = this.tableRef.current) === null || _this$tableRef$curren10 === void 0 || (_this$tableRef$curren10 = _this$tableRef$curren10.store) === null || _this$tableRef$curren10 === void 0 || _this$tableRef$curren10.setData(data);
587
600
  }
588
601
  setTreeData(data) {
589
602
  var _this$treeRef$current;
@@ -713,21 +726,21 @@ class BasePage extends PureComponent {
713
726
  }
714
727
  this.showForm(record.attribute || record, "detail");
715
728
  },
716
- icon: /*#__PURE__*/React.createElement(EyeOutlined, null),
729
+ icon: showIcon ? /*#__PURE__*/React.createElement(EyeOutlined, null) : null,
717
730
  type: "link"
718
731
  }, "\u67E5\u770B"));
719
- if (buttons.indexOf("editor") > -1) {
720
- columnButtons.push( /*#__PURE__*/React.createElement(Button, {
721
- onClick: record => {
722
- if (onShowForm) {
723
- onShowForm(record.attribute || record, "editor");
724
- return;
725
- }
726
- this.showForm(record.attribute || record, "editor");
727
- },
728
- icon: /*#__PURE__*/React.createElement(EditOutlined, null)
729
- }, "\u7F16\u8F91"));
730
- }
732
+ }
733
+ if (buttons.indexOf("editor") > -1) {
734
+ columnButtons.push( /*#__PURE__*/React.createElement(Button, {
735
+ onClick: record => {
736
+ if (onShowForm) {
737
+ onShowForm(record.attribute || record, "editor");
738
+ return;
739
+ }
740
+ this.showForm(record.attribute || record, "editor");
741
+ },
742
+ icon: showIcon ? /*#__PURE__*/React.createElement(EditOutlined, null) : null
743
+ }, "\u7F16\u8F91"));
731
744
  }
732
745
  if (buttons.indexOf("add") > -1) {
733
746
  selfButtons.push( /*#__PURE__*/React.createElement(Button, {
@@ -960,4 +973,4 @@ class BasePage extends PureComponent {
960
973
  }
961
974
  }
962
975
  export default BasePage;
963
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJkYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwiRXJyb3IiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImlkcyIsImpvaW4iLCJpZCIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwicmVxdWVzdENvbmZpZyIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImF1dG9Mb2FkIiwicmVsb2FkIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInRpdGxlIiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDQiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJsYWJlbCIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ1IiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ2IiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJfdGVtcCRzZWFyY2giLCJfdGVtcCRwcm9wcyIsIl90ZW1wJHByb3BzMiIsIl90ZW1wUHJvcCRkYXRhIiwiX3RlbXAiLCJ0ZW1wIiwid2lkdGgiLCJzZWFyY2giLCJfdGVtcCRzZWFyY2gyIiwiX3RlbXAkc2VhcmNoMyIsIl90ZW1wJHNlYXJjaDQiLCJmaWVsZCIsImRhdGFJbmRleCIsImxhYmVsQ29sIiwid3JhcHBlckNvbCIsInJ1bGVzIiwic2VhcmNoUnVsZXMiLCJlZGl0b3IiLCJzcGFuIiwiZGljdE5hbWUiLCJfdGVtcCRwcm9wczMiLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsInRlbXBQcm9wIiwiZWxsaXBzaXMiLCJzaG93VGl0bGUiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJfaXRlbSRwcm9wczciLCJhbGlnbiIsInRleHRBbGlnbiIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwicGFnZUhlaWdodCIsInRhYmxlSGVhZGVySGVpZ2h0IiwiaGVhZGVySGVpZ2h0IiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJ0YWJsZUhlaWdodCIsInRhYmxlU3JvbGxIZWlnaHQiLCJwYWdpbmF0aW9uIiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsInNlYXJjaEZvcm1Qcm9wcyIsImhlaWdodCIsImV4cGFuZEljb24iLCJfcmVmIiwiX3JlY29yZCRjaGlsZE5vZGVzIiwiX3JlY29yZCRjaGlsZE5vZGVzMiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2Iiwib25TdW1iaXRDYWxsQmFjayIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwib3RoZXJQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TZWFyY2hDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywgaXRlbVtyb3dLZXldXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGRhdGFbcm93S2V5XV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgLy8gdG9vbGJ1dHRvbnMgPSBbLi4udG9vbGJ1dHRvbnNdLnJldmVyc2UoKTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1tyZWNvcmQuaWRdIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICBvYmosXHJcbiAgICAgIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuXHJcbiAgICAgIGlmICh0ZW1wUHJvcD8uZGF0YSAmJiB0ZW1wUHJvcD8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG5cclxuICAgICAgLy8gdGVtcC5lbGxpcHNpcyA9IHRydWU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICDmn6XnnItcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInJvd1wiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCJcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcGFnZUhlaWdodCA9IHRoaXMucHJvcHMucGFnZVR5cGUgPT0gXCJ0YWJzcGFnZVwiID8gNjMgOiAwO1xyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcblxyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA0OCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDI1O1xyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodCAtIHBhZ2VIZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBTSxRQUFRO0FBQy9CLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRTVCLFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFDN0MsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZ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
976
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQyIiwiZXZhbCIsInB1c2giLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQzIiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcFByb3AkZGF0YSIsIl90ZW1wIiwidGVtcCIsIndpZHRoIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0gZnJvbSBcIi4vRm9ybVwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBweDJ2dyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBudW1iZXIgfSBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBJRm9ybVByb3BzIHt9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQXJyYXk8c3RyaW5nPjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiKSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZSA/IHsgLi4udmFsdWUgfSA6IG51bGw7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2gsIG9uQ2FsbEJhY2tzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssIHRoaXMsIFtwYXJhbXNdKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIC8vIHRvb2xidXR0b25zID0gWy4uLnRvb2xidXR0b25zXS5yZXZlcnNlKCk7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNbcmVjb3JkLmlkXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuXHJcbiAgICAgIGlmICh0ZW1wUHJvcD8uZGF0YSAmJiB0ZW1wUHJvcD8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG5cclxuICAgICAgLy8gdGVtcC5lbGxpcHNpcyA9IHRydWU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17c2hvd0ljb24gPyA8RXllT3V0bGluZWQgLz4gOiBudWxsfVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIOafpeeci1xyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17c2hvd0ljb24gPyA8RWRpdE91dGxpbmVkIC8+IDogbnVsbH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDnvJbovpFcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBwYWdlSGVpZ2h0ID0gdGhpcy5wcm9wcy5wYWdlVHlwZSA9PSBcInRhYnNwYWdlXCIgPyA2MyA6IDA7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuXHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDQ4IDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjU7XHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIGhlYWRlckhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gcGFnZUhlaWdodDtcclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUFNLFFBQVE7QUFDL0IsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFFNUIsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sUUFBaUIsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUVqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLFFBQWUsbUJBQW1CO0FBRXJELE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFZMUMsTUFBTUMsTUFBTSxHQUFHLElBQUk7QUEwRG5CLE1BQU1DLFFBQVEsU0FBU3ZCLGFBQWEsQ0FBd0I7RUFPMUR3QixXQUFXQSxDQUFDQyxLQUFVLEVBQUU7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLEtBQUE7SUFDdEIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FQSjdCLEtBQUssQ0FBQzhCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsK0JBQ3ZCN0Is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