nsc-react-component 2.0.12 → 2.0.15
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/checkbox/CheckboxGroup.js +34 -27
- package/lib/config.d.ts +2 -0
- package/lib/config.js +5 -3
- package/lib/pageComponents/BasePage/Form.js +7 -14
- package/lib/pageComponents/BasePage/index.d.ts +6 -3
- package/lib/pageComponents/BasePage/index.js +149 -96
- package/lib/pageComponents/BasePage/index.module.less +1 -1
- package/lib/radio/RadioGroup.js +39 -32
- package/lib/select/index.js +24 -14
- package/lib/tagSelect/index.js +13 -10
- package/package.json +1 -1
|
@@ -109,6 +109,12 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
_createClass(BasePage, [{
|
|
112
|
+
key: "componentDidMount",
|
|
113
|
+
value: function componentDidMount() {
|
|
114
|
+
var initData = this.props.initData;
|
|
115
|
+
initData && initData();
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
112
118
|
key: "showForm",
|
|
113
119
|
value: //显示表单
|
|
114
120
|
function showForm(value) {
|
|
@@ -123,7 +129,8 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
123
129
|
value: function onDelete() {
|
|
124
130
|
var _this$props = this.props,
|
|
125
131
|
deleteUrl = _this$props.deleteUrl,
|
|
126
|
-
onDelete = _this$props.onDelete
|
|
132
|
+
onDelete = _this$props.onDelete,
|
|
133
|
+
deleteParams = _this$props.deleteParams;
|
|
127
134
|
var selectedRowKeys = this.state.selectedRowKeys;
|
|
128
135
|
|
|
129
136
|
if (selectedRowKeys.length == 0) {
|
|
@@ -146,13 +153,20 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
146
153
|
okText: "确认",
|
|
147
154
|
cancelText: "取消",
|
|
148
155
|
onOk: function onOk() {
|
|
149
|
-
var
|
|
156
|
+
var defaultParams = {
|
|
150
157
|
method: "post",
|
|
151
|
-
|
|
152
|
-
ids: selectedRowKeys
|
|
158
|
+
params: {
|
|
159
|
+
ids: selectedRowKeys.join()
|
|
153
160
|
}
|
|
154
161
|
};
|
|
155
|
-
|
|
162
|
+
var requestParams = {};
|
|
163
|
+
|
|
164
|
+
if (defaultParams) {
|
|
165
|
+
requestParams = _objectSpread({}, deleteParams);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
requestParams = _objectSpread({}, defaultParams);
|
|
169
|
+
request(deleteUrl, _objectSpread({}, requestParams)).then(function (res) {
|
|
156
170
|
var code = res.code;
|
|
157
171
|
|
|
158
172
|
if (code === 200) {
|
|
@@ -181,8 +195,15 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
181
195
|
value: function onSearch() {
|
|
182
196
|
var _this$searchRef$curre;
|
|
183
197
|
|
|
198
|
+
var onSearch = this.props.onSearch;
|
|
184
199
|
var fromValue = (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 ? void 0 : _this$searchRef$curre.getFieldsValue();
|
|
185
|
-
|
|
200
|
+
|
|
201
|
+
if (onSearch) {
|
|
202
|
+
onSearch(fromValue);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
this.tableLoad(fromValue);
|
|
186
207
|
} //表格重新加载
|
|
187
208
|
|
|
188
209
|
}, {
|
|
@@ -254,20 +275,14 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
254
275
|
selectedRowKeys: _toConsumableArray(newids)
|
|
255
276
|
});
|
|
256
277
|
}
|
|
257
|
-
}, {
|
|
258
|
-
key: "load",
|
|
259
|
-
value: function load(params) {
|
|
260
|
-
var _this$tableRef$curren3;
|
|
261
|
-
|
|
262
|
-
(_this$tableRef$curren3 = this.tableRef.current) === null || _this$tableRef$curren3 === void 0 ? void 0 : _this$tableRef$curren3.store.load({
|
|
263
|
-
params: params
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
278
|
}, {
|
|
267
279
|
key: "renderCloumnButton",
|
|
268
280
|
value: function renderCloumnButton(columnButtons, record, actionButton) {
|
|
269
|
-
var _this$
|
|
270
|
-
|
|
281
|
+
var _this$props2 = this.props,
|
|
282
|
+
_this$props2$editorFo = _this$props2.editorForm,
|
|
283
|
+
editorForm = _this$props2$editorFo === void 0 ? true : _this$props2$editorFo,
|
|
284
|
+
_this$props2$buttons = _this$props2.buttons,
|
|
285
|
+
buttons = _this$props2$buttons === void 0 ? [] : _this$props2$buttons;
|
|
271
286
|
var content = columnButtons.map(function (item, index) {
|
|
272
287
|
var _item$props = item.props,
|
|
273
288
|
children = _item$props.children,
|
|
@@ -275,38 +290,59 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
275
290
|
_onClick = _item$props.onClick,
|
|
276
291
|
params = _objectWithoutProperties(_item$props, _excluded);
|
|
277
292
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
293
|
+
if (index > 2) {
|
|
294
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
295
|
+
className: cls(styles["editor"], styles["content-item"]),
|
|
296
|
+
key: index,
|
|
297
|
+
onClick: function onClick() {
|
|
298
|
+
_onClick && _onClick(record);
|
|
299
|
+
}
|
|
300
|
+
}, params), children);
|
|
301
|
+
}
|
|
302
|
+
}); // let num = 1;
|
|
303
|
+
// if (buttons.indexOf("search") > -1 && buttons.indexOf("editor") > -1) {
|
|
304
|
+
// }
|
|
305
|
+
// // if (!actionButton || !editorForm) num = 3;
|
|
306
|
+
// if (columnButtons.length > 3) {
|
|
307
|
+
// return (
|
|
308
|
+
// <Popover
|
|
309
|
+
// placement="bottom"
|
|
310
|
+
// title={null}
|
|
311
|
+
// content={content}
|
|
312
|
+
// trigger={["click", "hover"]}
|
|
313
|
+
// // overlayClassName={styles['pop']}
|
|
314
|
+
// >
|
|
315
|
+
// <div className={styles["editor"]}>
|
|
316
|
+
// 更多
|
|
317
|
+
// <span className={styles["icon"]}>
|
|
318
|
+
// <DownOutlined />
|
|
319
|
+
// </span>
|
|
320
|
+
// </div>
|
|
321
|
+
// </Popover>
|
|
322
|
+
// );
|
|
323
|
+
// } else {
|
|
324
|
+
|
|
325
|
+
return columnButtons.map(function (item, index) {
|
|
326
|
+
var _item$props2 = item.props,
|
|
327
|
+
children = _item$props2.children,
|
|
328
|
+
pageType = _item$props2.pageType,
|
|
329
|
+
_onClick2 = _item$props2.onClick,
|
|
330
|
+
Icon = _item$props2.Icon,
|
|
331
|
+
params = _objectWithoutProperties(_item$props2, _excluded2);
|
|
332
|
+
|
|
333
|
+
if (index == 2) {
|
|
334
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
335
|
+
placement: "bottom",
|
|
336
|
+
title: null,
|
|
337
|
+
content: content,
|
|
338
|
+
trigger: ["click", "hover"] // overlayClassName={styles['pop']}
|
|
339
|
+
|
|
340
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
341
|
+
className: styles["editor"]
|
|
342
|
+
}, "\u66F4\u591A", /*#__PURE__*/React.createElement("span", {
|
|
343
|
+
className: styles["icon"]
|
|
344
|
+
}, /*#__PURE__*/React.createElement(DownOutlined, null))));
|
|
345
|
+
} else if (index < 2) {
|
|
310
346
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
311
347
|
className: styles["editor"],
|
|
312
348
|
key: index,
|
|
@@ -314,8 +350,10 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
314
350
|
_onClick2 && _onClick2(record);
|
|
315
351
|
}
|
|
316
352
|
}, params), Icon, " ", children);
|
|
317
|
-
}
|
|
318
|
-
|
|
353
|
+
} else {
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
}); // }
|
|
319
357
|
} //树点击事件
|
|
320
358
|
|
|
321
359
|
}, {
|
|
@@ -350,39 +388,43 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
350
388
|
}
|
|
351
389
|
|
|
352
390
|
var fromValue = (_this$searchRef$curre3 = this.searchRef.current) === null || _this$searchRef$curre3 === void 0 ? void 0 : _this$searchRef$curre3.getFieldsValue();
|
|
353
|
-
searchField && this.
|
|
391
|
+
searchField && this.tableLoad(_objectSpread(_objectSpread({}, fromValue), {}, _defineProperty({}, searchField, keyword)));
|
|
392
|
+
}
|
|
393
|
+
}, {
|
|
394
|
+
key: "resetSearch",
|
|
395
|
+
value: function resetSearch() {
|
|
396
|
+
var _this$searchRef$curre4;
|
|
397
|
+
|
|
398
|
+
(_this$searchRef$curre4 = this.searchRef.current) === null || _this$searchRef$curre4 === void 0 ? void 0 : _this$searchRef$curre4.resetFields();
|
|
354
399
|
}
|
|
355
400
|
}, {
|
|
356
401
|
key: "render",
|
|
357
402
|
value: function render() {
|
|
358
403
|
var _this2 = this;
|
|
359
404
|
|
|
360
|
-
console.log("styles", styles);
|
|
361
405
|
var selectedRowKeys = this.state.selectedRowKeys;
|
|
362
|
-
var _this$
|
|
363
|
-
_this$
|
|
364
|
-
columns = _this$
|
|
365
|
-
_this$
|
|
366
|
-
showSearch = _this$
|
|
367
|
-
children = _this$
|
|
368
|
-
_this$
|
|
369
|
-
submitUrl = _this$
|
|
370
|
-
_this$
|
|
371
|
-
tableProps = _this$
|
|
372
|
-
_this$
|
|
373
|
-
treeProps = _this$
|
|
374
|
-
_this$
|
|
375
|
-
showLeft = _this$
|
|
376
|
-
_this$
|
|
377
|
-
submitParams = _this$
|
|
378
|
-
_this$
|
|
379
|
-
showToolButton = _this$
|
|
380
|
-
_this$
|
|
381
|
-
|
|
382
|
-
_this$
|
|
383
|
-
|
|
384
|
-
_this$props2$editorFo = _this$props2.editorForm,
|
|
385
|
-
editorForm = _this$props2$editorFo === void 0 ? true : _this$props2$editorFo;
|
|
406
|
+
var _this$props3 = this.props,
|
|
407
|
+
_this$props3$columns = _this$props3.columns,
|
|
408
|
+
columns = _this$props3$columns === void 0 ? [] : _this$props3$columns,
|
|
409
|
+
_this$props3$showSear = _this$props3.showSearch,
|
|
410
|
+
showSearch = _this$props3$showSear === void 0 ? true : _this$props3$showSear,
|
|
411
|
+
children = _this$props3.children,
|
|
412
|
+
_this$props3$submitUr = _this$props3.submitUrl,
|
|
413
|
+
submitUrl = _this$props3$submitUr === void 0 ? "" : _this$props3$submitUr,
|
|
414
|
+
_this$props3$tablePro = _this$props3.tableProps,
|
|
415
|
+
tableProps = _this$props3$tablePro === void 0 ? {} : _this$props3$tablePro,
|
|
416
|
+
_this$props3$treeProp = _this$props3.treeProps,
|
|
417
|
+
treeProps = _this$props3$treeProp === void 0 ? {} : _this$props3$treeProp,
|
|
418
|
+
_this$props3$showLeft = _this$props3.showLeft,
|
|
419
|
+
showLeft = _this$props3$showLeft === void 0 ? false : _this$props3$showLeft,
|
|
420
|
+
_this$props3$submitPa = _this$props3.submitParams,
|
|
421
|
+
submitParams = _this$props3$submitPa === void 0 ? {} : _this$props3$submitPa,
|
|
422
|
+
_this$props3$showTool = _this$props3.showToolButton,
|
|
423
|
+
showToolButton = _this$props3$showTool === void 0 ? true : _this$props3$showTool,
|
|
424
|
+
_this$props3$buttons = _this$props3.buttons,
|
|
425
|
+
buttons = _this$props3$buttons === void 0 ? [] : _this$props3$buttons,
|
|
426
|
+
_this$props3$editorFo = _this$props3.editorForm,
|
|
427
|
+
editorForm = _this$props3$editorFo === void 0 ? true : _this$props3$editorFo;
|
|
386
428
|
var _tableProps$store = tableProps.store,
|
|
387
429
|
store = _tableProps$store === void 0 ? {} : _tableProps$store,
|
|
388
430
|
_tableProps$filterCol = tableProps.filterColumn,
|
|
@@ -454,13 +496,33 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
454
496
|
delete temp.props;
|
|
455
497
|
tableColumn.push(temp);
|
|
456
498
|
});
|
|
457
|
-
var
|
|
499
|
+
var selfButtons = [];
|
|
458
500
|
var columnButtons = [];
|
|
459
501
|
|
|
502
|
+
if (actionButton && editorForm == true) {
|
|
503
|
+
if (buttons.indexOf("search") > -1) {
|
|
504
|
+
columnButtons.push( /*#__PURE__*/React.createElement("div", {
|
|
505
|
+
className: styles["editor"],
|
|
506
|
+
onClick: function onClick(record) {
|
|
507
|
+
_this2.showForm(record, false);
|
|
508
|
+
}
|
|
509
|
+
}, "\u67E5\u770B"));
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
if (buttons.indexOf("editor") > -1) {
|
|
513
|
+
columnButtons.push( /*#__PURE__*/React.createElement("div", {
|
|
514
|
+
className: styles["editor"],
|
|
515
|
+
onClick: function onClick(record) {
|
|
516
|
+
_this2.showForm(record, true);
|
|
517
|
+
}
|
|
518
|
+
}, "\u7F16\u8F91"));
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
460
522
|
if (Array.isArray(children)) {
|
|
461
523
|
children.map(function (item) {
|
|
462
524
|
if (item.props.pageType == "toolButton") {
|
|
463
|
-
|
|
525
|
+
selfButtons.push(item);
|
|
464
526
|
} else if (item.props.pageType == "cloumnButton") {
|
|
465
527
|
columnButtons.push(item);
|
|
466
528
|
}
|
|
@@ -469,7 +531,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
469
531
|
var props = children.props;
|
|
470
532
|
|
|
471
533
|
if (props.pageType == "toolButton") {
|
|
472
|
-
|
|
534
|
+
selfButtons.push(children);
|
|
473
535
|
} else if (props.pageType == "cloumnButton") {
|
|
474
536
|
columnButtons.push(children);
|
|
475
537
|
}
|
|
@@ -481,15 +543,10 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
481
543
|
align: "center",
|
|
482
544
|
width: 150,
|
|
483
545
|
render: function render(text, record) {
|
|
546
|
+
console.log("aaaa");
|
|
484
547
|
return /*#__PURE__*/React.createElement("div", {
|
|
485
548
|
className: styles["action"]
|
|
486
|
-
},
|
|
487
|
-
className: styles["editor"],
|
|
488
|
-
onClick: _this2.showForm.bind(_this2, record, false)
|
|
489
|
-
}, "\u67E5\u770B"), /*#__PURE__*/React.createElement("div", {
|
|
490
|
-
className: styles["editor"],
|
|
491
|
-
onClick: _this2.showForm.bind(_this2, record, true)
|
|
492
|
-
}, "\u7F16\u8F91")), _this2.renderCloumnButton(columnButtons, record, actionButton));
|
|
549
|
+
}, _this2.renderCloumnButton(columnButtons, record, actionButton));
|
|
493
550
|
}
|
|
494
551
|
});
|
|
495
552
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -542,11 +599,7 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
542
599
|
})
|
|
543
600
|
}, "\u67E5\u8BE2"), /*#__PURE__*/React.createElement(Button, {
|
|
544
601
|
type: "primary",
|
|
545
|
-
onClick:
|
|
546
|
-
var _this2$searchRef$curr;
|
|
547
|
-
|
|
548
|
-
(_this2$searchRef$curr = _this2.searchRef.current) === null || _this2$searchRef$curr === void 0 ? void 0 : _this2$searchRef$curr.resetFields();
|
|
549
|
-
},
|
|
602
|
+
onClick: this.resetSearch.bind(this),
|
|
550
603
|
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
551
604
|
type: iconType.refresh
|
|
552
605
|
})
|
|
@@ -564,20 +617,20 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
564
617
|
style: {
|
|
565
618
|
marginLeft: 0
|
|
566
619
|
}
|
|
567
|
-
},
|
|
620
|
+
}, buttons.indexOf("add") > -1 && editorForm == true && /*#__PURE__*/React.createElement(Button, {
|
|
568
621
|
type: "primary",
|
|
569
622
|
onClick: this.showForm.bind(this),
|
|
570
623
|
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
571
624
|
type: iconType.add
|
|
572
625
|
})
|
|
573
|
-
}, "\u6DFB\u52A0"),
|
|
626
|
+
}, "\u6DFB\u52A0"), buttons.indexOf("delete") > -1 && /*#__PURE__*/React.createElement(Button // type={"primary"}
|
|
574
627
|
, {
|
|
575
628
|
onClick: this.onDelete.bind(this),
|
|
576
629
|
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
577
630
|
type: iconType.delete3
|
|
578
631
|
}),
|
|
579
632
|
danger: true
|
|
580
|
-
}, "\u5220\u9664"),
|
|
633
|
+
}, "\u5220\u9664"), selfButtons.map(function (item, index) {
|
|
581
634
|
return /*#__PURE__*/React.createElement("div", {
|
|
582
635
|
key: index
|
|
583
636
|
}, item);
|
|
@@ -602,4 +655,4 @@ var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
|
602
655
|
}(PureComponent);
|
|
603
656
|
|
|
604
657
|
export default BasePage;
|
|
605
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJGb3JtIiwiQnV0dG9uIiwiTW9kYWwiLCJQb3BvdmVyIiwibWVzc2FnZSIsIkljb24iLCJpY29uVHlwZSIsIkVkaXRvckZvcm0iLCJjbHMiLCJzdHlsZXMiLCJEb3duT3V0bGluZWQiLCJVcE91dGxpbmVkIiwiZ2V0Tm9kZSIsInJlcXVlc3QiLCJCYXNlUGFnZSIsInByb3BzIiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwic3RhdGUiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50IiwidmFsdWUiLCJkZXB0SWQiLCJ0YWJsZUxvYWQiLCJ0eXBlIiwic2VsZWN0ZWRSb3dLZXlzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZmxhZyIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJzaG93IiwiZGVsZXRlVXJsIiwib25EZWxldGUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiRXJyb3IiLCJjb25maXJtIiwidGl0bGUiLCJva1RleHQiLCJjYW5jZWxUZXh0Iiwib25PayIsInJlcXVlc3RQYXJhbSIsIm1ldGhvZCIsImRhdGEiLCJpZHMiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInBhcmFtcyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwiZnJvbVZhbHVlIiwic2VhcmNoUmVmIiwiZ2V0RmllbGRzVmFsdWUiLCJyZWxvYWQiLCJyZWNvcmQiLCJzZWxlY3RlZCIsIm5ld1NlbGVjdGVkUm93S2V5cyIsImlkIiwibWFwIiwiaXRlbSIsImluZGV4Iiwic3BsaWNlIiwic2V0U3RhdGUiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwiY2hhbmdlSWRzIiwiaW5kZXhPZiIsInB1c2giLCJjb2x1bW5CdXR0b25zIiwiYWN0aW9uQnV0dG9uIiwiZWRpdG9yRm9ybSIsImNvbnRlbnQiLCJjaGlsZHJlbiIsInBhZ2VUeXBlIiwib25DbGljayIsIm51bSIsInNlbGVjdGVkS2V5cyIsInNlbGVjdGVkTm9kZXMiLCJrZXl3b3JkIiwidHJlZVByb3BzIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJpc0xlYWYiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiY29sdW1ucyIsInNob3dTZWFyY2giLCJzdWJtaXRVcmwiLCJ0YWJsZVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsInNob3dBZGRCdXR0b24iLCJzaG93RGVsZXRlQnV0dG9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidGFibGVQYXJhbXMiLCJyb3dTZWxlY3Rpb24iLCJvblNlbGVjdCIsInJvd1NlbGVjdGlvbk9uU2VsZWN0IiwiYmluZCIsIm9uU2VsZWN0QWxsIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRlbXAiLCJzZWFyY2giLCJmaWVsZCIsImRhdGFJbmRleCIsImxhYmVsIiwiZWRpdG9yIiwicnVsZXMiLCJzcGFuIiwiZGljdE5hbWUiLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsIkJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJhbGlnbiIsIndpZHRoIiwicmVuZGVyIiwidGV4dCIsInNob3dGb3JtIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiZGlzcGxheSIsInRyZWVTZWxlY3QiLCJwbGFjZWhvbGRlciIsIm1hcmdpblRvcCIsIm9uU2VhcmNoIiwicmVzZXRGaWVsZHMiLCJyZWZyZXNoIiwiYV9zdHlsZSIsIm1hcmdpbkxlZnQiLCJhZGQi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OEQ7QUFBcEMsU0FBcURSLFdBQXJELEVBREYsQ0F4RkYsQ0FkRixFQTBHRzlCLFVBQVUsaUJBQ1Qsb0JBQUMsVUFBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLEtBQUtsRCxTQURaO0FBRUUsUUFBQSxRQUFRLEVBQUUsS0FBSzZHLFFBQUwsQ0FBY3pCLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWjtBQUdFLFFBQUEsUUFBUSxFQUFFLEtBQUtzQyxXQUFMLENBQWlCdEMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FIWjtBQUlFLFFBQUEsU0FBUyxFQUFFTSxXQUpiO0FBS0UsUUFBQSxTQUFTLEVBQUV2QixTQUxiO0FBTUUsUUFBQSxZQUFZLEVBQUVHLFlBTmhCO0FBT0UsUUFBQSxRQUFRLEVBQUUsS0FBS3JGLEtBQUwsQ0FBVzBJO0FBUHZCLFFBM0dKLENBREY7QUF3SEQ7Ozs7RUFuY29CNUosYTs7QUFxY3ZCLGVBQWVpQixRQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vY29tbW9uL0ljb25Gb250XCI7XHJcbmltcG9ydCB7IGljb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IERvd25PdXRsaW5lZCwgVXBPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBCdXR0b25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIGFjdGlvbkJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm6buY6K6k5pi+56S65paw5aKe77yM57yW6L6R6buY6K6k5oyJ6ZKuXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbn1cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7XHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogYW55O1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBzaG93QWRkQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmt7vliqDmjInpkq5cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBzaG93RGVsZXRlQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliKDpmaTmjInpkq5cclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiBhbnk7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICB9O1xyXG4gIH1cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBmbGFnID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2hvdyh2YWx1ZSwgZmxhZyk7XHJcbiAgfVxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoKSB7XHJcbiAgICBjb25zdCB7IGRlbGV0ZVVybCwgb25EZWxldGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgb25EZWxldGUgJiYgb25EZWxldGUoc2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIHRpdGxlOiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBpY29uOiA8SWNvbiB0eXBlPXsnaWNvbnRpc2hpLTMnfSAvPixcclxuICAgICAgb2tUZXh0OiBcIuehruiupFwiLFxyXG4gICAgICBjYW5jZWxUZXh0OiBcIuWPlua2iFwiLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IFwicG9zdFwiLCBkYXRhOiB7IGlkczogc2VsZWN0ZWRSb3dLZXlzIH0gfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICB0aGlzLmxvYWQoZnJvbVZhbHVlKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZCgpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUucmVsb2FkKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIHJldHVybiBmcm9tVmFsdWU7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0KHJlY29yZDogYW55LCBzZWxlY3RlZDogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0tleXMgPSBbLi4ubmV3U2VsZWN0ZWRSb3dLZXlzLCByZWNvcmQuaWRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09IHJlY29yZC5pZCkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IG5ld1NlbGVjdGVkUm93S2V5cyxcclxuICAgIH0pO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdEFsbChzZWxlY3RlZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueSwgY2hhbmdlUm93czogYW55KSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGNoYW5nZVJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgY2hhbmdlSWRzID0gY2hhbmdlUm93cy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgbG9hZChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHsgcGFyYW1zIH0pO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSwgYWN0aW9uQnV0dG9uPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgeyBlZGl0b3JGb3JtID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoc3R5bGVzW1wiZWRpdG9yXCJdLCBzdHlsZXNbXCJjb250ZW50LWl0ZW1cIl0pfVxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICAgIGxldCBudW0gPSAxO1xyXG4gICAgaWYgKCFhY3Rpb25CdXR0b24gfHwgIWVkaXRvckZvcm0pIG51bSA9IDM7XHJcbiAgICBpZiAoY29sdW1uQnV0dG9ucy5sZW5ndGggPiBudW0pIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19PlxyXG4gICAgICAgICAgICDmm7TlpJpcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbXCJpY29uXCJdfT5cclxuICAgICAgICAgICAgICA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIEljb24sIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXRvclwiXX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7SWNvbn0ge2NoaWxkcmVufVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9OiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHsgc2VhcmNoS2V5ID0gXCJrZXlcIiwgc2VhcmNoRmllbGQgPSBcIlwiIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgLy8gbGV0IG1hcERhdGEgPSB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUuZ2V0RmxhdHRlbkRhdGEoKTtcclxuICAgICAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy5sb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInN0eWxlc1wiLCBzdHlsZXMpO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBzaG93QWRkQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgc2hvd0RlbGV0ZUJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7IGZpbHRlckNvbHVtbiwgc3RvcmUgfSBhcyBhbnk7XHJcblxyXG4gICAgaWYgKHNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgIG9uU2VsZWN0OiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgICBvblNlbGVjdEFsbDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdEFsbC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgY29sdW1uV2lkdGg6IDQwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IEJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5wcm9wcy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wcm9wcy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzLnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogMTUwLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJhY3Rpb25cIl19PlxyXG4gICAgICAgICAgICAgIHthY3Rpb25CdXR0b24gJiYgZWRpdG9yRm9ybSA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXRvclwiXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dGb3JtLmJpbmQodGhpcywgcmVjb3JkLCBmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXRvclwiXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dGb3JtLmJpbmQodGhpcywgcmVjb3JkLCB0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCwgYWN0aW9uQnV0dG9uKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJwYWdlXCJdfSBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImxlZnRcIl19PlxyXG4gICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wicmlnaHRcIl19PlxyXG4gICAgICAgICAge3Nob3dTZWFyY2ggJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiaGVhZGVyXCJdfT5cclxuICAgICAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgIGxhYmVsQ29sPXt7fX1cclxuICAgICAgICAgICAgICAgIHdyYXBwZXJDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgbGF5b3V0PVwiaW5saW5lXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMiAmJiAhdGhpcy5zdGF0ZS5leHBhbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPC9Gb3JtPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJidXR0b25zXCJdfSBzdHlsZT17eyBtYXJnaW5Ub3A6IDAgfX0+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLnNlYXJjaH0gLz59XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUucmVmcmVzaH0gLz59XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIOmHjee9rlxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYV9zdHlsZX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGV4cGFuZCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQ6ICFleHBhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gXCLmlLbotbdcIiA6IFwi5bGV5byAXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gPFVwT3V0bGluZWQgLz4gOiA8RG93bk91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiYnV0dG9uc1wiXX0gc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fT5cclxuICAgICAgICAgICAgICB7c2hvd0FkZEJ1dHRvbiAmJiBlZGl0b3JGb3JtID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBpY29uPXs8SWNvbiB0eXBlPXtpY29uVHlwZS5hZGR9IC8+fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICDmt7vliqBcclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAge3Nob3dEZWxldGVCdXR0b24gJiYgZWRpdG9yRm9ybSA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuZGVsZXRlM30gLz59XHJcbiAgICAgICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAge0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInRhYmxlXCJdfT5cclxuICAgICAgICAgICAgPFRhYmxlIHJlZj17dGhpcy50YWJsZVJlZn0gY29sdW1ucz17dGFibGVDb2x1bW59IHsuLi50YWJsZVBhcmFtc30gLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgIG9uQ2FuY2VsPXt0aGlzLnNob3dGb3JtLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGNhbGxCYWNrPXt0aGlzLnRhYmxlUmVsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdfQ==
|
|
658
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2VDb21wb25lbnRzL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJGb3JtIiwiQnV0dG9uIiwiTW9kYWwiLCJQb3BvdmVyIiwibWVzc2FnZSIsIkljb24iLCJpY29uVHlwZSIsIkVkaXRvckZvcm0iLCJjbHMiLCJzdHlsZXMiLCJEb3duT3V0bGluZWQiLCJVcE91dGxpbmVkIiwiZ2V0Tm9kZSIsInJlcXVlc3QiLCJCYXNlUGFnZSIsInByb3BzIiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwic3RhdGUiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50IiwidmFsdWUiLCJkZXB0SWQiLCJ0YWJsZUxvYWQiLCJ0eXBlIiwic2VsZWN0ZWRSb3dLZXlzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiaW5pdERhdGEiLCJmbGFnIiwiZWRpdG9yUmVmIiwiY3VycmVudCIsInNob3ciLCJkZWxldGVVcmwiLCJvbkRlbGV0ZSIsImRlbGV0ZVBhcmFtcyIsImxlbmd0aCIsIndhcm5pbmciLCJFcnJvciIsImNvbmZpcm0iLCJ0aXRsZSIsIm9rVGV4dCIsImNhbmNlbFRleHQiLCJvbk9rIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsInBhcmFtcyIsImlkcyIsImpvaW4iLCJyZXF1ZXN0UGFyYW1zIiwidGhlbiIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ0YWJsZVJlZiIsInN0b3JlIiwibG9hZCIsIm9uU2VhcmNoIiwiZnJvbVZhbHVlIiwic2VhcmNoUmVmIiwiZ2V0RmllbGRzVmFsdWUiLCJyZWxvYWQiLCJyZWNvcmQiLCJzZWxlY3RlZCIsIm5ld1NlbGVjdGVkUm93S2V5cyIsImlkIiwibWFwIiwiaXRlbSIsImluZGV4Iiwic3BsaWNlIiwic2V0U3RhdGUiLCJzZWxlY3RlZFJvd3MiLCJjaGFuZ2VSb3dzIiwibmV3aWRzIiwiY2hhbmdlSWRzIiwiaW5kZXhPZiIsInB1c2giLCJjb2x1bW5CdXR0b25zIiwiYWN0aW9uQnV0dG9uIiwiZWRpdG9yRm9ybSIsImJ1dHRvbnMiLCJjb250ZW50IiwiY2hpbGRyZW4iLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJzZWxlY3RlZEtleXMiLCJzZWxlY3RlZE5vZGVzIiwia2V5d29yZCIsInRyZWVQcm9wcyIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwiaXNMZWFmIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsInJlc2V0RmllbGRzIiwiY29sdW1ucyIsInNob3dTZWFyY2giLCJzdWJtaXRVcmwiLCJ0YWJsZVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRhYmxlUGFyYW1zIiwicm93U2VsZWN0aW9uIiwib25TZWxlY3QiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsImJpbmQiLCJvblNlbGVjdEFsbCIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwiY29sdW1uV2lkdGgiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJ0ZW1wIiwic2VhcmNoIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbCIsImVkaXRvciIsInJ1bGVzIiwic3BhbiIsImRpY3ROYW1lIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJzZWxmQnV0dG9ucyIsInNob3dGb3JtIiwiQXJyYXkiLCJpc0FycmF5IiwiYWxpZ24iLCJ3aWR0aCIsInJlbmRlciIsInRleHQiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJkaXNwbGF5IiwidHJlZVNlbGVjdCIsInBsYWNlaG9sZGVyIiwibWFyZ2luVG9wIiwicmVzZXRTZWFyY2giLCJyZWZyZXNoIiwiYV9zdHlsZSIsIm1hcmdpbkxlZnQiLCJhZGQiLCJkZWxldGUzIiwidGFibGVSZWxvYWQiLCJvblN1Ym1pdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBQ0EsT0FBT0MsS0FBUCxNQUFrQixhQUFsQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsWUFBakI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFlBQWpCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEtBQVAsTUFBa0IsYUFBbEI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLGVBQXBCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixlQUFwQjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsdUJBQWpCO0FBQ0EsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLFFBQXZCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5CO0FBRUEsU0FBU0MsWUFBVCxFQUF1QkMsVUFBdkIsUUFBeUMsbUJBQXpDO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixhQUF4QjtBQUNBLE9BQU9DLE9BQVAsTUFBb0IsYUFBcEI7O0lBdUNNQyxROzs7OztBQU1KLG9CQUFZQyxLQUFaLEVBQXdCO0FBQUE7O0FBQUE7O0FBQ3RCLDhCQUFNQSxLQUFOOztBQURzQiw0RUFMYm5CLEtBQUssQ0FBQ29CLFNBQU4sRUFLYTs7QUFBQSwyRUFKZHBCLEtBQUssQ0FBQ29CLFNBQU4sRUFJYzs7QUFBQSw2RUFIWnBCLEtBQUssQ0FBQ29CLFNBQU4sRUFHWTs7QUFBQSw2RUFGWnBCLEtBQUssQ0FBQ29CLFNBQU4sRUFFWTs7QUFBQSwrREFhYixVQUFDQyxlQUFELEVBQTBCO0FBQ25DLHdCQUFvQyxNQUFLQyxLQUF6QztBQUFBLFVBQVFDLElBQVIsZUFBUUEsSUFBUjtB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Rlo7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLcUMsV0FBTCxDQUFpQnJDLElBQWpCLENBQXNCLElBQXRCLENBSFo7QUFJRSxRQUFBLFNBQVMsRUFBRU0sV0FKYjtBQUtFLFFBQUEsU0FBUyxFQUFFckIsU0FMYjtBQU1FLFFBQUEsWUFBWSxFQUFFRyxZQU5oQjtBQU9FLFFBQUEsUUFBUSxFQUFFLEtBQUsxRixLQUFMLENBQVc0STtBQVB2QixRQXpHSixDQURGO0FBc0hEOzs7O0VBNWdCb0I5SixhOztBQThnQnZCLGVBQWVpQixRQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vZm9ybVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vY29tbW9uL0ljb25Gb250XCI7XHJcbmltcG9ydCB7IGljb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IERvd25PdXRsaW5lZCwgVXBPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBCdXR0b25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIGFjdGlvbkJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm6buY6K6k5pi+56S65paw5aKe77yM57yW6L6R6buY6K6k5oyJ6ZKuXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbn1cclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbn1cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86IGFueTtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgLy8gc2hvd0FkZEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65re75Yqg5oyJ6ZKuXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgLy8gc2hvd0RlbGV0ZUJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65Yig6Zmk5oyJ6ZKuXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogYW55OyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86IGFueTtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiFxyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZmxhZyA9IHRydWUpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGZsYWcpO1xyXG4gIH1cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKCkge1xyXG4gICAgY29uc3QgeyBkZWxldGVVcmwsIG9uRGVsZXRlLCBkZWxldGVQYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgb25EZWxldGUgJiYgb25EZWxldGUoc2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIHRpdGxlOiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBpY29uOiA8SWNvbiB0eXBlPXsnaWNvbnRpc2hpLTMnfSAvPixcclxuICAgICAgb2tUZXh0OiBcIuehruiupFwiLFxyXG4gICAgICBjYW5jZWxUZXh0OiBcIuWPlua2iFwiLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWRzOiBzZWxlY3RlZFJvd0tleXMuam9pbigpIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2goKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmcm9tVmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZChmcm9tVmFsdWUpO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKCkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5yZWxvYWQoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzO1xyXG4gIH1cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgcmV0dXJuIGZyb21WYWx1ZTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5uZXdTZWxlY3RlZFJvd0tleXMsIHJlY29yZC5pZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkLmlkKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3RlZFJvd0tleXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogbmV3U2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsKHNlbGVjdGVkOiBhbnksIHNlbGVjdGVkUm93czogYW55LCBjaGFuZ2VSb3dzOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG5ld2lkczogYW55ID0gW107XHJcbiAgICBpZiAoY2hhbmdlUm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBjaGFuZ2VJZHMgPSBjaGFuZ2VSb3dzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcclxuICAgICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5cywgLi4uY2hhbmdlSWRzXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2VJZHMuaW5kZXhPZihpdGVtKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBuZXdpZHMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbLi4ubmV3aWRzXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnksIGFjdGlvbkJ1dHRvbj86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHsgZWRpdG9yRm9ybSA9IHRydWUsIGJ1dHRvbnMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhzdHlsZXNbXCJlZGl0b3JcIl0sIHN0eWxlc1tcImNvbnRlbnQtaXRlbVwiXSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBsZXQgbnVtID0gMTtcclxuICAgIC8vIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSAmJiBidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgLy8gfVxyXG4gICAgLy8gLy8gaWYgKCFhY3Rpb25CdXR0b24gfHwgIWVkaXRvckZvcm0pIG51bSA9IDM7XHJcbiAgICAvLyBpZiAoY29sdW1uQnV0dG9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAvLyAgIHJldHVybiAoXHJcbiAgICAvLyAgICAgPFBvcG92ZXJcclxuICAgIC8vICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAvLyAgICAgICB0aXRsZT17bnVsbH1cclxuICAgIC8vICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAvLyAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiLCBcImhvdmVyXCJdfVxyXG4gICAgLy8gICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgIC8vICAgICA+XHJcbiAgICAvLyAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfT5cclxuICAgIC8vICAgICAgICAg5pu05aSaXHJcbiAgICAvLyAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzW1wiaWNvblwiXX0+XHJcbiAgICAvLyAgICAgICAgICAgPERvd25PdXRsaW5lZCAvPlxyXG4gICAgLy8gICAgICAgICA8L3NwYW4+XHJcbiAgICAvLyAgICAgICA8L2Rpdj5cclxuICAgIC8vICAgICA8L1BvcG92ZXI+XHJcbiAgICAvLyAgICk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIEljb24sIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID09IDIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCIsIFwiaG92ZXJcIl19XHJcbiAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19PlxyXG4gICAgICAgICAgICAgIOabtOWkmlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzW1wiaWNvblwiXX0+XHJcbiAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGluZGV4IDwgMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtJY29ufSB7Y2hpbGRyZW59XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH06IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3QgeyBzZWFyY2hLZXkgPSBcImtleVwiLCBzZWFyY2hGaWVsZCA9IFwiXCIgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAvLyBsZXQgbWFwRGF0YSA9IHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5nZXRGbGF0dGVuRGF0YSgpO1xyXG4gICAgICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkUm93S2V5cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIC8vIHNob3dBZGRCdXR0b24gPSB0cnVlLFxyXG4gICAgICAvLyBzaG93RGVsZXRlQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25CdXR0b24gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlIH0gYXMgYW55O1xyXG5cclxuICAgIGlmIChzaG93Um93U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBzZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgICAgICBvblNlbGVjdDogdGhpcy5yb3dTZWxlY3Rpb25PblNlbGVjdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgb25TZWxlY3RBbGw6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3RBbGwuYmluZCh0aGlzKSxcclxuICAgICAgICAgIGNvbHVtbldpZHRoOiA0MCxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICB9KTtcclxuICAgICAgZGVsZXRlIHRlbXAucnVsZXM7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNwYW47XHJcbiAgICAgIGlmICh0ZW1wLmNvbHVtblNlYXJjaCkge1xyXG4gICAgICAgIHRlbXAuZmlsdGVyUHJvcHMgPSB7XHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcblxyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBpZiAoYWN0aW9uQnV0dG9uICYmIGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQsIGZhbHNlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJlZGl0b3JcIl19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucHJvcHMucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHMucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogMTUwLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWFhYVwiKTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJhY3Rpb25cIl19PlxyXG4gICAgICAgICAgICAgIHsvKiB7YWN0aW9uQnV0dG9uICYmIGVkaXRvckZvcm0gPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICB7YnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMsIHJlY29yZCwgZmFsc2UpfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7YnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93Rm9ybS5iaW5kKHRoaXMsIHJlY29yZCwgdHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICApfSAqL31cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkLCBhY3Rpb25CdXR0b24pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInBhZ2VcIl19IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibGVmdFwiXX0+XHJcbiAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJyaWdodFwiXX0+XHJcbiAgICAgICAgICB7c2hvd1NlYXJjaCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJoZWFkZXJcIl19PlxyXG4gICAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgd3JhcHBlckNvbD17e319XHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ9XCJpbmxpbmVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyICYmICF0aGlzLnN0YXRlLmV4cGFuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImJ1dHRvbnNcIl19IHN0eWxlPXt7IG1hcmdpblRvcDogMCB9fT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuc2VhcmNofSAvPn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVzZXRTZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUucmVmcmVzaH0gLz59XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIOmHjee9rlxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYV9zdHlsZX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGV4cGFuZCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQ6ICFleHBhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gXCLmlLbotbdcIiA6IFwi5bGV5byAXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gPFVwT3V0bGluZWQgLz4gOiA8RG93bk91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiYnV0dG9uc1wiXX0gc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fT5cclxuICAgICAgICAgICAgICB7YnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEgJiYgZWRpdG9yRm9ybSA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuYWRkfSAvPn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLmRlbGV0ZTN9IC8+fVxyXG4gICAgICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1widGFibGVcIl19PlxyXG4gICAgICAgICAgICA8VGFibGUgcmVmPXt0aGlzLnRhYmxlUmVmfSBjb2x1bW5zPXt0YWJsZUNvbHVtbn0gey4uLnRhYmxlUGFyYW1zfSAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgY2FsbEJhY2s9e3RoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl19
|