raise-common-lib 0.0.261 → 0.0.262
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/bundles/raise-common-lib.umd.js +38 -17
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/common-grid/index.component.js +21 -7
- package/esm2015/lib/form/drawer-form/drawer-form.component.js +12 -11
- package/esm5/lib/common-grid/index.component.js +28 -8
- package/esm5/lib/form/drawer-form/drawer-form.component.js +12 -11
- package/fesm2015/raise-common-lib.js +31 -16
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +38 -17
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/common-grid/index.component.d.ts +1 -0
- package/package.json +1 -1
- package/raise-common-lib.metadata.json +1 -1
|
@@ -181,9 +181,7 @@ export class CommonGridComponent {
|
|
|
181
181
|
? changes.dataSource.currentValue
|
|
182
182
|
: null;
|
|
183
183
|
if (bindRows) {
|
|
184
|
-
if (this.allowPaging &&
|
|
185
|
-
bindRows.length &&
|
|
186
|
-
!this.pageSettings) {
|
|
184
|
+
if (this.allowPaging && bindRows.length && !this.pageSettings) {
|
|
187
185
|
this.pageSettings =
|
|
188
186
|
bindRows.length > 9
|
|
189
187
|
? {
|
|
@@ -199,10 +197,12 @@ export class CommonGridComponent {
|
|
|
199
197
|
!this.dateTreeApplyingFilter) {
|
|
200
198
|
this.captureDateTreeRawFromDataSource(changes.dataSource.currentValue);
|
|
201
199
|
}
|
|
202
|
-
if (changes.enableDateTreeFilter &&
|
|
200
|
+
if (changes.enableDateTreeFilter &&
|
|
201
|
+
changes.enableDateTreeFilter.currentValue) {
|
|
203
202
|
this.captureDateTreeRawFromDataSource(this.dataSource);
|
|
204
203
|
}
|
|
205
|
-
if (changes.enableDateTreeFilter &&
|
|
204
|
+
if (changes.enableDateTreeFilter &&
|
|
205
|
+
!changes.enableDateTreeFilter.currentValue) {
|
|
206
206
|
this.dateTreeHelper && this.dateTreeHelper.close();
|
|
207
207
|
this.dateTreeDisplayRows = [];
|
|
208
208
|
this.dateTreeRawRows = [];
|
|
@@ -760,11 +760,25 @@ export class CommonGridComponent {
|
|
|
760
760
|
this.ref && this.ref.markForCheck();
|
|
761
761
|
this.ref && this.ref.detectChanges();
|
|
762
762
|
}
|
|
763
|
+
/**
|
|
764
|
+
* @param {?} args
|
|
765
|
+
* @return {?}
|
|
766
|
+
*/
|
|
767
|
+
beforeDataBound(args) {
|
|
768
|
+
if (args.actionArgs &&
|
|
769
|
+
(args.actionArgs.action === "clearFilter" ||
|
|
770
|
+
args.actionArgs.requestType === "searching")) {
|
|
771
|
+
if (((/** @type {?} */ (this.grid))).pagerModule.pagerObj.isAllPage &&
|
|
772
|
+
args.count !== ((/** @type {?} */ (this.grid))).pageSettings.pageSize) {
|
|
773
|
+
((/** @type {?} */ (this.grid))).pagerModule.pagerObj.isAllPage = false;
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
}
|
|
763
777
|
}
|
|
764
778
|
CommonGridComponent.decorators = [
|
|
765
779
|
{ type: Component, args: [{
|
|
766
780
|
selector: "rs-common-grid",
|
|
767
|
-
template: "<rs-date-tree-filter-popover\r\n *ngIf=\"enableDateTreeFilter && dateTreeHelper && dateTreeHelper.popoverVisible\"\r\n #dateTreePopoverRef\r\n [ngStyle]=\"dateTreeHelper.popoverStyle\"\r\n [field]=\"dateTreeHelper.popoverField\"\r\n [translation]=\"translation\"\r\n [sourceRows]=\"dateTreePopoverSourceRows\"\r\n [dateFields]=\"dateTreeHelper.dateFields\"\r\n [selectedByField]=\"dateTreeHelper.selectedByField\"\r\n [fieldLabelMap]=\"dateTreeHelper.fieldLabelMap\"\r\n (apply)=\"dateTreeHelper.updateSelection($event)\"\r\n (close)=\"dateTreeHelper.close()\"\r\n></rs-date-tree-filter-popover>\r\n<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"gridBindDataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"gridBindDataSource && gridBindDataSource.length ? contextMenuItems : null\"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n [isPrimaryKey]=\"item?.isPrimaryKey ? true : false\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
|
|
781
|
+
template: "<rs-date-tree-filter-popover\r\n *ngIf=\"\r\n enableDateTreeFilter && dateTreeHelper && dateTreeHelper.popoverVisible\r\n \"\r\n #dateTreePopoverRef\r\n [ngStyle]=\"dateTreeHelper.popoverStyle\"\r\n [field]=\"dateTreeHelper.popoverField\"\r\n [translation]=\"translation\"\r\n [sourceRows]=\"dateTreePopoverSourceRows\"\r\n [dateFields]=\"dateTreeHelper.dateFields\"\r\n [selectedByField]=\"dateTreeHelper.selectedByField\"\r\n [fieldLabelMap]=\"dateTreeHelper.fieldLabelMap\"\r\n (apply)=\"dateTreeHelper.updateSelection($event)\"\r\n (close)=\"dateTreeHelper.close()\"\r\n></rs-date-tree-filter-popover>\r\n<ejs-grid\r\n #grid\r\n [id]=\"gridId\"\r\n [ngClass]=\"{\r\n 'hide-Check-box': !alwaysShowCheckbox,\r\n 'grid-loading': className === 'grid-loading'\r\n }\"\r\n [dataSource]=\"gridBindDataSource\"\r\n [allowPaging]=\"allowPaging && pageSettings\"\r\n [allowResizing]=\"true\"\r\n [pageSettings]=\"pageSettings\"\r\n [showColumnMenu]=\"true\"\r\n [allowSorting]=\"true\"\r\n [allowFiltering]=\"true\"\r\n [allowExcelExport]=\"true\"\r\n [allowRowDragAndDrop]=\"allowRowDragAndDrop\"\r\n [filterSettings]=\"filterSettings\"\r\n [resizeSettings]=\"resizeSettings\"\r\n [allowSelection]=\"true\"\r\n [editSettings]=\"editSettings\"\r\n [childGrid]=\"childGrid\"\r\n [contextMenuItems]=\"\r\n gridBindDataSource && gridBindDataSource.length ? contextMenuItems : null\r\n \"\r\n [selectionSettings]=\"selectionSettings\"\r\n (recordClick)=\"_recordClick($event)\"\r\n (recordDoubleClick)=\"_recordDoubleClick($event)\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (actionComplete)=\"_actionHandler($event)\"\r\n (rowSelected)=\"_rowSelected($event)\"\r\n (rowDeselecting)=\"_rowDeselecting($event)\"\r\n (rowDeselected)=\"_rowDeselected($event)\"\r\n style=\"border: none\"\r\n (contextMenuClick)=\"_onContextMenu($event)\"\r\n (contextMenuOpen)=\"contextMenuOpen($event)\"\r\n (queryCellInfo)=\"customiseCell($event)\"\r\n (dataBound)=\"_dataBound($event)\"\r\n (rowDataBound)=\"_rowDataBound($event)\"\r\n (rowSelecting)=\"_rowSelecting($event)\"\r\n (excelQueryCellInfo)=\"_exportQueryCellInfo($event)\"\r\n (rowDrop)=\"onRowDrop($event)\"\r\n (rowDragStart)=\"_rowDragStart($event)\"\r\n (rowDrag)=\"_rowDrag($event)\"\r\n (load)=\"_load()\"\r\n [frozenColumns]=\"frozenColumns\"\r\n [columnChooserSettings]=\"columnChooserSettings\"\r\n (beforeDataBound)=\"beforeDataBound($event)\"\r\n>\r\n <e-columns>\r\n <e-column\r\n *ngIf=\"showCheckBox\"\r\n type=\"checkbox\"\r\n [width]=\"checkBoxWidth\"\r\n [minWidth]=\"checkBoxWidth\"\r\n [showColumnMenu]=\"false\"\r\n [allowResizing]=\"false\"\r\n ></e-column>\r\n <e-column\r\n *ngFor=\"let item of fields; trackBy: trackByFn; let last = last\"\r\n [field]=\"item.columnName\"\r\n [filter]=\"item.filter ? item.filter : { type: 'CheckBox' }\"\r\n [customAttributes]=\"\r\n item.colName === 'entityUserList' || item.colName === 'kycProgress'\r\n ? { class: 'hideColumnFilterClass' }\r\n : {}\r\n \"\r\n [headerText]=\"item.columnDisplayName\"\r\n [textAlign]=\"item.textAlign\"\r\n [showColumnMenu]=\"item.showColumnMenu === undefined ? true : false\"\r\n [allowFiltering]=\"item.allowFiltering === undefined ? true : false\"\r\n [allowSorting]=\"item.allowSorting === undefined ? true : false\"\r\n [showInColumnChooser]=\"\r\n item.showInColumnChooser === undefined ? true : item.showInColumnChooser\r\n \"\r\n [editType]=\"item.editType\"\r\n [validationRules]=\"item.validationRules\"\r\n [type]=\"item.dataType || 'string'\"\r\n [width]=\"item.width\"\r\n [minWidth]=\"item.minWidth\"\r\n [format]=\"item.format\"\r\n [visible]=\"item.visible\"\r\n [template]=\"item.showTemplate ? columnTemplate : undefined\"\r\n [clipMode]=\"\r\n item.clipMode ? item.clipMode : clipMode || 'EllipsisWithTooltip'\r\n \"\r\n [sortComparer]=\"item.dateComparer || null\"\r\n [allowResizing]=\"!last\"\r\n [headerTemplate]=\"item.showHeaderTemplate ? headerTemplate : undefined\"\r\n [isPrimaryKey]=\"item?.isPrimaryKey ? true : false\"\r\n >\r\n </e-column>\r\n </e-columns>\r\n</ejs-grid>\r\n",
|
|
768
782
|
styles: [""]
|
|
769
783
|
}] }
|
|
770
784
|
];
|
|
@@ -1001,4 +1015,4 @@ if (false) {
|
|
|
1001
1015
|
*/
|
|
1002
1016
|
CommonGridComponent.prototype.ref;
|
|
1003
1017
|
}
|
|
1004
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFFVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxnQ0FBZ0MsR0FFakMsTUFBTSw2Q0FBNkMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBdUc5QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBHakMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7OztRQUU5QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDOztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FB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Qjs7SUFDcEIsd0NBQWU7O0lBQ2Ysd0NBQTJCOztJQUUzQiwwQ0FBbUI7O0lBdWJuQix1Q0FRRTs7Ozs7SUE3YlUsa0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZ3JpZHNcIjtcclxuaW1wb3J0IHsgdGltZXMgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1pbnB1dHNcIjtcclxuaW1wb3J0IHsgSUFjdGlvbk1lbnVJdGVtLCBJQ29sdW1uRmllbGQgfSBmcm9tIFwiLi4vY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgZ2V0VHJhbnNsYXRpb24gfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBjcmVhdGVSc0NvbW1vbkdyaWREYXRlVHJlZUhlbHBlcixcclxuICBEYXRlVHJlZUZpbHRlckhlbHBlcixcclxufSBmcm9tIFwiLi4vZGF0ZS10cmVlLWZpbHRlci9kYXRlLXRyZWUtZmlsdGVyLmhlbHBlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG4gIC8qKiDlvIDlkK/ml6XmnJ/moJHnrZvpgInvvIjpu5jorqTlhbPpl63vvIzkuI3lvbHlk43njrDmnInpobXpnaLvvIkgKi9cclxuICBASW5wdXQoKSBlbmFibGVEYXRlVHJlZUZpbHRlciA9IGZhbHNlO1xyXG4gIC8qKiDlj4LkuI7ml6XmnJ/moJHnrZvpgInnmoTliJflkI3miJYgaGludO+8jOWmgiBbJ0NyZWF0ZWRPbicsICdNb2RpZmllZE9uJ10gKi9cclxuICBASW5wdXQoKSBkYXRlVHJlZUZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICAvKipcclxuICAgKiDmnKrnrZvpgInljp/lp4vmlbDmja7vvIjlj6/pgInvvInjgIJcclxuICAgKiDkuI3kvKDml7bnlLHnu4Tku7blnKggZGF0YVNvdXJjZSDlj5jmm7Tml7boh6rliqjlv6vnhafvvJvkvKDliJnnlLHpobXpnaLoh6rooYznu7TmiqQgcmF344CCXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGF0ZVRyZWVTb3VyY2VSb3dzOiBhbnlbXSA9IG51bGw7XHJcbiAgLyoqIOWGheiBmuaooeW8j+S4i+S7jeWQkemhtemdouWQjOatpeetm+mAiee7k+aenO+8iOm7mOiupCBmYWxzZe+8jOS4gOiIrOaXoOmcgOe7keWumu+8iSAqL1xyXG4gIEBJbnB1dCgpIGRhdGVUcmVlRW1pdEZpbHRlcmVkUm93cyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiDml6XmnJ/moJHnrZvpgInlkI7nmoTooYzmlbDmja7vvIjlj6/pgInvvIzlpI3mnYLpobXpnaLkuI4gZGF0ZVRyZWVTb3VyY2VSb3dzIOaQremFjeS9v+eUqO+8iSAqL1xyXG4gIEBPdXRwdXQoKSBkYXRlVHJlZUZpbHRlcmVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkYXRlVHJlZVBvcG92ZXJSZWZcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGF0ZVRyZWVQb3BvdmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBkYXRlVHJlZUhlbHBlcjogRGF0ZVRyZWVGaWx0ZXJIZWxwZXI7XHJcbiAgLyoqIOWGheiBmuaooeW8j++8muihqOagvOWunumZhee7keWumueahOaVsOaNriAqL1xyXG4gIGRhdGVUcmVlRGlzcGxheVJvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZVJhd1Jvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdElkID0gW107XHJcbiAgc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICBpbmRleExpc3QgPSBbXTtcclxuICBjbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IGdldFRyYW5zbGF0aW9uKCk7XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyID0gY3JlYXRlUnNDb21tb25HcmlkRGF0ZVRyZWVIZWxwZXIoXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIChyb3dzKSA9PiB0aGlzLm9uRGF0ZVRyZWVSb3dzQXBwbGllZChyb3dzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuTG9hZGVkKSB0aGlzLmNsYXNzTmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLmdyaWRJZCA9XHJcbiAgICAgIHRoaXMuZ3JpZElkICsgRGF0ZS5ub3coKSArIFwiX1wiICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgNSk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4OyAvLyBvciBhIHVuaXF1ZSBpZGVudGlmaWVyIGluIHlvdXIgb2JqZWN0XHJcbiAgfVxyXG5cclxuICAvKiogZWpzLWdyaWQg57uR5a6a5pWw5o2u5rqQ77ya5YaF6IGa5qih5byP55So5YaF6YOo5bGV56S65pWw5o2u77yM5ZCm5YiZ55SoIGRhdGFTb3VyY2UgKi9cclxuICBnZXQgZ3JpZEJpbmREYXRhU291cmNlKCk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVEaXNwbGF5Um93cztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICAvKiog5pel5pyf5qCRIHBvcG92ZXIg55So55qE5YWo6YeP5pWw5o2uICovXHJcbiAgZ2V0IGRhdGVUcmVlUG9wb3ZlclNvdXJjZVJvd3MoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRyZWVSYXdSb3dzO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdmFyIGJpbmRSb3dzID1cclxuICAgICAgY2hhbmdlcy5kYXRhU291cmNlICYmIGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWVcclxuICAgICAgICA/IGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWVcclxuICAgICAgICA6IG51bGw7XHJcbiAgICBpZiAoYmluZFJvd3MpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYWxsb3dQYWdpbmcgJiZcclxuICAgICAgICBiaW5kUm93cy5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5wYWdlU2V0dGluZ3NcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgYmluZFJvd3MubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogW1wiQWxsXCIsIFwiMjVcIiwgXCI1MFwiLCBcIjEwMFwiXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmXHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzID09IG51bGwgJiZcclxuICAgICAgY2hhbmdlcy5kYXRhU291cmNlICYmXHJcbiAgICAgICF0aGlzLmRhdGVUcmVlQXBwbHlpbmdGaWx0ZXJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgJiYgY2hhbmdlcy5lbmFibGVEYXRlVHJlZUZpbHRlci5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5jYXB0dXJlRGF0ZVRyZWVSYXdGcm9tRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgJiYgIWNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIgJiYgdGhpcy5kYXRlVHJlZUhlbHBlci5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmRhdGVUcmVlRGlzcGxheVJvd3MgPSBbXTtcclxuICAgICAgdGhpcy5kYXRlVHJlZVJhd1Jvd3MgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJlxyXG4gICAgICAoY2hhbmdlcy5lbmFibGVEYXRlVHJlZUZpbHRlciB8fFxyXG4gICAgICAgIGNoYW5nZXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHxcclxuICAgICAgICBjaGFuZ2VzLmRhdGVUcmVlU291cmNlUm93cyB8fFxyXG4gICAgICAgIGNoYW5nZXMuZmllbGRzIHx8XHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGVUcmVlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKHJvd3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmRhdGVUcmVlUmF3Um93cyA9IHJvd3MgPyByb3dzLnNsaWNlKCkgOiBbXTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZWRvd25cIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmIHRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUhlbHBlci5oYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6bW91c2VvdmVyXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkRvY3VtZW50TW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlRG9jdW1lbnRNb3VzZU92ZXIoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoRGF0ZVRyZWVGaWx0ZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgfHwgIXRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIHJvd3MgPVxyXG4gICAgICB0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsXHJcbiAgICAgICAgPyB0aGlzLmRhdGVUcmVlU291cmNlUm93c1xyXG4gICAgICAgIDogdGhpcy5kYXRlVHJlZVJhd1Jvd3MgfHwgW107XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyLnNldHVwKHtcclxuICAgICAgcm93czogcm93cyxcclxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyB8fCBbXSxcclxuICAgICAgaGludHM6IHRoaXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHwgW10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25EYXRlVHJlZVJvd3NBcHBsaWVkKHJvd3M6IGFueVtdKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gcm93cyB8fCBbXTtcclxuICAgIHRoaXMuZGF0ZVRyZWVBcHBseWluZ0ZpbHRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlU291cmNlUm93cyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVEaXNwbGF5Um93cyA9IHJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsIHx8IHRoaXMuZGF0ZVRyZWVFbWl0RmlsdGVyZWRSb3dzKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVGaWx0ZXJlZFJvd3MuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1wYWdlcmNvbnRhaW5lclwiKTtcclxuICAgIGlmIChwYWdlckNvbnRhaW5lcikge1xyXG4gICAgICB2YXIgbGlua0VsZW1lbnRzID0gcGFnZXJDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5lLWxpbmtcIik7XHJcbiAgICAgIGxpbmtFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJocmVmXCIpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWcoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZ1N0YXJ0KGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZ1N0YXJ0LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkRG91YmxlQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZERvdWJsZUNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGluZygkZXZlbnQpIHtcclxuICAgIHRoaXMucm93RGVzZWxlY3RpbmcuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuXHQgKiBbc2VsZWN0aW9uU2V0dGluZ3NdPVwieyBjaGVja2JveE9ubHk6IHRydWUgfVwiXHJcblx0ICAgW3Nob3dDaGVja0JveF09XCJ0cnVlXCJcclxuXHQgICDmjqfku7bkvb/nlKjml7bvvIzlv4XpobvphY3nva7kuIrpnaLkuKTkuKrlsZ7mgKfvvIzlkKbliJnvvIzlhajpgInkvJrlpLHmlYhcclxuXHQgKi9cclxuICBfcm93U2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgIGlmICgkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKCRldmVudC5kYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRQYWdpbmcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSBbXTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSB0aGlzLnNlbGVjdElkLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICBpdGVtW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAhPT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX29uQ29udGV4dE1lbnUoYXJncykge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uQmVnaW4oYXJncykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlR3JpZEFjdGlvbkJlZ2luKGFyZ3MpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25CZWdpbi5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGtleXdvcmRzKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VhcmNoKGtleXdvcmRzKTtcclxuICB9XHJcbiAgc2VsZWN0Um93cyhpbmRleExpc3Q6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyhpbmRleExpc3QpO1xyXG4gIH1cclxuICBzZWxlY3RSb3coaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coaW5kZXgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50Vmlld1JlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9taXNlQ2VsbCgkZXZlbnQpIHtcclxuICAgIHRoaXMucXVlcnlDZWxsSW5mby5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudU9wZW4oYXJncz86IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IChhcmdzIGFzIEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB8IGFueSkucm93SW5mby5yb3dEYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIGFyZ3MuY2FuY2VsID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuYWJsZUl0ZW1zID0gW107XHJcbiAgICBsZXQgaGlkZUl0ZW1zID0gW107XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUucmVmcmVzaCgpOyAvLyDmr4/mrKHngrnlh7vmjInpkq7lvLnnqpfliY3pnIDlho3mrKHliJ3lp4vljJbnirbmgIEg5ZCm5YiZ5LiN5pu05paw77ybXHJcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogSUFjdGlvbk1lbnVJdGVtKSA9PiB7XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrmRpc2FibGVk55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmRpc2FibGVkIHx8XHJcbiAgICAgICAgKGRhdGEuZGlzYWJsZUl0ZW0gJiYgZGF0YS5kaXNhYmxlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBlbmFibGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKu6ZyA6KaBaGlkZeeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5pc0hpZGUgfHxcclxuICAgICAgICAoZGF0YS5oaWRlSXRlbSAmJiBkYXRhLmhpZGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGhpZGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhlbmFibGVJdGVtcywgZmFsc2UpO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhoaWRlSXRlbXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25IYW5kbGVyKCRldmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBvblJvd0Ryb3AoZSkge1xyXG4gICAgdGhpcy5yb3dEcm9wLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoXCJlLWRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEYXRhQm91bmQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIGV4Y2VsRXhwb3J0KCkge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmFkZFJlY29yZCh7IC4uLnRoaXMuZGVmYXVsdFJlY29yZCwgaXNOZXc6IHRydWUgfSwgMCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuZW5kRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEl0ZW0oaW5kZXgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgdmFyIHNlbGVjdGVkUmVjb3JkID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpWzBdIGFzIGFueTtcclxuICAgIHRoaXMuZ3JpZC5kZWxldGVSZWNvcmQoc2VsZWN0ZWRSZWNvcmQgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5jbG9zZUVkaXQoKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbml0TGlzdCA9IChudW0gPSAyNSwga2V5ID0gXCJJZFwiKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICB0aW1lcyhudW0sIChpKSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgW2tleV06IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9O1xyXG4gIHB1YmxpYyBzaG93TG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1018
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21tb24tZ3JpZC9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUVYLFNBQVMsRUFFVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFDTCxnQ0FBZ0MsR0FFakMsTUFBTSw2Q0FBNkMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sbUJBQW1COzs7O0lBdUc5QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXBHakMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7OztRQUU5QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixlQUFVLEdBQUcsRUFBRSxDQUFDOztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hCLG1CQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBSWhCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FB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M0MsbURBQXNDOzs7OztJQUV0QyxtREFBNkM7Ozs7OztJQUs3QyxpREFBMEM7Ozs7O0lBRTFDLHVEQUEwQzs7SUFFMUMsZ0RBQWlEOztJQUNqRCw2Q0FBOEM7O0lBQzlDLDBDQUEyQzs7SUFDM0MsNENBQTZDOztJQUM3Qyw2Q0FBOEM7O0lBQzlDLDRDQUE2Qzs7SUFDN0MsNENBQTZDOztJQUM3Qyw0Q0FBNkM7O0lBQzdDLDBDQUEyQzs7SUFDM0MsMENBQTJDOztJQUMzQywyQ0FBNEM7O0lBQzVDLHdDQUF5Qzs7SUFDekMsa0RBQW1EOztJQUNuRCwyQ0FBNEM7O0lBQzVDLHNDQUF1Qzs7SUFDdkMsc0NBQXVDOztJQUN2QywyQ0FBNEM7Ozs7O0lBRTVDLG1EQUEyRDs7SUFFM0QsaURBQytCOztJQUUvQiw2Q0FBcUM7Ozs7O0lBRXJDLGtEQUFnQzs7Ozs7SUFDaEMsOENBQW9DOzs7OztJQUNwQyxxREFBdUM7O0lBRXZDLHVDQUFjOztJQUNkLDBDQUFvQjs7SUFDcEIsd0NBQWU7O0lBQ2Ysd0NBQTJCOztJQUUzQiwwQ0FBbUI7O0lBd2JuQix1Q0FRRTs7Ozs7SUE5YlUsa0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZ3JpZHNcIjtcclxuaW1wb3J0IHsgdGltZXMgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1pbnB1dHNcIjtcclxuaW1wb3J0IHsgSUFjdGlvbk1lbnVJdGVtLCBJQ29sdW1uRmllbGQgfSBmcm9tIFwiLi4vY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgZ2V0VHJhbnNsYXRpb24gfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBjcmVhdGVSc0NvbW1vbkdyaWREYXRlVHJlZUhlbHBlcixcclxuICBEYXRlVHJlZUZpbHRlckhlbHBlcixcclxufSBmcm9tIFwiLi4vZGF0ZS10cmVlLWZpbHRlci9kYXRlLXRyZWUtZmlsdGVyLmhlbHBlclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtY29tbW9uLWdyaWRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKFwiZ3JpZFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgZ3JpZDogR3JpZENvbXBvbmVudDtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3ggPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XHJcbiAgQElucHV0KCkgaGlkZGVuTG9hZGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0aG9yaXplZCA9IHRydWU7IC8vIERhdGFzZXTmmK/lkKbmjojmnYPvvIzmnKrmjojmnYPliJnmmL7npLrmnYPpmZDplJnor6/mj5DnpLpcclxuICAvLyBvbmx5IHVzZSBmb3IgbG9jYWwgZGF0YSBwYWdpbmF0aW9uXHJcbiAgQElucHV0KCkgc2VsZWN0ZWREaWZmS2V5ID0gXCJcIjtcclxuICBASW5wdXQoKSBncmlkSGVpZ2h0ID0gXCJcIjtcclxuICAvLyDov5nnjqnmhI/lv4XloavvvIzkuI3nhLZmaWx0ZXIgY29sdW1uQ2hvb3NlcumDveS8muaKpemUmVxyXG4gIEBJbnB1dCgpIGdyaWRJZCA9IFwiZ3JpZFwiO1xyXG4gIEBJbnB1dCgpIHJlc2l6ZVNldHRpbmdzID0geyBtb2RlOiBcIkF1dG9cIiB9O1xyXG4gIEBJbnB1dCgpIGZpbHRlclNldHRpbmdzID0geyB0eXBlOiBcIk1lbnVcIiB9O1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlOiBhbnk7XHJcbiAgQElucHV0KCkgZmllbGRzOiBJQ29sdW1uRmllbGRbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UgPSBbXTtcclxuICBASW5wdXQoKSBlZGl0U2V0dGluZ3M7XHJcbiAgQElucHV0KCkgY29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgcGFnZVNldHRpbmdzO1xyXG4gIEBJbnB1dCgpIGFsbG93UGFnaW5nID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhbGxvd1Jvd0RyYWdBbmREcm9wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2xpcE1vZGUgPSBcIkVsbGlwc2lzV2l0aFRvb2x0aXBcIjtcclxuICBASW5wdXQoKSBjaGVja0JveFdpZHRoID0gMzI7IC8vIGNvbCDmlbDph4/ov4flsJHnmoTml7blgJnvvIxjaGVja+WuveW6puS8muaLieS8uO+8jOi/meaXtuWAmeiuvue9rm51bGxcclxuICBASW5wdXQoKSBjaGlsZEdyaWQ7XHJcbiAgQElucHV0KCkgZnJvemVuQ29sdW1uczsgLy8gY29sIOaVsOmHj+i/h+WwkeeahOaXtuWAme+8jGNoZWNr5a695bqm5Lya5ouJ5Ly477yM6L+Z5pe25YCZ6K6+572ubnVsbFxyXG4gIEBJbnB1dCgpIGNvbHVtbkNob29zZXJTZXR0aW5ncztcclxuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvKipcclxuXHQgKiBTYW1wbGU6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHRleHQ6IFwiUHJldmlld1wiLFxyXG5cdFx0XHRcdHRhcmdldDogXCIuZS1jb250ZW50XCIsXHJcblx0XHRcdFx0aWQ6IFwicHJldmlldy1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJwcmV2aWV3XCIsXHJcblx0XHRcdH0sXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0ZXh0OiBcIkRvd25sb2FkXCIsXHJcblx0XHRcdFx0dGFyZ2V0OiBcIi5lLWNvbnRlbnRcIixcclxuXHRcdFx0XHRpZDogXCJkb3dubG9hZC1pY29uXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJkb3dubG9hZFwiLFxyXG5cdFx0XHR9XHJcblx0XHRdXHJcblx0XHTnlKjkuo7lrprkuYlyb3fkuK0g54K55Ye75LqL5Lu2XHJcblx0ICovXHJcbiAgQElucHV0KCkgY29udGV4dE1lbnVJdGVtczogSUFjdGlvbk1lbnVJdGVtW10gPSBbXTtcclxuICAvLyBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHsgY2hlY2tib3hPbmx5OiB0cnVlLCB0eXBlOiBcIk11bHRpcGxlXCIgfTtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25TZXR0aW5ncyA9IHtcclxuICAgIHR5cGU6IFwiTXVsdGlwbGVcIixcclxuICAgIC8vIHBlcnNpc3RTZWxlY3Rpb246IHRydWUsXHJcbiAgICBjaGVja2JveE9ubHk6IHRydWUsXHJcbiAgfTtcclxuICBASW5wdXQoKSBhbHdheXNTaG93Q2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0UmVjb3JkOiBhbnk7XHJcbiAgQElucHV0KCkgZGlzYWJsZVN5c3RlbVJvdzogYm9vbGVhbiA9IGZhbHNlOyAvLyDnpoHnlKhJc1N5dGVtID0gdHJ1ZeeahOaVtOihjFxyXG4gIC8qKiDlvIDlkK/ml6XmnJ/moJHnrZvpgInvvIjpu5jorqTlhbPpl63vvIzkuI3lvbHlk43njrDmnInpobXpnaLvvIkgKi9cclxuICBASW5wdXQoKSBlbmFibGVEYXRlVHJlZUZpbHRlciA9IGZhbHNlO1xyXG4gIC8qKiDlj4LkuI7ml6XmnJ/moJHnrZvpgInnmoTliJflkI3miJYgaGludO+8jOWmgiBbJ0NyZWF0ZWRPbicsICdNb2RpZmllZE9uJ10gKi9cclxuICBASW5wdXQoKSBkYXRlVHJlZUZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuICAvKipcclxuICAgKiDmnKrnrZvpgInljp/lp4vmlbDmja7vvIjlj6/pgInvvInjgIJcclxuICAgKiDkuI3kvKDml7bnlLHnu4Tku7blnKggZGF0YVNvdXJjZSDlj5jmm7Tml7boh6rliqjlv6vnhafvvJvkvKDliJnnlLHpobXpnaLoh6rooYznu7TmiqQgcmF344CCXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGF0ZVRyZWVTb3VyY2VSb3dzOiBhbnlbXSA9IG51bGw7XHJcbiAgLyoqIOWGheiBmuaooeW8j+S4i+S7jeWQkemhtemdouWQjOatpeetm+mAiee7k+aenO+8iOm7mOiupCBmYWxzZe+8jOS4gOiIrOaXoOmcgOe7keWumu+8iSAqL1xyXG4gIEBJbnB1dCgpIGRhdGVUcmVlRW1pdEZpbHRlcmVkUm93cyA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcmVjb3JkRG91YmxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGVzZWxlY3RpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFjdGlvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25CZWdpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RGF0YUJvdW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhQm91bmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGV4cG9ydFF1ZXJ5Q2VsbEluZm8gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJvd1NlbGVjdGluZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcm93RHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiDml6XmnJ/moJHnrZvpgInlkI7nmoTooYzmlbDmja7vvIjlj6/pgInvvIzlpI3mnYLpobXpnaLkuI4gZGF0ZVRyZWVTb3VyY2VSb3dzIOaQremFjeS9v+eUqO+8iSAqL1xyXG4gIEBPdXRwdXQoKSBkYXRlVHJlZUZpbHRlcmVkUm93cyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkYXRlVHJlZVBvcG92ZXJSZWZcIiwgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGF0ZVRyZWVQb3BvdmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBkYXRlVHJlZUhlbHBlcjogRGF0ZVRyZWVGaWx0ZXJIZWxwZXI7XHJcbiAgLyoqIOWGheiBmuaooeW8j++8muihqOagvOWunumZhee7keWumueahOaVsOaNriAqL1xyXG4gIGRhdGVUcmVlRGlzcGxheVJvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZVJhd1Jvd3M6IGFueVtdID0gW107XHJcbiAgcHJpdmF0ZSBkYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdElkID0gW107XHJcbiAgc3RhcnRQYWdpbmcgPSBmYWxzZTtcclxuICBpbmRleExpc3QgPSBbXTtcclxuICBjbGFzc05hbWUgPSBcImdyaWQtbG9hZGluZ1wiO1xyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvbiA9IGdldFRyYW5zbGF0aW9uKCk7XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyID0gY3JlYXRlUnNDb21tb25HcmlkRGF0ZVRyZWVIZWxwZXIodGhpcywgKHJvd3MpID0+XHJcbiAgICAgIHRoaXMub25EYXRlVHJlZVJvd3NBcHBsaWVkKHJvd3MpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWRkZW5Mb2FkZWQpIHRoaXMuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZ3JpZElkID1cclxuICAgICAgdGhpcy5ncmlkSWQgKyBEYXRlLm5vdygpICsgXCJfXCIgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA1KTtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7IC8vIG9yIGEgdW5pcXVlIGlkZW50aWZpZXIgaW4geW91ciBvYmplY3RcclxuICB9XHJcblxyXG4gIC8qKiBlanMtZ3JpZCDnu5HlrprmlbDmja7mupDvvJrlhoXogZrmqKHlvI/nlKjlhoXpg6jlsZXnpLrmlbDmja7vvIzlkKbliJnnlKggZGF0YVNvdXJjZSAqL1xyXG4gIGdldCBncmlkQmluZERhdGFTb3VyY2UoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgJiYgdGhpcy5kYXRlVHJlZVNvdXJjZVJvd3MgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlVHJlZURpc3BsYXlSb3dzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIC8qKiDml6XmnJ/moJEgcG9wb3ZlciDnlKjnmoTlhajph4/mlbDmja4gKi9cclxuICBnZXQgZGF0ZVRyZWVQb3BvdmVyU291cmNlUm93cygpOiBhbnlbXSB7XHJcbiAgICBpZiAodGhpcy5kYXRlVHJlZVNvdXJjZVJvd3MgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRlVHJlZVNvdXJjZVJvd3M7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlVHJlZVJhd1Jvd3M7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICB2YXIgYmluZFJvd3MgPVxyXG4gICAgICBjaGFuZ2VzLmRhdGFTb3VyY2UgJiYgY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZVxyXG4gICAgICAgID8gY2hhbmdlcy5kYXRhU291cmNlLmN1cnJlbnRWYWx1ZVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIGlmIChiaW5kUm93cykge1xyXG4gICAgICBpZiAodGhpcy5hbGxvd1BhZ2luZyAmJiBiaW5kUm93cy5sZW5ndGggJiYgIXRoaXMucGFnZVNldHRpbmdzKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2V0dGluZ3MgPVxyXG4gICAgICAgICAgYmluZFJvd3MubGVuZ3RoID4gOVxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplczogW1wiQWxsXCIsIFwiMjVcIiwgXCI1MFwiLCBcIjEwMFwiXSxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiA1MCxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmXHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVTb3VyY2VSb3dzID09IG51bGwgJiZcclxuICAgICAgY2hhbmdlcy5kYXRhU291cmNlICYmXHJcbiAgICAgICF0aGlzLmRhdGVUcmVlQXBwbHlpbmdGaWx0ZXJcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKGNoYW5nZXMuZGF0YVNvdXJjZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBjaGFuZ2VzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmXHJcbiAgICAgIGNoYW5nZXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIuY3VycmVudFZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jYXB0dXJlRGF0ZVRyZWVSYXdGcm9tRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBjaGFuZ2VzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmXHJcbiAgICAgICFjaGFuZ2VzLmVuYWJsZURhdGVUcmVlRmlsdGVyLmN1cnJlbnRWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIgJiYgdGhpcy5kYXRlVHJlZUhlbHBlci5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmRhdGVUcmVlRGlzcGxheVJvd3MgPSBbXTtcclxuICAgICAgdGhpcy5kYXRlVHJlZVJhd1Jvd3MgPSBbXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJlxyXG4gICAgICAoY2hhbmdlcy5lbmFibGVEYXRlVHJlZUZpbHRlciB8fFxyXG4gICAgICAgIGNoYW5nZXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHxcclxuICAgICAgICBjaGFuZ2VzLmRhdGVUcmVlU291cmNlUm93cyB8fFxyXG4gICAgICAgIGNoYW5nZXMuZmllbGRzIHx8XHJcbiAgICAgICAgY2hhbmdlcy5kYXRhU291cmNlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGVUcmVlRmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhcHR1cmVEYXRlVHJlZVJhd0Zyb21EYXRhU291cmNlKHJvd3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmRhdGVUcmVlUmF3Um93cyA9IHJvd3MgPyByb3dzLnNsaWNlKCkgOiBbXTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDptb3VzZWRvd25cIiwgW1wiJGV2ZW50XCJdKVxyXG4gIG9uRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZURhdGVUcmVlRmlsdGVyICYmIHRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUhlbHBlci5oYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6bW91c2VvdmVyXCIsIFtcIiRldmVudFwiXSlcclxuICBvbkRvY3VtZW50TW91c2VPdmVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlRG9jdW1lbnRNb3VzZU92ZXIoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoRGF0ZVRyZWVGaWx0ZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuZW5hYmxlRGF0ZVRyZWVGaWx0ZXIgfHwgIXRoaXMuZGF0ZVRyZWVIZWxwZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIHJvd3MgPVxyXG4gICAgICB0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsXHJcbiAgICAgICAgPyB0aGlzLmRhdGVUcmVlU291cmNlUm93c1xyXG4gICAgICAgIDogdGhpcy5kYXRlVHJlZVJhd1Jvd3MgfHwgW107XHJcbiAgICB0aGlzLmRhdGVUcmVlSGVscGVyLnNldHVwKHtcclxuICAgICAgcm93czogcm93cyxcclxuICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyB8fCBbXSxcclxuICAgICAgaGludHM6IHRoaXMuZGF0ZVRyZWVGaWx0ZXJGaWVsZHMgfHwgW10sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25EYXRlVHJlZVJvd3NBcHBsaWVkKHJvd3M6IGFueVtdKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gcm93cyB8fCBbXTtcclxuICAgIHRoaXMuZGF0ZVRyZWVBcHBseWluZ0ZpbHRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlU291cmNlUm93cyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVEaXNwbGF5Um93cyA9IHJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGVUcmVlU291cmNlUm93cyAhPSBudWxsIHx8IHRoaXMuZGF0ZVRyZWVFbWl0RmlsdGVyZWRSb3dzKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVGaWx0ZXJlZFJvd3MuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlVHJlZUFwcGx5aW5nRmlsdGVyID0gZmFsc2U7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIF9sb2FkKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWQpIHtcclxuICAgICAgKHRoaXMuZ3JpZC5sb2NhbGVPYmogYXMgYW55KS5sb2NhbGVTdHJpbmdzLkVtcHR5UmVjb3JkID1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uLllPVV9ET19OT1RfSEFWRV9USEVfREFUQVNFVF9QRVJNSVNTSU9OIHx8XHJcbiAgICAgICAgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgZGF0YXNldCBwZXJtaXNzaW9uIHRvIHZpZXcgdGhlIHJlY29yZC5cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9kYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICAvLyDmlbTkuKrnu4Tku7bliqDovb3lrozmiJDml7bnmoTlm57osIPlh73mlbBcclxuICAgIHZhciBwYWdlckNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZS1wYWdlcmNvbnRhaW5lclwiKTtcclxuICAgIGlmIChwYWdlckNvbnRhaW5lcikge1xyXG4gICAgICB2YXIgbGlua0VsZW1lbnRzID0gcGFnZXJDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcIi5lLWxpbmtcIik7XHJcbiAgICAgIGxpbmtFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJocmVmXCIpOyAvLyBTTVAyLTEwMzEwIOWIoOmZpOWIhumhteWZqOeahGhyZWblsZ7mgKdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaG9vc2VSZWNvcmRzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQm91bmQuZW1pdChhcmdzKTtcclxuICB9XHJcblxyXG4gIF9leHBvcnRRdWVyeUNlbGxJbmZvKGFyZ3MpIHtcclxuICAgIHRoaXMuZXhwb3J0UXVlcnlDZWxsSW5mby5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0RyYWcoYXJncykge1xyXG4gICAgdGhpcy5yb3dEcmFnLmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcm93RHJhZ1N0YXJ0KGFyZ3MpIHtcclxuICAgIHRoaXMucm93RHJhZ1N0YXJ0LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfcmVjb3JkRG91YmxlQ2xpY2soJGV2ZW50KSB7XHJcbiAgICB0aGlzLnJlY29yZERvdWJsZUNsaWNrLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIF9yb3dEZXNlbGVjdGluZygkZXZlbnQpIHtcclxuICAgIHRoaXMucm93RGVzZWxlY3RpbmcuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICAvKipcclxuXHQgKiBbc2VsZWN0aW9uU2V0dGluZ3NdPVwieyBjaGVja2JveE9ubHk6IHRydWUgfVwiXHJcblx0ICAgW3Nob3dDaGVja0JveF09XCJ0cnVlXCJcclxuXHQgICDmjqfku7bkvb/nlKjml7bvvIzlv4XpobvphY3nva7kuIrpnaLkuKTkuKrlsZ7mgKfvvIzlkKbliJnvvIzlhajpgInkvJrlpLHmlYhcclxuXHQgKi9cclxuICBfcm93U2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgIGlmICgkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAkZXZlbnQuZGF0YS5mb3JFYWNoKChfZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0gPT09IGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RJZC5wdXNoKCRldmVudC5kYXRhKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMucm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX3Jvd0Rlc2VsZWN0ZWQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERpZmZLZXkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhcnRQYWdpbmcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCRldmVudC5pc0hlYWRlckNoZWNrYm94Q2xpY2tlZCAmJiBBcnJheS5pc0FycmF5KCRldmVudC5kYXRhKSkge1xyXG4gICAgICAgICRldmVudC5kYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSBbXTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGEuZm9yRWFjaCgoX2RhdGEpID0+IHtcclxuICAgICAgICAgICAgaWYgKF9kYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gZGF0YVt0aGlzLnNlbGVjdGVkRGlmZktleV0pIHtcclxuICAgICAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGEuaXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0SWQgPSB0aGlzLnNlbGVjdElkLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgICBpdGVtW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSAhPT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBkYXRhW3RoaXMuc2VsZWN0ZWREaWZmS2V5XSA9PT0gJGV2ZW50LmRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZGF0YS5pc1NlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd0Rlc2VsZWN0ZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgX29uQ29udGV4dE1lbnUoYXJncykge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51LmVtaXQoYXJncyk7XHJcbiAgfVxyXG5cclxuICBfYWN0aW9uQmVnaW4oYXJncykge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJwYWdpbmdcIiB8fFxyXG4gICAgICAgIGFyZ3MucmVxdWVzdFR5cGUgPT09IFwic2VhcmNoaW5nXCIgfHxcclxuICAgICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PT0gXCJzb3J0aW5nXCIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGFydFBhZ2luZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lbmFibGVEYXRlVHJlZUZpbHRlciAmJiB0aGlzLmRhdGVUcmVlSGVscGVyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRyZWVIZWxwZXIuaGFuZGxlR3JpZEFjdGlvbkJlZ2luKGFyZ3MpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgYXJncy5yZXF1ZXN0VHlwZSA9PSBcImZpbHRlcmNob2ljZXJlcXVlc3RcIiB8fFxyXG4gICAgICBhcmdzLnJlcXVlc3RUeXBlID09PSBcImZpbHRlcnNlYXJjaGJlZ2luXCJcclxuICAgICkge1xyXG4gICAgICBhcmdzLmZpbHRlckNob2ljZUNvdW50ID0gMTUwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hY3Rpb25CZWdpbi5lbWl0KGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoKGtleXdvcmRzKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VhcmNoKGtleXdvcmRzKTtcclxuICB9XHJcbiAgc2VsZWN0Um93cyhpbmRleExpc3Q6IG51bWJlcltdKSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93cyhpbmRleExpc3QpO1xyXG4gIH1cclxuICBzZWxlY3RSb3coaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3coaW5kZXgpO1xyXG4gIH1cclxuICBnZXRDdXJyZW50Vmlld1JlY29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkLmdldEN1cnJlbnRWaWV3UmVjb3JkcygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9taXNlQ2VsbCgkZXZlbnQpIHtcclxuICAgIHRoaXMucXVlcnlDZWxsSW5mby5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBjb250ZXh0TWVudU9wZW4oYXJncz86IEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YSA9IChhcmdzIGFzIEJlZm9yZU9wZW5DbG9zZUV2ZW50QXJncyB8IGFueSkucm93SW5mby5yb3dEYXRhO1xyXG4gICAgaWYgKCFkYXRhKSB7XHJcbiAgICAgIGFyZ3MuY2FuY2VsID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuYWJsZUl0ZW1zID0gW107XHJcbiAgICBsZXQgaGlkZUl0ZW1zID0gW107XHJcbiAgICB0aGlzLmdyaWQuY29udGV4dE1lbnVNb2R1bGUuY29udGV4dE1lbnUucmVmcmVzaCgpOyAvLyDmr4/mrKHngrnlh7vmjInpkq7lvLnnqpfliY3pnIDlho3mrKHliJ3lp4vljJbnirbmgIEg5ZCm5YiZ5LiN5pu05paw77ybXHJcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoaXRlbTogSUFjdGlvbk1lbnVJdGVtKSA9PiB7XHJcbiAgICAgIC8vIOeUqOS6juWkhOeQhumDqOWIhuaMiemSrmRpc2FibGVk55qE5oOF5Ya1XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLmRpc2FibGVkIHx8XHJcbiAgICAgICAgKGRhdGEuZGlzYWJsZUl0ZW0gJiYgZGF0YS5kaXNhYmxlSXRlbS5pbmNsdWRlcyhpdGVtLmljb25Dc3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICBlbmFibGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmVuYWJsZUl0ZW1zKFxyXG4gICAgICAgIC8vIFx0W2l0ZW0udGV4dF0sXHJcbiAgICAgICAgLy8gXHRmYWxzZVxyXG4gICAgICAgIC8vICk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g55So5LqO5aSE55CG6YOo5YiG5oyJ6ZKu6ZyA6KaBaGlkZeeahOaDheWGtVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5pc0hpZGUgfHxcclxuICAgICAgICAoZGF0YS5oaWRlSXRlbSAmJiBkYXRhLmhpZGVJdGVtLmluY2x1ZGVzKGl0ZW0uaWNvbkNzcykpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGhpZGVJdGVtcy5wdXNoKGl0ZW0udGV4dCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhcclxuICAgICAgICAvLyBcdFtpdGVtLnRleHRdLFxyXG4gICAgICAgIC8vIFx0ZmFsc2VcclxuICAgICAgICAvLyApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZ3JpZC5jb250ZXh0TWVudU1vZHVsZS5jb250ZXh0TWVudS5lbmFibGVJdGVtcyhlbmFibGVJdGVtcywgZmFsc2UpO1xyXG4gICAgdGhpcy5ncmlkLmNvbnRleHRNZW51TW9kdWxlLmNvbnRleHRNZW51LmhpZGVJdGVtcyhoaWRlSXRlbXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIF9hY3Rpb25IYW5kbGVyKCRldmVudCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGlmZktleSAmJlxyXG4gICAgICAoJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInBhZ2luZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcImZpbHRlcmluZ1wiIHx8XHJcbiAgICAgICAgJGV2ZW50LnJlcXVlc3RUeXBlID09PSBcInNvcnRpbmdcIilcclxuICAgICkge1xyXG4gICAgICB0aGlzLmluZGV4TGlzdCA9IFtdO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNob29zZVJlY29yZHMoKTtcclxuICAgICAgICB0aGlzLnN0YXJ0UGFnaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlci5lbWl0KCRldmVudCk7XHJcbiAgICB0aGlzLmFjdGlvbkNvbXBsZXRlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hvb3NlUmVjb3JkcygpIHtcclxuICAgIHRoaXMuaW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuZ2V0Q3VycmVudFZpZXdSZWNvcmRzKCkuZm9yRWFjaCgocm93OiBhbnksIGkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICByb3cgJiZcclxuICAgICAgICAgIGRhdGFbdGhpcy5zZWxlY3RlZERpZmZLZXldID09PSByb3dbdGhpcy5zZWxlY3RlZERpZmZLZXldICYmXHJcbiAgICAgICAgICBkYXRhLmlzU2VsZWN0ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5zZWxlY3RSb3dzKHRoaXMuaW5kZXhMaXN0KTtcclxuICB9XHJcblxyXG4gIF9yZWNvcmRDbGljaygkZXZlbnQpIHtcclxuICAgIHRoaXMucmVjb3JkQ2xpY2suZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2goKTtcclxuICB9XHJcbiAgX3Jvd1NlbGVjdGluZyhlKSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGluZy5lbWl0KGUpO1xyXG4gIH1cclxuICByZWZyZXNoQ29sdW1ucygpIHtcclxuICAgIHRoaXMuZ3JpZC5yZWZyZXNoQ29sdW1ucygpO1xyXG4gIH1cclxuICByZWZyZXNoSGVhZGVyKCkge1xyXG4gICAgdGhpcy5ncmlkLnJlZnJlc2hIZWFkZXIoKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXM/KSB7XHJcbiAgICB0aGlzLmdyaWQuZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzKTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZ2V0U2VsZWN0ZWRSZWNvcmRzKCk7XHJcbiAgfVxyXG5cclxuICBvblJvd0Ryb3AoZSkge1xyXG4gICAgdGhpcy5yb3dEcm9wLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBfcm93RGF0YUJvdW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVN5c3RlbVJvdyAmJiAkZXZlbnQuZGF0YSAmJiAkZXZlbnQuZGF0YS5Jc1N5c3RlbSkge1xyXG4gICAgICAkZXZlbnQucm93LmNsYXNzTGlzdC5hZGQoXCJlLWRpc2FibGVkXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dEYXRhQm91bmQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIGV4Y2VsRXhwb3J0KCkge1xyXG4gICAgdGhpcy5ncmlkLmV4Y2VsRXhwb3J0KCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtKCkge1xyXG4gICAgdGhpcy5ncmlkLmFkZFJlY29yZCh7IC4uLnRoaXMuZGVmYXVsdFJlY29yZCwgaXNOZXc6IHRydWUgfSwgMCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncmlkLnNlbGVjdFJvdygwKTtcclxuICAgICAgdGhpcy5ncmlkLnN0YXJ0RWRpdCgpO1xyXG4gICAgfSwgMzApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUl0ZW0oKSB7XHJcbiAgICB0aGlzLmdyaWQuZW5kRWRpdCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdEl0ZW0oaW5kZXgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyaWQuc3RhcnRFZGl0KCk7XHJcbiAgICB9LCAzMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtKGluZGV4KSB7XHJcbiAgICB0aGlzLmdyaWQuc2VsZWN0Um93KE51bWJlcihpbmRleCkpO1xyXG4gICAgdmFyIHNlbGVjdGVkUmVjb3JkID0gdGhpcy5ncmlkLmdldFNlbGVjdGVkUmVjb3JkcygpWzBdIGFzIGFueTtcclxuICAgIHRoaXMuZ3JpZC5kZWxldGVSZWNvcmQoc2VsZWN0ZWRSZWNvcmQgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEl0ZW0oaW5kZXgpIHtcclxuICAgIHRoaXMuZ3JpZC5jbG9zZUVkaXQoKTtcclxuICAgIHRoaXMuZGVsZXRlSXRlbShpbmRleCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBpbml0TGlzdCA9IChudW0gPSAyNSwga2V5ID0gXCJJZFwiKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICB0aW1lcyhudW0sIChpKSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgW2tleV06IGksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9O1xyXG4gIHB1YmxpYyBzaG93TG9hZGluZygpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJncmlkLWxvYWRpbmdcIjtcclxuICAgIHRoaXMucmVmICYmIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWYgJiYgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLnJlZiAmJiB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBiZWZvcmVEYXRhQm91bmQoYXJnczogYW55KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGFyZ3MuYWN0aW9uQXJncyAmJlxyXG4gICAgICAoYXJncy5hY3Rpb25BcmdzLmFjdGlvbiA9PT0gXCJjbGVhckZpbHRlclwiIHx8XHJcbiAgICAgICAgYXJncy5hY3Rpb25BcmdzLnJlcXVlc3RUeXBlID09PSBcInNlYXJjaGluZ1wiKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAodGhpcy5ncmlkIGFzIGFueSkucGFnZXJNb2R1bGUucGFnZXJPYmouaXNBbGxQYWdlICYmXHJcbiAgICAgICAgYXJncy5jb3VudCAhPT0gKHRoaXMuZ3JpZCBhcyBhbnkpLnBhZ2VTZXR0aW5ncy5wYWdlU2l6ZVxyXG4gICAgICApIHtcclxuICAgICAgICAodGhpcy5ncmlkIGFzIGFueSkucGFnZXJNb2R1bGUucGFnZXJPYmouaXNBbGxQYWdlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -575,7 +575,7 @@ export class DrawerFormComponent {
|
|
|
575
575
|
*/
|
|
576
576
|
onClickAnchor(index) {
|
|
577
577
|
/** @type {?} */
|
|
578
|
-
const sectionItems = this.sectionEls.toArray();
|
|
578
|
+
const sectionItems = this.sectionEls && this.sectionEls.toArray();
|
|
579
579
|
sectionItems[index].nativeElement.scrollIntoView(true);
|
|
580
580
|
this.scrollIndex = index;
|
|
581
581
|
this.isClickAnchor = true;
|
|
@@ -602,15 +602,16 @@ export class DrawerFormComponent {
|
|
|
602
602
|
/** @type {?} */
|
|
603
603
|
const scrollHeight = scrollViewEl.scrollHeight - scrollViewEl.offsetHeight;
|
|
604
604
|
/** @type {?} */
|
|
605
|
-
const sectionViewRatio = this.sectionEls
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
605
|
+
const sectionViewRatio = this.sectionEls &&
|
|
606
|
+
this.sectionEls.toArray().map((/**
|
|
607
|
+
* @param {?} section
|
|
608
|
+
* @return {?}
|
|
609
|
+
*/
|
|
610
|
+
(section) => {
|
|
611
|
+
/** @type {?} */
|
|
612
|
+
const ratio = section.nativeElement.offsetHeight / scrollViewEl.scrollHeight;
|
|
613
|
+
return scrollHeight * ratio;
|
|
614
|
+
}));
|
|
614
615
|
/** @type {?} */
|
|
615
616
|
const onScroll = (/**
|
|
616
617
|
* @return {?}
|
|
@@ -741,4 +742,4 @@ if (false) {
|
|
|
741
742
|
*/
|
|
742
743
|
DrawerFormComponent.prototype.ref;
|
|
743
744
|
}
|
|
744
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7O01BRWYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBTy9DLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFrRDlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakQzQixVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBS2hCLGlCQUFZLEdBQUc7WUFDcEMsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUN5QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUV6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7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Ozs7O0lBQ2hELGdEQUN1RDs7SUFFdkQsd0NBQzRDOztJQUU1Qyx1Q0FBNkI7O0lBQzdCLDJDQUE0RTs7SUFDNUUsMkNBQTZDOztJQUU3QyxtQ0FBK0I7O0lBQy9CLDRDQUE0Qzs7SUFHNUMsdUNBQW9DOztJQUNwQywyQ0FBMkM7O0lBb1czQyx5Q0FDa0Q7O0lBQ2xELDBDQUFnQjs7SUFDaEIsNENBQXNCOzs7OztJQXJXVixrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIERyb3BEb3duTGlzdENvbXBvbmVudCxcclxuICBGaWx0ZXJpbmdFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHtcclxuICBFbWFpbFBhdHRlcm4sXHJcbiAgRmllbGRJdGVtLFxyXG4gIGZpbHRlclNob3dTZWN0aW9uLFxyXG4gIFNlY3Rpb25JdGVtLFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuY29uc3QgRk9STV9QUk9YWV9UQUcgPSBTeW1ib2wuZm9yKFwiZm9ybS1wcm94eVwiKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwiZm9ybVwiKSBfZm9ybTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIEBJbnB1dChcInNlY3Rpb25zXCIpIF9zZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dChcIm9wdGlvbnNNYXBcIikgb3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dChcInNob3dBbmNob3JcIikgc2hvd0FuY2hvciA9IHRydWU7XHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwib3B0aW9uRmllbGRzXCIpIG9wdGlvbkZpZWxkcyA9IHtcclxuICAgIHRleHQ6IFwidGV4dFwiLFxyXG4gICAgdmFsdWU6IFwiY29kZVwiLFxyXG4gICAgZGlzYWJsZWQ6IFwiZGlzYWJsZWRcIixcclxuICAgIGdyb3VwQnk6IG51bGwsXHJcbiAgfTtcclxuICBASW5wdXQoXCJzaG93RmlsdGVyTnVtYmVyXCIpIHNob3dGaWx0ZXJOdW1iZXIgPSAxMDtcclxuICBASW5wdXQoXCJudW1iZXJGb3JtYXRcIikgbnVtYmVyRm9ybWF0OiBzdHJpbmc7XHJcbiAgQElucHV0KFwiZGF0ZUZvcm1hdFwiKSBkYXRlRm9ybWF0ID0gXCJ5eXl5LU1NLWRkXCI7XHJcblxyXG4gIEBPdXRwdXQoXCJmb3JtQ2hhbmdlXCIpIGZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT4+KCk7XHJcbiAgQE91dHB1dChcImZpZWxkQ2hhbmdlXCIpIGZpZWxkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWVsZDogRmllbGRJdGVtO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZHJhd2VyRm9ybUVsXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJvb3RFbDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIC8vIOiHquWumuS5iSBmaWVsZCDmqKHmnb/lkozoh6rlrprkuYkgc2VjdGlvbiDmqKHmnb/nmoTlrrnlmahcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tVGVtcGxhdGVDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVNlY3Rpb25Db250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZHJvcGRvd25cIilcclxuICBkcm9wZG93bnM6IFF1ZXJ5TGlzdDxEcm9wRG93bkxpc3RDb21wb25lbnQ+O1xyXG5cclxuICBzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIGZpZWxkVHlwZU1hcDogUGFydGlhbDxSZWNvcmQ8RmllbGRJdGVtW1wiZmllbGRGb3JtVHlwZVwiXSwgRmllbGRJdGVtW10+PiA9IHt9O1xyXG4gIGZvcm1GaWVsZE1hcDogUmVjb3JkPHN0cmluZywgRmllbGRJdGVtPiA9IHt9O1xyXG5cclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZpZWxkTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybSh7IC4uLnRoaXMuZm9ybSwgLi4udGhpcy5fZm9ybSB9KTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLl9mb3JtKSB7XHJcbiAgICAgIGlmICghY2hhbmdlcy5fZm9ybS5jdXJyZW50VmFsdWVbRk9STV9QUk9YWV9UQUddKSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSBjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZHJvcGRvd25zLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoZHJvcGRvd25zOiBRdWVyeUxpc3Q8RHJvcERvd25MaXN0Q29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25zID0gZHJvcGRvd25zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB0aGlzLmZpZWxkVHlwZU1hcC5DdXN0b20gfHwgW107XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGaWVsZE1hcCgpIHtcclxuICAgIHRoaXMuZmllbGRUeXBlTWFwID0ge307XHJcbiAgICB0aGlzLmZvcm1GaWVsZE1hcCA9IHt9O1xyXG4gICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXSkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0ucHVzaChmaWVsZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtRmllbGRNYXBbZmllbGQuZm9ybUtleV0gPSBmaWVsZDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEZvcm0oZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5nZXRGb3JtUHJveHkodGhpcy5mb3JtYXRGb3JtKHRoaXMuc2VjdGlvbnMsIGZvcm0pKTtcclxuICAgIHRoaXMuc3luY0Zvcm1GaWVsZCgpO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIGVxdWFsKHZhbHVlOiBhbnksIGNvbXBhcmVWYWx1ZTogYW55KSB7XHJcbiAgICAvLyDlj6rlr7nmlbDnu4Tov5vooYznibnmrorliKTmlq1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KGNvbXBhcmVWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IGNvbXBhcmVWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICB2YWx1ZS5ldmVyeSgoaSwgaW5kZXgpID0+IGkgPT09IGNvbXBhcmVWYWx1ZVtpbmRleF0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmlzKHZhbHVlLCBjb21wYXJlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5lcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkOiBGaWVsZEl0ZW0sIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHZhbHVlKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpID8gZGF0ZS50b0RhdGUoKSA6IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN5bmNGb3JtRmllbGQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb246IFNlY3Rpb25JdGVtKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiRGF0ZXBpY2tlclwiOlxyXG4gICAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSwgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkRm9ybVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgIGNhc2UgXCJUZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICBpZiAoZm9ybVtmaWVsZC5mb3JtS2V5XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiU3dpdGNoXCI6XHJcbiAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSAhIWZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChmb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBmb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOS4jeaUr+aMgeW1jOWllyBmb3JtIOWxnuaAp++8jOWPquWvuea1heWxgui/m+ihjOWkhOeQhlxyXG4gICAgY29uc3QgcHJveHlGb3JtID0gbmV3IFByb3h5KGZvcm0sIHtcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKHByb3ApO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5Rm9ybSwgRk9STV9QUk9YWV9UQUcsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm94eUZvcm07XHJcbiAgfVxyXG5cclxuICAvLyDooajljZXmj5DkuqTliY3kvJrop6blj5Hov5nkuKrlh73mlbBcclxuICB1cGRhdGVGb3JtKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IHZhbHVlO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkTWFwW2Zvcm1LZXldIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSAhPT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShldmVudC52YWx1ZSwgZmllbGQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZVwiLCBldmVudCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlID8gbW9tZW50KGV2ZW50LnZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBldmVudC52YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgJGlucHV0ID0gZXZlbnQubW9kZWwuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XHJcbiAgICAgIGlmICgkaW5wdXQgJiYgJGlucHV0LnZhbHVlICYmICF0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25Gb2N1cywgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQmx1ciwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJpbmcoZXZlbnQ6IEZpbHRlcmluZ0V2ZW50QXJncywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuICAgIGlmIChldmVudC50ZXh0KSB7XHJcbiAgICAgIHF1ZXJ5LndoZXJlKHRoaXMub3B0aW9uRmllbGRzLnRleHQsIFwiY29udGFpbnNcIiwgZXZlbnQudGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC51cGRhdGVEYXRhKHRoaXMuZ2V0T3B0aW9ucyhmaWVsZCksIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcGRvd25EYXRhQm91bmQoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXS5pbmRleE9mKGZpZWxkKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHJvcGRvd25zICYmIHRoaXMuZHJvcGRvd25zLnRvQXJyYXkoKVtpbmRleF07XHJcbiAgICBpZiAoZXZlbnQuaXRlbXMubGVuZ3RoID4gMCAmJiBpbmRleCAhPT0gLTEgJiYgY29tcG9uZW50KSB7XHJcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGdldERpc2FibGVkKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmZvcm1EaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgZmllbGQuZGlzYWJsZWQgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbkZpZWxkcyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoW1wiRHJvcGRvd25cIiwgXCJBdXRvQ29tcGxldGVcIl0uaW5jbHVkZXMoZmllbGQuZmllbGRGb3JtVHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHsgLi4udGhpcy5vcHRpb25GaWVsZHMsIGdyb3VwQnk6IGZpZWxkLmdyb3VwS2V5IHx8IG51bGwgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbkZpZWxkcztcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJzZWN0aW9uRWxcIilcclxuICBzZWN0aW9uRWxzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xyXG4gIHNjcm9sbEluZGV4ID0gMDtcclxuICBpc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcblxyXG4gIG9uQ2xpY2tBbmNob3IoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3Qgc2VjdGlvbkl0ZW1zID0gdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKTtcclxuICAgIHNlY3Rpb25JdGVtc1tpbmRleF0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTtcclxuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuaXNDbGlja0FuY2hvciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmaW5kU2Nyb2xsVmlld0VsKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcclxuICAgIGlmIChlbCA9PT0gZG9jdW1lbnQuYm9keSkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICBpZiAoZWwuc2Nyb2xsSGVpZ2h0ICYmIGVsLnNjcm9sbEhlaWdodCAhPT0gZWwub2Zmc2V0SGVpZ2h0KSB7XHJcbiAgICAgIHJldHVybiBlbDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbmRTY3JvbGxWaWV3RWwoZWwucGFyZW50RWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yU2Nyb2xsSGFuZGxlcigpIHtcclxuICAgIGNvbnN0IHNjcm9sbFZpZXdFbCA9IHRoaXMuZmluZFNjcm9sbFZpZXdFbCh0aGlzLnJvb3RFbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIGNvbnN0IHNjcm9sbEhlaWdodCA9IHNjcm9sbFZpZXdFbC5zY3JvbGxIZWlnaHQgLSBzY3JvbGxWaWV3RWwub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3Qgc2VjdGlvblZpZXdSYXRpbyA9IHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCkubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJhdGlvID1cclxuICAgICAgICBzZWN0aW9uLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodDtcclxuICAgICAgcmV0dXJuIHNjcm9sbEhlaWdodCAqIHJhdGlvO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzQ2xpY2tBbmNob3IpIHtcclxuICAgICAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cclxuICAgICAgICBzY3JvbGxWaWV3RWwuc2Nyb2xsVG9wID4gc2Nyb2xsSGVpZ2h0XHJcbiAgICAgICAgICA/IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgOiBzY3JvbGxWaWV3RWwuc2Nyb2xsVG9wO1xyXG4gICAgICBsZXQgcmFkaW9TY3JvbGxIZWlnaHQgPSAwO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2VjdGlvblZpZXdSYXRpby5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICByYWRpb1Njcm9sbEhlaWdodCArPSBzZWN0aW9uVmlld1JhdGlvW2luZGV4XTtcclxuICAgICAgICBpZiAocmFkaW9TY3JvbGxIZWlnaHQgPj0gc2Nyb2xsVG9wKSB7XHJcbiAgICAgICAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgd2hpbGUgKFxyXG4gICAgICAgIHRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0gJiZcclxuICAgICAgICAhdGhpcy5zZWN0aW9uc1t0aGlzLnNjcm9sbEluZGV4XS50aXRsZVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNjcm9sbEluZGV4Kys7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uU2Nyb2xsKCk7XHJcbiAgICBzY3JvbGxWaWV3RWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
745
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2RyYXdlci1mb3JtL2RyYXdlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUNMLFlBQVksRUFFWixpQkFBaUIsR0FFbEIsTUFBTSxhQUFhLENBQUM7O01BRWYsY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBTy9DLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFrRDlCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakQzQixVQUFLLEdBQXdCLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVuQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBS2hCLGlCQUFZLEdBQUc7WUFDcEMsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUN5QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUV6QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7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SUFDM0UsMENBR0s7O0lBRUwscUNBQ21DOzs7OztJQUduQyx5Q0FDZ0Q7Ozs7O0lBQ2hELGdEQUN1RDs7SUFFdkQsd0NBQzRDOztJQUU1Qyx1Q0FBNkI7O0lBQzdCLDJDQUE0RTs7SUFDNUUsMkNBQTZDOztJQUU3QyxtQ0FBK0I7O0lBQy9CLDRDQUE0Qzs7SUFHNUMsdUNBQW9DOztJQUNwQywyQ0FBMkM7O0lBb1czQyx5Q0FDa0Q7O0lBQ2xELDBDQUFnQjs7SUFDaEIsNENBQXNCOzs7OztJQXJXVixrQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIERyb3BEb3duTGlzdENvbXBvbmVudCxcclxuICBGaWx0ZXJpbmdFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHtcclxuICBFbWFpbFBhdHRlcm4sXHJcbiAgRmllbGRJdGVtLFxyXG4gIGZpbHRlclNob3dTZWN0aW9uLFxyXG4gIFNlY3Rpb25JdGVtLFxyXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuY29uc3QgRk9STV9QUk9YWV9UQUcgPSBTeW1ib2wuZm9yKFwiZm9ybS1wcm94eVwiKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWRyYXdlci1mb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kcmF3ZXItZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYXdlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KFwiZm9ybVwiKSBfZm9ybTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIEBJbnB1dChcInNlY3Rpb25zXCIpIF9zZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dChcIm9wdGlvbnNNYXBcIikgb3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIikgZm9ybURpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dChcInNob3dBbmNob3JcIikgc2hvd0FuY2hvciA9IHRydWU7XHJcbiAgQElucHV0KFwiY3VzdG9tVGVtcGxhdGVcIikgY3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KFwiY3VzdG9tU2VjdGlvblRlbXBsYXRlXCIpXHJcbiAgY3VzdG9tU2VjdGlvblRlbXBsYXRlOiBSZWNvcmQ8c3RyaW5nLCBUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgQElucHV0KFwib3B0aW9uRmllbGRzXCIpIG9wdGlvbkZpZWxkcyA9IHtcclxuICAgIHRleHQ6IFwidGV4dFwiLFxyXG4gICAgdmFsdWU6IFwiY29kZVwiLFxyXG4gICAgZGlzYWJsZWQ6IFwiZGlzYWJsZWRcIixcclxuICAgIGdyb3VwQnk6IG51bGwsXHJcbiAgfTtcclxuICBASW5wdXQoXCJzaG93RmlsdGVyTnVtYmVyXCIpIHNob3dGaWx0ZXJOdW1iZXIgPSAxMDtcclxuICBASW5wdXQoXCJudW1iZXJGb3JtYXRcIikgbnVtYmVyRm9ybWF0OiBzdHJpbmc7XHJcbiAgQElucHV0KFwiZGF0ZUZvcm1hdFwiKSBkYXRlRm9ybWF0ID0gXCJ5eXl5LU1NLWRkXCI7XHJcblxyXG4gIEBPdXRwdXQoXCJmb3JtQ2hhbmdlXCIpIGZvcm1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT4+KCk7XHJcbiAgQE91dHB1dChcImZpZWxkQ2hhbmdlXCIpIGZpZWxkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBmaWVsZDogRmllbGRJdGVtO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZHJhd2VyRm9ybUVsXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJvb3RFbDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIC8vIOiHquWumuS5iSBmaWVsZCDmqKHmnb/lkozoh6rlrprkuYkgc2VjdGlvbiDmqKHmnb/nmoTlrrnlmahcclxuICBAVmlld0NoaWxkcmVuKFwiY3VzdG9tVGVtcGxhdGVDb250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XHJcbiAgQFZpZXdDaGlsZHJlbihcImN1c3RvbVNlY3Rpb25Db250YWluZXJcIiwgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFwiZHJvcGRvd25cIilcclxuICBkcm9wZG93bnM6IFF1ZXJ5TGlzdDxEcm9wRG93bkxpc3RDb21wb25lbnQ+O1xyXG5cclxuICBzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSA9IFtdO1xyXG4gIGZpZWxkVHlwZU1hcDogUGFydGlhbDxSZWNvcmQ8RmllbGRJdGVtW1wiZmllbGRGb3JtVHlwZVwiXSwgRmllbGRJdGVtW10+PiA9IHt9O1xyXG4gIGZvcm1GaWVsZE1hcDogUmVjb3JkPHN0cmluZywgRmllbGRJdGVtPiA9IHt9O1xyXG5cclxuICBmb3JtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgZmllbGRWYWxpZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKoIGRhdGVwaWNrZXIg55qE5YC8XHJcbiAgZGF0ZUZvcm06IFJlY29yZDxzdHJpbmcsIERhdGU+ID0ge307XHJcbiAgZGF0ZVZhbGlkTWFwOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKGNoYW5nZXMuX3NlY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnMgPSBmaWx0ZXJTaG93U2VjdGlvbihjaGFuZ2VzLl9zZWN0aW9ucy5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1hdEZpZWxkTWFwKCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybSh7IC4uLnRoaXMuZm9ybSwgLi4udGhpcy5fZm9ybSB9KTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzLl9mb3JtKSB7XHJcbiAgICAgIGlmICghY2hhbmdlcy5fZm9ybS5jdXJyZW50VmFsdWVbRk9STV9QUk9YWV9UQUddKSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtKGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0gPSBjaGFuZ2VzLl9mb3JtLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWNoYW5nZXMuX2Zvcm0uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmNoZWNrRm9ybUNoYW5nZShcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0ucHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGNoYW5nZXMuX2Zvcm0uY3VycmVudFZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jdXN0b21UZW1wbGF0ZVJlbmRlcih0aGlzLmNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jdXN0b21TZWN0aW9uUmVuZGVyKHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMpO1xyXG4gICAgdGhpcy5jb250YWluZXJzLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJzID0gY29udGFpbmVycztcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlUmVuZGVyKGNvbnRhaW5lcnMpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWN0aW9uQ29udGFpbmVycy5jaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgKGNvbnRhaW5lcnM6IFF1ZXJ5TGlzdDxWaWV3Q29udGFpbmVyUmVmPikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkNvbnRhaW5lcnMgPSBjb250YWluZXJzO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tU2VjdGlvblJlbmRlcihjb250YWluZXJzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZHJvcGRvd25zLmNoYW5nZXMuc3Vic2NyaWJlKFxyXG4gICAgICAoZHJvcGRvd25zOiBRdWVyeUxpc3Q8RHJvcERvd25MaXN0Q29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIHRoaXMuZHJvcGRvd25zID0gZHJvcGRvd25zO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuc2hvd0FuY2hvcikge1xyXG4gICAgICB0aGlzLmluaXRBbmNob3JTY3JvbGxIYW5kbGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjdXN0b21UZW1wbGF0ZVJlbmRlcihjb250YWluZXJzOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj4pIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlICYmIGNvbnRhaW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBjdXN0b21GaWVsZHMgPSB0aGlzLmZpZWxkVHlwZU1hcC5DdXN0b20gfHwgW107XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5jdXN0b21UZW1wbGF0ZSwge1xyXG4gICAgICAgICAgJGltcGxpY2l0OiBjdXN0b21GaWVsZHNbaW5kZXhdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGN1c3RvbVNlY3Rpb25SZW5kZXIoY29udGFpbmVyczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+KSB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZWN0aW9uVGVtcGxhdGUgJiYgY29udGFpbmVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGN1c3RvbVNlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKHNlY3Rpb24pID0+IHNlY3Rpb24uY3VzdG9tS2V5XHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnRhaW5lcnMuZm9yRWFjaCgoY29udGFpbmVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUtleSA9IGN1c3RvbVNlY3Rpb25zW2luZGV4XS5jdXN0b21LZXk7XHJcbiAgICAgICAgY29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmN1c3RvbVNlY3Rpb25UZW1wbGF0ZVtjdXN0b21LZXldLCB7XHJcbiAgICAgICAgICAkaW1wbGljaXQ6IGN1c3RvbVNlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRGaWVsZE1hcCgpIHtcclxuICAgIHRoaXMuZmllbGRUeXBlTWFwID0ge307XHJcbiAgICB0aGlzLmZvcm1GaWVsZE1hcCA9IHt9O1xyXG4gICAgdGhpcy5zZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXSkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVNYXBbZmllbGQuZmllbGRGb3JtVHlwZV0ucHVzaChmaWVsZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtRmllbGRNYXBbZmllbGQuZm9ybUtleV0gPSBmaWVsZDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEZvcm0oZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5nZXRGb3JtUHJveHkodGhpcy5mb3JtYXRGb3JtKHRoaXMuc2VjdGlvbnMsIGZvcm0pKTtcclxuICAgIHRoaXMuc3luY0Zvcm1GaWVsZCgpO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIGVxdWFsKHZhbHVlOiBhbnksIGNvbXBhcmVWYWx1ZTogYW55KSB7XHJcbiAgICAvLyDlj6rlr7nmlbDnu4Tov5vooYznibnmrorliKTmlq1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KGNvbXBhcmVWYWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IGNvbXBhcmVWYWx1ZS5sZW5ndGggJiZcclxuICAgICAgICB2YWx1ZS5ldmVyeSgoaSwgaW5kZXgpID0+IGkgPT09IGNvbXBhcmVWYWx1ZVtpbmRleF0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmlzKHZhbHVlLCBjb21wYXJlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JtQ2hhbmdlKHByZXZpb3VzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjdXJyZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3QuZW50cmllcyhjdXJyZW50KS5mb3JFYWNoKChba2V5LCBjdXJyZW50VmFsdWVdKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5lcXVhbChwcmV2aW91c1trZXldLCBjdXJyZW50VmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKGtleSk7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkOiBGaWVsZEl0ZW0sIHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHZhbHVlKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybVtmaWVsZC5mb3JtS2V5XSA9IGRhdGUuaXNWYWxpZCgpID8gZGF0ZS50b0RhdGUoKSA6IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN5bmNGb3JtRmllbGQoKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25zLmZvckVhY2goKHNlY3Rpb246IFNlY3Rpb25JdGVtKSA9PiB7XHJcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZEZvcm1UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiRGF0ZXBpY2tlclwiOlxyXG4gICAgICAgICAgICB0aGlzLnN5bmNGb3JtVG9EYXRlRm9ybShmaWVsZCwgdGhpcy5mb3JtW2ZpZWxkLmZvcm1LZXldKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0Rm9ybShzZWN0aW9uczogU2VjdGlvbkl0ZW1bXSwgZm9ybTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbjogU2VjdGlvbkl0ZW0pID0+IHtcclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLmZpZWxkRm9ybVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJUZXh0XCI6XHJcbiAgICAgICAgICBjYXNlIFwiRW1haWxcIjpcclxuICAgICAgICAgIGNhc2UgXCJUZXh0YXJlYVwiOlxyXG4gICAgICAgICAgICBpZiAoZm9ybVtmaWVsZC5mb3JtS2V5XSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgZm9ybVtmaWVsZC5mb3JtS2V5XSA9IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlRhZ3NcIjpcclxuICAgICAgICAgIGNhc2UgXCJDaGVja2JveFwiOlxyXG4gICAgICAgICAgY2FzZSBcIk11bHRpU2VsZWN0XCI6XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtW2ZpZWxkLmZvcm1LZXldKSkge1xyXG4gICAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiU3dpdGNoXCI6XHJcbiAgICAgICAgICAgIGZvcm1bZmllbGQuZm9ybUtleV0gPSAhIWZvcm1bZmllbGQuZm9ybUtleV07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChmb3JtW2ZpZWxkLmZvcm1LZXldID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBmb3JtW2ZpZWxkLmZvcm1LZXldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVByb3h5KGZvcm06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIC8vIOeOsOWcqOS4jeaUr+aMgeW1jOWllyBmb3JtIOWxnuaAp++8jOWPquWvuea1heWxgui/m+ihjOWkhOeQhlxyXG4gICAgY29uc3QgcHJveHlGb3JtID0gbmV3IFByb3h5KGZvcm0sIHtcclxuICAgICAgc2V0OiAodGFyZ2V0LCBwcm9wOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdldEZpZWxkKHByb3ApO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRGF0ZXBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3luY0Zvcm1Ub0RhdGVGb3JtKGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3h5Rm9ybSwgRk9STV9QUk9YWV9UQUcsIHtcclxuICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm94eUZvcm07XHJcbiAgfVxyXG5cclxuICAvLyDooajljZXmj5DkuqTliY3kvJrop6blj5Hov5nkuKrlh73mlbBcclxuICB1cGRhdGVGb3JtKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XSA9IHZhbHVlO1xyXG4gICAgdGhpcy5mb3JtQ2hhbmdlLmVtaXQodGhpcy5mb3JtKTtcclxuICAgIHRoaXMuZmllbGRDaGFuZ2UuZW1pdCh7IGZpZWxkLCB2YWx1ZSB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtVmFsaWRhdG9yKGZpZWxkOiBGaWVsZEl0ZW0sIGlzQXV0byA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xyXG4gICAgICBpc1ZhbGlkID0gQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgICA/IHZhbHVlLmxlbmd0aCAhPT0gMFxyXG4gICAgICAgIDogIVtudWxsLCB1bmRlZmluZWQsIFwiXCJdLmluY2x1ZGVzKHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLmZpZWxkRm9ybVR5cGUgPT09IFwiRW1haWxcIiAmJiB2YWx1ZSkge1xyXG4gICAgICBpc1ZhbGlkID0gRW1haWxQYXR0ZXJuLnRlc3QodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWF4bGVuZ3RoKSB7XHJcbiAgICAgIGlzVmFsaWQgPSBTdHJpbmcodmFsdWUpLmxlbmd0aCA8PSBmaWVsZC5tYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiBmaWVsZC5taW5sZW5ndGgpIHtcclxuICAgICAgaXNWYWxpZCA9IFN0cmluZyh2YWx1ZSkubGVuZ3RoID49IGZpZWxkLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIGlmIChpc1ZhbGlkICYmIGZpZWxkLm1heCkge1xyXG4gICAgICBpc1ZhbGlkID0gdmFsdWUgPD0gZmllbGQubWF4O1xyXG4gICAgfVxyXG4gICAgaWYgKGlzVmFsaWQgJiYgZmllbGQubWluKSB7XHJcbiAgICAgIGlzVmFsaWQgPSB2YWx1ZSA+PSBmaWVsZC5taW47XHJcbiAgICB9XHJcbiAgICBpZiAoaXNWYWxpZCAmJiB0eXBlb2YgZmllbGQudmFsaWRhdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgaXNWYWxpZCA9IGZpZWxkLnZhbGlkYXRvci5jYWxsKG51bGwsIHZhbHVlLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQXV0bykge1xyXG4gICAgICB0aGlzLmZpZWxkVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBpc1ZhbGlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwcmVDaGVja0Zvcm1Jc1ZhbGlkKCkge1xyXG4gICAgbGV0IGZvcm1Jc1ZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT5cclxuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmb3JtSXNWYWxpZCA9IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQpICYmIGZvcm1Jc1ZhbGlkO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmb3JtSXNWYWxpZDtcclxuICB9XHJcblxyXG4gIGdldCBmb3JtSXNWYWxpZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb25zLmV2ZXJ5KChzZWN0aW9uKSA9PlxyXG4gICAgICBzZWN0aW9uLmZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHRoaXMuZm9ybUl0ZW1WYWxpZGF0b3IoZmllbGQsIHRydWUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkKGZvcm1LZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkTWFwW2Zvcm1LZXldIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxGdW5jdGlvbihmbjogRnVuY3Rpb24sIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICB0aGlzLmZvcm1JdGVtVmFsaWRhdG9yKGFyZ3NbMV0gfHwgYXJnc1swXSk7XHJcbiAgICBpZiAodHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcsIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uSW5wdXQsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBvbmVudENoYW5nZShldmVudDogYW55LCBmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoIWV2ZW50LmlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQuZmllbGRGb3JtVHlwZSAhPT0gXCJEYXRlcGlja2VyXCIpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZShldmVudC52YWx1ZSwgZmllbGQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZVwiLCBldmVudCk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlID8gbW9tZW50KGV2ZW50LnZhbHVlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpIDogbnVsbDtcclxuICAgIHRoaXMuZGF0ZUZvcm1bZmllbGQuZm9ybUtleV0gPSBldmVudC52YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UodmFsdWUsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHZhbHVlOiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSwgZmllbGQpO1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25DaGFuZ2UsIHZhbHVlLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVQaWNrZXJCbHVyKGV2ZW50OiBhbnksIGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMub25CbHVyKGZpZWxkKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgJGlucHV0ID0gZXZlbnQubW9kZWwuZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIik7XHJcbiAgICAgIGlmICgkaW5wdXQgJiYgJGlucHV0LnZhbHVlICYmICF0aGlzLmRhdGVGb3JtW2ZpZWxkLmZvcm1LZXldKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV0gPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5kYXRlVmFsaWRNYXBbZmllbGQuZm9ybUtleV07XHJcbiAgICAgIH1cclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgdGhpcy5jYWxsRnVuY3Rpb24oZmllbGQub25Gb2N1cywgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGZpZWxkLm9uQmx1ciwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJpbmcoZXZlbnQ6IEZpbHRlcmluZ0V2ZW50QXJncywgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuICAgIGlmIChldmVudC50ZXh0KSB7XHJcbiAgICAgIHF1ZXJ5LndoZXJlKHRoaXMub3B0aW9uRmllbGRzLnRleHQsIFwiY29udGFpbnNcIiwgZXZlbnQudGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBldmVudC51cGRhdGVEYXRhKHRoaXMuZ2V0T3B0aW9ucyhmaWVsZCksIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIG9uRHJvcGRvd25EYXRhQm91bmQoZXZlbnQ6IGFueSwgZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpZWxkVHlwZU1hcFtmaWVsZC5maWVsZEZvcm1UeXBlXS5pbmRleE9mKGZpZWxkKTtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZHJvcGRvd25zICYmIHRoaXMuZHJvcGRvd25zLnRvQXJyYXkoKVtpbmRleF07XHJcbiAgICBpZiAoZXZlbnQuaXRlbXMubGVuZ3RoID4gMCAmJiBpbmRleCAhPT0gLTEgJiYgY29tcG9uZW50KSB7XHJcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IHRoaXMuZm9ybVtmaWVsZC5mb3JtS2V5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE9wdGlvbnMoZmllbGQ6IEZpZWxkSXRlbSkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zTWFwW2ZpZWxkLm9wdGlvbktleV0pKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNNYXBbZmllbGQub3B0aW9uS2V5XTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc01hcFtmaWVsZC5mb3JtS2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGdldERpc2FibGVkKGZpZWxkOiBGaWVsZEl0ZW0pIHtcclxuICAgIGlmICh0aGlzLmZvcm1EaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgZmllbGQuZGlzYWJsZWQgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICByZXR1cm4gZmllbGQuZGlzYWJsZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZC5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIGdldE9wdGlvbkZpZWxkcyhmaWVsZDogRmllbGRJdGVtKSB7XHJcbiAgICBpZiAoW1wiRHJvcGRvd25cIiwgXCJBdXRvQ29tcGxldGVcIl0uaW5jbHVkZXMoZmllbGQuZmllbGRGb3JtVHlwZSkpIHtcclxuICAgICAgcmV0dXJuIHsgLi4udGhpcy5vcHRpb25GaWVsZHMsIGdyb3VwQnk6IGZpZWxkLmdyb3VwS2V5IHx8IG51bGwgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbkZpZWxkcztcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJzZWN0aW9uRWxcIilcclxuICBzZWN0aW9uRWxzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xyXG4gIHNjcm9sbEluZGV4ID0gMDtcclxuICBpc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcblxyXG4gIG9uQ2xpY2tBbmNob3IoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3Qgc2VjdGlvbkl0ZW1zID0gdGhpcy5zZWN0aW9uRWxzICYmIHRoaXMuc2VjdGlvbkVscy50b0FycmF5KCk7XHJcbiAgICBzZWN0aW9uSXRlbXNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XHJcbiAgICB0aGlzLnNjcm9sbEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmlzQ2xpY2tBbmNob3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZmluZFNjcm9sbFZpZXdFbChlbDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XHJcbiAgICBpZiAoZWwgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsLnNjcm9sbEhlaWdodCAmJiBlbC5zY3JvbGxIZWlnaHQgIT09IGVsLm9mZnNldEhlaWdodCkge1xyXG4gICAgICByZXR1cm4gZWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maW5kU2Nyb2xsVmlld0VsKGVsLnBhcmVudEVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFuY2hvclNjcm9sbEhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBzY3JvbGxWaWV3RWwgPSB0aGlzLmZpbmRTY3JvbGxWaWV3RWwodGhpcy5yb290RWwubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBzY3JvbGxIZWlnaHQgPSBzY3JvbGxWaWV3RWwuc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVmlld0VsLm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IHNlY3Rpb25WaWV3UmF0aW8gPVxyXG4gICAgICB0aGlzLnNlY3Rpb25FbHMgJiZcclxuICAgICAgdGhpcy5zZWN0aW9uRWxzLnRvQXJyYXkoKS5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgICBjb25zdCByYXRpbyA9XHJcbiAgICAgICAgICBzZWN0aW9uLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gc2Nyb2xsVmlld0VsLnNjcm9sbEhlaWdodDtcclxuICAgICAgICByZXR1cm4gc2Nyb2xsSGVpZ2h0ICogcmF0aW87XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0NsaWNrQW5jaG9yKSB7XHJcbiAgICAgICAgdGhpcy5pc0NsaWNrQW5jaG9yID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XHJcbiAgICAgICAgc2Nyb2xsVmlld0VsLnNjcm9sbFRvcCA+IHNjcm9sbEhlaWdodFxyXG4gICAgICAgICAgPyBzY3JvbGxIZWlnaHRcclxuICAgICAgICAgIDogc2Nyb2xsVmlld0VsLnNjcm9sbFRvcDtcclxuICAgICAgbGV0IHJhZGlvU2Nyb2xsSGVpZ2h0ID0gMDtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNlY3Rpb25WaWV3UmF0aW8ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgcmFkaW9TY3JvbGxIZWlnaHQgKz0gc2VjdGlvblZpZXdSYXRpb1tpbmRleF07XHJcbiAgICAgICAgaWYgKHJhZGlvU2Nyb2xsSGVpZ2h0ID49IHNjcm9sbFRvcCkge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2Nyb2xsSW5kZXhdICYmXHJcbiAgICAgICAgIXRoaXMuc2VjdGlvbnNbdGhpcy5zY3JvbGxJbmRleF0udGl0bGVcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvblNjcm9sbCgpO1xyXG4gICAgc2Nyb2xsVmlld0VsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgb25TY3JvbGwpO1xyXG4gIH1cclxufVxyXG4iXX0=
|