nsc-react-component 2.14.16 → 2.14.18
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/select/index.js +4 -3
- package/lib/base/select/index.js.map +1 -1
- package/lib/base/table/index.js +2 -2
- package/lib/base/table/index.js.map +1 -1
- package/lib/base/upload/index.js +12 -8
- package/lib/base/upload/index.js.map +1 -1
- package/lib/page/BasePage/index.js +10 -4
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/utils.js +5 -4
- package/lib/utils.js.map +1 -1
- package/package.json +98 -98
|
@@ -346,9 +346,15 @@ class BasePage extends PureComponent {
|
|
|
346
346
|
} = config();
|
|
347
347
|
const newButtons = [];
|
|
348
348
|
let showIcon = true;
|
|
349
|
-
|
|
349
|
+
let {
|
|
350
350
|
rowKey = "id"
|
|
351
351
|
} = tableProps;
|
|
352
|
+
let key = '';
|
|
353
|
+
if (typeof rowKey == "function") {
|
|
354
|
+
key = rowKey(record);
|
|
355
|
+
} else {
|
|
356
|
+
key = record[rowKey];
|
|
357
|
+
}
|
|
352
358
|
if ((actionProps === null || actionProps === void 0 ? void 0 : actionProps.showIcon) === false) showIcon = false;else if (baseActionColumn.showIcon === false) showIcon = false;
|
|
353
359
|
columnButtons.map((item, index) => {
|
|
354
360
|
const _item$props2 = item.props,
|
|
@@ -438,11 +444,11 @@ class BasePage extends PureComponent {
|
|
|
438
444
|
content: content,
|
|
439
445
|
trigger: ["click"],
|
|
440
446
|
key: index,
|
|
441
|
-
visible: this.state.popopens[
|
|
447
|
+
visible: this.state.popopens[key] || false,
|
|
442
448
|
onVisibleChange: visibale => {
|
|
443
449
|
if (visibale) {
|
|
444
450
|
let data = {};
|
|
445
|
-
data[
|
|
451
|
+
data[key] = true;
|
|
446
452
|
this.setState({
|
|
447
453
|
popopens: data
|
|
448
454
|
});
|
|
@@ -895,4 +901,4 @@ class BasePage extends PureComponent {
|
|
|
895
901
|
}
|
|
896
902
|
}
|
|
897
903
|
export default BasePage;
|
|
898
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiY29tcG9uZW50RGlkTW91bnQiLCJpbml0RGF0YSIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiY3VycmVudCIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwiZWRpdG9yZmxhZyIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNiIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwicmVxdWVzdENvbmZpZyIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImF1dG9Mb2FkIiwicmVsb2FkIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsIm1hcmdpbmZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsInRpdGxlIiwicGxhY2VtZW50IiwidHJpZ2dlciIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsInNldFN0YXRlIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInZpc2libGUiLCJvblZpc2libGVDaGFuZ2UiLCJ2aXNpYmFsZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXAiLCJ0ZW1wIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsIkZyYWdtZW50IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJyZWYiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcyAsdGFibGVQcm9wcz17fX0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICB2aXNpYmxlPXt0aGlzLnN0YXRlLnBvcG9wZW5zW3JlY29yZFtyb3dLZXldXSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvblZpc2libGVDaGFuZ2U9eyh2aXNpYmFsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZpc2liYWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW3JlY29yZFtyb3dLZXldXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC1iYWNrXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0geyAuLi50ZW1wIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gc2hvd1Rvb2xCdXR0b24gJiYgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMDtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCAuLi5zY3JvbGwgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAge3Nob3dUb29sQnV0dG9uICYmXHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgc2VhcmNoRm9ybXMubGVuZ3RoID09IDApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvcFwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgKHNlYXJjaEZsYWcgJiYgIXRvb2xGbGFnKSB8fCAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9wMlwiKV06ICFzZWFyY2hGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUVsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBR3hDLE9BQU9DLFVBQVUsTUFBTSxRQUFRO0FBQy9CLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxxQkFBcUI7QUFHeEMsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sUUFBaUIsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUVqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBRTlDLE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUE4RDFDLE1BQU1DLFFBQVEsU0FBU3ZCLGFBQWEsQ0FBd0I7RUFNMUR3QixXQUFXQSxDQUFDQyxLQUFVLEVBQUU7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLEtBQUE7SUFDdEIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FOSjdCLEtBQUssQ0FBQzhCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsK0JBQ3ZCN0IsS0FBSyxDQUFDOEIsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxpQ0FDcEI3QixLQUFLLENBQUM4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
|
|
904
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiY29tcG9uZW50RGlkTW91bnQiLCJpbml0RGF0YSIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiY3VycmVudCIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwiZWRpdG9yZmxhZyIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJzZXRGaWVsZHNWYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNiIsImdldEZpZWxkc1ZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwicmVxdWVzdENvbmZpZyIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjYWxsYmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImF1dG9Mb2FkIiwicmVsb2FkIiwiX3JlcyRkYXRhIiwicmVjb3JkcyIsImN1cnJlbnRQYWdlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsIl90aGlzJHNlYXJjaFJlZjIiLCJmcm9tVmFsdWUiLCJnZXRDaGlsZHJlbkRhdGEiLCJ0YWJsZVByb3BzIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsIm1hcmdpbmZsYWciLCJmbGFnIiwic2hvd1NlYXJjaCIsIl9pdGVtJHByb3BzIiwicGFnZVR5cGUiLCJvbkNsaWNrIiwiaWNvbiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsImNsYXNzTmFtZSIsInN0eWxlIiwibWFyZ2luTGVmdCIsInRpdGxlIiwicGxhY2VtZW50IiwidHJpZ2dlciIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkMiIsImV2YWwiLCJwdXNoIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkMyIsInNldFN0YXRlIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNCIsInZpc2libGUiLCJvblZpc2libGVDaGFuZ2UiLCJ2aXNpYmFsZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwicmVuZGVyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXAiLCJ0ZW1wIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsIkZyYWdtZW50IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2luYXRpb24iLCJzY3JvbGwiLCJ4IiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJyZWYiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCBtYXJnaW5mbGFnID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9PntjaGlsZHJlbn08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnNcIiksIHtcclxuICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0b29sLWJ1dHRvbnMtbWFyZ2luXCIpXTogIXNob3dTZWFyY2ggfHwgbWFyZ2luZmxhZyxcclxuICAgICAgICB9KX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcyAsdGFibGVQcm9wcz17fX0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBsZXQgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQga2V5ID0gJydcclxuICAgIGlmKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKXtcclxuICAgICBrZXkgPSByb3dLZXkocmVjb3JkKSBcclxuICAgIH1lbHNle1xyXG4gICAgICBrZXkgPSByZWNvcmRbcm93S2V5XVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0ge30gYXMgYW55O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiZWRpdG9yX2ZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidGV4dFwiKX0+e2NoaWxkcmVufTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICB2aXNpYmxlPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25WaXNpYmxlQ2hhbmdlPXsodmlzaWJhbGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh2aXNpYmFsZSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHt9IGFzIGFueTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJlZGl0b3JfZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0ZXh0XCIpfT57Y2hpbGRyZW59PC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICBvYmosXHJcbiAgICAgIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29sdW1ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAodGVtcC5zZWFyY2ggPT09IHRydWUgfHwgdGVtcC5zZWFyY2g/LnNob3cgPT09IHRydWUpIHtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICAgIGxhYmVsQ29sOiB0ZW1wLnNlYXJjaD8ubGFiZWxDb2wsXHJcbiAgICAgICAgICB3cmFwcGVyQ29sOiB0ZW1wLnNlYXJjaD8ud3JhcHBlckNvbCxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnNlYXJjaFJ1bGVzID8gdGVtcC5zZWFyY2hSdWxlcyA6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHByb3BzOiB7IC4uLnRlbXAucHJvcHMgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gbnVsbFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleDtcclxuICAgICAgICBkZWZhdWx0VmFsdWVbbmFtZV0gPSB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucnVsZXM7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNwYW47XHJcbiAgICAgIGlmICh0ZW1wLmNvbHVtblNlYXJjaCkge1xyXG4gICAgICAgIHRlbXAuZmlsdGVyUHJvcHMgPSB7XHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG4gICAgICBpZiAodGVtcC5zdHlsZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAge3RleHQgIT09IFwiXCIgJiYgdGV4dCAhPT0gbnVsbCAmJiB0ZXh0ICE9PSB1bmRlZmluZWQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLWJhY2tcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29sLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKCF0ZW1wLmVsbGlwc2lzKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRlbXAgPSB7IC4uLnRlbXAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoZWRpdG9yRm9ybSA9PSB0cnVlKSB7XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEV5ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybSgpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJyb3dcIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPSBzaG93VG9vbEJ1dHRvbiAmJiBzZWxmQnV0dG9ucy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZVwiKSwgY2xhc3NOYW1lKX0+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJsZWZ0XCIpfT5cclxuICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwicmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCIgJiZcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHNlbGZCdXR0b25zLCBzZWFyY2hGb3Jtcy5sZW5ndGggPT0gMCl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcInRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidGFibGUtdG9wXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAoc2VhcmNoRmxhZyAmJiAhdG9vbEZsYWcpIHx8ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b3AyXCIpXTogIXNlYXJjaEZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBRWxDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFHeEMsT0FBT0MsVUFBVSxNQUFNLFFBQVE7QUFDL0IsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLHFCQUFxQjtBQUd4QyxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsT0FBTyxRQUFpQixhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBRWpDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQThEMUMsTUFBTUMsUUFBUSxTQUFTdkIsYUFBYSxDQUF3QjtFQU0xRHdCLFdBQVdBLENBQUNDLEtBQVUsRUFBRTtJQUFBLElBQUFDLEtBQUEsRUFBQUMsS0FBQTtJQUN0QixLQUFLLENBQUNGLEtBQUssQ0FB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
|