@colijnit/corecomponents_v12 259.1.23 → 259.1.25
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/colijnit-corecomponents_v12.umd.js +22 -8
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.js +5 -3
- package/esm2015/lib/components/list-of-values/list-of-values.component.js +58 -55
- package/esm2015/lib/components/simple-grid/simple-grid.component.js +22 -14
- package/esm2015/lib/directives/screen-configuration/screen-configuration.directive.js +2 -2
- package/fesm2015/colijnit-corecomponents_v12.js +83 -70
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/list-of-values/list-of-values.component.d.ts +1 -1
- package/lib/components/simple-grid/simple-grid.component.d.ts +2 -1
- package/lib/components/simple-grid/style/_layout.scss +7 -25
- package/package.json +1 -1
- package/colijnit-corecomponents_v12-259.1.23.tgz +0 -0
|
@@ -163,7 +163,16 @@ export class SimpleGridComponent extends BaseSimpleGridComponent {
|
|
|
163
163
|
this._resetEdit();
|
|
164
164
|
this._detectChanges();
|
|
165
165
|
}
|
|
166
|
-
removeRow() {
|
|
166
|
+
removeRow(row) {
|
|
167
|
+
this.deleteRow.next(row);
|
|
168
|
+
if (this.currentPage !== 1) {
|
|
169
|
+
this.currentPage = 1;
|
|
170
|
+
this.selectedRowIndex = -1;
|
|
171
|
+
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
172
|
+
}
|
|
173
|
+
this._detectChanges();
|
|
174
|
+
}
|
|
175
|
+
removeSelectedRow() {
|
|
167
176
|
let absoluteIndex = this.selectedRowIndex;
|
|
168
177
|
if (this.rowsPerPage) {
|
|
169
178
|
absoluteIndex = (this.currentPage - 1) * this.rowsPerPage + this.selectedRowIndex;
|
|
@@ -568,7 +577,7 @@ SimpleGridComponent.decorators = [
|
|
|
568
577
|
(editClick)="editRow($event)"
|
|
569
578
|
(saveClick)="validateAndSave()"
|
|
570
579
|
(cancelClick)="cancelEditRow()"
|
|
571
|
-
(deleteClick)="
|
|
580
|
+
(deleteClick)="removeSelectedRow()">
|
|
572
581
|
</co-grid-toolbar>
|
|
573
582
|
|
|
574
583
|
<table
|
|
@@ -583,10 +592,10 @@ SimpleGridComponent.decorators = [
|
|
|
583
592
|
[style.width.px]="column.width"
|
|
584
593
|
[style.min-width.px]="MIN_COLUMN_WIDTH">
|
|
585
594
|
<col
|
|
586
|
-
*ngIf="
|
|
587
|
-
[class.
|
|
588
|
-
[
|
|
589
|
-
|
|
595
|
+
*ngIf="showRowButtons"
|
|
596
|
+
[class.simple-grid-column-auto-fit]="true"
|
|
597
|
+
[style.min-width.px]="MIN_COLUMN_WIDTH">
|
|
598
|
+
>
|
|
590
599
|
</colgroup>
|
|
591
600
|
<thead>
|
|
592
601
|
<tr>
|
|
@@ -698,20 +707,19 @@ SimpleGridComponent.decorators = [
|
|
|
698
707
|
<div *ngIf="column.resizable" class="simple-grid-column-sizer-placeholder"></div>
|
|
699
708
|
</td>
|
|
700
709
|
</ng-container>
|
|
701
|
-
<ng-container *ngIf="
|
|
702
|
-
<td class="icons-container"
|
|
703
|
-
*ngIf="(editRowIndex <= -1 && selectedRowIndex === -1 && hoveredRowIndex === rowIndex) || selectedRowIndex === rowIndex || (isNewRow && rowIndex === editRowIndex)">
|
|
710
|
+
<ng-container *ngIf="showRowButtons">
|
|
711
|
+
<td class="icons-container" [class.show-content]="selectedRowIndex === rowIndex || hoveredRowIndex === rowIndex">
|
|
704
712
|
<ng-container>
|
|
705
713
|
<co-icon class="icon-item icon-edit"
|
|
706
|
-
*ngIf="
|
|
714
|
+
*ngIf="editRowIndex !== rowIndex && inlineEdit"
|
|
707
715
|
[iconData]="icons.getIcon(Icons.PenToSquareSolid)"
|
|
708
716
|
(click)="editRow($event, true, rowIndex); $event.stopPropagation()"></co-icon>
|
|
709
717
|
<co-icon class="icon-item icon-delete"
|
|
710
718
|
[iconData]="icons.getIcon(Icons.TrashBin)"
|
|
711
|
-
*ngIf="(
|
|
712
|
-
(click)="
|
|
719
|
+
*ngIf="(editRowIndex !== rowIndex && showDelete)"
|
|
720
|
+
(click)="removeRow(data[rowIndex])"></co-icon>
|
|
713
721
|
</ng-container>
|
|
714
|
-
<ng-container *ngIf="editing && inlineEdit &&
|
|
722
|
+
<ng-container *ngIf="editing && inlineEdit && (selectedRowIndex === rowIndex || isNewRow) && editRowIndex === rowIndex">
|
|
715
723
|
<co-button class="save-button"
|
|
716
724
|
[iconData]="icons.getIcon(Icons.CheckDuotone)"
|
|
717
725
|
(click)="validateAndSave(); $event.stopPropagation()"></co-button>
|
|
@@ -764,4 +772,4 @@ SimpleGridComponent.propDecorators = {
|
|
|
764
772
|
showClass: [{ type: HostBinding, args: ['class.co-simple-grid',] }],
|
|
765
773
|
handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]
|
|
766
774
|
};
|
|
767
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBNkw1RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBaUc5RCxZQUNTLEtBQXVCLEVBQ3BCLGVBQWtDLEVBQ3BDLFdBQThCO1FBRXRDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUpoQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBbkd4QixxQkFBZ0IsR0FBZ0IsV0FBVyxDQUFDLElBQUksQ0FBQztRQVkxRCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHNUIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHakMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFHaEMsaUJBQVksR0FBWSxLQUFL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QVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybU1hc3RlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9mb3JtLW1hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZVNpbXBsZUdyaWRDb21wb25lbnR9IGZyb20gJy4vYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtDb2x1bW5BbGlnbn0gZnJvbSAnLi9zaW1wbGUtZ3JpZC1jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7RXhwb3J0Q29sdW1ufSBmcm9tICcuLi8uLi9zZXJ2aWNlL2V4Y2VsLWV4cG9ydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY28tc2ltcGxlLWdyaWQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjby1ncmlkLXRvb2xiYXJcbiAgICAgICpuZ0lmPVwic2hvd1Rvb2xiYXJcIiBbY2xhc3MucmlnaHRdPVwicmlnaHRUb29sYmFyXCJcbiAgICAgIFtzaG93RWRpdF09XCJzaG93RWRpdFwiXG4gICAgICBbc2hvd0FkZF09XCJzaG93QWRkXCJcbiAgICAgIFtzaG93RGVsZXRlXT1cInNob3dEZWxldGVcIlxuICAgICAgW2RlbGV0ZUVuYWJsZWRdPVwic2VsZWN0ZWRSb3dJbmRleCA+IC0xXCJcbiAgICAgIChhZGRDbGljayk9XCJhZGROZXdSb3coKVwiXG4gICAgICAoZWRpdENsaWNrKT1cImVkaXRSb3coJGV2ZW50KVwiXG4gICAgICAoc2F2ZUNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpXCJcbiAgICAgIChjYW5jZWxDbGljayk9XCJjYW5jZWxFZGl0Um93KClcIlxuICAgICAgKGRlbGV0ZUNsaWNrKT1cInJlbW92ZVJvdygpXCI+XG4gICAgPC9jby1ncmlkLXRvb2xiYXI+XG5cbiAgICA8dGFibGVcbiAgICAgIGlkPVwic2ltcGxlLWdyaWQtdGFibGVcIlxuICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC10YWJsZVwiXG4gICAgICBbY2xpY2tPdXRzaWRlXT1cImVkaXRpbmdcIlxuICAgICAgKGNsaWNrT3V0c2lkZSk9XCJoYW5kbGVDbGlja091dHNpZGVSb3coKVwiPlxuICAgICAgPGNvbGdyb3VwPlxuICAgICAgICA8Y29sXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBoZWFkZXJDb2x1bW5zQ29weTsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5zaW1wbGUtZ3JpZC1jb2x1bW4tYXV0by1maXRdPVwiY29sdW1uLmF1dG9GaXRcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiTUlOX0NPTFVNTl9XSURUSFwiPlxuICAgICAgICA8Y29sXG4gICAgICAgICAgKm5nSWY9XCIoKGlubGluZUVkaXQgJiYgc2hvd1Jvd0J1dHRvbnMpIHx8IChzaG93RGVsZXRlICYmICFzaG93Um93QnV0dG9ucykpICYmIChob3ZlcmVkUm93SW5kZXggPj0gMCB8fCBzZWxlY3RlZFJvd0luZGV4ID49IDAgfHwgaXNOZXdSb3cpXCJcbiAgICAgICAgICBbY2xhc3MuaWNvbnMtY29sXT1cInRydWVcIlxuICAgICAgICAgIFtjbGFzcy5jb2wtd2lkdGgtcm93LWJ1dHRvbnNdPVwiaW5saW5lRWRpdCAmJiBzaG93Um93QnV0dG9uc1wiXG4gICAgICAgICAgW2NsYXNzLmNvbC13aWR0aC1kZWxldGVdPVwiIXNob3dSb3dCdXR0b25zICYmIHNob3dEZWxldGVcIj5cbiAgICAgIDwvY29sZ3JvdXA+XG4gICAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aFxuICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAjaGVhZGVyQ2VsbFxuICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlclwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBoZWFkZXJDb2x1bW5zQ29weTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICBbY2xhc3MucmVzaXphYmxlXT1cInJlc2l6YWJsZVwiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY29sdW1uLmlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnRleHRBbGlnbiA/IGNvbHVtbi50ZXh0QWxpZ24gOiBkZWZhdWx0VGV4dEFsaWduXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlOyBlbHNlIG5vSGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0hlYWRlclRlbXBsYXRlPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2x1bW4udGV4dEFsaWduID8gY29sdW1uLnRleHRBbGlnbiA6IGRlZmF1bHRUZXh0QWxpZ25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLW1lbnVdPVwic2hvd0dyaWRTZXR0aW5nc1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLndpdGgtc29ydF09XCJzaG93Q29sdW1uU29ydFwiXG4gICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cImNvbHVtbi5oZWFkZXJUZXh0IHx8ICcmbmJzcDsnXCIgW3RpdGxlXT1cImNvbHVtbi5oZWFkZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbHVtblNvcnQgPyBzb3J0Q29sdW1uKGNvbHVtbiwgY29sdW1uLmZpZWxkKSA6IHRvZ2dsZUNvbHVtbk1lbnUoY29sdW1uKVwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1jb2x1bW5cIiAqbmdJZj1cInNob3dDb2x1bW5Tb3J0XCI+XG4gICAgICAgICAgICAgICAgPGNvLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uLCBjb2x1bW4/LmZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5BcnJvd1VwQXJyb3dEb3duKVwiPlxuICAgICAgICAgICAgICAgIDwvY28tYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLW1lbnVcIiAqbmdJZj1cImNvbHVtbi5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInQ09MVU1OX09QVElPTlMnIHwgY29yZUxvY2FsaXplXCI+PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImhpZGVDb2x1bW4oY29sdW1uKVwiPkhpZGUgQ29sdW1uPC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4sIGNvbHVtbi5maWVsZClcIj5Tb3J0IENvbHVtbjwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc2l6YWJsZSAmJiBjb2x1bW4ucmVzaXphYmxlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXJcIlxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cImhhbmRsZVNpemVyTW91c2VEb3duKCRldmVudCwgY29sdW1uKVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0dyaWRTZXR0aW5nc1wiIGNsYXNzPVwiZ3JpZC1zZXR0aW5nc1wiPlxuICAgICAgICA8Y28tYnV0dG9uXG4gICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzU2V0dGluZ3NNZW51T3BlblwiXG4gICAgICAgICAgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbnMuQ29nV2hlZWxzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNldHRpbmdzTWVudSgpXCI+XG4gICAgICAgIDwvY28tYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1tZW51XCIgKm5nSWY9XCJpc1NldHRpbmdzTWVudU9wZW5cIj5cbiAgICAgICAgICA8aDMgW3RleHRDb250ZW50XT1cIidHUklEX09QVElPTlMnIHwgY29yZUxvY2FsaXplXCI+PC9oMz5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bGkgKGNsaWNrKT1cImV4cG9ydFRvRXhjZWwoKVwiPkV4cG9ydCB0byBFeGNlbDwvbGk+XG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJoZWFkZXJDb2x1bW5zQ29weS5sZW5ndGggIT09IGhlYWRlckNvbHVtbnMubGVuZ3RoXCIgKGNsaWNrKT1cInNob3dBbGxDb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgU2hvdyBBbGwgQ29sdW1uc1xuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keVxuICAgICAgICAjZHJvcExpc3QgY2RrRHJvcExpc3QgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1kcmFnLWRyb3AtbGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnRHJvcEVuYWJsZWQgfHwgZWRpdGluZ1wiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZGF0YVwiXG4gICAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImhhbmRsZUNhbkRyYWdEcm9wXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJoYW5kbGVEcm9wKCRldmVudClcIj5cbiAgICAgIDxjby1mb3JtIGNsYXNzPVwic2ltcGxlLWdyaWQtcm93LWZvcm1cIj5cbiAgICAgICAgPHRyXG4gICAgICAgICAgI3Jvd0VsZW1lbnRcbiAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkLXJvd1wiXG4gICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInJvd0luZGV4ID09PSBzZWxlY3RlZFJvd0luZGV4ICYmICFlZGl0aW5nXCIgb2JzZXJ2ZVZpc2liaWxpdHlcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZ2V0SXNSb3dEaXNhYmxlZChyb3dJbmRleClcIlxuICAgICAgICAgIFtjbGFzcy5lZGl0aW5nXT1cInJvd0luZGV4ID09PSBlZGl0Um93SW5kZXhcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCByb3cgb2YgKCEhcm93c1BlclBhZ2UgPyAoZGF0YSB8IHBhZ2luYXRlOiB7aXRlbXNQZXJQYWdlOiByb3dzUGVyUGFnZSwgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlfSkgOiBkYXRhKTsgbGFzdCBhcyBsYXN0OyBsZXQgcm93SW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4KVwiIChkYmxjbGljayk9XCJoYW5kbGVEYmxDbGlja1JvdygkZXZlbnQsIHJvd0luZGV4LCByb3cpXCJcbiAgICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJyb3dWaXNpYmxlLm5leHQocm93KVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZFJvd0luZGV4ID0gcm93SW5kZXhcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWRSb3dJbmRleCA9IC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NpbmdsZUNvbHVtblJvdyhyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJzaW1wbGUtZ3JpZC1zaW5nbGUtY29sdW1uLWNlbGxcIiBbYXR0ci5jb2xzcGFuXT1cImhlYWRlckNvbHVtbnNDb3B5Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY2VsbFxuICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uc1tzaW5nbGVDb2x1bW5JbmRleChyb3cpXVwiXG4gICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNlbGw+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTaW5nbGVDb2x1bW5Sb3cocm93KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnNDb3B5OyBsZXQgY29sdW1uSW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tY2VsbFwiICpuZ0lmPVwiY29sdW1uSW5kZXggIT09IHNpbmdsZUNvbHVtbkluZGV4KHJvdylcIj5cbiAgICAgICAgICAgICAgICA8Y28tc2ltcGxlLWdyaWQtY2VsbFxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImlubGluZUVkaXQgJiYgZWRpdGluZyAmJiByb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCJcbiAgICAgICAgICAgICAgICAgIFtmaWVsZEVkaXRNb2RlXT1cImVkaXRDZWxsSW5kZXggPT09IGNvbHVtbkluZGV4ICYmIHJvd0luZGV4ID09PSBlZGl0Um93SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgKGNlbGxDbGljayk9XCJoYW5kbGVDZWxsQ2xpY2soJGV2ZW50LCByb3csIHJvd0luZGV4LCBjb2x1bW5JbmRleClcIj5cbiAgICAgICAgICAgICAgICA8L2NvLXNpbXBsZS1ncmlkLWNlbGw+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5yZXNpemFibGVcIiBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1zaXplci1wbGFjZWhvbGRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlubGluZUVkaXQgJiYgc2hvd1Jvd0J1dHRvbnMpIHx8IChzaG93RGVsZXRlICYmICFzaG93Um93QnV0dG9ucylcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaWNvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGVkaXRSb3dJbmRleCA8PSAtMSAmJiBzZWxlY3RlZFJvd0luZGV4ID09PSAtMSAmJiBob3ZlcmVkUm93SW5kZXggPT09IHJvd0luZGV4KSB8fCBzZWxlY3RlZFJvd0luZGV4ID09PSByb3dJbmRleCB8fCAoaXNOZXdSb3cgJiYgcm93SW5kZXggPT09IGVkaXRSb3dJbmRleClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJpY29uLWl0ZW0gaWNvbi1lZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRpbmcgJiYgKGlubGluZUVkaXQgJiYgc2hvd1Jvd0J1dHRvbnMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29ucy5nZXRJY29uKEljb25zLlBlblRvU3F1YXJlU29saWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0Um93KCRldmVudCwgdHJ1ZSwgcm93SW5kZXgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L2NvLWljb24+XG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImljb24taXRlbSBpY29uLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5UcmFzaEJpbilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoIWVkaXRpbmcgJiYgKGlubGluZUVkaXQgfHwgIWlubGluZUVkaXQpICYmIHNob3dSb3dCdXR0b25zKSB8fCAoIXNob3dSb3dCdXR0b25zICYmIHNob3dEZWxldGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUaGVSb3cocm93SW5kZXgpOyByZW1vdmVSb3coKTtcIj48L2NvLWljb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRpbmcgJiYgaW5saW5lRWRpdCAmJiBzaG93Um93QnV0dG9ucyAmJiAoc2VsZWN0ZWRSb3dJbmRleCA9PT0gcm93SW5kZXggfHwgaXNOZXdSb3cpXCI+XG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5DaGVja0R1b3RvbmUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5Dcm9zc1NraW5ueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsRWRpdFJvdygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvY28tZm9ybT5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgICA8Y28tcGFnaW5hdGlvbi1iYXJcbiAgICAgICpuZ0lmPVwiZGF0YT8ubGVuZ3RoID4gcm93c1BlclBhZ2VcIiBjbGFzcz1cInBhZ2luYXRpb24tYmFyXCJcbiAgICAgIFtpdGVtc1BlclBhZ2VdPVwicm93c1BlclBhZ2VcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgIFt0b3RhbEl0ZW1zXT1cImRhdGEubGVuZ3RoXCJcbiAgICAgIFthdXRvSGlkZV09XCJ0cnVlXCJcbiAgICAgIChwcmV2aW91c0NsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiXG4gICAgICAobmV4dENsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCJcbiAgICAgIChwYWdlQ2xpY2spPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiPlxuICAgIDwvY28tcGFnaW5hdGlvbi1iYXI+XG4gIGAsXG4gIHByb3ZpZGVyczogW0Zvcm1NYXN0ZXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGV4dEFsaWduOiBDb2x1bW5BbGlnbiA9IENvbHVtbkFsaWduLkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignaGVhZGVyQ2VsbCcpIHNldCBoZWFkZXJDZWxscyhjZWxscykge1xuICAgIGNvbnN0IGhlYWRlckVsZW1lbnRzID0gY2VsbHMudG9BcnJheSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuY29sdW1uc1tpXS5lbGVtZW50UmVmID0gaGVhZGVyRWxlbWVudHNbaV07XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZHJlbigncm93RWxlbWVudCcpIHJvd0VsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dBZGQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNlbGVjdEFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdE9uQ2VsbENsaWNrOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmlnaHRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dHcmlkU2V0dGluZ3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm93c1BlclBhZ2U6IG51bWJlciA9IDUwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dEaXNhYmxlZEZuOiBGdW5jdGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0NvbHVtblNvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvbWlzZSBmdW5jdGlvbiwgaWYgcHJvdmlkZWQgc2hvdWxkIHJldHVybiBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2FuUm93QmVFZGl0dGVkRm46IEZ1bmN0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tc2ltcGxlLWdyaWQnKVxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlubGluZUVkaXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCghZXZlbnQuc2hpZnRLZXksIHRoaXMuZWRpdENlbGxJbmRleClcbiAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNhbmNlbEVkaXRSb3coKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZXR0aW5nc01lbnVPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBlZGl0Um93SW5kZXg6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgZWRpdENlbGxJbmRleDogbnVtYmVyID0gLTE7XG4gIHB1YmxpYyBzZWxlY3RlZFJvd0luZGV4OiBudW1iZXIgPSAtMTtcbiAgcHVibGljIHJvd1RvRWRpdDogYW55O1xuICBwdWJsaWMgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHB1YmxpYyBzb3J0Q29sdW1uVmFsdWU6IHN0cmluZztcbiAgcHVibGljIHNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG4gIHB1YmxpYyBob3ZlcmVkUm93SW5kZXg6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgcmVhZG9ubHkgSWNvbnMgPSBDb3JlQ29tcG9uZW50c0ljb247XG5cbiAgcHJpdmF0ZSBfZG91YmxlQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9uZXdSb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbmV3Um93UmVmZXJlbmNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEljb25DYWNoZVNlcnZpY2UgPSBJY29uQ2FjaGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpY29uczogSWNvbkNhY2hlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3Rpb24pO1xuICAgIHRoaXMuZGF0YUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWNrT3V0c2lkZVJvdygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldElzUm93RGlzYWJsZWQoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFJvd3MuaW5kZXhPZihpZHgpID4gLTE7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNSb3dEaXNhYmxlZChyb3c6IGFueSwgaW5kZXg6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnJvd0Rpc2FibGVkRm4gJiYgKHR5cGVvZiB0aGlzLnJvd0Rpc2FibGVkRm4gPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICBjb25zdCBkaXNhYmxlZCA9IGF3YWl0IHRoaXMucm93RGlzYWJsZWRGbi5jYWxsKHRoaXMsIHJvdyk7XG4gICAgICBjb25zdCBpZHhSb3c6IG51bWJlciA9IHRoaXMuZGlzYWJsZWRSb3dzLmluZGV4T2YoaW5kZXgpO1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChpZHhSb3cgPCAwKSB7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlZFJvd3MucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpZHhSb3cgPiAtMSkge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWRSb3dzLnNwbGljZShpZHhSb3csIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzYWJsZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkTmV3Um93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlubGluZUVkaXQpIHtcbiAgICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcbiAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICB0aGlzLl9uZXdSb3dSZWZlcmVuY2UgPSB7fTtcbiAgICAgICAgdGhpcy5kYXRhLnB1c2godGhpcy5fbmV3Um93UmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9uZXdSb3cgPSB0cnVlO1xuICAgICAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlICYmIHRoaXMuZGF0YS5sZW5ndGggPiB0aGlzLnJvd3NQZXJQYWdlKSB7XG4gICAgICAgICAgLy8gbmF2aWdhdGUgdG8gbGFzdCBwYWdlXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IE1hdGguY2VpbCh0aGlzLmRhdGEubGVuZ3RoIC8gdGhpcy5yb3dzUGVyUGFnZSk7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVJbmRleDogbnVtYmVyID0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSAlIHRoaXMucm93c1BlclBhZ2U7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gcmVsYXRpdmVJbmRleDtcbiAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHJlbGF0aXZlSW5kZXg7XG5cbiAgICAgICAgICAvLyBzdG9yZSByZWZlcmVuY2VcbiAgICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuX25ld1Jvd1JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBhd2FpdCB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLnJvd0VsZW1lbnRzPy5sYXN0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJ30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDIwMCk7XG5cbiAgICAgICAgICAvLyByZXNldCByZWZlcmVuY2UgdG8gdGhlIG5ldyByb3cgYWZ0ZXIgZWRpdENlbGxJbmRleFxuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5fbmV3Um93UmVmZXJlbmNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLl9uZXdSb3dSZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gYXdhaXQgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRSb3cubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUm93Lm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVBbmRTYXZlKHN0b3BlZGl0aW5nOiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIHRoaXMuX3NhdmVSb3coc3RvcGVkaXRpbmcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxFZGl0Um93KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9uZXdSb3cpIHtcbiAgICAgIHRoaXMuZGF0YS5zcGxpY2UodGhpcy5kYXRhLmxlbmd0aCAtIDEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFbdGhpcy5lZGl0Um93SW5kZXhdID0gdGhpcy5yb3dUb0VkaXQ7XG4gICAgfVxuICAgIHRoaXMuX3Jlc2V0RWRpdCgpO1xuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVSb3coKTogdm9pZCB7XG4gICAgbGV0IGFic29sdXRlSW5kZXg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleDtcbiAgICBpZiAodGhpcy5yb3dzUGVyUGFnZSkge1xuICAgICAgYWJzb2x1dGVJbmRleCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJvd3NQZXJQYWdlICsgdGhpcy5zZWxlY3RlZFJvd0luZGV4O1xuICAgIH1cbiAgICB0aGlzLmRlbGV0ZVJvdy5uZXh0KHRoaXMuZGF0YVthYnNvbHV0ZUluZGV4XSk7XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgIT09IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gLTE7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe3RvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnfSk7XG4gICAgfVxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDbGlja1JvdyhldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlubGluZUVkaXQgJiYgdGhpcy5zaG93Um93QnV0dG9ucyAmJiAhdGhpcy5lZGl0aW5nKSB7XG4gICAgICB0aGlzLmVkaXRpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9kb3VibGVDbGlja2VkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0VGhlUm93KGluZGV4KTtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdCAmJiAhdGhpcy5zaG93Um93QnV0dG9ucykge1xuICAgICAgICAgIHRoaXMuZWRpdFJvdyhldmVudCwgdHJ1ZSwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RUaGVSb3coaW5kZXg6IG51bWJlciwgZW1pdDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFJvd0luZGV4ID09PSAtMSB8fCAodGhpcy5zZWxlY3RlZFJvd0luZGV4ICE9PSBpbmRleCAmJiAoKHRoaXMuZWRpdGluZyAmJiB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpKSB8fCAhdGhpcy5lZGl0aW5nKSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGluZGV4O1xuICAgICAgY29uc3QgYWJzb2x1dGVJbmRleDogbnVtYmVyID0gdGhpcy5yb3dzUGVyUGFnZSA/ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJvd3NQZXJQYWdlICsgaW5kZXggOiBpbmRleDtcbiAgICAgIGlmIChlbWl0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Um93Lm5leHQodGhpcy5kYXRhW2Fic29sdXRlSW5kZXhdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PT0gaW5kZXggJiYgdGhpcy5kZXNlbGVjdEFsbG93ZWQgJiYgKCh0aGlzLmVkaXRpbmcgJiYgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKSkgfHwgIXRoaXMuZWRpdGluZykpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xuICAgICAgaWYgKGVtaXQpIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdFJvdy5uZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVEYmxDbGlja1JvdyhldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlciwgcm93OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdywgaW5kZXgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAtMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGNhbkVkaXQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIGlmICh0aGlzLmNhblJvd0JlRWRpdHRlZEZuICYmIHR5cGVvZiB0aGlzLmNhblJvd0JlRWRpdHRlZEZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYW5FZGl0ID0gYXdhaXQgdGhpcy5jYW5Sb3dCZUVkaXR0ZWRGbi5jYWxsKHRoaXMsIHJvdyk7XG4gICAgfVxuICAgIGlmIChjYW5FZGl0KSB7XG4gICAgICB0aGlzLl9kb3VibGVDbGlja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGJsQ2xpY2tSb3cubmV4dCh0aGlzLmRhdGFbaW5kZXhdKTtcbiAgICAgIHRoaXMuc2VsZWN0VGhlUm93KGluZGV4LCBmYWxzZSk7XG4gICAgICBpZiAodGhpcy5pbmxpbmVFZGl0ICYmICF0aGlzLnNob3dSb3dCdXR0b25zKSB7XG4gICAgICAgIHRoaXMuZWRpdFJvdyhldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3Jlc2V0RGJsQ2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlZGl0Um93KGV2ZW50OiBNb3VzZUV2ZW50LCBzZWxlY3RDZWxsOiBib29sZWFuID0gdHJ1ZSwgcm93SW5kZXg/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAocm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZWxlY3RUaGVSb3cocm93SW5kZXgpO1xuICAgIH1cbiAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4O1xuICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW3RoaXMuZWRpdFJvd0luZGV4XTtcblxuICAgIGlmICh0aGlzLnNob3dSb3dCdXR0b25zICYmIHRoaXMuaW5saW5lRWRpdCAmJiBzZWxlY3RDZWxsKSB7XG4gICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBhd2FpdCB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUNlbGxDbGljayhldmVudDogTW91c2VFdmVudCwgcm93OiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGNlbGxJbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuZWRpdE9uQ2VsbENsaWNrKSB7XG4gICAgICBpZiAoYXdhaXQgdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdywgcm93SW5kZXgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pbmxpbmVFZGl0KSB7XG4gICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gcm93SW5kZXg7XG4gICAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGNlbGxJbmRleDtcbiAgICAgICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gY2VsbEluZGV4O1xuICAgIH1cbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2V0dGluZ3NNZW51KCk6IHZvaWQge1xuICAgIHRoaXMuaGVhZGVyQ29sdW1uc0NvcHkuZm9yRWFjaChpID0+IGkuaXNTZWxlY3RlZCA9IGZhbHNlKTtcbiAgICB0aGlzLmlzU2V0dGluZ3NNZW51T3BlbiA9ICF0aGlzLmlzU2V0dGluZ3NNZW51T3BlbjtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb2x1bW5NZW51KGNvbDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3dHcmlkU2V0dGluZ3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2V0dGluZ3NNZW51T3BlbiA9IGZhbHNlO1xuICAgIGlmIChjb2wuaXNTZWxlY3RlZCkge1xuICAgICAgY29sLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWFkZXJDb2x1bW5zQ29weS5mb3JFYWNoKGkgPT4gaS5pc1NlbGVjdGVkID0gZmFsc2UpO1xuICAgICAgY29sLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoaWRlQ29sdW1uKGNvbDogYW55KTogdm9pZCB7XG4gICAgY29sLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmhlYWRlckNvbHVtbnNDb3B5ID0gdGhpcy5oZWFkZXJDb2x1bW5zQ29weS5maWx0ZXIoKG9iaikgPT4ge1xuICAgICAgcmV0dXJuIG9iaiAhPT0gY29sO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNvcnRDb2x1bW4oY29sOiBhbnksIGNvbHVtblZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb2wuaXNTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc29ydENvbHVtblZhbHVlID09PSBjb2x1bW5WYWx1ZSkge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnRDb2x1bW5WYWx1ZSA9IGNvbHVtblZhbHVlO1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IDEgOiAtMTtcblxuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi50aGlzLmRhdGFdLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGxldCB2YWxBID0gYVtjb2x1bW5WYWx1ZV07XG4gICAgICBsZXQgdmFsQiA9IGJbY29sdW1uVmFsdWVdO1xuXG4gICAgICBpZiAodmFsQSA9PSBudWxsICYmIHZhbEIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxBID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIC0xICogZGlyZWN0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKHZhbEIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gMSAqIGRpcmVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIElTTyBkYXRlIHN0cmluZ1xuICAgICAgY29uc3QgaXNEYXRlQSA9IHR5cGVvZiB2YWxBID09PSAnc3RyaW5nJyAmJiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VC8udGVzdCh2YWxBKTtcbiAgICAgIGNvbnN0IGlzRGF0ZUIgPSB0eXBlb2YgdmFsQiA9PT0gJ3N0cmluZycgJiYgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVQvLnRlc3QodmFsQik7XG5cbiAgICAgIGlmIChpc0RhdGVBICYmIGlzRGF0ZUIpIHtcbiAgICAgICAgY29uc3QgdGltZUEgPSBuZXcgRGF0ZSh2YWxBKS5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IHRpbWVCID0gbmV3IERhdGUodmFsQikuZ2V0VGltZSgpO1xuICAgICAgICByZXR1cm4gKHRpbWVBIC0gdGltZUIpICogZGlyZWN0aW9uO1xuICAgICAgfVxuXG4gICAgICAvLyBGYWxsYmFjayBmb3IgbnVtYmVycy9zdHJpbmdzXG4gICAgICBpZiAodHlwZW9mIHZhbEEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWxCID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsQS5sb2NhbGVDb21wYXJlKHZhbEIpICogZGlyZWN0aW9uO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKHZhbEEgPiB2YWxCID8gMSA6IHZhbEEgPCB2YWxCID8gLTEgOiAwKSAqIGRpcmVjdGlvbjtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YSA9IHNvcnRlZDtcbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0FsbENvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTWVudU9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmhlYWRlckNvbHVtbnNDb3B5ID0gdGhpcy5oZWFkZXJDb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIGV4cG9ydFRvRXhjZWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTWVudU9wZW4gPSBmYWxzZTtcbiAgICBjb25zdCBleHBvcnREYXRhOiBPYmplY3RbXSA9IHRoaXMuZXhwb3J0RGF0YS5sZW5ndGggPiAwID8gdGhpcy5fZmlsdGVyU2VsZWN0ZWRPclJldHVybkFsbCh0aGlzLmV4cG9ydERhdGEpIDogdGhpcy5fZmlsdGVyU2VsZWN0ZWRPclJldHVybkFsbCh0aGlzLmRhdGEpO1xuICAgIGNvbnN0IGNvbHVtbnM6IEV4cG9ydENvbHVtbltdID0gdGhpcy5oZWFkZXJDb2x1bW5zQ29weS5tYXAoY29sdW1uID0+IHtcbiAgICAgIHJldHVybiAoe1xuICAgICAgICBrZXk6IGNvbHVtbi5maWVsZCxcbiAgICAgICAgaGVhZGVyOiBjb2x1bW4uaGVhZGVyVGV4dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gY29sdW1ucy5tYXAoY29sID0+IGNvbC5oZWFkZXIpO1xuICAgIGNvbnN0IHJvd3MgPSBleHBvcnREYXRhLm1hcChyb3cgPT5cbiAgICAgIGNvbHVtbnMubWFwKGNvbCA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2NvbC5rZXldO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHZhbHVlLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBmb3JtYXR0ZWREYXRlLnNwbGl0KCctJyk7XG4gICAgICAgICAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGNvbnN0IGhhc0RlY2ltYWwgPSAobnVtKSA9PiAhTnVtYmVyLmlzSW50ZWdlcihudW0pO1xuICAgICAgICAgIHJldHVybiBoYXNEZWNpbWFsKHZhbHVlKSA/IHZhbHVlLnRvRml4ZWQoMikgOiB2YWx1ZS50b0ZpeGVkKDApO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJywgJyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5jbHVkZXMoJ1QwMDowMDowMCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSB2YWx1ZS5yZXBsYWNlKCdUMDA6MDA6MDAnLCAnJykuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gY29uc3QgY3N2Q29udGVudCA9IFtoZWFkZXJzLCAuLi5yb3dzXS5tYXAocm93ID0+XG4gICAgLy8gICByb3cubWFwKGNlbGwgPT4gYFwiJHtjZWxsLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgKS5qb2luKCcsJylcbiAgICAvLyApLmpvaW4oJ1xcclxcbicpO1xuXG4gICAgY29uc3QgY3N2Q29udGVudDogc3RyaW5nID0gW2hlYWRlcnMsIC4uLnJvd3NdLm1hcChyb3cgPT5cbiAgICAgIHJvdy5tYXAoKGNlbGw6IHN0cmluZykgPT4gYFwiJHtTdHJpbmcoY2VsbCkucmVwbGFjZSgvXCIvZywgJ1wiXCInKX1cImApLmpvaW4oJywnKVxuICAgICkuam9pbignXFxyXFxuJyk7XG5cbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2NzdkNvbnRlbnRdLCB7dHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7J30pO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAnRXhjZWxTaGVldCcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG5cbiAgICAvLyB0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5leHBvcnRUb0V4Y2VsKFxuICAgIC8vICAgdGhpcy5kYXRhLFxuICAgIC8vICAgY29sdW1ucyxcbiAgICAvLyAgICdFeGNlbFNoZWV0JyxcbiAgICAvLyAgICdTaGVldDEnXG4gICAgLy8gKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgLT0gMTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSArPSAxO1xuICB9XG5cbiAgcHVibGljIHNldEN1cnJlbnRQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc05ld1JvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmV3Um93O1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyU2VsZWN0ZWRPclJldHVybkFsbChpdGVtczogYW55KSB7XG4gICAgY29uc3QgaGFzU2VsZWN0ZWRUcnVlOiBib29sZWFuID0gaXRlbXMuc29tZShpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPT09IHRydWUpO1xuICAgIHJldHVybiBoYXNTZWxlY3RlZFRydWUgPyBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkID09PSB0cnVlKSA6IGl0ZW1zO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHByZXBhcmVEYXRhUm93KHJvdzogYW55LCBpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdywgaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXREYmxDbGljaygpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2RvdWJsZUNsaWNrZWQgPSBmYWxzZTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBuZXh0OyBNb3ZlIHRvIG5leHQgb3IgcHJldmlvdXMgY2VsbFxuICAgKiBAcGFyYW0gc3RhcnQ7IFN0YXJ0IGZyb20gY2VsbGluZGV4XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdChuZXh0OiBib29sZWFuLCBzdGFydDogbnVtYmVyID0gLTEpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IG51bUVkaXRhYmxlQ29sdW1uczogbnVtYmVyID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLnJlYWRvbmx5KS5sZW5ndGg7XG4gICAgICBjb25zdCB3YW50ZWRJbmRleCA9IHN0YXJ0ICsgKG5leHQgPyAxIDogLTEpO1xuICAgICAgaWYgKHdhbnRlZEluZGV4ID49IG51bUVkaXRhYmxlQ29sdW1ucykge1xuICAgICAgICB0aGlzLl9nZXROZXh0RWRpdFJvd0luZGV4KClcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZ2V0TmV4dEVkaXRDZWxsSW5kZXgoMCkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAod2FudGVkSW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuX2dldFByZXZpb3VzRWRpdFJvd0luZGV4KClcbiAgICAgICAgICAudGhlbigoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0Um93SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5fZ2V0UHJldmlvdXNFZGl0Q2VsbEluZGV4KHRoaXMuY29sdW1ucy5sZW5ndGggLSAxKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShuZXh0ID8gdGhpcy5fZ2V0TmV4dEVkaXRDZWxsSW5kZXgoc3RhcnQgKyAxKSA6IHRoaXMuX2dldFByZXZpb3VzRWRpdENlbGxJbmRleChzdGFydCAtIDEpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRFZGl0Q2VsbEluZGV4KHN0YXJ0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHN0YXJ0OyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuY29sdW1uc1tpXS5yZWFkb25seSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gc3RhcnQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoIXRoaXMuY29sdW1uc1tpXS5yZWFkb25seSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RWRpdFJvd0luZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgbGV0IG5ld1Jvd0luZGV4OiBudW1iZXIgPSAwO1xuICAgICAgaWYgKHRoaXMuZWRpdFJvd0luZGV4ICsgMSA+PSB0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9BZGRSb3cpIHtcbiAgICAgICAgICB0aGlzLmFkZE5ld1JvdygpO1xuICAgICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3Um93SW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4ICsgMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdSb3dJbmRleCAhPT0gdGhpcy5lZGl0Um93SW5kZXgpIHsgLy8gZ28gdG8gZGlmZmVyZW50IHJvdyB2YWxpZGF0ZSBjdXJyZW50IG9uZSBmaXJzdFxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUFuZFNhdmUoZmFsc2UpKSB7XG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbbmV3Um93SW5kZXhdO1xuICAgICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFByZXZpb3VzRWRpdFJvd0luZGV4KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xuICAgICAgbGV0IG5ld1Jvd0luZGV4OiBudW1iZXIgPSAwO1xuICAgICAgaWYgKHRoaXMuZWRpdFJvd0luZGV4IC0gMSA8IDApIHtcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5lZGl0Um93SW5kZXggLSAxO1xuICAgICAgfVxuICAgICAgaWYgKG5ld1Jvd0luZGV4ICE9PSB0aGlzLmVkaXRSb3dJbmRleCkgeyAvLyBnbyB0byBkaWZmZXJlbnQgcm93IHZhbGlkYXRlIGN1cnJlbnQgb25lIGZpcnN0XG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlQW5kU2F2ZShmYWxzZSkpIHtcbiAgICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVtuZXdSb3dJbmRleF07XG4gICAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVJvdyhzdG9wZWRpdGluZzogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbmV3Um93KSB7XG4gICAgICB0aGlzLnNhdmVSb3cubmV4dCh0aGlzLl9uZXdSb3dSZWZlcmVuY2UpO1xuICAgICAgdGhpcy5fbmV3Um93UmVmZXJlbmNlID0gbnVsbDsgLy8gY2xlYXJcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTsgLy8gZXhpc3Rpbmcgcm93XG5cbiAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlKSB7XG4gICAgICAgIGluZGV4ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucm93c1BlclBhZ2UgKyB0aGlzLmVkaXRSb3dJbmRleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4ID0gdGhpcy5lZGl0Um93SW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnNhdmVSb3cubmV4dCh0aGlzLmRhdGFbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgIT09IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gLTE7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe3RvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnfSk7XG4gICAgfVxuICAgIHRoaXMuX25ld1JvdyA9IGZhbHNlO1xuICAgIGlmIChzdG9wZWRpdGluZykge1xuICAgICAgdGhpcy5fcmVzZXRFZGl0KCk7XG4gICAgfVxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RldGVjdENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRFZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuX25ld1JvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xuICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gLTE7XG4gICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gLTE7XG4gICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5yb3dUb0VkaXQgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
775
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpbXBsZS1ncmlkL3NpbXBsZS1ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBNEw1RCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBaUc5RCxZQUNTLEtBQXVCLEVBQ3BCLGVBQWtDLEVBQ3BDLFdBQThCO1FBRXRDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUpoQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDcEMsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBbkd4QixxQkFBZ0IsR0FBZ0IsV0FBVyxDQUFDLElBQUksQ0FBQztRQVkxRCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHNUIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHakMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFHaEMsaUJBQVksR0FBWSxLQUFL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LENBQUM7Z0JBQzlCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBM0xPLGdCQUFnQjtZQVp0QixpQkFBaUI7WUFRWCxpQkFBaUI7OzswQkFtTXRCLFlBQVksU0FBQyxZQUFZOzBCQU96QixZQUFZLFNBQUMsWUFBWTtzQkFFekIsS0FBSzt5QkFHTCxLQUFLOzhCQUdMLEtBQUs7OEJBR0wsS0FBSzsyQkFHTCxLQUFLOytCQUdMLEtBQUs7MEJBR0wsS0FBSzs0QkFHTCxLQUFLOzZCQUdMLEtBQUs7NkJBR0wsS0FBSztnQ0FNTCxLQUFLO3dCQUdMLFdBQVcsU0FBQyxzQkFBc0I7NEJBS2xDLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybU1hc3RlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9mb3JtLW1hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7QmFzZVNpbXBsZUdyaWRDb21wb25lbnR9IGZyb20gJy4vYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtDb2x1bW5BbGlnbn0gZnJvbSAnLi9zaW1wbGUtZ3JpZC1jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7Q29yZUNvbXBvbmVudHNJY29ufSBmcm9tICcuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bSc7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uL2ljb24vaWNvbi1jYWNoZS5zZXJ2aWNlJztcbmltcG9ydCB7RXhwb3J0Q29sdW1ufSBmcm9tICcuLi8uLi9zZXJ2aWNlL2V4Y2VsLWV4cG9ydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY28tc2ltcGxlLWdyaWQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxjby1ncmlkLXRvb2xiYXJcbiAgICAgICpuZ0lmPVwic2hvd1Rvb2xiYXJcIiBbY2xhc3MucmlnaHRdPVwicmlnaHRUb29sYmFyXCJcbiAgICAgIFtzaG93RWRpdF09XCJzaG93RWRpdFwiXG4gICAgICBbc2hvd0FkZF09XCJzaG93QWRkXCJcbiAgICAgIFtzaG93RGVsZXRlXT1cInNob3dEZWxldGVcIlxuICAgICAgW2RlbGV0ZUVuYWJsZWRdPVwic2VsZWN0ZWRSb3dJbmRleCA+IC0xXCJcbiAgICAgIChhZGRDbGljayk9XCJhZGROZXdSb3coKVwiXG4gICAgICAoZWRpdENsaWNrKT1cImVkaXRSb3coJGV2ZW50KVwiXG4gICAgICAoc2F2ZUNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpXCJcbiAgICAgIChjYW5jZWxDbGljayk9XCJjYW5jZWxFZGl0Um93KClcIlxuICAgICAgKGRlbGV0ZUNsaWNrKT1cInJlbW92ZVNlbGVjdGVkUm93KClcIj5cbiAgICA8L2NvLWdyaWQtdG9vbGJhcj5cblxuICAgIDx0YWJsZVxuICAgICAgaWQ9XCJzaW1wbGUtZ3JpZC10YWJsZVwiXG4gICAgICBjbGFzcz1cInNpbXBsZS1ncmlkLXRhYmxlXCJcbiAgICAgIFtjbGlja091dHNpZGVdPVwiZWRpdGluZ1wiXG4gICAgICAoY2xpY2tPdXRzaWRlKT1cImhhbmRsZUNsaWNrT3V0c2lkZVJvdygpXCI+XG4gICAgICA8Y29sZ3JvdXA+XG4gICAgICAgIDxjb2xcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGhlYWRlckNvbHVtbnNDb3B5OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgW2NsYXNzLnNpbXBsZS1ncmlkLWNvbHVtbi1hdXRvLWZpdF09XCJjb2x1bW4uYXV0b0ZpdFwiXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJNSU5fQ09MVU1OX1dJRFRIXCI+XG4gICAgICAgIDxjb2xcbiAgICAgICAgICAqbmdJZj1cInNob3dSb3dCdXR0b25zXCJcbiAgICAgICAgICBbY2xhc3Muc2ltcGxlLWdyaWQtY29sdW1uLWF1dG8tZml0XT1cInRydWVcIlxuICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiTUlOX0NPTFVNTl9XSURUSFwiPlxuICAgICAgICA+XG4gICAgICA8L2NvbGdyb3VwPlxuICAgICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGhcbiAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgI2hlYWRlckNlbGxcbiAgICAgICAgICBjbGFzcz1cInNpbXBsZS1ncmlkLWNvbHVtbi1oZWFkZXJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgaGVhZGVyQ29sdW1uc0NvcHk7IGxldCBpbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4taGVhZGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnJlc2l6YWJsZV09XCJyZXNpemFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImNvbHVtbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi50ZXh0QWxpZ24gPyBjb2x1bW4udGV4dEFsaWduIDogZGVmYXVsdFRleHRBbGlnblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZTsgZWxzZSBub0hlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9IZWFkZXJUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWhlYWRlci1sYWJlbFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29sdW1uLnRleHRBbGlnbiA/IGNvbHVtbi50ZXh0QWxpZ24gOiBkZWZhdWx0VGV4dEFsaWduXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1tZW51XT1cInNob3dHcmlkU2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLXNvcnRdPVwic2hvd0NvbHVtblNvcnRcIlxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJjb2x1bW4uaGVhZGVyVGV4dCB8fCAnJm5ic3A7J1wiIFt0aXRsZV09XCJjb2x1bW4uaGVhZGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDb2x1bW5Tb3J0ID8gc29ydENvbHVtbihjb2x1bW4sIGNvbHVtbi5maWVsZCkgOiB0b2dnbGVDb2x1bW5NZW51KGNvbHVtbilcIj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtY29sdW1uXCIgKm5nSWY9XCJzaG93Q29sdW1uU29ydFwiPlxuICAgICAgICAgICAgICAgIDxjby1idXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0Q29sdW1uKGNvbHVtbiwgY29sdW1uPy5maWVsZClcIlxuICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbnMuQXJyb3dVcEFycm93RG93bilcIj5cbiAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1tZW51XCIgKm5nSWY9XCJjb2x1bW4uaXNTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgIDxoMyBbdGV4dENvbnRlbnRdPVwiJ0NPTFVNTl9PUFRJT05TJyB8IGNvcmVMb2NhbGl6ZVwiPjwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJoaWRlQ29sdW1uKGNvbHVtbilcIj5IaWRlIENvbHVtbjwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uLCBjb2x1bW4uZmllbGQpXCI+U29ydCBDb2x1bW48L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNpemFibGUgJiYgY29sdW1uLnJlc2l6YWJsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLXNpemVyXCJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJoYW5kbGVTaXplck1vdXNlRG93bigkZXZlbnQsIGNvbHVtbilcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cblxuICAgICAgPGRpdiAqbmdJZj1cInNob3dHcmlkU2V0dGluZ3NcIiBjbGFzcz1cImdyaWQtc2V0dGluZ3NcIj5cbiAgICAgICAgPGNvLWJ1dHRvblxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NldHRpbmdzTWVudU9wZW5cIlxuICAgICAgICAgIFtpY29uRGF0YV09XCJpY29ucy5nZXRJY29uKEljb25zLkNvZ1doZWVscylcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZXR0aW5nc01lbnUoKVwiPlxuICAgICAgICA8L2NvLWJ1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtbWVudVwiICpuZ0lmPVwiaXNTZXR0aW5nc01lbnVPcGVuXCI+XG4gICAgICAgICAgPGgzIFt0ZXh0Q29udGVudF09XCInR1JJRF9PUFRJT05TJyB8IGNvcmVMb2NhbGl6ZVwiPjwvaDM+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgPGxpIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIj5FeHBvcnQgdG8gRXhjZWw8L2xpPlxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiaGVhZGVyQ29sdW1uc0NvcHkubGVuZ3RoICE9PSBoZWFkZXJDb2x1bW5zLmxlbmd0aFwiIChjbGljayk9XCJzaG93QWxsQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgIFNob3cgQWxsIENvbHVtbnNcbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHlcbiAgICAgICAgI2Ryb3BMaXN0IGNka0Ryb3BMaXN0IGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIGNsYXNzPVwic2ltcGxlLWdyaWQtZHJhZy1kcm9wLWxpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ0Ryb3BFbmFibGVkIHx8IGVkaXRpbmdcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImRhdGFcIlxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJoYW5kbGVDYW5EcmFnRHJvcFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCI+XG4gICAgICA8Y28tZm9ybSBjbGFzcz1cInNpbXBsZS1ncmlkLXJvdy1mb3JtXCI+XG4gICAgICAgIDx0clxuICAgICAgICAgICNyb3dFbGVtZW50XG4gICAgICAgICAgY2xhc3M9XCJzaW1wbGUtZ3JpZC1yb3dcIlxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJyb3dJbmRleCA9PT0gc2VsZWN0ZWRSb3dJbmRleCAmJiAhZWRpdGluZ1wiIG9ic2VydmVWaXNpYmlsaXR5XG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImdldElzUm93RGlzYWJsZWQocm93SW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MuZWRpdGluZ109XCJyb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mICghIXJvd3NQZXJQYWdlID8gKGRhdGEgfCBwYWdpbmF0ZToge2l0ZW1zUGVyUGFnZTogcm93c1BlclBhZ2UsIGN1cnJlbnRQYWdlOiBjdXJyZW50UGFnZX0pIDogZGF0YSk7IGxhc3QgYXMgbGFzdDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIlxuICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2tSb3coJGV2ZW50LCByb3dJbmRleClcIiAoZGJsY2xpY2spPVwiaGFuZGxlRGJsQ2xpY2tSb3coJGV2ZW50LCByb3dJbmRleCwgcm93KVwiXG4gICAgICAgICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwicm93VmlzaWJsZS5uZXh0KHJvdylcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyZWRSb3dJbmRleCA9IHJvd0luZGV4XCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkUm93SW5kZXggPSAtMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaW5nbGVDb2x1bW5Sb3cocm93KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwic2ltcGxlLWdyaWQtc2luZ2xlLWNvbHVtbi1jZWxsXCIgW2F0dHIuY29sc3Bhbl09XCJoZWFkZXJDb2x1bW5zQ29weS5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtbnNbc2luZ2xlQ29sdW1uSW5kZXgocm93KV1cIlxuICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbZWRpdE1vZGVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jZWxsPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2luZ2xlQ29sdW1uUm93KHJvdylcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBoZWFkZXJDb2x1bW5zQ29weTsgbGV0IGNvbHVtbkluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic2ltcGxlLWdyaWQtY29sdW1uLWNlbGxcIiAqbmdJZj1cImNvbHVtbkluZGV4ICE9PSBzaW5nbGVDb2x1bW5JbmRleChyb3cpXCI+XG4gICAgICAgICAgICAgICAgPGNvLXNpbXBsZS1ncmlkLWNlbGxcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtlZGl0TW9kZV09XCJpbmxpbmVFZGl0ICYmIGVkaXRpbmcgJiYgcm93SW5kZXggPT09IGVkaXRSb3dJbmRleFwiXG4gICAgICAgICAgICAgICAgICBbZmllbGRFZGl0TW9kZV09XCJlZGl0Q2VsbEluZGV4ID09PSBjb2x1bW5JbmRleCAmJiByb3dJbmRleCA9PT0gZWRpdFJvd0luZGV4XCJcbiAgICAgICAgICAgICAgICAgIChjZWxsQ2xpY2spPVwiaGFuZGxlQ2VsbENsaWNrKCRldmVudCwgcm93LCByb3dJbmRleCwgY29sdW1uSW5kZXgpXCI+XG4gICAgICAgICAgICAgICAgPC9jby1zaW1wbGUtZ3JpZC1jZWxsPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2x1bW4ucmVzaXphYmxlXCIgY2xhc3M9XCJzaW1wbGUtZ3JpZC1jb2x1bW4tc2l6ZXItcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dSb3dCdXR0b25zXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImljb25zLWNvbnRhaW5lclwiIFtjbGFzcy5zaG93LWNvbnRlbnRdPVwic2VsZWN0ZWRSb3dJbmRleCA9PT0gcm93SW5kZXggfHwgaG92ZXJlZFJvd0luZGV4ID09PSByb3dJbmRleFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImljb24taXRlbSBpY29uLWVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0Um93SW5kZXggIT09IHJvd0luZGV4ICYmIGlubGluZUVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25zLmdldEljb24oSWNvbnMuUGVuVG9TcXVhcmVTb2xpZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRSb3coJGV2ZW50LCB0cnVlLCByb3dJbmRleCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjwvY28taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxjby1pY29uIGNsYXNzPVwiaWNvbi1pdGVtIGljb24tZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29ucy5nZXRJY29uKEljb25zLlRyYXNoQmluKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihlZGl0Um93SW5kZXggIT09IHJvd0luZGV4ICYmIHNob3dEZWxldGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVSb3coZGF0YVtyb3dJbmRleF0pXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0aW5nICYmIGlubGluZUVkaXQgJiYgKHNlbGVjdGVkUm93SW5kZXggPT09IHJvd0luZGV4IHx8IGlzTmV3Um93KSAmJiBlZGl0Um93SW5kZXggPT09IHJvd0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5DaGVja0R1b3RvbmUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlQW5kU2F2ZSgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L2NvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkRhdGFdPVwiaWNvbnMuZ2V0SWNvbihJY29ucy5Dcm9zc1NraW5ueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsRWRpdFJvdygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgXCI+PC9jby1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvY28tZm9ybT5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgICA8Y28tcGFnaW5hdGlvbi1iYXJcbiAgICAgICpuZ0lmPVwiZGF0YT8ubGVuZ3RoID4gcm93c1BlclBhZ2VcIiBjbGFzcz1cInBhZ2luYXRpb24tYmFyXCJcbiAgICAgIFtpdGVtc1BlclBhZ2VdPVwicm93c1BlclBhZ2VcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgIFt0b3RhbEl0ZW1zXT1cImRhdGEubGVuZ3RoXCJcbiAgICAgIFthdXRvSGlkZV09XCJ0cnVlXCJcbiAgICAgIChwcmV2aW91c0NsaWNrKT1cImdvVG9QcmV2aW91c1BhZ2UoKVwiXG4gICAgICAobmV4dENsaWNrKT1cImdvVG9OZXh0UGFnZSgpXCJcbiAgICAgIChwYWdlQ2xpY2spPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiPlxuICAgIDwvY28tcGFnaW5hdGlvbi1iYXI+XG4gIGAsXG4gIHByb3ZpZGVyczogW0Zvcm1NYXN0ZXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZUdyaWRDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBkZWZhdWx0VGV4dEFsaWduOiBDb2x1bW5BbGlnbiA9IENvbHVtbkFsaWduLkxlZnQ7XG5cbiAgQFZpZXdDaGlsZHJlbignaGVhZGVyQ2VsbCcpIHNldCBoZWFkZXJDZWxscyhjZWxscykge1xuICAgIGNvbnN0IGhlYWRlckVsZW1lbnRzID0gY2VsbHMudG9BcnJheSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVhZGVyRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuY29sdW1uc1tpXS5lbGVtZW50UmVmID0gaGVhZGVyRWxlbWVudHNbaV07XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZHJlbigncm93RWxlbWVudCcpIHJvd0VsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dBZGQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNlbGVjdEFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdE9uQ2VsbENsaWNrOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmlnaHRUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dHcmlkU2V0dGluZ3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcm93c1BlclBhZ2U6IG51bWJlciA9IDUwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dEaXNhYmxlZEZuOiBGdW5jdGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0NvbHVtblNvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1Jvd0J1dHRvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvbWlzZSBmdW5jdGlvbiwgaWYgcHJvdmlkZWQgc2hvdWxkIHJldHVybiBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2FuUm93QmVFZGl0dGVkRm46IEZ1bmN0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY28tc2ltcGxlLWdyaWQnKVxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlubGluZUVkaXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCghZXZlbnQuc2hpZnRLZXksIHRoaXMuZWRpdENlbGxJbmRleClcbiAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLmNhbmNlbEVkaXRSb3coKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZWRpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZXR0aW5nc01lbnVPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBlZGl0Um93SW5kZXg6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgZWRpdENlbGxJbmRleDogbnVtYmVyID0gLTE7XG4gIHB1YmxpYyBzZWxlY3RlZFJvd0luZGV4OiBudW1iZXIgPSAtMTtcbiAgcHVibGljIHJvd1RvRWRpdDogYW55O1xuICBwdWJsaWMgY3VycmVudFBhZ2U6IG51bWJlciA9IDE7XG4gIHB1YmxpYyBzb3J0Q29sdW1uVmFsdWU6IHN0cmluZztcbiAgcHVibGljIHNvcnREaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYyc7XG4gIHB1YmxpYyBob3ZlcmVkUm93SW5kZXg6IG51bWJlciA9IC0xO1xuICBwdWJsaWMgcmVhZG9ubHkgSWNvbnMgPSBDb3JlQ29tcG9uZW50c0ljb247XG5cbiAgcHJpdmF0ZSBfZG91YmxlQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9uZXdSb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbmV3Um93UmVmZXJlbmNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEljb25DYWNoZVNlcnZpY2UgPSBJY29uQ2FjaGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpY29uczogSWNvbkNhY2hlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mb3JtTWFzdGVyOiBGb3JtTWFzdGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihjaGFuZ2VEZXRlY3Rpb24pO1xuICAgIHRoaXMuZGF0YUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWNrT3V0c2lkZVJvdygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlQW5kU2F2ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldElzUm93RGlzYWJsZWQoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFJvd3MuaW5kZXhPZihpZHgpID4gLTE7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNSb3dEaXNhYmxlZChyb3c6IGFueSwgaW5kZXg6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnJvd0Rpc2FibGVkRm4gJiYgKHR5cGVvZiB0aGlzLnJvd0Rpc2FibGVkRm4gPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICBjb25zdCBkaXNhYmxlZCA9IGF3YWl0IHRoaXMucm93RGlzYWJsZWRGbi5jYWxsKHRoaXMsIHJvdyk7XG4gICAgICBjb25zdCBpZHhSb3c6IG51bWJlciA9IHRoaXMuZGlzYWJsZWRSb3dzLmluZGV4T2YoaW5kZXgpO1xuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChpZHhSb3cgPCAwKSB7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlZFJvd3MucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpZHhSb3cgPiAtMSkge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWRSb3dzLnNwbGljZShpZHhSb3csIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGlzYWJsZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkTmV3Um93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlubGluZUVkaXQpIHtcbiAgICAgIGNvbnN0IHZhbGlkOiBib29sZWFuID0gdGhpcy52YWxpZGF0ZUFuZFNhdmUoKTtcbiAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICB0aGlzLl9uZXdSb3dSZWZlcmVuY2UgPSB7fTtcbiAgICAgICAgdGhpcy5kYXRhLnB1c2godGhpcy5fbmV3Um93UmVmZXJlbmNlKTtcbiAgICAgICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9uZXdSb3cgPSB0cnVlO1xuICAgICAgICB0aGlzLmVkaXRpbmcgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlICYmIHRoaXMuZGF0YS5sZW5ndGggPiB0aGlzLnJvd3NQZXJQYWdlKSB7XG4gICAgICAgICAgLy8gbmF2aWdhdGUgdG8gbGFzdCBwYWdlXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IE1hdGguY2VpbCh0aGlzLmRhdGEubGVuZ3RoIC8gdGhpcy5yb3dzUGVyUGFnZSk7XG4gICAgICAgICAgY29uc3QgcmVsYXRpdmVJbmRleDogbnVtYmVyID0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSAlIHRoaXMucm93c1BlclBhZ2U7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gcmVsYXRpdmVJbmRleDtcbiAgICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHJlbGF0aXZlSW5kZXg7XG5cbiAgICAgICAgICAvLyBzdG9yZSByZWZlcmVuY2VcbiAgICAgICAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuX25ld1Jvd1JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBhd2FpdCB0aGlzLl9uZXh0QXZhaWxhYmxlQ2VsbFRvRWRpdCh0cnVlKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLnJvd0VsZW1lbnRzPy5sYXN0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJ30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDIwMCk7XG5cbiAgICAgICAgICAvLyByZXNldCByZWZlcmVuY2UgdG8gdGhlIG5ldyByb3cgYWZ0ZXIgZWRpdENlbGxJbmRleFxuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5fbmV3Um93UmVmZXJlbmNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLl9uZXdSb3dSZWZlcmVuY2U7XG4gICAgICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gYXdhaXQgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRSb3cubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUm93Lm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVBbmRTYXZlKHN0b3BlZGl0aW5nOiBib29sZWFuID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsaWQ6IGJvb2xlYW4gPSB0aGlzLl9mb3JtTWFzdGVyLnN1Ym1pdFNsYXZlcygpO1xuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgICBpZiAodmFsaWQpIHtcbiAgICAgIHRoaXMuX3NhdmVSb3coc3RvcGVkaXRpbmcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxFZGl0Um93KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lZGl0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9uZXdSb3cpIHtcbiAgICAgIHRoaXMuZGF0YS5zcGxpY2UodGhpcy5kYXRhLmxlbmd0aCAtIDEsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFbdGhpcy5lZGl0Um93SW5kZXhdID0gdGhpcy5yb3dUb0VkaXQ7XG4gICAgfVxuICAgIHRoaXMuX3Jlc2V0RWRpdCgpO1xuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVSb3cocm93OmFueSk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlUm93Lm5leHQocm93KTtcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSAhPT0gMSkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAtMTtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7dG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCd9KTtcbiAgICB9XG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVNlbGVjdGVkUm93KCk6IHZvaWQge1xuICAgIGxldCBhYnNvbHV0ZUluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXg7XG4gICAgaWYgKHRoaXMucm93c1BlclBhZ2UpIHtcbiAgICAgIGFic29sdXRlSW5kZXggPSAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5yb3dzUGVyUGFnZSArIHRoaXMuc2VsZWN0ZWRSb3dJbmRleDtcbiAgICB9XG4gICAgdGhpcy5kZWxldGVSb3cubmV4dCh0aGlzLmRhdGFbYWJzb2x1dGVJbmRleF0pO1xuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSAxKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xuICAgICAgd2luZG93LnNjcm9sbFRvKHt0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgIH1cbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2tSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbmxpbmVFZGl0ICYmIHRoaXMuc2hvd1Jvd0J1dHRvbnMgJiYgIXRoaXMuZWRpdGluZykge1xuICAgICAgdGhpcy5lZGl0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZG91YmxlQ2xpY2tlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdFRoZVJvdyhpbmRleCk7XG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXQgJiYgIXRoaXMuc2hvd1Jvd0J1dHRvbnMpIHtcbiAgICAgICAgICB0aGlzLmVkaXRSb3coZXZlbnQsIHRydWUsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0VGhlUm93KGluZGV4OiBudW1iZXIsIGVtaXQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PT0gLTEgfHwgKHRoaXMuc2VsZWN0ZWRSb3dJbmRleCAhPT0gaW5kZXggJiYgKCh0aGlzLmVkaXRpbmcgJiYgdGhpcy52YWxpZGF0ZUFuZFNhdmUoKSkgfHwgIXRoaXMuZWRpdGluZykpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBpbmRleDtcbiAgICAgIGNvbnN0IGFic29sdXRlSW5kZXg6IG51bWJlciA9IHRoaXMucm93c1BlclBhZ2UgPyAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5yb3dzUGVyUGFnZSArIGluZGV4IDogaW5kZXg7XG4gICAgICBpZiAoZW1pdCkge1xuICAgICAgICB0aGlzLnNlbGVjdFJvdy5uZXh0KHRoaXMuZGF0YVthYnNvbHV0ZUluZGV4XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkUm93SW5kZXggPT09IGluZGV4ICYmIHRoaXMuZGVzZWxlY3RBbGxvd2VkICYmICgodGhpcy5lZGl0aW5nICYmIHRoaXMudmFsaWRhdGVBbmRTYXZlKCkpIHx8ICF0aGlzLmVkaXRpbmcpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAtMTtcbiAgICAgIGlmIChlbWl0KSB7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RSb3cubmV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlRGJsQ2xpY2tSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIsIHJvdzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGF3YWl0IHRoaXMuaXNSb3dEaXNhYmxlZChyb3csIGluZGV4KSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gLTE7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBjYW5FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5jYW5Sb3dCZUVkaXR0ZWRGbiAmJiB0eXBlb2YgdGhpcy5jYW5Sb3dCZUVkaXR0ZWRGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FuRWRpdCA9IGF3YWl0IHRoaXMuY2FuUm93QmVFZGl0dGVkRm4uY2FsbCh0aGlzLCByb3cpO1xuICAgIH1cbiAgICBpZiAoY2FuRWRpdCkge1xuICAgICAgdGhpcy5fZG91YmxlQ2xpY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLmRibENsaWNrUm93Lm5leHQodGhpcy5kYXRhW2luZGV4XSk7XG4gICAgICB0aGlzLnNlbGVjdFRoZVJvdyhpbmRleCwgZmFsc2UpO1xuICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdCAmJiAhdGhpcy5zaG93Um93QnV0dG9ucykge1xuICAgICAgICB0aGlzLmVkaXRSb3coZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9yZXNldERibENsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZWRpdFJvdyhldmVudDogTW91c2VFdmVudCwgc2VsZWN0Q2VsbDogYm9vbGVhbiA9IHRydWUsIHJvd0luZGV4PzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0VGhlUm93KHJvd0luZGV4KTtcbiAgICB9XG4gICAgdGhpcy5lZGl0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleDtcbiAgICB0aGlzLnJvd1RvRWRpdCA9IHRoaXMuZGF0YVt0aGlzLmVkaXRSb3dJbmRleF07XG5cbiAgICBpZiAodGhpcy5zaG93Um93QnV0dG9ucyAmJiB0aGlzLmlubGluZUVkaXQgJiYgc2VsZWN0Q2VsbCkge1xuICAgICAgdGhpcy5lZGl0Q2VsbEluZGV4ID0gYXdhaXQgdGhpcy5fbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQodHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMuX2RldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDZWxsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogYW55LCByb3dJbmRleDogbnVtYmVyLCBjZWxsSW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmVkaXRPbkNlbGxDbGljaykge1xuICAgICAgaWYgKGF3YWl0IHRoaXMuaXNSb3dEaXNhYmxlZChyb3csIHJvd0luZGV4KSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAtMTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdCkge1xuICAgICAgICB0aGlzLmVkaXRSb3dJbmRleCA9IHJvd0luZGV4O1xuICAgICAgICB0aGlzLmVkaXRDZWxsSW5kZXggPSBjZWxsSW5kZXg7XG4gICAgICAgIHRoaXMuZWRpdGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IGNlbGxJbmRleDtcbiAgICB9XG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNldHRpbmdzTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmhlYWRlckNvbHVtbnNDb3B5LmZvckVhY2goaSA9PiBpLmlzU2VsZWN0ZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5pc1NldHRpbmdzTWVudU9wZW4gPSAhdGhpcy5pc1NldHRpbmdzTWVudU9wZW47XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ29sdW1uTWVudShjb2w6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG93R3JpZFNldHRpbmdzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1NldHRpbmdzTWVudU9wZW4gPSBmYWxzZTtcbiAgICBpZiAoY29sLmlzU2VsZWN0ZWQpIHtcbiAgICAgIGNvbC5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29sdW1uc0NvcHkuZm9yRWFjaChpID0+IGkuaXNTZWxlY3RlZCA9IGZhbHNlKTtcbiAgICAgIGNvbC5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGlkZUNvbHVtbihjb2w6IGFueSk6IHZvaWQge1xuICAgIGNvbC5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgdGhpcy5oZWFkZXJDb2x1bW5zQ29weSA9IHRoaXMuaGVhZGVyQ29sdW1uc0NvcHkuZmlsdGVyKChvYmopID0+IHtcbiAgICAgIHJldHVybiBvYmogIT09IGNvbDtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0Q29sdW1uKGNvbDogYW55LCBjb2x1bW5WYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29sLmlzU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNvcnRDb2x1bW5WYWx1ZSA9PT0gY29sdW1uVmFsdWUpIHtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0Q29sdW1uVmFsdWUgPSBjb2x1bW5WYWx1ZTtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgIH1cblxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAxIDogLTE7XG5cbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4udGhpcy5kYXRhXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBsZXQgdmFsQSA9IGFbY29sdW1uVmFsdWVdO1xuICAgICAgbGV0IHZhbEIgPSBiW2NvbHVtblZhbHVlXTtcblxuICAgICAgaWYgKHZhbEEgPT0gbnVsbCAmJiB2YWxCID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAodmFsQSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAtMSAqIGRpcmVjdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxCID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDEgKiBkaXJlY3Rpb247XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBJU08gZGF0ZSBzdHJpbmdcbiAgICAgIGNvbnN0IGlzRGF0ZUEgPSB0eXBlb2YgdmFsQSA9PT0gJ3N0cmluZycgJiYgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVQvLnRlc3QodmFsQSk7XG4gICAgICBjb25zdCBpc0RhdGVCID0gdHlwZW9mIHZhbEIgPT09ICdzdHJpbmcnICYmIC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1ULy50ZXN0KHZhbEIpO1xuXG4gICAgICBpZiAoaXNEYXRlQSAmJiBpc0RhdGVCKSB7XG4gICAgICAgIGNvbnN0IHRpbWVBID0gbmV3IERhdGUodmFsQSkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCB0aW1lQiA9IG5ldyBEYXRlKHZhbEIpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuICh0aW1lQSAtIHRpbWVCKSAqIGRpcmVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gRmFsbGJhY2sgZm9yIG51bWJlcnMvc3RyaW5nc1xuICAgICAgaWYgKHR5cGVvZiB2YWxBID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsQiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbEEubG9jYWxlQ29tcGFyZSh2YWxCKSAqIGRpcmVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICh2YWxBID4gdmFsQiA/IDEgOiB2YWxBIDwgdmFsQiA/IC0xIDogMCkgKiBkaXJlY3Rpb247XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGEgPSBzb3J0ZWQ7XG4gICAgdGhpcy5fZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHNob3dBbGxDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01lbnVPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5oZWFkZXJDb2x1bW5zQ29weSA9IHRoaXMuaGVhZGVyQ29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBleHBvcnRUb0V4Y2VsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTZXR0aW5nc01lbnVPcGVuID0gZmFsc2U7XG4gICAgY29uc3QgZXhwb3J0RGF0YTogT2JqZWN0W10gPSB0aGlzLmV4cG9ydERhdGEubGVuZ3RoID4gMCA/IHRoaXMuX2ZpbHRlclNlbGVjdGVkT3JSZXR1cm5BbGwodGhpcy5leHBvcnREYXRhKSA6IHRoaXMuX2ZpbHRlclNlbGVjdGVkT3JSZXR1cm5BbGwodGhpcy5kYXRhKTtcbiAgICBjb25zdCBjb2x1bW5zOiBFeHBvcnRDb2x1bW5bXSA9IHRoaXMuaGVhZGVyQ29sdW1uc0NvcHkubWFwKGNvbHVtbiA9PiB7XG4gICAgICByZXR1cm4gKHtcbiAgICAgICAga2V5OiBjb2x1bW4uZmllbGQsXG4gICAgICAgIGhlYWRlcjogY29sdW1uLmhlYWRlclRleHRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKGNvbCA9PiBjb2wuaGVhZGVyKTtcbiAgICBjb25zdCByb3dzID0gZXhwb3J0RGF0YS5tYXAocm93ID0+XG4gICAgICBjb2x1bW5zLm1hcChjb2wgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHJvd1tjb2wua2V5XTtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB2YWx1ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICAgICAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXldID0gZm9ybWF0dGVkRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgICAgIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjb25zdCBoYXNEZWNpbWFsID0gKG51bSkgPT4gIU51bWJlci5pc0ludGVnZXIobnVtKTtcbiAgICAgICAgICByZXR1cm4gaGFzRGVjaW1hbCh2YWx1ZSkgPyB2YWx1ZS50b0ZpeGVkKDIpIDogdmFsdWUudG9GaXhlZCgwKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5qb2luKCcsICcpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCdUMDA6MDA6MDAnKSkge1xuICAgICAgICAgICAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXldID0gdmFsdWUucmVwbGFjZSgnVDAwOjAwOjAwJywgJycpLnNwbGl0KCctJyk7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIGNvbnN0IGNzdkNvbnRlbnQgPSBbaGVhZGVycywgLi4ucm93c10ubWFwKHJvdyA9PlxuICAgIC8vICAgcm93Lm1hcChjZWxsID0+IGBcIiR7Y2VsbC5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiYCkuam9pbignLCcpXG4gICAgLy8gKS5qb2luKCdcXHJcXG4nKTtcblxuICAgIGNvbnN0IGNzdkNvbnRlbnQ6IHN0cmluZyA9IFtoZWFkZXJzLCAuLi5yb3dzXS5tYXAocm93ID0+XG4gICAgICByb3cubWFwKChjZWxsOiBzdHJpbmcpID0+IGBcIiR7U3RyaW5nKGNlbGwpLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgKS5qb2luKCcsJylcbiAgICApLmpvaW4oJ1xcclxcbicpO1xuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZDb250ZW50XSwge3R5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04Oyd9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJ0V4Y2VsU2hlZXQnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGxpbmsuY2xpY2soKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuXG4gICAgLy8gdGhpcy5leGNlbEV4cG9ydFNlcnZpY2UuZXhwb3J0VG9FeGNlbChcbiAgICAvLyAgIHRoaXMuZGF0YSxcbiAgICAvLyAgIGNvbHVtbnMsXG4gICAgLy8gICAnRXhjZWxTaGVldCcsXG4gICAgLy8gICAnU2hlZXQxJ1xuICAgIC8vICk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub1ByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlIC09IDE7XG4gIH1cblxuICBwdWJsaWMgZ29Ub05leHRQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgKz0gMTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXJyZW50UGFnZShwYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNOZXdSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25ld1JvdztcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlclNlbGVjdGVkT3JSZXR1cm5BbGwoaXRlbXM6IGFueSkge1xuICAgIGNvbnN0IGhhc1NlbGVjdGVkVHJ1ZTogYm9vbGVhbiA9IGl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLnNlbGVjdGVkID09PSB0cnVlKTtcbiAgICByZXR1cm4gaGFzU2VsZWN0ZWRUcnVlID8gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSkgOiBpdGVtcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBwcmVwYXJlRGF0YVJvdyhyb3c6IGFueSwgaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaXNSb3dEaXNhYmxlZChyb3csIGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0RGJsQ2xpY2soKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9kb3VibGVDbGlja2VkID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmV4dDsgTW92ZSB0byBuZXh0IG9yIHByZXZpb3VzIGNlbGxcbiAgICogQHBhcmFtIHN0YXJ0OyBTdGFydCBmcm9tIGNlbGxpbmRleFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfbmV4dEF2YWlsYWJsZUNlbGxUb0VkaXQobmV4dDogYm9vbGVhbiwgc3RhcnQ6IG51bWJlciA9IC0xKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBudW1FZGl0YWJsZUNvbHVtbnM6IG51bWJlciA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5yZWFkb25seSkubGVuZ3RoO1xuICAgICAgY29uc3Qgd2FudGVkSW5kZXggPSBzdGFydCArIChuZXh0ID8gMSA6IC0xKTtcbiAgICAgIGlmICh3YW50ZWRJbmRleCA+PSBudW1FZGl0YWJsZUNvbHVtbnMpIHtcbiAgICAgICAgdGhpcy5fZ2V0TmV4dEVkaXRSb3dJbmRleCgpXG4gICAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KDApKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHdhbnRlZEluZGV4IDwgMCkge1xuICAgICAgICB0aGlzLl9nZXRQcmV2aW91c0VkaXRSb3dJbmRleCgpXG4gICAgICAgICAgLnRoZW4oKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFJvd0luZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX2dldFByZXZpb3VzRWRpdENlbGxJbmRleCh0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobmV4dCA/IHRoaXMuX2dldE5leHRFZGl0Q2VsbEluZGV4KHN0YXJ0ICsgMSkgOiB0aGlzLl9nZXRQcmV2aW91c0VkaXRDZWxsSW5kZXgoc3RhcnQgLSAxKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RWRpdENlbGxJbmRleChzdGFydDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSBzdGFydDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCF0aGlzLmNvbHVtbnNbaV0ucmVhZG9ubHkpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UHJldmlvdXNFZGl0Q2VsbEluZGV4KHN0YXJ0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IHN0YXJ0OyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCF0aGlzLmNvbHVtbnNbaV0ucmVhZG9ubHkpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmV4dEVkaXRSb3dJbmRleCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGxldCBuZXdSb3dJbmRleDogbnVtYmVyID0gMDtcbiAgICAgIGlmICh0aGlzLmVkaXRSb3dJbmRleCArIDEgPj0gdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvQWRkUm93KSB7XG4gICAgICAgICAgdGhpcy5hZGROZXdSb3coKTtcbiAgICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jvd0luZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Um93SW5kZXggPSB0aGlzLmVkaXRSb3dJbmRleCArIDE7XG4gICAgICB9XG4gICAgICBpZiAobmV3Um93SW5kZXggIT09IHRoaXMuZWRpdFJvd0luZGV4KSB7IC8vIGdvIHRvIGRpZmZlcmVudCByb3cgdmFsaWRhdGUgY3VycmVudCBvbmUgZmlyc3RcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVBbmRTYXZlKGZhbHNlKSkge1xuICAgICAgICAgIHRoaXMucm93VG9FZGl0ID0gdGhpcy5kYXRhW25ld1Jvd0luZGV4XTtcbiAgICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShuZXdSb3dJbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQcmV2aW91c0VkaXRSb3dJbmRleCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGxldCBuZXdSb3dJbmRleDogbnVtYmVyID0gMDtcbiAgICAgIGlmICh0aGlzLmVkaXRSb3dJbmRleCAtIDEgPCAwKSB7XG4gICAgICAgIG5ld1Jvd0luZGV4ID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdSb3dJbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4IC0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdSb3dJbmRleCAhPT0gdGhpcy5lZGl0Um93SW5kZXgpIHsgLy8gZ28gdG8gZGlmZmVyZW50IHJvdyB2YWxpZGF0ZSBjdXJyZW50IG9uZSBmaXJzdFxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUFuZFNhdmUoZmFsc2UpKSB7XG4gICAgICAgICAgdGhpcy5yb3dUb0VkaXQgPSB0aGlzLmRhdGFbbmV3Um93SW5kZXhdO1xuICAgICAgICAgIHJlc29sdmUobmV3Um93SW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG5ld1Jvd0luZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NhdmVSb3coc3RvcGVkaXRpbmc6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX25ld1Jvdykge1xuICAgICAgdGhpcy5zYXZlUm93Lm5leHQodGhpcy5fbmV3Um93UmVmZXJlbmNlKTtcbiAgICAgIHRoaXMuX25ld1Jvd1JlZmVyZW5jZSA9IG51bGw7IC8vIGNsZWFyXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbmRleDogbnVtYmVyID0gLTE7IC8vIGV4aXN0aW5nIHJvd1xuXG4gICAgICBpZiAodGhpcy5yb3dzUGVyUGFnZSkge1xuICAgICAgICBpbmRleCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnJvd3NQZXJQYWdlICsgdGhpcy5lZGl0Um93SW5kZXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleCA9IHRoaXMuZWRpdFJvd0luZGV4O1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zYXZlUm93Lm5leHQodGhpcy5kYXRhW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlICE9PSAxKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IC0xO1xuICAgICAgd2luZG93LnNjcm9sbFRvKHt0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgIH1cbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcbiAgICBpZiAoc3RvcGVkaXRpbmcpIHtcbiAgICAgIHRoaXMuX3Jlc2V0RWRpdCgpO1xuICAgIH1cbiAgICB0aGlzLl9kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2V0RWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9uZXdSb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAtMTtcbiAgICB0aGlzLmVkaXRSb3dJbmRleCA9IC0xO1xuICAgIHRoaXMuZWRpdENlbGxJbmRleCA9IC0xO1xuICAgIHRoaXMuZWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMucm93VG9FZGl0ID0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
|
|
@@ -76,7 +76,7 @@ export class ScreenConfigurationDirective {
|
|
|
76
76
|
if (myCfgObj) {
|
|
77
77
|
this._setHostVisible(myCfgObj.immediatelyVisible());
|
|
78
78
|
if (!this.screenConfigNativeElement) {
|
|
79
|
-
this.hostComponent.required = myCfgObj.isRequired();
|
|
79
|
+
this.hostComponent.required = this.hostComponent.required || myCfgObj.isRequired();
|
|
80
80
|
this.hostComponent.readonly = this.hostComponent.forceReadonly || this._moduleInReadonlyMode() || myCfgObj.isReadonly();
|
|
81
81
|
this.hostComponent.decimals = myCfgObj.scale;
|
|
82
82
|
this.hostComponent.maxLength = myCfgObj.maxLength;
|
|
@@ -156,4 +156,4 @@ __decorate([
|
|
|
156
156
|
__decorate([
|
|
157
157
|
InputBoolean()
|
|
158
158
|
], ScreenConfigurationDirective.prototype, "noModuleService", void 0);
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyw4Q0FBOEMsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRS9ILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBS3BFLGlHQUFpRztBQUNqRyx5SUFBeUk7QUFJekksTUFBTSxPQUFPLDRCQUE0QjtJQWlDckMsWUFFVyxhQUEyQyxFQUMxQyxRQUFvQjtJQUM1QixvRUFBb0U7SUFDNUQsY0FBNkMsRUFDN0MsU0FBb0I7SUFDNUIsMERBQTBEO0lBQ2xELGNBQWtDO1FBTm5DLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUErQjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQXZCdkMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBSTNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBTXhDLDBKQUEwSjtRQUNsSixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQVkvQixJQUFJLENBQUMs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Q0FBQzs7O1lBNUpKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNkJBQTZCO2FBQzFDOzs7NENBbUNRLE1BQU0sU0FBQyw4Q0FBOEM7WUFsRDNDLFVBQVU7WUFLckIsNkJBQTZCO1lBTG9CLFNBQVM7WUFNMUQsaUJBQWlCOzs7d0NBV3BCLEtBQUssU0FBQywyQkFBMkI7dUJBWWpDLEtBQUs7d0NBR0wsS0FBSzs4QkFJTCxLQUFLOztBQUZOO0lBREMsWUFBWSxFQUFFOytFQUNtQztBQUlsRDtJQURDLFlBQVksRUFBRTtxRUFDeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3InO1xyXG5pbXBvcnQge1NjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLWNvbXBvbmVudC1pbnRlcmZhY2UtbmFtZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtCYXNlTW9kdWxlU2NyZWVuQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9iYXNlLW1vZHVsZS1zY3JlZW4tY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2Jhc2UtbW9kdWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0JztcclxuaW1wb3J0IHtWYWxpZGF0aW9uTWVzc2FnZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvdmFsaWRhdGlvbi1tZXNzYWdlJztcclxuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XHJcblxyXG4vLyBEaXJlY3RpdmUgdG8gcmVwcmVzZW50cyB0aGUgbWFya2VyIG9mIFwic2NyZWVuIGNvbmZpZyBuYW1lIElEJ3NcIiBvZiBjb21wb25lbnRzIHdpdGhpbiBhIG1vZHVsZS5cclxuLy8gTWFuaXB1bGF0ZXMgdmlzaWJpbGl0eSwgcmVhZG9ubHkgYW5kIG90aGVyIGR5bmFtaWMgc3RhdGVzIG9mIGFuIGlucHV0IGVsZW1lbnQgYWNjb3JkaW5nIHRvIGl0cyBkYi1mZXRjaGVkIHNjcmVlbiBjb25maWd1cmF0aW9uIG9iamVjdC5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcmVlbkNvbmZpZ3VyYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCdzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0JylcclxuICAgIHB1YmxpYyBzZXQgc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG9zdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRhdGFOYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIHNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbm9Nb2R1bGVTZXJ2aWNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfaXNIZWFkZXI6IGJvb2xlYW47XHJcblxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDogc3RyaW5nO1xyXG5cclxuICAgIC8vIGZlYXR1cmUgdG9nZ2xlIGZvciBkZXZzIHNvIHlvdSBjYW4gc2VlIHRoZSB3aG9sZSBzY3JlZW4gd2l0aCBhbGwgaW5wdXRzIGV0YyBieSB0ZW1wb3JhcmlseSB0dXJuaW5nIG9mZiB0aGUgaGlkaW5nIGVmZmVjdHMgb2YgdGhpcyBkaXJlY3RpdmUgb24gaXRzIGhvc3RcclxuICAgIHByaXZhdGUgX2lzVHVybmVkT2ZmOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUpXHJcbiAgICAgICAgcHVibGljIGhvc3RDb21wb25lbnQ6IFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgICAgICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIGEgY29uZmlnIHNlcnZpY2UgdG8gZmV0Y2ggY29uZmlnIG9iamVjdHMgd2l0aFxyXG4gICAgICAgIHByaXZhdGUgX2NvbmZpZ1NlcnZpY2U6IEJhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgLy8gdG8gbWFrZSBob3N0IHJlYWRvbmx5IHdoZW4gTU9EVUxFIHN3aXRjaGVzIHRvIHJlYWRvbmx5OlxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZVNlcnZpY2U/OiBCYXNlTW9kdWxlU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5wdXNoKHRoaXMuX2NvbmZpZ1NlcnZpY2UuY29uZmlnU2V0LnN1YnNjcmliZSgoY29uZmlnT2JqZWN0czogT2JqZWN0Q29uZmlndXJhdGlvbltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWdPYmplY3RzICYmIGNvbmZpZ09iamVjdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG9zdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbW9kdWxlU2VydmljZSAmJiAhdGhpcy5ub01vZHVsZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kdWxlU2VydmljZS5yZWFkb25seUNoYW5nZS5zdWJzY3JpYmUoKG1vZHVsZUluUmVhZG9ubHlTdGF0ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlYWRvbmx5ID0gdGhpcy5ob3N0Q29tcG9uZW50LmZvcmNlUmVhZG9ubHkgfHwgbW9kdWxlSW5SZWFkb25seVN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kdWxlU2VydmljZS5lcnJvclZhbGlkYXRpb25SZWNlaXZlZC5zdWJzY3JpYmUoKHZhbGlkYXRpb25SZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldEVycm9yUmVkQmFja2dyb3VuZEFmdGVyU2NyQ2ZnVmFsaWRhdGUodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vZHVsZVNlcnZpY2Uuc3VjY2Vzc2Z1bFVwZGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUhvc3QoKTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5fdXBkYXRlSGVhZGVyU3RhdGVPbkhvc3RDb21wb25lbnQodHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIHNob3cgaW5pdGlhbCBlcnJvciBtZXNzYWdlIGlmIGFueVxyXG4gICAgICAgIGlmICghdGhpcy5ub01vZHVsZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5fc2V0RXJyb3JSZWRCYWNrZ3JvdW5kQWZ0ZXJTY3JDZmdWYWxpZGF0ZSh0aGlzLl9tb2R1bGVTZXJ2aWNlLmxhc3RFcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0hlYWRlcikge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9kb3VibGVDbGlja0hlYWRlcnMuaGFuZGxlQ29sbGFwc2VhYmxlRGVzdHJveSh0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRoaXMuaG9zdENvbXBvbmVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXRzIGhvc3QgY29tcG9uZW50IHZpc2liaWxpdHksIHJlcXVpcmVkLCByZWFkb25seSBldGMuIGlmIHNwZWNpZmllZCBpbiBiYWNrZW5kIHNjcmVlbiBjb25maWcgT1IgbW9kdWxlIHJlYWRvbmx5IHN0YXR1cy5cclxuICAgIHByaXZhdGUgX3VwZGF0ZUhvc3QoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21heVVwZGF0ZUhvc3QoKSB8fCB0aGlzLnNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5vYmplY3RDb25maWdOYW1lID0gdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IG15Q2ZnT2JqOiBPYmplY3RDb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnU2VydmljZS5nZXRPYmplY3RDb25maWd1cmF0aW9uRm9yKHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCk7XHJcbiAgICAgICAgICAgIGlmIChteUNmZ09iaikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0SG9zdFZpc2libGUobXlDZmdPYmouaW1tZWRpYXRlbHlWaXNpYmxlKCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNjcmVlbkNvbmZpZ05hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQucmVxdWlyZWQgPSBteUNmZ09iai5pc1JlcXVpcmVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlYWRvbmx5ID0gdGhpcy5ob3N0Q29tcG9uZW50LmZvcmNlUmVhZG9ubHkgfHwgdGhpcy5fbW9kdWxlSW5SZWFkb25seU1vZGUoKSB8fCBteUNmZ09iai5pc1JlYWRvbmx5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LmRlY2ltYWxzID0gbXlDZmdPYmouc2NhbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50Lm1heExlbmd0aCA9IG15Q2ZnT2JqLm1heExlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQuZGVmYXVsdFZhbHVlID0gbXlDZmdPYmouZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgnY29uZmlnT2JqZWN0JyBpbiB0aGlzLmhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5jb25maWdPYmplY3QgPSBteUNmZ09iajtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRIb3N0VmlzaWJsZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWFkb25seSA9IHRoaXMuX21vZHVsZUluUmVhZG9ubHlNb2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTcGF3biBlcnJvciBtZXNzYWdlIHRvb2x0aXAgb250byBvdXIgaG9zdCBjb21wLCBpZiBhbnkgZXJyb3Igd2FzIG1lYW50IGZvciB0aGUgaG9zdCAoZm91bmQgYnkgc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCk7XHJcbiAgICAgKiBAcGFyYW0gZXJyb3JWYWxpZGF0aW9uIEEgdG9wLWxldmVsIGZ1bGwgdmFsaWRhdGlvbiByZXN1bHQsIGVpdGhlciBmcm9tIHRoZSBiYWNrZW5kIG9yIGZyb20gc29tZSBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGVycm9yLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXRFcnJvclJlZEJhY2tncm91bmRBZnRlclNjckNmZ1ZhbGlkYXRlKGVycm9yVmFsaWRhdGlvbjogVmFsaWRhdGlvblJlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQgJiYgZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXM6IFZhbGlkYXRpb25NZXNzYWdlW10gPSBlcnJvclZhbGlkYXRpb24uZ2V0QWxsRXJyb3JNZXNzYWdlc09mTXlWYWxpZGF0aW9uRmllbGRzKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gZXJyb3JNZXNzYWdlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2c6IFZhbGlkYXRpb25NZXNzYWdlID0gZXJyb3JNZXNzYWdlc1tpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ05hbWU6IHN0cmluZyA9IHRoaXMuZGF0YU5hbWUgPyB0aGlzLmRhdGFOYW1lIDogdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTXNnLmZpZWxkSWQgPT09IGNvbmZpZ05hbWUgJiYgdGhpcy5fZWxlbWVudCAvKiYmIHRoaXMuX3Byb3Blckhvc3QoZXJyb3JNc2cuYm9JZCkqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWRFcnJvckJhY2tncm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX21vZHVsZUluUmVhZG9ubHlNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ub01vZHVsZVNlcnZpY2UgPyAodGhpcy5fbW9kdWxlU2VydmljZSA/IHRoaXMuX21vZHVsZVNlcnZpY2UucmVhZG9ubHkgOiBmYWxzZSkgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9tYXlVcGRhdGVIb3N0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuaG9zdENvbXBvbmVudCAmJiAhdGhpcy5faXNUdXJuZWRPZmYgJiYgISF0aGlzLnNjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0SG9zdFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zY3JlZW5Db25maWdOYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5oaWRkZW4gPSAhdmlzaWJsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudCAmJiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2hpZGRlbicpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdoaWRkZW4nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL3NjcmVlbi1jb25maWd1cmF0aW9uL3NjcmVlbi1jb25maWd1cmF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyw4Q0FBOEMsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBRS9ILE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBS3BFLGlHQUFpRztBQUNqRyx5SUFBeUk7QUFJekksTUFBTSxPQUFPLDRCQUE0QjtJQWlDckMsWUFFVyxhQUEyQyxFQUMxQyxRQUFvQjtJQUM1QixvRUFBb0U7SUFDNUQsY0FBNkMsRUFDN0MsU0FBb0I7SUFDNUIsMERBQTBEO0lBQ2xELGNBQWtDO1FBTm5DLGtCQUFhLEdBQWIsYUFBYSxDQUE4QjtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUErQjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBCLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQXZCdkMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBSTNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBTXhDLDBKQUEwSjtRQUNsSixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUU5QixVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQVkvQixJQUFJLENBQUMs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QUMsQ0FBQztpQkFDckU7YUFDSjtTQUNKO0lBQ0wsQ0FBQzs7O1lBNUpKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNkJBQTZCO2FBQzFDOzs7NENBbUNRLE1BQU0sU0FBQyw4Q0FBOEM7WUFsRDNDLFVBQVU7WUFLckIsNkJBQTZCO1lBTG9CLFNBQVM7WUFNMUQsaUJBQWlCOzs7d0NBV3BCLEtBQUssU0FBQywyQkFBMkI7dUJBWWpDLEtBQUs7d0NBR0wsS0FBSzs4QkFJTCxLQUFLOztBQUZOO0lBREMsWUFBWSxFQUFFOytFQUNtQztBQUlsRDtJQURDLFlBQVksRUFBRTtxRUFDeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yJztcbmltcG9ydCB7U2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY3JlZW4tY29uZmlnLWFkYXB0ZXIuY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQge1NDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLWNvbXBvbmVudC1pbnRlcmZhY2UtbmFtZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Jhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2Jhc2UtbW9kdWxlLXNjcmVlbi1jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0Jhc2VNb2R1bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2Jhc2UtbW9kdWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdCc7XG5pbXBvcnQge1ZhbGlkYXRpb25NZXNzYWdlfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLW1lc3NhZ2UnO1xuaW1wb3J0IHtPYmplY3RDb25maWd1cmF0aW9ufSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vYmplY3QtY29uZmlndXJhdGlvbic7XG5cbi8vIERpcmVjdGl2ZSB0byByZXByZXNlbnRzIHRoZSBtYXJrZXIgb2YgXCJzY3JlZW4gY29uZmlnIG5hbWUgSUQnc1wiIG9mIGNvbXBvbmVudHMgd2l0aGluIGEgbW9kdWxlLlxuLy8gTWFuaXB1bGF0ZXMgdmlzaWJpbGl0eSwgcmVhZG9ubHkgYW5kIG90aGVyIGR5bmFtaWMgc3RhdGVzIG9mIGFuIGlucHV0IGVsZW1lbnQgYWNjb3JkaW5nIHRvIGl0cyBkYi1mZXRjaGVkIHNjcmVlbiBjb25maWd1cmF0aW9uIG9iamVjdC5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBTY3JlZW5Db25maWd1cmF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ3NjcmVlbkNvbmZpZ3VyYXRpb25PYmplY3QnKVxuICAgIHB1YmxpYyBzZXQgc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG9zdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRhdGFOYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHB1YmxpYyBzY3JlZW5Db25maWdOYXRpdmVFbGVtZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHB1YmxpYyBub01vZHVsZVNlcnZpY2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2lzSGVhZGVyOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDogc3RyaW5nO1xuXG4gICAgLy8gZmVhdHVyZSB0b2dnbGUgZm9yIGRldnMgc28geW91IGNhbiBzZWUgdGhlIHdob2xlIHNjcmVlbiB3aXRoIGFsbCBpbnB1dHMgZXRjIGJ5IHRlbXBvcmFyaWx5IHR1cm5pbmcgb2ZmIHRoZSBoaWRpbmcgZWZmZWN0cyBvZiB0aGlzIGRpcmVjdGl2ZSBvbiBpdHMgaG9zdFxuICAgIHByaXZhdGUgX2lzVHVybmVkT2ZmOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSlcbiAgICAgICAgcHVibGljIGhvc3RDb21wb25lbnQ6IFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQsXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgYSBjb25maWcgc2VydmljZSB0byBmZXRjaCBjb25maWcgb2JqZWN0cyB3aXRoXG4gICAgICAgIHByaXZhdGUgX2NvbmZpZ1NlcnZpY2U6IEJhc2VNb2R1bGVTY3JlZW5Db25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAvLyB0byBtYWtlIGhvc3QgcmVhZG9ubHkgd2hlbiBNT0RVTEUgc3dpdGNoZXMgdG8gcmVhZG9ubHk6XG4gICAgICAgIHByaXZhdGUgX21vZHVsZVNlcnZpY2U/OiBCYXNlTW9kdWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9zdWJzLnB1c2godGhpcy5fY29uZmlnU2VydmljZS5jb25maWdTZXQuc3Vic2NyaWJlKChjb25maWdPYmplY3RzOiBPYmplY3RDb25maWd1cmF0aW9uW10pID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWdPYmplY3RzICYmIGNvbmZpZ09iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUhvc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmICh0aGlzLl9tb2R1bGVTZXJ2aWNlICYmICF0aGlzLm5vTW9kdWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuX21vZHVsZVNlcnZpY2UucmVhZG9ubHlDaGFuZ2Uuc3Vic2NyaWJlKChtb2R1bGVJblJlYWRvbmx5U3RhdGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaG9zdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LnJlYWRvbmx5ID0gdGhpcy5ob3N0Q29tcG9uZW50LmZvcmNlUmVhZG9ubHkgfHwgbW9kdWxlSW5SZWFkb25seVN0YXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kdWxlU2VydmljZS5lcnJvclZhbGlkYXRpb25SZWNlaXZlZC5zdWJzY3JpYmUoKHZhbGlkYXRpb25SZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRFcnJvclJlZEJhY2tncm91bmRBZnRlclNjckNmZ1ZhbGlkYXRlKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRoaXMuX21vZHVsZVNlcnZpY2Uuc3VjY2Vzc2Z1bFVwZGF0ZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ob3N0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQucmVkRXJyb3JCYWNrZ3JvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVIb3N0KCk7XG5cbiAgICAgICAgLy8gdGhpcy5fdXBkYXRlSGVhZGVyU3RhdGVPbkhvc3RDb21wb25lbnQodHJ1ZSk7XG5cbiAgICAgICAgLy8gc2hvdyBpbml0aWFsIGVycm9yIG1lc3NhZ2UgaWYgYW55XG4gICAgICAgIGlmICghdGhpcy5ub01vZHVsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX3NldEVycm9yUmVkQmFja2dyb3VuZEFmdGVyU2NyQ2ZnVmFsaWRhdGUodGhpcy5fbW9kdWxlU2VydmljZS5sYXN0RXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICBpZiAodGhpcy5faXNIZWFkZXIpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX2RvdWJsZUNsaWNrSGVhZGVycy5oYW5kbGVDb2xsYXBzZWFibGVEZXN0cm95KHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNldHMgaG9zdCBjb21wb25lbnQgdmlzaWJpbGl0eSwgcmVxdWlyZWQsIHJlYWRvbmx5IGV0Yy4gaWYgc3BlY2lmaWVkIGluIGJhY2tlbmQgc2NyZWVuIGNvbmZpZyBPUiBtb2R1bGUgcmVhZG9ubHkgc3RhdHVzLlxuICAgIHByaXZhdGUgX3VwZGF0ZUhvc3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9tYXlVcGRhdGVIb3N0KCkgfHwgdGhpcy5zY3JlZW5Db25maWdOYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5vYmplY3RDb25maWdOYW1lID0gdGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbXlDZmdPYmo6IE9iamVjdENvbmZpZ3VyYXRpb24gPSB0aGlzLl9jb25maWdTZXJ2aWNlLmdldE9iamVjdENvbmZpZ3VyYXRpb25Gb3IodGhpcy5zY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChteUNmZ09iaikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEhvc3RWaXNpYmxlKG15Q2ZnT2JqLmltbWVkaWF0ZWx5VmlzaWJsZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQucmVxdWlyZWQgPSB0aGlzLmhvc3RDb21wb25lbnQucmVxdWlyZWQgfHwgbXlDZmdPYmouaXNSZXF1aXJlZCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQucmVhZG9ubHkgPSB0aGlzLmhvc3RDb21wb25lbnQuZm9yY2VSZWFkb25seSB8fCB0aGlzLl9tb2R1bGVJblJlYWRvbmx5TW9kZSgpIHx8IG15Q2ZnT2JqLmlzUmVhZG9ubHkoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3N0Q29tcG9uZW50LmRlY2ltYWxzID0gbXlDZmdPYmouc2NhbGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5tYXhMZW5ndGggPSBteUNmZ09iai5tYXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5kZWZhdWx0VmFsdWUgPSBteUNmZ09iai5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICgnY29uZmlnT2JqZWN0JyBpbiB0aGlzLmhvc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQuY29uZmlnT2JqZWN0ID0gbXlDZmdPYmo7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEhvc3RWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2NyZWVuQ29uZmlnTmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQucmVhZG9ubHkgPSB0aGlzLl9tb2R1bGVJblJlYWRvbmx5TW9kZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNwYXduIGVycm9yIG1lc3NhZ2UgdG9vbHRpcCBvbnRvIG91ciBob3N0IGNvbXAsIGlmIGFueSBlcnJvciB3YXMgbWVhbnQgZm9yIHRoZSBob3N0IChmb3VuZCBieSBzY3JlZW5Db25maWd1cmF0aW9uT2JqZWN0KTtcbiAgICAgKiBAcGFyYW0gZXJyb3JWYWxpZGF0aW9uIEEgdG9wLWxldmVsIGZ1bGwgdmFsaWRhdGlvbiByZXN1bHQsIGVpdGhlciBmcm9tIHRoZSBiYWNrZW5kIG9yIGZyb20gc29tZSBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGVycm9yLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldEVycm9yUmVkQmFja2dyb3VuZEFmdGVyU2NyQ2ZnVmFsaWRhdGUoZXJyb3JWYWxpZGF0aW9uOiBWYWxpZGF0aW9uUmVzdWx0KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhvc3RDb21wb25lbnQgJiYgZXJyb3JWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzOiBWYWxpZGF0aW9uTWVzc2FnZVtdID0gZXJyb3JWYWxpZGF0aW9uLmdldEFsbEVycm9yTWVzc2FnZXNPZk15VmFsaWRhdGlvbkZpZWxkcygpO1xuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBlcnJvck1lc3NhZ2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2c6IFZhbGlkYXRpb25NZXNzYWdlID0gZXJyb3JNZXNzYWdlc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWdOYW1lOiBzdHJpbmcgPSB0aGlzLmRhdGFOYW1lID8gdGhpcy5kYXRhTmFtZSA6IHRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNc2cuZmllbGRJZCA9PT0gY29uZmlnTmFtZSAmJiB0aGlzLl9lbGVtZW50IC8qJiYgdGhpcy5fcHJvcGVySG9zdChlcnJvck1zZy5ib0lkKSovKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG9zdENvbXBvbmVudC5yZWRFcnJvckJhY2tncm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21vZHVsZUluUmVhZG9ubHlNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMubm9Nb2R1bGVTZXJ2aWNlID8gKHRoaXMuX21vZHVsZVNlcnZpY2UgPyB0aGlzLl9tb2R1bGVTZXJ2aWNlLnJlYWRvbmx5IDogZmFsc2UpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWF5VXBkYXRlSG9zdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5ob3N0Q29tcG9uZW50ICYmICF0aGlzLl9pc1R1cm5lZE9mZiAmJiAhIXRoaXMuc2NyZWVuQ29uZmlndXJhdGlvbk9iamVjdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRIb3N0VmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zY3JlZW5Db25maWdOYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RDb21wb25lbnQuaGlkZGVuID0gIXZpc2libGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudCAmJiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|