nsc-react-component 4.0.3 → 4.0.5
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.
- package/lib/base/cascader/index.js +2 -2
- package/lib/base/cascader/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +1 -0
- package/lib/page/BasePage/index.js +28 -26
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/index.module.less +1 -1
- package/lib/page/SettingTab/index.d.ts +9 -0
- package/lib/page/SettingTab/index.js +81 -0
- package/lib/page/SettingTab/index.js.map +1 -0
- package/lib/page/SettingTab/index.less +42 -0
- package/lib/page/SettingTable/index.d.ts +21 -3
- package/lib/page/SettingTable/index.js +323 -90
- package/lib/page/SettingTable/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -41,6 +41,7 @@ class BasePage extends PureComponent {
|
|
|
41
41
|
_defineProperty(this, "searchRef", /*#__PURE__*/React.createRef());
|
|
42
42
|
_defineProperty(this, "editorRef", /*#__PURE__*/React.createRef());
|
|
43
43
|
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
44
|
+
_defineProperty(this, "pageContentRef", /*#__PURE__*/React.createRef());
|
|
44
45
|
_defineProperty(this, "dateFormat", {});
|
|
45
46
|
_defineProperty(this, "onSelect", checkedTreeKeys => {
|
|
46
47
|
const {
|
|
@@ -93,20 +94,20 @@ class BasePage extends PureComponent {
|
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
96
|
componentDidMount() {
|
|
96
|
-
var _this$
|
|
97
|
+
var _this$pageContentRef$;
|
|
97
98
|
const {
|
|
98
99
|
initData,
|
|
99
100
|
permisson = {}
|
|
100
101
|
} = this.props;
|
|
101
|
-
const elementHeight = (_this$
|
|
102
|
+
const elementHeight = (_this$pageContentRef$ = this.pageContentRef.current) === null || _this$pageContentRef$ === void 0 ? void 0 : _this$pageContentRef$.clientHeight;
|
|
102
103
|
this.setState({
|
|
103
104
|
elementHeight
|
|
104
105
|
});
|
|
105
106
|
initData && initData();
|
|
106
107
|
}
|
|
107
108
|
componentDidUpdate() {
|
|
108
|
-
var _this$
|
|
109
|
-
const elementHeight = (_this$
|
|
109
|
+
var _this$pageContentRef$2;
|
|
110
|
+
const elementHeight = (_this$pageContentRef$2 = this.pageContentRef.current) === null || _this$pageContentRef$2 === void 0 ? void 0 : _this$pageContentRef$2.clientHeight;
|
|
110
111
|
if (elementHeight > this.state.elementHeight) {
|
|
111
112
|
this.setState({
|
|
112
113
|
elementHeight
|
|
@@ -767,12 +768,13 @@ class BasePage extends PureComponent {
|
|
|
767
768
|
title: tableTitle
|
|
768
769
|
} = tableProps,
|
|
769
770
|
othertableParams = _objectWithoutProperties(tableProps, _excluded7);
|
|
771
|
+
let newTableStore = _objectSpread({}, tableStore);
|
|
770
772
|
if (requestParams.queryParams) {
|
|
771
|
-
var
|
|
773
|
+
var _newTableStore$reques;
|
|
772
774
|
let queryParams = this.convertQueryParams();
|
|
773
775
|
let data = (queryParams === null || queryParams === void 0 ? void 0 : queryParams.data) || (queryParams === null || queryParams === void 0 ? void 0 : queryParams.params) || {};
|
|
774
|
-
|
|
775
|
-
params: _objectSpread(_objectSpread({}, data), (
|
|
776
|
+
newTableStore.requestConfig = {
|
|
777
|
+
params: _objectSpread(_objectSpread({}, data), (_newTableStore$reques = newTableStore.requestConfig) === null || _newTableStore$reques === void 0 ? void 0 : _newTableStore$reques.params)
|
|
776
778
|
};
|
|
777
779
|
}
|
|
778
780
|
const {
|
|
@@ -784,7 +786,7 @@ class BasePage extends PureComponent {
|
|
|
784
786
|
othertreeParams = _objectWithoutProperties(treeProps, _excluded8);
|
|
785
787
|
let tableParams = _objectSpread({
|
|
786
788
|
filterColumn,
|
|
787
|
-
store: _objectSpread({},
|
|
789
|
+
store: _objectSpread({}, newTableStore)
|
|
788
790
|
}, othertableParams);
|
|
789
791
|
let tableColumn = [];
|
|
790
792
|
const searchForms = [];
|
|
@@ -1102,23 +1104,22 @@ class BasePage extends PureComponent {
|
|
|
1102
1104
|
} = config();
|
|
1103
1105
|
let toolFlag = showToolButton && toolButtons.length > 0 && toolButtonPosition == "buttom";
|
|
1104
1106
|
let toolbarFlag = !(tableProps.toolbar == false || ((_tableProps$toolbar = tableProps.toolbar) === null || _tableProps$toolbar === void 0 ? void 0 : _tableProps$toolbar.show) == false || ((_tableProps$toolbar2 = tableProps.toolbar) === null || _tableProps$toolbar2 === void 0 || (_tableProps$toolbar2 = _tableProps$toolbar2.tools) === null || _tableProps$toolbar2 === void 0 ? void 0 : _tableProps$toolbar2.length) == 0 || (tableTool === null || tableTool === void 0 ? void 0 : tableTool.show) == false);
|
|
1105
|
-
let pageHeight = this.props.pageType == "tabspage" ? 63 : 0;
|
|
1106
1107
|
let tableHeaderHeight = 55;
|
|
1107
|
-
let
|
|
1108
|
-
let
|
|
1109
|
-
let
|
|
1110
|
-
let
|
|
1111
|
-
let tableHeight = tableContentHeight -
|
|
1112
|
-
let tableSrollHeight = tableContentHeight - tableHeaderHeight -
|
|
1113
|
-
if (tableProps.pagination !== false) {
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
}
|
|
1108
|
+
let toolHeight = tableTitle || toolFlag ? 50 : 0;
|
|
1109
|
+
let paddingHeight = 20 * 2; //上下间距
|
|
1110
|
+
let tableContentHeight = elementHeight - toolHeight - paddingHeight;
|
|
1111
|
+
let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距
|
|
1112
|
+
let tableHeight = tableContentHeight - PaginationHeight;
|
|
1113
|
+
let tableSrollHeight = tableContentHeight - tableHeaderHeight - PaginationHeight;
|
|
1114
|
+
// if (tableProps.pagination !== false) {
|
|
1115
|
+
const scroll = tableParams.scroll;
|
|
1116
|
+
tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
|
|
1117
|
+
scroll: _objectSpread({
|
|
1118
|
+
x: "max-content",
|
|
1119
|
+
y: tableSrollHeight
|
|
1120
|
+
}, scroll)
|
|
1121
|
+
});
|
|
1122
|
+
// }
|
|
1122
1123
|
return /*#__PURE__*/React.createElement("div", {
|
|
1123
1124
|
className: cls(getLess(styles, "nsc-basepage"), className),
|
|
1124
1125
|
ref: this.pageRef
|
|
@@ -1170,7 +1171,8 @@ class BasePage extends PureComponent {
|
|
|
1170
1171
|
})), /*#__PURE__*/React.createElement("div", {
|
|
1171
1172
|
className: cls(getLess(styles, "nsc-basepage-content"), {
|
|
1172
1173
|
[getLess(styles, "nsc-basepage-content-gap")]: !searchFlag
|
|
1173
|
-
})
|
|
1174
|
+
}),
|
|
1175
|
+
ref: this.pageContentRef
|
|
1174
1176
|
}, (tableTitle || toolFlag) && /*#__PURE__*/React.createElement("div", {
|
|
1175
1177
|
className: cls(getLess(styles, "nsc-basepage-table-title"), {
|
|
1176
1178
|
[getLess(styles, "nsc-basepage-title-width")]: !toolbarFlag
|
|
@@ -1257,4 +1259,4 @@ class BasePage extends PureComponent {
|
|
|
1257
1259
|
}
|
|
1258
1260
|
}
|
|
1259
1261
|
export default BasePage;
|
|
1260
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsIm5zY2ZpbGUiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfdHlwZSIsIl9zaXplIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInN0b3JlUHJlZml4IiwidHlwZSIsImNvbnRlbnQiLCJzaXplIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsImZvcm1UeXBlIiwidGFibGVTaXplIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiaWQiLCJmdW5jcyIsIlV0aWxzIiwiRXJyb3IiLCJkYXRhUGFyYW1zIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwiYXV0b1ByZWZpeCIsImpvaW4iLCJmaW5hbFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjMiLCJkZWZhdWx0UmVxdWVzdENvbmZpZyIsInRhYmxlUHJvcHMiLCJzdG9yZSIsInRhYmxlU3RvcmUiLCJmdW5jIiwiRnVuY3Rpb24iLCJjb252ZXJQYXJhbXMiLCJyZXF1ZXN0Q29uaWciLCJzdG9yZUNvbmZpZyIsInN0b3JlUGFyYW1zIiwib3RoZXJTdG9yZUNvbmZpZyIsIl9leGNsdWRlZDIiLCJsb2FkIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvMiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzMiLCJvblF1ZXJ5Q2FsbEJhY2siLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjQiLCJhdXRvTG9hZCIsInJlbG9hZCIsImNhbGxiYWNrIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsInRyZWVMb2FkIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43Iiwic2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW45IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMCIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9leGNsdWRlZDMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInRpdGxlIiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2YWwiLCJwdXNoIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkNSIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDYiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwib25FZGl0b3JDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsImZvcm1QYWdlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28zIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJfdGVtcCRzZWFyY2giLCJfdGVtcCRwcm9wcyIsIl90ZW1wJHByb3BzMiIsIl90ZW1wUHJvcCRkYXRhIiwiX3RlbXAiLCJfdGVtcDIiLCJfdGVtcDMiLCJ0ZW1wIiwid2lkdGgiLCJzZWFyY2giLCJfdGVtcCRzZWFyY2gyIiwiX3RlbXAkc2VhcmNoMyIsIl90ZW1wJHNlYXJjaDQiLCJvbkNoYW5nZSIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsInJlcXVpcmVkIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsIl90ZXh0IiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsZXMiLCJfZmlsZXMkIiwiZG93bmxvYWQiLCJmaWxlSWQiLCJmaWxlTmFtZSIsImZpbGVJZHMiLCJkb3dubG9hZFppcCIsIl9maWxlcyQyIiwidG9vbEJ1dHRvbnMiLCJidXR0b25NYXAiLCJkZWxldGUiLCJyZXR1cm5CdXR0b24iLCJfYnV0dG9uTWFwJGNvZGUiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEzIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25TZWFyY2hDYWxsQmFjayIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTQiLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiYmluZCIsImRhbmdlciIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiaGVpZ2h0IiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsImUiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM3Iiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgRm9ybVBhZ2VQcm9wcyB7fVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgICB8IEFycmF5PHN0cmluZz5cclxuICAgIHwgQXJyYXk8eyBjb2RlOiBzdHJpbmc7IHJlY29yZFNob3c/OiBzdHJpbmcgfCBGdW5jdGlvbiB9PjsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG4gIGZvcm1QYWdlUHJvcHM/OiB7fTtcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICB9O1xyXG4gIHBlcm1pc3Npb24/OiB7XHJcbiAgICBoYXM/OiBib29sZWFuO1xyXG4gICAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgfTtcclxuICByZXF1ZXN0UGFyYW1zPzoge1xyXG4gICAgLy/pnIDopoHpop3lpJbkvKDnmoTlm7rlrpror7fmsYLlj4LmlbBcclxuICAgIGFkZFBhcmFtcz86IE9iamVjdDsgLy/mlrDlop7lm7rlrprlj4LmlbBcclxuICAgIGVkaXRvclBhcmFtcz86IE9iamVjdDsgLy/nvJbovpHlm7rlrprlj4LmlbBcclxuICAgIHF1ZXJ5UGFyYW1zPzogT2JqZWN0OyAvL+afpeivouWbuuWumuWPguaVsFxyXG4gICAgZGVsZXRlUGFyYW1zPzogT2JqZWN0OyAvL+WIoOmZpOWbuuWumuWPguaVsFxyXG4gIH07XHJcbiAgcmVxdWVzdFVybHM/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmc7IC8v5paw5aKedXJsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmc7IC8v57yW6L6RdXJsXHJcbiAgICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgfTtcclxuICBmdW5jcz86IGFueTtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KG5ld1ZhbHVlLCBlZGl0b3JmbGFnKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zID0ge30sXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93RGF0YXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICAgIGxldCB1cmwgPSByZXF1ZXN0VXJscy5kZWxldGVVcmwgPyByZXF1ZXN0VXJscy5kZWxldGVVcmwgOiBkZWxldGVVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA/IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgIDogZGVsZXRlUGFyYW1zO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChidXR0b25DbGljay5vbkRlbGV0ZSkge1xyXG4gICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRGVsZXRlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0RhdGFzIDogZGF0YSxcclxuICAgICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBkYXRhOiBkYXRhUGFyYW1zID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgICAgLi4uZGF0YVBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGZpbmFsUGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGZpbmFsUGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5vdGhlclBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XHJcbiAgICAgICAgICAuLi5maW5hbFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmaW5hbFBhcmFtcyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICB0YWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4udGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHRlbXAucHJvcHMgPyB7IC4uLnRlbXAucHJvcHMgfSA6IHt9O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5vbkNoYW5nZTtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogcHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0ZW1wLnJlcXVpcmVkLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG5cclxuICAgICAgaWYgKHRlbXBQcm9wPy5kYXRhICYmIHRlbXBQcm9wPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB7IHNob3dUaXRsZTogZmFsc2UgfSxcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcblxyXG4gICAgICAvLyBpZiAodGVtcC5yZW5kZXIgJiYgdHlwZW9mIHRlbXAucmVuZGVyID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vICAgbGV0IHJlbmRldFN0ciA9IHRlbXAucmVuZGVyXHJcbiAgICAgIC8vICAgdGVtcCA9IHtcclxuICAgICAgLy8gICAgIC4uLnRlbXAsXHJcbiAgICAgIC8vICAgICByZW5kZXI6ICh0ZXh0LCByZWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24ocmVuZGV0U3RyKVxyXG4gICAgICAvLyAgICAgICByZXR1cm4gZnVuYygpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJVcGxvYWRcIiAmJiB0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6IChfdGV4dCwgcmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZFt0ZW1wLmRhdGFJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSByZWNvcmRbdGVtcC5kYXRhSW5kZXhdO1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWQoZmlsZXNbMF0uZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVzWzBdPy5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlSWRzID0gW10gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZHMucHVzaChpdGVtLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWRaaXAoZmlsZUlkcy5qb2luKFwiLFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtcIuaWh+S7tuS4i+i9vVwifVxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJJbWFnZVwiICYmIHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCByZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkW3RlbXAuZGF0YUluZGV4XSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHJlY29yZFt0ZW1wLmRhdGFJbmRleF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1iYXNlcGFnZS10YWJsZS1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZXNbMF0/LmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9e1wibGlua1wifSBvbkNsaWNrPXsoKSA9PiB7fX0+XHJcbiAgICAgICAgICAgICAgICAgICAg5Zu+54mH5p+l55yLXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIC8vIGFkZDogeyBuYW1lOiBcIuaWsOWinlwiLCBjb2RlOiBcImFkZFwiLCBpY29uOiA8UGx1c091dGxpbmVkIC8+IH0sXHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIikgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7fTtcclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgY29kZSA9PSBcInNlYXJjaFwiICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249e3Nob3dJY29uID8gYnV0dG9uTWFwW2NvZGVdLmljb24gOiBudWxsfVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZVwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKHJldHVybkJ1dHRvbihpdGVtLmNvZGUgfHwgaXRlbSwgaXRlbS5yZWNvcmRTaG93KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLCBpdGVtLnJlY29yZFNob3cpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHBhZ2VIZWlnaHQgPSB0aGlzLnByb3BzLnBhZ2VUeXBlID09IFwidGFic3BhZ2VcIiA/IDYzIDogMDtcclxuICAgIGxldCB0YWJsZUhlYWRlckhlaWdodCA9IDU1O1xyXG5cclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwO1xyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNDggOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyNTtcclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gaGVhZGVySGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQgLSBwYWdlSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gdGFibGVIZWFkZXJIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICB7Li4uZm9ybVByb3BzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUF5QixtQkFBbUI7QUFDN0QsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFHNUIsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsY0FBYyxRQUNULG1CQUFtQjtBQUMxQixTQUFTQyxjQUFjLEVBQUVDLE9BQU8sUUFBaUIsYUFBYTtBQUM5RCxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUNqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLEVBQVNDLG1CQUFtQixRQUFRLG1CQUFtQjtBQUMxRSxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBRTFDLE9BQU9DLE9BQU8sTUFBTSxVQUFVO0FBVTlCLE1BQU1DLE1BQU0sR0FBRyxJQUFJO0FBeUZuQixNQUFNQyxRQUFRLFNBQVN6QixhQUFhLENBQXdCO0VBTzFEMEIsV0FBV0EsQ0FBQ0MsS0FBVSxF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
|
|
1262
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsIm5zY2ZpbGUiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfdHlwZSIsIl9zaXplIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInN0b3JlUHJlZml4IiwidHlwZSIsImNvbnRlbnQiLCJzaXplIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsImZvcm1UeXBlIiwidGFibGVTaXplIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VDb250ZW50UmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkMiIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0Rm9ybVZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0Rm9ybVZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJidXR0b25DbGljayIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0VXJscyIsInJlcXVlc3RDb25maWciLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInVybCIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsInBhZ2VSZWYiLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZhbCIsInB1c2giLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJvbkVkaXRvckNhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMSIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudDIiLCJjb252ZXJ0UXVlcnlQYXJhbXMiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwiZm9ybVBhZ2VQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXBQcm9wJGRhdGEiLCJfdGVtcCIsIl90ZW1wMiIsIl90ZW1wMyIsInRlbXAiLCJ3aWR0aCIsInNlYXJjaCIsIl90ZW1wJHNlYXJjaDIiLCJfdGVtcCRzZWFyY2gzIiwiX3RlbXAkc2VhcmNoNCIsIm9uQ2hhbmdlIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwicmVxdWlyZWQiLCJfdGVtcCRwcm9wczMiLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsInRlbXBQcm9wIiwiZWxsaXBzaXMiLCJzaG93VGl0bGUiLCJjb2x1bW5TaG93IiwiX3RleHQiLCJBcnJheSIsImlzQXJyYXkiLCJmaWxlcyIsIl9maWxlcyQiLCJkb3dubG9hZCIsImZpbGVJZCIsImZpbGVOYW1lIiwiZmlsZUlkcyIsImRvd25sb2FkWmlwIiwiX2ZpbGVzJDIiLCJ0b29sQnV0dG9ucyIsImJ1dHRvbk1hcCIsImRlbGV0ZSIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYSIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTMiLCJvbkVkaXRvciIsIl90aGlzMiRwcm9wcyRvbkNhbGxCYTIiLCJvblNlYXJjaENhbGxCYWNrIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhNCIsImNoZWNrUGVyc3Npb24iLCJpbmRleE9mIiwib25BZGQiLCJiaW5kIiwiZGFuZ2VyIiwiY2hpbGQiLCJfY2hpbGQkcHJvcHMiLCJfY2hpbGQkcHJvcHMyIiwiX2NoaWxkJHByb3BzMyIsIl9jaGlsZCRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJfaXRlbSRwcm9wczciLCJfaXRlbSRwcm9wczgiLCJhbGlnbiIsInRleHRBbGlnbiIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidGFibGVIZWFkZXJIZWlnaHQiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvblN1bWJpdENhbGxCYWNrIiwiZm9ybXMiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsInJlcXVlc3RPYmplY3QiLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0sIHsgRm9ybVBhZ2VQcm9wcyB9IGZyb20gXCIuLi9Gb3JtUGFnZS9pbmRleFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uLCBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgfCBBcnJheTxzdHJpbmc+XHJcbiAgfCBBcnJheTx7IGNvZGU6IHN0cmluZzsgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uIH0+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZpbmFsUGFyYW1zKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBwYXJhbXM6IHBhcmFtcyB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdHJlZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGtleSA9IHJvd0tleShpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAga2V5ID0gaXRlbVtyb3dLZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAga2V5ID0gcm93S2V5KHJlY29yZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrZXkgPSByZWNvcmRbcm93S2V5XTtcclxuICAgIH1cclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH1cclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4ubmV3VGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHRlbXAucHJvcHMgPyB7IC4uLnRlbXAucHJvcHMgfSA6IHt9O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5vbkNoYW5nZTtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogcHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0ZW1wLnJlcXVpcmVkLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG5cclxuICAgICAgaWYgKHRlbXBQcm9wPy5kYXRhICYmIHRlbXBQcm9wPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB7IHNob3dUaXRsZTogZmFsc2UgfSxcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcblxyXG4gICAgICAvLyBpZiAodGVtcC5yZW5kZXIgJiYgdHlwZW9mIHRlbXAucmVuZGVyID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIC8vICAgbGV0IHJlbmRldFN0ciA9IHRlbXAucmVuZGVyXHJcbiAgICAgIC8vICAgdGVtcCA9IHtcclxuICAgICAgLy8gICAgIC4uLnRlbXAsXHJcbiAgICAgIC8vICAgICByZW5kZXI6ICh0ZXh0LCByZWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24ocmVuZGV0U3RyKVxyXG4gICAgICAvLyAgICAgICByZXR1cm4gZnVuYygpXHJcbiAgICAgIC8vICAgICB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJVcGxvYWRcIiAmJiB0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6IChfdGV4dCwgcmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZFt0ZW1wLmRhdGFJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSByZWNvcmRbdGVtcC5kYXRhSW5kZXhdO1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWQoZmlsZXNbMF0uZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVzWzBdPy5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlSWRzID0gW10gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZHMucHVzaChpdGVtLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWRaaXAoZmlsZUlkcy5qb2luKFwiLFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtcIuaWh+S7tuS4i+i9vVwifVxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJJbWFnZVwiICYmIHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCByZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkW3RlbXAuZGF0YUluZGV4XSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHJlY29yZFt0ZW1wLmRhdGFJbmRleF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1iYXNlcGFnZS10YWJsZS1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZXNbMF0/LmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9e1wibGlua1wifSBvbkNsaWNrPXsoKSA9PiB7IH19PlxyXG4gICAgICAgICAgICAgICAgICAgIOWbvueJh+afpeeci1xyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgdG9vbEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgYnV0dG9uTWFwID0ge1xyXG4gICAgICAvLyBhZGQ6IHsgbmFtZTogXCLmlrDlop5cIiwgY29kZTogXCJhZGRcIiwgaWNvbjogPFBsdXNPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBlZGl0b3I6IHsgbmFtZTogXCLnvJbovpFcIiwgY29kZTogXCJlZGl0b3JcIiwgaWNvbjogPEVkaXRPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBkZWxldGU6IHsgbmFtZTogXCLliKDpmaRcIiwgY29kZTogXCJkZWxldGVcIiwgaWNvbjogPERlbGV0ZU91dGxpbmVkIC8+IH0sXHJcbiAgICAgIHNlYXJjaDogeyBuYW1lOiBcIuafpeeci1wiLCBjb2RlOiBcInNlYXJjaFwiLCBpY29uOiA8RXllT3V0bGluZWQgLz4gfSxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXR1cm5CdXR0b24gPSAoY29kZSwgc2hvdyA9IFwiXCIpID0+IHtcclxuICAgICAgbGV0IHByb3BzID0ge307XHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IHJlY29yZFNob3c6IHNob3cgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PSBcImRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChjb2RlID09IFwiZWRpdG9yXCIgJiYgYnV0dG9uQ2xpY2sub25FZGl0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkVkaXRvcixcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSBcInNlYXJjaFwiICYmIGJ1dHRvbkNsaWNrLm9uU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25TZWFyY2gsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBjb2RlID09IFwiZWRpdG9yXCIgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2tcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJzZWFyY2hcIiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFja1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXtzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbH1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZVwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZVwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChyZXR1cm5CdXR0b24oaXRlbS5jb2RlIHx8IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSwgaXRlbS5yZWNvcmRTaG93KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodDtcclxuICAgIGxldCBQYWdpbmF0aW9uSGVpZ2h0ID0gdGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSA/ICgzMiArIDE2KSA6IDAgLy8zMiDkuLrliIbpobXlmajpq5jluqYsMTbkuLptYXJnaW7pl7Tot51cclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICB7Li4uZm9ybVByb3BzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUF5QixtQkFBbUI7QUFDN0QsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFHNUIsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsY0FBYyxRQUNULG1CQUFtQjtBQUMxQixTQUFTQyxjQUFjLEVBQUVDLE9BQU8sUUFBaUIsYUFBYTtBQUM5RCxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUNqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLEVBQVNDLG1CQUFt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
|