nsc-react-component 4.0.19 → 4.0.20
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/modal/index.js +9 -2
- package/lib/base/modal/index.js.map +1 -1
- package/lib/base/table/index.js +27 -17
- package/lib/base/table/index.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +5 -0
- package/lib/page/BasePage/index.js +15 -21
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/index.module.less +1 -0
- package/lib/page/BasePage/utils.js +83 -24
- package/lib/page/BasePage/utils.js.map +1 -1
- package/lib/page/FormPage/index.js +6 -4
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.js +3 -1
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/package.json +1 -1
package/lib/base/table/index.js
CHANGED
|
@@ -39,12 +39,11 @@ const {
|
|
|
39
39
|
import withZhLocale from "../common/withZhLocale";
|
|
40
40
|
import { Resizable } from "react-resizable";
|
|
41
41
|
import "./resize.module.less";
|
|
42
|
-
import { getLess, getNode
|
|
42
|
+
import { getLess, getNode } from "../../utils";
|
|
43
43
|
import NoData from "../../base/common/NoData";
|
|
44
44
|
import { getStorage } from "@bj-nsc/functions";
|
|
45
45
|
import config from "../../config";
|
|
46
46
|
import cls from "classnames";
|
|
47
|
-
import isEqual from 'lodash/isEqual';
|
|
48
47
|
const styles = null;
|
|
49
48
|
|
|
50
49
|
// interface StoreProps {}
|
|
@@ -240,30 +239,27 @@ class NSCTable extends React.Component {
|
|
|
240
239
|
}
|
|
241
240
|
componentDidUpdate(prevProps, preState) {
|
|
242
241
|
const {
|
|
243
|
-
resizeColumn
|
|
244
|
-
columns,
|
|
245
|
-
size
|
|
242
|
+
resizeColumn
|
|
246
243
|
} = this.props;
|
|
247
|
-
const prevSimple = simplifyColumns(prevProps.columns);
|
|
248
|
-
const currentSimple = simplifyColumns(columns);
|
|
249
244
|
if (!resizeColumn) {
|
|
250
|
-
if (
|
|
245
|
+
if (this.props.columns !== prevProps.columns) {
|
|
251
246
|
this.setState({
|
|
252
|
-
columns: columns
|
|
247
|
+
columns: this.props.columns
|
|
253
248
|
});
|
|
254
249
|
}
|
|
255
250
|
} else {
|
|
256
|
-
if (
|
|
251
|
+
if (preState.cols !== this.state.cols) {
|
|
257
252
|
this.resetColumn();
|
|
258
253
|
}
|
|
259
|
-
if (
|
|
254
|
+
if (this.props.columns !== prevProps.columns) {
|
|
260
255
|
this.setState({
|
|
261
|
-
cols: columns
|
|
256
|
+
cols: this.props.columns,
|
|
257
|
+
columns: this.props.columns
|
|
262
258
|
});
|
|
263
259
|
}
|
|
264
|
-
if (
|
|
260
|
+
if (prevProps.size !== this.props.size) {
|
|
265
261
|
this.setState({
|
|
266
|
-
tableSize: size
|
|
262
|
+
tableSize: this.props.size
|
|
267
263
|
});
|
|
268
264
|
}
|
|
269
265
|
}
|
|
@@ -476,15 +472,29 @@ class NSCTable extends React.Component {
|
|
|
476
472
|
sortInfo
|
|
477
473
|
} = this.state;
|
|
478
474
|
const {
|
|
479
|
-
sortFields = []
|
|
475
|
+
sortFields = [],
|
|
476
|
+
size = 'large'
|
|
480
477
|
} = this.props;
|
|
481
478
|
const defaultShowCols = columns.filter(cols => cols.initShow !== false);
|
|
479
|
+
let colWidthObj = {
|
|
480
|
+
'size': 16,
|
|
481
|
+
'middle': 16,
|
|
482
|
+
'large': 32
|
|
483
|
+
};
|
|
482
484
|
const cols = defaultShowCols.map((col, index) => {
|
|
483
485
|
if (col.ellipsis && !col.render) {
|
|
484
486
|
col.ellipsis = {
|
|
485
487
|
showTitle: false
|
|
486
488
|
};
|
|
487
489
|
col.render = text => {
|
|
490
|
+
let colWidth = '100%';
|
|
491
|
+
if (col.width) {
|
|
492
|
+
if (col.width > colWidthObj[size]) {
|
|
493
|
+
colWidth = col.width - colWidthObj[size];
|
|
494
|
+
} else {
|
|
495
|
+
colWidth = col.width;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
488
498
|
return /*#__PURE__*/React.createElement("div", {
|
|
489
499
|
style: {
|
|
490
500
|
display: "inline-table"
|
|
@@ -493,7 +503,7 @@ class NSCTable extends React.Component {
|
|
|
493
503
|
title: text,
|
|
494
504
|
className: getLess(styles, "nsc-table-text"),
|
|
495
505
|
style: {
|
|
496
|
-
width:
|
|
506
|
+
width: colWidth || "100%"
|
|
497
507
|
}
|
|
498
508
|
}, text));
|
|
499
509
|
};
|
|
@@ -1012,4 +1022,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
1012
1022
|
}
|
|
1013
1023
|
});
|
|
1014
1024
|
export default withZhLocale(NSCTable);
|
|
1015
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsInNpbXBsaWZ5Q29sdW1ucyIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJpc0VxdWFsIiwic3R5bGVzIiwiUmVzaXplYWJsZVRpdGxlIiwicHJvcHMiLCJvblJlc2l6ZSIsIndpZHRoIiwicmVzdFByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiY3JlYXRlRWxlbWVudCIsImhlaWdodCIsImRyYWdnYWJsZU9wdHMiLCJlbmFibGVVc2VyU2VsZWN0SGFjayIsIk5TQ1RhYmxlIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJfYXV0b1R5cGUiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsIl9yZWYiLCJzaXplIiwiY29scyIsInN0YXRlIiwibmV4dENvbHVtbnMiLCJfb2JqZWN0U3ByZWFkIiwic2V0U3RhdGUiLCJldiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJfdGhpcyIsImV2ZW50VHlwZSIsInBheWxvYWQiLCJ0YWJsZVNpemUiLCJkcmFnSW5kZXgiLCJob3ZlckluZGV4IiwiZHJhZyIsInRhcmdldCIsImRyYWdOb2RlIiwicmVjb3JkIiwidGFyZ2V0Tm9kZSIsIm1vdmVBcnJheSIsImlkcyIsInBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVJZHMiLCJwYXJhbXMiLCJpZCIsInBhcmVudElkIiwiYXR0cmlidXRlIiwibW92ZVJvdyIsInN0b3JlIiwicmVsb2FkIiwibW9kYWwiLCJ0eXBlIiwic3RvcmVQcmVmaXgiLCJhdXRvVHlwZSIsImNvbnRlbnQiLCJkYXRhU291cmNlIiwiY29sdW1ucyIsImxvYWRpbmciLCJwYWdpbmF0aW9uIiwiYWN0aXZlSW5kZXgiLCJzZWFyY2hUZXh0IiwiZmllbGRPcHRpb24iLCJzZWFyY2hDb2xvciIsInNvcnRzIiwiZmlsdGVyUGFyYW1zIiwic29ydFR5cGUiLCJzb3J0ZXIiLCJzb3J0SW5mbyIsImRlZmF1bHRTb3J0IiwiY2hlY2tDb2x1bW4iLCJkZWZhdWx0Q2hlY2siLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwiZmlsdGVyIiwiZXh0cmEiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicHJldlNpbXBsZSIsImN1cnJlbnRTaW1wbGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJnZXRDb2x1bW5zIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsInN0eWxlIiwiZGlzcGxheSIsInRpdGxlIiwiY2xhc3NOYW1lIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInJvd1NlbGVjdGlvbk9uU2VsZWN0Iiwic2VsZWN0ZWQiLCJyb3dLZXkiLCJuZXdTZWxlY3RlZFJvd0tleXMiLCJuZXdTZWxlY3RlZFJvd0RhdGFzIiwic3BsaWNlIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwibmV3ZGF0YXMiLCJjaGFuZ2VJZHMiLCJfdGhpcyRwcm9wcyR0b29sYmFyIiwib21pdCIsImNsaWNrQ2hhbmdlQ29sb3IiLCJwb3NpdGlvbiIsInNob3dTaXplQ2hhbmdlciIsInNob3dRdWlja0p1bXBlciIsInNob3dUb3RhbCIsInRvdGFsIiwiX3JlZjQiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJyb3dDbGFzc05hbWUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwicmVzaXplUHJvcHMiLCJ0b29sRmxhZyIsInRvb2xwcm9wcyIsInNob3ciLCJzaG93Um93U2VsZWN0aW9uIiwicm93U2VsZWN0aW9uIiwib25TZWxlY3QiLCJvblNlbGVjdEFsbCIsImNvbHVtbldpZHRoIiwidGFibGVQcm9wcyIsImNvbmZpZ1RhYmxlUHJvcHMiLCJEZWZhdWx0VGFibGUiLCJfVGFibGUiLCJfZXh0ZW5kcyIsImNoaWxkcmVuQ29sdW1uTmFtZSIsInNoZWl0ZW0iLCJsb2NhbGUiLCJlbXB0eVRleHQiLCJzY3JvbGwiLCJ4IiwiX1BhZ2luYXRpb24iLCJwYWdlIiwiYWN0aW9uIiwiX3JlZjUiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBhZ2luYXRpb24sXHJcbiAgUG9wb3ZlcixcclxuICBTcGFjZSxcclxuICBUYWJsZSxcclxuICBUYWJsZVByb3BzLFxyXG4gIFRvb2x0aXAsXHJcbn0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ29sdW1uVHlwZSwgVGFibGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSBcImFudGQvbGliL3RhYmxlXCI7XHJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEbmRQcm92aWRlciB9IGZyb20gXCJyZWFjdC1kbmRcIjtcclxuaW1wb3J0IEJvZHlSb3csIHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL0JvZHlSb3dcIjtcclxuaW1wb3J0IHRyZWVVdGlscyBmcm9tIFwiLi4vLi4vdHJlZVV0aWxzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuY29uc3QgeyBCb2R5Um93Q29tcG9uZW50LCBIVE1MNUJhY2tlbmQgfSA9IEJvZHlSb3c7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IHsgUmVzaXphYmxlIH0gZnJvbSBcInJlYWN0LXJlc2l6YWJsZVwiO1xyXG5pbXBvcnQgXCIuL3Jlc2l6ZS5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlLCBzaW1wbGlmeUNvbHVtbnMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IE5vRGF0YSBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vTm9EYXRhXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBFbGxpcHNlQ2VsbCBmcm9tIFwiLi4vY29tbW9uL0VsbGlwc2VDZWxsXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUb29sQmFyUHJvcHMge1xyXG4gIHNob3c6IGJvb2xlYW47XHJcbiAgdG9vbHM/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uVG9vbENsaWNrPzogeyBvblJlZnJlc2g/OiBhbnk7IG9uU29ydD86IGFueSB9O1xyXG59XHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogVG9vbEJhclByb3BzIHwgYm9vbGVhbjtcclxuICBhdXRvU2l6ZT86IGJvb2xlYW47XHJcbiAgc29ydFNlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5re75Yqg5o6S5bqP5p+l6K+iLOm7mOiupHRydWVcclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjtcclxuICByb3dLZXk/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGRyYWdhYmxlOiBmYWxzZSxcclxuICAgIHNob3dUb3RhbDogdHJ1ZSxcclxuICAgIGZpbHRlckNvbHVtbjogdHJ1ZSxcclxuICAgIGRyYWdVcmw6IFwiXCIsXHJcbiAgICBhdXRvUGFnaW5hdGlvbjogdHJ1ZSxcclxuICAgIGF1dG9Tb3J0OiB0cnVlLFxyXG4gICAgYXV0b09uQ2hhbmdlOiB0cnVlLFxyXG4gICAgcmVzaXplQ29sdW1uOiB0cnVlLFxyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBvblRvb2xDbGljazoge30gYXMgYW55LFxyXG4gICAgfSBhcyBhbnksXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICB0YWJsZVNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgbW9kYWwgPSBwcm9wcy50eXBlIHx8IFwiYXV0b1wiO1xyXG4gICAgbGV0IHN0b3JlUHJlZml4ID0gZ2V0U3RvcmFnZShcInN0b3JlLXByZS1rZXlcIik7XHJcbiAgICBsZXQgYXV0b1R5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBhdXRvVHlwZSA9IGF1dG9UeXBlPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgcGFnaW5hdGlvbjoge30sXHJcbiAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgLy/mkJzntKLmlofmnKxcclxuICAgICAgc2VhcmNoVGV4dDogbnVsbCxcclxuICAgICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICAgIHNlYXJjaENvbG9yOiBudWxsLFxyXG4gICAgICBjb2xzOiBbXSxcclxuICAgICAgc29ydHM6IFtdLFxyXG4gICAgICBmaWx0ZXJQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZVNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCBhdXRvVHlwZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgc29ydFR5cGU6IFwic2luZ2xlXCIsXHJcbiAgICAgIHNvcnRlcjogW10sIC8v6K6w5b2V5b2T5YmN5o6S5bqP5a2X5q61XHJcbiAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgZGVmYXVsdFNvcnQ6IHRydWUsXHJcbiAgICAgIGNoZWNrQ29sdW1uOiBbXSxcclxuICAgICAgZGVmYXVsdENoZWNrOiB0cnVlLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgZmlsdGVyOiBbXSxcclxuICAgICAgZXh0cmE6IHt9LFxyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBwcm9wcy5zdG9yZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQcm9wcyA9IHt9LCAuLi5yZXN0U3RvcmUgfSA9XHJcbiAgICAgICAgcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICAgIGNvbnN0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IChzdG9yZSwgb3B0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25CZWZvcmVMb2FkLCB0aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhZ2luZyA9ICEodGhpcy5wcm9wcy5wYWdpbmF0aW9uID09PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChwYWdpbmcgJiYgIXRoaXMucHJvcHMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogc3RvcmUuZ2V0UGFnaW5hdGlvbigpLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSwgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmRhdGFDaGFuZ2VkLCB0aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgICAgcGFnaW5nLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5sb2FkLCB0aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uRXJyb3JMb2FkOiAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uRXJyb3JMb2FkLCB0aGlzLCBbZXJyLCByZXNwb25zZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGE6IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA/IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA6IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgICAgKGU6IGFueSwgeyBzaXplIH06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgICBuZXh0Q29sdW1uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY29sczogbmV4dENvbHVtbnMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uLCBjb2x1bW5zLCBzaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgcHJldlNpbXBsZSA9IHNpbXBsaWZ5Q29sdW1ucyhwcmV2UHJvcHMuY29sdW1ucyk7XHJcbiAgICBjb25zdCBjdXJyZW50U2ltcGxlID0gc2ltcGxpZnlDb2x1bW5zKGNvbHVtbnMpO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKCFpc0VxdWFsKHByZXZTaW1wbGUsIGN1cnJlbnRTaW1wbGUpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IGNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghaXNFcXVhbChzaW1wbGlmeUNvbHVtbnMocHJlU3RhdGUuY29scyksIHNpbXBsaWZ5Q29sdW1ucyh0aGlzLnN0YXRlLmNvbHMpKSkge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWlzRXF1YWwoY29sdW1ucywgcHJldlByb3BzLmNvbHVtbnMpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IGNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFpc0VxdWFsKHNpemUsIHByZXZQcm9wcy5zaXplKSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0YWJsZVNpemU6IHNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZXh0cmEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG5cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICAgIC8vIOeUqOaIt+S8oOS6hm9uQ2hhbmdl5L+d55WZ55So5oi36Ieq5Li75aSE55CG6KGo5qC85Y+Y5YyW55qE5p2D5YqbXHJcbiAgICBpZiAob25DaGFuZ2VGbikge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNoYW5nZUZuLCB0aGlzLCBbcGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGlmIChjaGVja2VkVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6Iez5bCR5pi+56S65LiA5YiX77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gdGhpcy5wcm9wcy5jb2x1bW5zLm1hcCgoY29sOiBDb2x1bW5UeXBlPHt9PikgPT4ge1xyXG4gICAgICBjb25zdCBuZXdDb2wgPSB7IC4uLmNvbCB9IGFzIENvbHVtblR5cGU8e30+ICYgeyBpbml0U2hvdzogYm9vbGVhbiB9O1xyXG4gICAgICBpZiAoY2hlY2tlZFZhbHVlLmluY2x1ZGVzKGNvbC5kYXRhSW5kZXgpKSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3Q29sO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHVtbnM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IGZpbHRlckNvbHVtbnMsXHJcbiAgICAgICAgY2hlY2tDb2x1bW46IGNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBkZWZhdWx0Q2hlY2s6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0U29ydFBhcmFtKHNvcnRlciwgc29ydFN0YXRlID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBjb25zdCB7IHNvcnRTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFzb3J0U2VhcmNoKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICAgIGxldCBzb3J0SW5mbyA9IHt9O1xyXG4gICAgbGV0IG9yZGVySXRlbXMgPSBbXTtcclxuICAgIGlmICghaXNFbXB0eU9iaihzb3J0ZXIpICYmICFpc011bHRpcGxlICYmIHNvcnRlci5jb2x1bW4pIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBpc0JleW9uZChlKSB7XHJcbiAgICBjb25zdCBldiA9IHdpbmRvdy5ldmVudCB8fCBlOyAvLyDmtY/op4jlmajlhbzlrrnvvIzmnIDlpb3lhpnkuIDkuItcclxuICAgIGNvbnN0IHRleHRSYW5nZSA9IChlbCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZXh0Q29udGVudCA9IGVsO1xyXG4gICAgICBjb25zdCB0YXJnZXRXID0gdGV4dENvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dENvbnRlbnQsIDApO1xyXG4gICAgICByYW5nZS5zZXRFbmQodGV4dENvbnRlbnQsIHRleHRDb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKTtcclxuICAgICAgY29uc3QgcmFuZ2VXaWR0aCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICByZXR1cm4gcmFuZ2VXaWR0aCA+IHRhcmdldFc7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuICF0ZXh0UmFuZ2UoZXYudGFyZ2V0KTsgLy8gdGFyZ2V05Y+v5Lul5L+d6K+B5b2T5YmN5YiS6L+H55qEZG9t6IqC54K55LiA55u05L+d5oyB5pivOmVsLXRvb2x0aXBfX3RyaWdnZXJcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogZGF0YSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmVsbGlwc2lzICYmICFjb2wucmVuZGVyKSB7XHJcbiAgICAgICAgY29sLmVsbGlwc2lzID0ge1xyXG4gICAgICAgICAgc2hvd1RpdGxlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbC5yZW5kZXIgPSAodGV4dCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImlubGluZS10YWJsZVwiIH19PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHRpdGxlPXt0ZXh0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGV4dFwiKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfHwgXCIxMDAlXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzb3J0RmllbGRzLmluZGV4T2YoY29sLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICAgIGlmIChzb3J0VHlwZSA9PSBcInNpbmdsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNvcnRUeXBlID09IFwibXVsdGlwbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHsgbXVsdGlwbGU6IGluZGV4IH07XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbHMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmooaXRlbS5maWx0ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgY29uc3QgeyB0eXBlLCBwcm9wcywgc2VhcmNoS2V5IH0gPSBpdGVtLmZpbHRlclByb3BzO1xyXG4gICAgICAgIGxldCBEaXYgPSBudWxsO1xyXG4gICAgICAgIGxldCB0ZXh0ID0gaXRlbS50aXRsZTtcclxuICAgICAgICBEaXYgPSBnZXROb2RlKHR5cGUsIHtcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHJlZjogdGhpcy50YWJsZVNlYXJjaFJlZixcclxuICAgICAgICB9KTtcclxuICAgICAgICBvYmogPSB7XHJcbiAgICAgICAgICBmaWx0ZXJEcm9wZG93bjogKHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIGNvbmZpcm0sXHJcbiAgICAgICAgICAgIGNsZWFyRmlsdGVycyxcclxuICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1zcGFjZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtEaXZ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxTcGFjZT5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdGaWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW0uZmllbGQgfHwgaXRlbS5kYXRhSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXdGaWx0ZXJQYXJhbXNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTZWFyY2hSZWYuY3VycmVudD8uZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNvcnRQYXJhbSA9IHRoaXMuZ2V0U29ydFBhcmFtKHRoaXMuc3RhdGUuc29ydGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUubG9hZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMsIC4uLnNvcnRQYXJhbSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXNlYXJjaC1idXR0b25cIil9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6Xor6JcclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1NwYWNlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZpbHRlckljb246ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDxTZWFyY2hPdXRsaW5lZCAvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmosXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2xzW2luZGV4XSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcbiAgcmVuZGVyVG9vbEJhcigpIHtcclxuICAgIGxldCB7IHRhYmxlU2l6ZSwgY29sdW1ucywgc29ydFR5cGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBmaWx0ZXJDb2x1bW4sIGNvbHVtbnM6IGNvbExpc3RzLCB0b29sYmFyIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wsIHN0b3JlUmVxdWVzdENvbmZpZyA9IHt9IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29scyA9IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIGxldCB0b29sc0NsaWNrID0ge30gYXMgYW55O1xyXG4gICAgaWYgKHRvb2xiYXIgPT0gdHJ1ZSkge1xyXG4gICAgICB0b29scyA9IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA/IHRvb2xiYXIub25Ub29sQ2xpY2tcclxuICAgICAgICA6IFtcInJlZnJlc2hcIiwgXCJzaXplXCIsIFwic29ydFwiLCBcImNvbHVtblwiXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci50b29sc1xyXG4gICAgICAgID8gdG9vbGJhci50b29sc1xyXG4gICAgICAgIDogdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgICAgOiB0b29scztcclxuICAgICAgdG9vbHNDbGljayA9IHRvb2xiYXIub25Ub29sQ2xpY2sgPyB0b29sYmFyLm9uVG9vbENsaWNrIDoge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgY3Vyc29yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ICYmIFwicmdiYSgwLDAsMCwuNDUpXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSwgc29ydEluZm86IHt9LCBkZWZhdWx0U29ydDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5oGi5aSN6buY6K6k5o6S5bqPXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NvcnRJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzb3J0VHlwZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwicmdiYSgwLDAsMCwuNDUpXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOW9k+WJjeaOkuW6j1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLm9yZGVyID09IFwiYXNjZW5kXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0RGVzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLmNvbHVtbi50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2l6ZUNvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9PlxyXG4gICAgICAgICAg6KGo5qC85a+G5bqmXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NpemVJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICB0YWJsZVNpemU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSAmJiA8Q2hlY2tPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS10b29sLWJhclwiKX0+XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJjb2x1bW5cIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICB0aXRsZT1cIumAieaLqeaYvuekuueahOWIl1wiXHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcclxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWRcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRoLWFwcC1zdG9yZS1pY29uXCIpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzb3J0XCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzb3J0Q29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwic2l6ZVwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGVudD17c2l6ZUNvbnRlbnR9IHRyaWdnZXI9XCJjbGlja1wiPlxyXG4gICAgICAgICAgICAgIDxDb2x1bW5IZWlnaHRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHt0b29scy5pbmRleE9mKFwicmVmcmVzaFwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCwgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICAgIGlmICh0b29sc0NsaWNrLm9uUmVmcmVzaCkge1xyXG4gICAgICAgICAgICAgICAgdG9vbHNDbGljay5vblJlZnJlc2goKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFJlZG9PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0RhdGFzO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dLZXlzLCByZWNvcmRbcm93S2V5XV07XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dEYXRhcywgcmVjb3JkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtW3Jvd0tleV0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IG5ld1NlbGVjdGVkUm93S2V5cyxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogbmV3U2VsZWN0ZWRSb3dEYXRhcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdEFsbChzZWxlY3RlZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueSwgY2hhbmdlUm93czogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBsZXQgbmV3ZGF0YXM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGNoYW5nZVJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY2hhbmdlSWRzID0gY2hhbmdlUm93cy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtyb3dLZXldKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzLCAuLi5jaGFuZ2VSb3dzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbVtyb3dLZXldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdkYXRhcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogWy4uLm5ld2RhdGFzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzLFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9hZGluZyxcclxuICAgICAgICBkYXRhU291cmNlLFxyXG4gICAgICAgIHBhZ2luYXRpb24gPSB7fSxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yLFxyXG4gICAgICAgIHRhYmxlU2l6ZSxcclxuICAgICAgfSA9IHRoaXMuc3RhdGUsXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICAgIFwic2hvd1Jvd1NlbGVjdGlvblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcbiAgICAgICBcclxuICAgICAgfTtcclxuICAgICAgaWYgKHByb3BzLnNob3dUb3RhbCA9PSB0cnVlKSB7XHJcbiAgICAgICAgcHJvcHMucGFnaW5hdGlvbi5zaG93VG90YWwgPSBmdW5jdGlvbiAodG90YWwsIFtmcm9tLCB0b10pIHtcclxuICAgICAgICAgIC8vIHJldHVybiBcIuaYvuekuiBcIiArIGZyb20gKyBcIiAtIFwiICsgdG8gKyBcIuadoe+8jOWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgICByZXR1cm4gXCLlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UoX3RoaXMuc3RhdGUucGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBcIm5zYy10YWJsZS1jbGlja1Jvd1N0eWxlXCJcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBsZXQgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgcmVzaXplUHJvcHMgPVxyXG4gICAgICByZXNpemVDb2x1bW4gPT09IHRydWUgPyB7IGNvbXBvbmVudHM6IHRoaXMuY29tcG9uZW50cyB9IDogbnVsbDtcclxuICAgIGNvbnN0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9IHRydWU7XHJcbiAgICBsZXQgdG9vbHByb3BzID1cclxuICAgICAgdGhpcy5wcm9wcy50b29sYmFyID09PSBmYWxzZSB8fCB0aGlzLnByb3BzLnRvb2xiYXI/LnNob3cgPT09IGZhbHNlXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgIGlmICghdG9vbHByb3BzKSB7XHJcbiAgICAgIHRvb2xGbGFnID0gdG9vbHByb3BzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbEZsYWcgPSB0YWJsZVRvb2wuc2hvdyA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgICAgLi4ucm93U2VsZWN0aW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHM6IGNvbmZpZ1RhYmxlUHJvcHMgfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlXCIpfT5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtY29udGVudFwiKSwgcHJvcHMuY2xhc3NOYW1lKX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IChcclxuICAgICAgICAgICAgICA8Tm9EYXRhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLW5vZGF0YVwiKX0gLz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBzY3JvbGw9e3sgeDogXCJtYXgtY29udGVudFwiIH19XHJcbiAgICAgICAgICB7Li4uY29uZmlnVGFibGVQcm9wc31cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgICAgcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgLy8gc3R5bGU9e3sgaGVpZ2h0OiA2MDAgfX1cclxuICAgICAgICAvPlxyXG4gICAgICAgIHtwcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXBhZ2luYXRpb25cIil9PlxyXG4gICAgICAgICAgICA8UGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgIHsuLi5wcm9wcy5wYWdpbmF0aW9ufVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnZSwgcGFnZVNpemUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhID0gdGhpcy5zdGF0ZS5leHRyYTtcclxuICAgICAgICAgICAgICAgIGV4dHJhLmFjdGlvbiA9IFwicGFnaW5hdGVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoKHsgcGFnaW5hdGlvbj17fSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogeyAuLi5wYWdpbmF0aW9uLCBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKFxyXG4gICAgICAgICAgICAgICAgICB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNvcnRlcixcclxuICAgICAgICAgICAgICAgICAgZXh0cmFcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdp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
|
|
1025
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJjbHMiLCJzdHlsZXMiLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJmaWx0ZXIiLCJleHRyYSIsIl9yZWYyIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJfZXhjbHVkZWQyIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib3B0aW9ucyIsImNhbGxiYWNrIiwiZGF0YUNoYW5nZWQiLCJtb2RlbERhdGEiLCJwYWdpbmciLCJnZXRQYWdpbmF0aW9uIiwib25FcnJvckxvYWQiLCJlcnIiLCJyZXNwb25zZSIsImF1dG9Mb2FkIiwiT2JqZWN0IiwiYXNzaWduIiwiY3VycmVudCIsImNvbXBvbmVudERpZE1vdW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJlU3RhdGUiLCJyZXNldENvbHVtbiIsIm5ld0NvbHMiLCJjb2xzcyIsIm1hcCIsImNvbCIsInRlbXAiLCJvbkhlYWRlckNlbGwiLCJjb2x1bW4iLCJoYW5kbGVSZXNpemUiLCJwdXNoIiwiY2xlYXJTZWxlY3RDb2xvciIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwib25DaGFuZ2UiLCJmaWx0ZXJzIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiaXNCZXlvbmQiLCJldmVudCIsInRleHRSYW5nZSIsImVsIiwidGV4dENvbnRlbnQiLCJ0YXJnZXRXIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmFuZ2UiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJjaGlsZE5vZGVzIiwicmFuZ2VXaWR0aCIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJnZXRDb2x1bW5zIiwic29ydEZpZWxkcyIsImRlZmF1bHRTaG93Q29scyIsImNvbFdpZHRoT2JqIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwiY29sV2lkdGgiLCJzdHlsZSIsImRpc3BsYXkiLCJ0aXRsZSIsImNsYXNzTmFtZSIsImluZGV4T2YiLCJzb3J0T3JkZXIiLCJtdWx0aXBsZSIsIml0ZW0iLCJmaWx0ZXJQcm9wcyIsIm9iaiIsInNlYXJjaEtleSIsIkRpdiIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwicmVmIiwidGFibGVTZWFyY2hSZWYiLCJmaWx0ZXJEcm9wZG93biIsIl9yZWYzIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIl9TcGFjZSIsIl9CdXR0b24iLCJvbkNsaWNrIiwiX3RoaXMkdGFibGVTZWFyY2hSZWYkIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwicmVuZGVyVG9vbEJhciIsImNvbExpc3RzIiwidG9vbGJhciIsInRhYmxlVG9vbCIsInN0b3JlUmVxdWVzdENvbmZpZyIsInRvb2xzIiwidG9vbHNDbGljayIsIm9uVG9vbENsaWNrIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiRnJhZ21lbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiX0NoZWNrYm94IiwiR3JvdXAiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJfUG9wb3ZlciIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJvdmVybGF5U3R5bGUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvblJlZnJlc2giLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwicm93Q2xhc3NOYW1lIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlUHJvcHMiLCJjb25maWdUYWJsZVByb3BzIiwiRGVmYXVsdFRhYmxlIiwiX1RhYmxlIiwiX2V4dGVuZHMiLCJjaGlsZHJlbkNvbHVtbk5hbWUiLCJzaGVpdGVtIiwibG9jYWxlIiwiZW1wdHlUZXh0Iiwic2Nyb2xsIiwieCIsIl9QYWdpbmF0aW9uIiwicGFnZSIsImFjdGlvbiIsIl9yZWY1IiwiYmFja2VuZCIsImRyYWdVcmwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxuICBSZWRvT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQYWdpbmF0aW9uLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBOb0RhdGEgZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL05vRGF0YVwiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgRWxsaXBzZUNlbGwgZnJvbSBcIi4uL2NvbW1vbi9FbGxpcHNlQ2VsbFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47XHJcbiAgcm93S2V5Pzogc3RyaW5nO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIGZpbHRlcjogW10sXHJcbiAgICAgIGV4dHJhOiB7fSxcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocGFnaW5nICYmICF0aGlzLnByb3BzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHN0b3JlLmdldFBhZ2luYXRpb24oKSxcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEsIGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5kYXRhQ2hhbmdlZCwgdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICAgIHBhZ2luZyxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMubG9hZCwgdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkVycm9yTG9hZDogKGVyciwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkVycm9yTG9hZCwgdGhpcywgW2VyciwgcmVzcG9uc2VdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgPyByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgOiBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICAgID8gcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAgIChlOiBhbnksIHsgc2l6ZSB9OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgICAgbmV4dENvbHVtbnNbaW5kZXhdID0ge1xyXG4gICAgICAgICAgLi4ubmV4dENvbHVtbnNbaW5kZXhdLFxyXG4gICAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnByb3BzLnN0b3JlO1xyXG4gICAgaWYgKHN0b3JlICYmIHN0b3JlLmRhdGEpIHtcclxuICAgICAgdGhpcy5zdG9yZS5zZXREYXRhKHN0b3JlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgfVxyXG4gIGxpc3Rlbk1lc3NhZ2UgPSAoZXYpID0+IHtcclxuICAgIGNvbnN0IGRhdGEgPSB0eXBlb2YgZXYuZGF0YSA9PT0gXCJzdHJpbmdcIiA/IEpTT04ucGFyc2UoZXYuZGF0YSkgOiBldi5kYXRhO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChkYXRhLmV2ZW50VHlwZSA9PSBcImNoYW5nZVRhYmxlU2l6ZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgcGF5bG9hZCB9ID0gZGF0YTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcImRlZmF1bHRcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcInNtYWxsXCIgfHxcclxuICAgICAgICBwYXlsb2FkLnNpemUgPT0gXCJtaWRkbGVcIlxyXG4gICAgICApIHtcclxuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogcGF5bG9hZC5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJlU3RhdGUpIHtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocHJlU3RhdGUuY29scyAhPT0gdGhpcy5zdGF0ZS5jb2xzKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbHVtbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHM6IHRoaXMucHJvcHMuY29sdW1ucywgY29sdW1uczogdGhpcy5wcm9wcy5jb2x1bW5zIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcmV2UHJvcHMuc2l6ZSAhPT0gdGhpcy5wcm9wcy5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRhYmxlU2l6ZTogdGhpcy5wcm9wcy5zaXplIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldENvbHVtbigpIHtcclxuICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IG5ld0NvbHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IGNvbHNzID0gY29scyB8fCBbXTtcclxuICAgIGNvbHNzLm1hcCgoY29sOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIG9uSGVhZGVyQ2VsbDogKGNvbHVtbjogeyB3aWR0aDogYW55IH0pID0+ICh7XHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxyXG4gICAgICAgICAgb25SZXNpemU6IHRoaXMuaGFuZGxlUmVzaXplKGluZGV4KSxcclxuICAgICAgICB9KSxcclxuICAgICAgfTtcclxuICAgICAgbmV3Q29scy5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgY29sdW1uczogbmV3Q29scyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk6YCJ5Lit6aKc6ImyXHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3RDb2xvcigpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVJbmRleDogLTEgfSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGdldFBhZ2luYXRpb25CeVN0b3JlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0UGFnaW5hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBhdXRvT25DaGFuZ2UgPSB0cnVlLFxyXG4gICAgICBhdXRvU29ydCxcclxuICAgICAgYXV0b1BhZ2luYXRpb24sXHJcbiAgICAgIG9uQ2hhbmdlLFxyXG4gICAgICBzdG9yZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UgfHwgIXN0b3JlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uID0gKCkgPT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0ge30gYXMge1xyXG4gICAgICAgIHNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgcGFnZVNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgYXNjcz86IHN0cmluZztcclxuICAgICAgICBkZXNjcz86IHN0cmluZztcclxuICAgICAgICBbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZztcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgcGFnaW5nID0gdGhpcy5nZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHx8IHt9O1xyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFzY1BhcmFtcyA9IHRoaXMuZ2V0U29ydFBhcmFtKHNvcnRlciwgdHJ1ZSk7XHJcbiAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlciB9KTtcclxuICAgICAgfSBlbHNlIGlmICghaXNNdWx0aXBsZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgc29ydGVyLmNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW3NvcnRlcl0sIGRlZmF1bHRTb3J0OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgIGV4dHJhLFxyXG4gICAgICB9KTtcclxuICAgICAgcGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMsIC4uLnBhcmFtcywgLi4uYXNjUGFyYW1zIH07XHJcbiAgICAgIGF1dG9Tb3J0ICYmIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbkNoYW5nZUZuID0gdGhpcy5wcm9wcy5vbkNoYW5nZTtcclxuXHJcbiAgICBhdXRvUGFnaW5hdGlvbiAmJiBoYW5kbGVQYWdpbmF0aW9uKCk7XHJcbiAgICAvLyDnlKjmiLfkvKDkuoZvbkNoYW5nZeS/neeVmeeUqOaIt+iHquS4u+WkhOeQhuihqOagvOWPmOWMlueahOadg+WKm1xyXG4gICAgaWYgKG9uQ2hhbmdlRm4pIHtcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DaGFuZ2VGbiwgdGhpcywgW3BhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmFdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFN0b3JlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5bmlbDmja7mqKHlnovlr7nosaFcclxuICAgKi9cclxuICBnZXRNb2RlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1vZGVsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDoj5zljZXmkJzntKLov4fmu6TmmL7npLpcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgaGFuZGxlU2VhcmNoKHZhbCwgZmllbGRPcHRpb24sIHNlYXJjaENvbG9yKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VhcmNoVGV4dDogdmFsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogZmllbGRPcHRpb24sXHJcbiAgICAgIHNlYXJjaENvbG9yOiBzZWFyY2hDb2xvcixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qih5Z2X5YiX6KGo56e75Yqo5o6S5bqPXHJcbiAgICovXHJcbiAgbW92ZVJvdyA9IChkcmFnSW5kZXgsIGhvdmVySW5kZXgsIGRyYWcsIHRhcmdldCkgPT4ge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGRyYWdOb2RlID0gZHJhZy5yZWNvcmQ7XHJcbiAgICBsZXQgdGFyZ2V0Tm9kZSA9IHRhcmdldC5yZWNvcmQ7XHJcbiAgICBkcmFnTm9kZS5tb3ZlQXJyYXkoZHJhZ05vZGUsIHRhcmdldE5vZGUpO1xyXG4gICAgbGV0IGlkcyA9IGRyYWdOb2RlLnBhcmVudE5vZGUuZ2V0Q2hpbGROb2RlSWRzKCk7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZHJhZ05vZGUuaWQsXHJcbiAgICAgIHBhcmVudElkOiBkcmFnTm9kZS5hdHRyaWJ1dGUucGFyZW50SWQsXHJcbiAgICAgIGlkczogaWRzLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5tb3ZlUm93KSB7XHJcbiAgICAgIHRoaXMucHJvcHMubW92ZVJvdyhwYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWx0ZXJDb2x1bW4oY2hlY2tlZFZhbHVlKSB7XHJcbiAgICBpZiAoY2hlY2tlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuiHs+WwkeaYvuekuuS4gOWIl++8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+IHtcclxuICAgICAgY29uc3QgbmV3Q29sID0geyAuLi5jb2wgfSBhcyBDb2x1bW5UeXBlPHt9PiAmIHsgaW5pdFNob3c6IGJvb2xlYW4gfTtcclxuICAgICAgaWYgKGNoZWNrZWRWYWx1ZS5pbmNsdWRlcyhjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0NvbDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFNvcnRQYXJhbShzb3J0ZXIsIHNvcnRTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgY29uc3QgeyBzb3J0U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghc29ydFNlYXJjaCkge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICBsZXQgc29ydEluZm8gPSB7fTtcclxuICAgIGxldCBvcmRlckl0ZW1zID0gW107XHJcbiAgICBpZiAoIWlzRW1wdHlPYmooc29ydGVyKSAmJiAhaXNNdWx0aXBsZSAmJiBzb3J0ZXIuY29sdW1uKSB7XHJcbiAgICAgIG9yZGVySXRlbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sdW1uOiBzb3J0ZXIuY29sdW1uLmZpZWxkIHx8IHNvcnRlci5jb2x1bW4uZGF0YUluZGV4LFxyXG4gICAgICAgICAgYXNjOiBzb3J0ZXIub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICBpZiAoc29ydGVyLmNvbHVtbikgc29ydEluZm9bc29ydGVyLmNvbHVtbi5kYXRhSW5kZXhdID0gc29ydGVyLm9yZGVyO1xyXG4gICAgfSBlbHNlIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgIHNvcnRlci5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgc29ydEluZm9bdi5jb2x1bW4uZGF0YUluZGV4XSA9IHYub3JkZXI7XHJcbiAgICAgICAgbGV0IGZpZWxkID0gdi5jb2x1bW4uZmllbGQgfHwgdi5jb2x1bW4uZGF0YUluZGV4O1xyXG4gICAgICAgIG9yZGVySXRlbXMucHVzaCh7XHJcbiAgICAgICAgICBjb2x1bW46IGZpZWxkLFxyXG4gICAgICAgICAgYXNjOiB2Lm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHNvcnRTdGF0ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBzb3J0SW5mbzogc29ydEluZm8sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgb3JkZXJJdGVtczogSlNPTi5zdHJpbmdpZnkob3JkZXJJdGVtcykgfTtcclxuICB9XHJcbiAgaXNCZXlvbmQoZSkge1xyXG4gICAgY29uc3QgZXYgPSB3aW5kb3cuZXZlbnQgfHwgZTsgLy8g5rWP6KeI5Zmo5YW85a6577yM5pyA5aW95YaZ5LiA5LiLXHJcbiAgICBjb25zdCB0ZXh0UmFuZ2UgPSAoZWwpID0+IHtcclxuICAgICAgY29uc3QgdGV4dENvbnRlbnQgPSBlbDtcclxuICAgICAgY29uc3QgdGFyZ2V0VyA9IHRleHRDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG4gICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcbiAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHRDb250ZW50LCAwKTtcclxuICAgICAgcmFuZ2Uuc2V0RW5kKHRleHRDb250ZW50LCB0ZXh0Q29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCk7XHJcbiAgICAgIGNvbnN0IHJhbmdlV2lkdGggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgcmV0dXJuIHJhbmdlV2lkdGggPiB0YXJnZXRXO1xyXG4gICAgfTtcclxuICAgIHJldHVybiAhdGV4dFJhbmdlKGV2LnRhcmdldCk7IC8vIHRhcmdldOWPr+S7peS/neivgeW9k+WJjeWIkui/h+eahGRvbeiKgueCueS4gOebtOS/neaMgeaYrzplbC10b29sdGlwX190cmlnZ2VyXHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Q29sdW1ucygpIHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgc29ydFR5cGUsIHNvcnRJbmZvIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzb3J0RmllbGRzID0gW10sIHNpemUgPSAnbGFyZ2UnIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGxldCBjb2xXaWR0aE9iaiA9IHtcclxuICAgICAgJ3NpemUnOiAxNixcclxuICAgICAgJ21pZGRsZSc6IDE2LFxyXG4gICAgICAnbGFyZ2UnOiAzMlxyXG4gICAgfVxyXG4gICAgY29uc3QgY29scyA9IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGNvbC5lbGxpcHNpcyAmJiAhY29sLnJlbmRlcikge1xyXG4gICAgICAgIGNvbC5lbGxpcHNpcyA9IHtcclxuICAgICAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2wucmVuZGVyID0gKHRleHQpID0+IHtcclxuICAgICAgICAgIGxldCBjb2xXaWR0aDogYW55ID0gJzEwMCUnO1xyXG4gICAgICAgICAgaWYgKGNvbC53aWR0aCkge1xyXG4gICAgICAgICAgICBpZiAoY29sLndpZHRoID4gY29sV2lkdGhPYmpbc2l6ZV0pIHtcclxuICAgICAgICAgICAgICBjb2xXaWR0aCA9IGNvbC53aWR0aCAtIGNvbFdpZHRoT2JqW3NpemVdXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29sV2lkdGggPSBjb2wud2lkdGhcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImlubGluZS10YWJsZVwiIH19PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHRpdGxlPXt0ZXh0fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGV4dFwiKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBjb2xXaWR0aCB8fCBcIjEwMCVcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt0ZXh0fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNvcnRGaWVsZHMuaW5kZXhPZihjb2wuZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKHNvcnRUeXBlID09IFwic2luZ2xlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc29ydFR5cGUgPT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICBjb2wuc29ydGVyID0geyBtdWx0aXBsZTogaW5kZXggfTtcclxuICAgICAgICAgIGNvbC5zb3J0T3JkZXIgPSBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA/IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbDtcclxuICAgIH0pO1xyXG4gICAgY29scy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihpdGVtLmZpbHRlclByb3BzKSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgICAgICBjb25zdCB7IHR5cGUsIHByb3BzLCBzZWFyY2hLZXkgfSA9IGl0ZW0uZmlsdGVyUHJvcHM7XHJcbiAgICAgICAgbGV0IERpdiA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRleHQgPSBpdGVtLnRpdGxlO1xyXG4gICAgICAgIERpdiA9IGdldE5vZGUodHlwZSwge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDmkJzntKIke3RleHR9YCxcclxuICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgcmVmOiB0aGlzLnRhYmxlU2VhcmNoUmVmLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG9iaiA9IHtcclxuICAgICAgICAgIGZpbHRlckRyb3Bkb3duOiAoe1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZEtleXMsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgY29uZmlybSxcclxuICAgICAgICAgICAgY2xlYXJGaWx0ZXJzLFxyXG4gICAgICAgICAgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLXNwYWNlXCIpfT5cclxuICAgICAgICAgICAgICAgICAge0Rpdn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPFNwYWNlPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0ZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gaXRlbS5maWVsZCB8fCBpdGVtLmRhdGFJbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbHRlclBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVNlYXJjaFJlZi5jdXJyZW50Py5nZXRWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtczogeyAuLi5uZXdGaWx0ZXJQYXJhbXMgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc29ydFBhcmFtID0gdGhpcy5nZXRTb3J0UGFyYW0odGhpcy5zdGF0ZS5zb3J0ZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5sb2FkKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcywgLi4uc29ydFBhcmFtIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtc2VhcmNoLWJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICAgID8gdGFibGVUb29sLnRvb2xzXHJcbiAgICAgICAgICA6IHRvb2xzO1xyXG4gICAgICB0b29sc0NsaWNrID0gdG9vbGJhci5vblRvb2xDbGljayA/IHRvb2xiYXIub25Ub29sQ2xpY2sgOiB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNpemVJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWuveadvlwiLCBrZXk6IFwiZGVmYXVsdFwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5Lit562JXCIsIGtleTogXCJtaWRkbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIue0p+WHkVwiLCBrZXk6IFwic21hbGxcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRJdGVtID0gW1xyXG4gICAgICB7IHRpdGxlOiBcIuWNleWtl+auteaOkuW6j1wiLCBrZXk6IFwic2luZ2xlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLlpJrlrZfmrrXmjpLluo9cIiwga2V5OiBcIm11bHRpcGxlXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0Q29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvdGVudC10aXRsZVwiKX0+XHJcbiAgICAgICAgICDooajmoLzlr4bluqZcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLWNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBkZWZhdWx0U2hvd0NvbHMgPSBjb2x1bW5zLmZpbHRlcigoY29scykgPT4gY29scy5pbml0U2hvdyAhPT0gZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgIDxDaGVja2JveC5Hcm91cFxyXG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmZpbHRlckNvbHVtbi5iaW5kKHRoaXMpfVxyXG4gICAgICAgIG9wdGlvbnM9e2NvbExpc3RzLm1hcChcclxuICAgICAgICAgIChjb2w6IENvbHVtblR5cGU8e30+ICYgeyBmaWx0ZXJDb2x1bW46IGJvb2xlYW47IGRhdGFJbmRleDogYW55IH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuZGF0YUluZGV4KSB7XHJcbiAgICAgICAgICAgICAgY29sLmRhdGFJbmRleCA9IGNvbC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBjb2wudGl0bGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGNvbC5maWx0ZXJDb2x1bW4gPT09IGZhbHNlLFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApfVxyXG4gICAgICAgIC8vIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRDaGVja1xyXG4gICAgICAgICAgICA/IGRlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleClcclxuICAgICAgICAgICAgOiB0aGlzLnN0YXRlLmNoZWNrQ29sdW1uXHJcbiAgICAgICAgfVxyXG4gICAgICA+PC9DaGVja2JveC5Hcm91cD5cclxuICAgICk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcImNvbHVtblwiKSA+IC0xICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtdGgtYXBwLXN0b3JlLWljb25cIil9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cywgc2VsZWN0ZWRSb3dEYXRhcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZFtyb3dLZXldXTtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcyA9IFsuLi5uZXdTZWxlY3RlZFJvd0RhdGFzLCByZWNvcmRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZFtyb3dLZXldKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW1bcm93S2V5XSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93RGF0YXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBuZXdTZWxlY3RlZFJvd0RhdGFzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGxldCBuZXdkYXRhczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW3Jvd0tleV0pO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXMsIC4uLmNoYW5nZVJvd3NdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtW3Jvd0tleV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2RhdGFzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgICBuZXdkYXRhcyA9IFsuLi5zZWxlY3RlZFJvd0RhdGFzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbLi4ubmV3ZGF0YXNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgICAgdGFibGVTaXplLFxyXG4gICAgICB9ID0gdGhpcy5zdGF0ZSxcclxuXHJcbiAgICAgIHByb3BzID0gdXRpbHMub21pdChcclxuICAgICAgICB0aGlzLnByb3BzLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFwic3RvcmVcIixcclxuICAgICAgICAgIFwib25DaGFuZ2VcIixcclxuICAgICAgICAgIFwiY29sdW1uc1wiLFxyXG4gICAgICAgICAgXCJyZXNldENvbHVtblwiLFxyXG4gICAgICAgICAgXCJ0b29sYmFyXCIsXHJcbiAgICAgICAgICBcInNvcnRGaWVsZHNcIixcclxuICAgICAgICAgIFwiZmlsdGVyQ29sdW1uXCIsXHJcbiAgICAgICAgICBcInNvcnRTZWFyY2hcIixcclxuICAgICAgICAgIFwic2hvd1Jvd1NlbGVjdGlvblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnByb3BzLnBhZ2luYXRpb24sXHJcblxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShfdGhpcy5zdGF0ZS5wYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IFwibnNjLXRhYmxlLWNsaWNrUm93U3R5bGVcIlxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgdGFibGVQcm9wczogY29uZmlnVGFibGVQcm9wcyB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGVcIil9PlxyXG4gICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCYXIoKX1cclxuICAgICAgICA8VGFibGVcclxuICAgICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgICAgc2hlaXRlbVxyXG4gICAgICAgICAgZGF0YVNvdXJjZT17bmV3RGF0YVNvdXJjZX1cclxuICAgICAgICAgIGNvbHVtbnM9e3RoaXMuZ2V0Q29sdW1ucygpfVxyXG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy10YWJsZS1jb250ZW50XCIpLCBwcm9wcy5jbGFzc05hbWUpfVxyXG4gICAgICAgICAgbG9jYWxlPXt7XHJcbiAgICAgICAgICAgIGVtcHR5VGV4dDogKFxyXG4gICAgICAgICAgICAgIDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtbm9kYXRhXCIpfSAvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5jb25maWdUYWJsZVByb3BzfVxyXG4gICAgICAgICAgey4uLnJlc2l6ZVByb3BzfVxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgey4uLmRyYWdhYmxlUHJvcHN9XHJcbiAgICAgICAgICBzaXplPXt0YWJsZVNpemV9XHJcbiAgICAgICAgICBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAvLyBzdHlsZT17eyBoZWlnaHQ6IDYwMCB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge3Byb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtdGFibGUtcGFnaW5hdGlvblwiKX0+XHJcbiAgICAgICAgICAgIDxQYWdpbmF0aW9uXHJcbiAgICAgICAgICAgICAgey4uLnByb3BzLnBhZ2luYXRpb259XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdlLCBwYWdlU2l6ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0aGlzLnN0YXRlLmV4dHJhO1xyXG4gICAgICAgICAgICAgICAgZXh0cmEuYWN0aW9uID0gXCJwYWdpbmF0ZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBwYWdpbmF0aW9uID0ge30gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgLi4ucGFnaW5hdGlvbiwgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShcclxuICAgICAgICAgICAgICAgICAgeyBjdXJyZW50OiBwYWdlLCBwYWdlU2l6ZSB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zb3J0ZXIsXHJcbiAgICAgICAgICAgICAgICAgIGV4dHJhXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRyYWdhYmxlID09PSB0cnVlID8gKFxyXG4gICAgICA8RG5kUHJvdmlkZXIgYmFja2VuZD17SFRNTDVCYWNrZW5kfT57RGVmYXVsdFRhYmxlfTwvRG5kUHJvdmlkZXI+XHJcbiAgICApIDogKFxyXG4gICAgICBEZWZhdWx0VGFibGVcclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB3aXRoWmhMb2NhbGUoTlNDVGFibGUpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMscUJBQXFCLEVBQ3JCQyxzQkFBc0IsRUFDdEJDLFlBQVksUUFDUCxtQkFBbUI7QUFDMUIsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxPQUFPQyxLQUFLLElBQUlDLFNBQVMsUUFBb0IsYUFBYTtBQUMxRCxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBZTdDLE9BQU8sS0FBS0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsV0FBVyxRQUFRLFdBQVc7QUFDdkMsT0FBT0MsT0FBTyxJQUFJQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDMUUsT0FBT0MsU0FBUyxNQUFNLGlCQUFpQjtBQUN2QyxPQUFPLHFCQUFxQjtBQUM1QixNQUFNO0VBQUVDLGdCQUFnQjtFQUFFQztBQUFhLENBQUMsR0FBR0wsT0FBTztBQUNsRCxPQUFPTSxZQUFZLE1BQU0sd0JBQXdCO0FBQ2pELFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFDM0MsT0FBTyxzQkFBc0I7QUFDN0IsU0FBU0MsT0FBTyxFQUFFQyxPQUFPLFFBQXlCLGFBQWE7QUFDL0QsT0FBT0MsTUFBTSxNQUFN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
|