@huntsman-cancer-institute/dictionary-editor 17.9.4 → 17.9.6
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/esm2022/components/detail.component.mjs +9 -9
- package/esm2022/components/new-row.component.mjs +7 -9
- package/esm2022/dictionary-editor.component.mjs +3 -3
- package/fesm2022/huntsman-cancer-institute-dictionary-editor.mjs +16 -18
- package/fesm2022/huntsman-cancer-institute-dictionary-editor.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -688,12 +688,12 @@ export class DictionaryEditorDetailComponent {
|
|
|
688
688
|
</ag-grid-angular>
|
|
689
689
|
</div>
|
|
690
690
|
<div class="modal-footer">
|
|
691
|
-
<button riRippleEffectDict class="btn btn-
|
|
691
|
+
<button riRippleEffectDict class="btn ri-btn-save" (click)="close('Close')">Close</button>
|
|
692
692
|
</div>
|
|
693
693
|
</div>
|
|
694
694
|
</ng-template>
|
|
695
695
|
|
|
696
|
-
<!-- Dictionary Delete
|
|
696
|
+
<!-- Dictionary Delete Confirmation Popup -->
|
|
697
697
|
<ng-template #areYouSureModal let-close="close">
|
|
698
698
|
<div class="modal-header">
|
|
699
699
|
Confirmation
|
|
@@ -702,8 +702,8 @@ export class DictionaryEditorDetailComponent {
|
|
|
702
702
|
Are you sure?
|
|
703
703
|
</div>
|
|
704
704
|
<div class="modal-footer">
|
|
705
|
-
<button riRippleEffectDict class="btn btn-
|
|
706
|
-
<button riRippleEffectDict class="btn
|
|
705
|
+
<button riRippleEffectDict class="btn ri-btn-cancel" (click)="close('Cancel')">Cancel</button>
|
|
706
|
+
<button riRippleEffectDict class="btn ri-btn-delete" (click)="close('Delete')">Delete</button>
|
|
707
707
|
</div>
|
|
708
708
|
</ng-template>
|
|
709
709
|
</div>
|
|
@@ -774,12 +774,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
774
774
|
</ag-grid-angular>
|
|
775
775
|
</div>
|
|
776
776
|
<div class="modal-footer">
|
|
777
|
-
<button riRippleEffectDict class="btn btn-
|
|
777
|
+
<button riRippleEffectDict class="btn ri-btn-save" (click)="close('Close')">Close</button>
|
|
778
778
|
</div>
|
|
779
779
|
</div>
|
|
780
780
|
</ng-template>
|
|
781
781
|
|
|
782
|
-
<!-- Dictionary Delete
|
|
782
|
+
<!-- Dictionary Delete Confirmation Popup -->
|
|
783
783
|
<ng-template #areYouSureModal let-close="close">
|
|
784
784
|
<div class="modal-header">
|
|
785
785
|
Confirmation
|
|
@@ -788,8 +788,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
788
788
|
Are you sure?
|
|
789
789
|
</div>
|
|
790
790
|
<div class="modal-footer">
|
|
791
|
-
<button riRippleEffectDict class="btn btn-
|
|
792
|
-
<button riRippleEffectDict class="btn
|
|
791
|
+
<button riRippleEffectDict class="btn ri-btn-cancel" (click)="close('Cancel')">Cancel</button>
|
|
792
|
+
<button riRippleEffectDict class="btn ri-btn-delete" (click)="close('Delete')">Delete</button>
|
|
793
793
|
</div>
|
|
794
794
|
</ng-template>
|
|
795
795
|
</div>
|
|
@@ -814,4 +814,4 @@ function monthToComparableNumber(date) {
|
|
|
814
814
|
let dayNumber = date.substring(8, 10);
|
|
815
815
|
return yearNumber * 10000 + monthNumber * 100 + dayNumber;
|
|
816
816
|
}
|
|
817
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9jb21wb25lbnRzL2RldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsUUFBUSxFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFRckcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFFakc7Ozs7Ozs7O0dBUUc7QUFzTUgsTUFBTSxPQUFPLCtCQUErQjtJQWtDMUMsWUFDVSxLQUFxQixFQUNyQixZQUFzQixFQUN0QixpQkFBb0MsRUFDUCxrQkFBMEI7UUFIdkQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENB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UUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDL0csRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUM1RixFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUNyRixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDekcsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDbkksRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDM0YsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUN0RyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUks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QUMsT0FBTzs7QUFpdUJ0Qjs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLElBQUk7SUFFbkMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV0QyxPQUFPLFVBQVUsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIGlzRGV2TW9kZSwgVmlld0NoaWxkLCBIb3N0QmluZGluZywgVGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtmaW5hbGl6ZSwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtOZ2JNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW1wb3J0IHtESUNUSU9OQVJZX0VORFBPSU5ULCBEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvZGljdGlvbmFyeS1zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29sdW1uQXBpLFxyXG4gIEdyaWRPcHRpb25zLFxyXG4gIEdyaWRSZWFkeUV2ZW50LFxyXG4gIEdyaWRBcGlcclxufSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuaW1wb3J0IHtTZWxlY3RSZW5kZXJlcn0gZnJvbSBcIi4uL2dyaWQtcmVuZGVyZXJzL3NlbGVjdC5yZW5kZXJlclwiO1xyXG5pbXBvcnQge1NlbGVjdEVkaXRvcn0gZnJvbSBcIi4uL2dyaWQtZWRpdG9ycy9zZWxlY3QuZWRpdG9yXCI7XHJcbmltcG9ydCB7TmV3Um93Q29tcG9uZW50fSBmcm9tIFwiLi9uZXctcm93LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwiaXMtd2hhdFwiO1xyXG5pbXBvcnQge0RhdGVSZW5kZXJlcn0gZnJvbSBcIi4uL2dyaWQtcmVuZGVyZXJzL2RhdGUucmVuZGVyZXJcIjtcclxuaW1wb3J0IHtBZ0dyaWREYXRlQ2VsbEVkaXRvckNvbXBvbmVudH0gZnJvbSBcIi4uL2dyaWQtZWRpdG9ycy9hZy1ncmlkLWRhdGUtY2VsbC1lZGl0b3IuY29tcG9uZW50XCI7XHJcblxyXG4vKipcclxuICogV2hlbiBhIGRpY3Rpb25hcnkgaXMgc2VsZWN0ZWQgdGhpcyBjb21wb25lbnQgaXMgc2hvd24uICBUaGVyZSBpcyBhIHRvcCBncmlkIHdoaWNoIGZvciBpdHMgZGF0YSBzaG93cyBhbGwgdGhlIGNvbHVtbnNcclxuICogZm9yIHRoZSBkaWN0aW9uYXJ5LiBDdXJyZW50bHksIGtlZXAgdGhpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIGhhdmUgbm9uLWVkaXRhYmxlLlxyXG4gKiBUaGUgYm90dG9tIGdyaWQgd2lsbCBzaG93IHRob3NlIGNvbHVtbnMgYXMgYWN0dWFsIGNvbHVtbnMgYW5kIGl0cyBkYXRhIGFyZSBhbGwgdGhlIGRpY3Rpb25hcnkgdmFsdWVzLiAgUm93cyBjYW4gYmVcclxuICogYWRkZWQuICBGb3IgZGVsZXRpbmcsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpZCBpcyBub3QgdXNlZCBhbnl3aGVyZS4gIEZvciBlZGl0aW5nLCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29kZSBvciBhbnl0aGluZ1xyXG4gKiBlbHNlIGlzbid0IGJlaW5nIHJlZmVyZW5jZWQuXHJcbiAqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQENvbXBvbmVudChcclxuICB7XHJcbiAgICBzZWxlY3RvcjogXCJoY2ktZGljdGlvbmFyeS1lZGl0b3ItZGV0YWlsXCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gaGNpLWRpY3Rpb25hcnktZGV0YWlsLWJvZHlcIj5cclxuICAgICAgICAgIDxoY2ktYnVzeSBbYnVzeVN1YmplY3RzXT1cImxvYWRpbmdTdWJqZWN0c1wiPjwvaGNpLWJ1c3k+XHJcblxyXG4gICAgICAgICAgPCEtLSBEaWN0aW9uYXJ5IFRpdGxlIEFuZCBNZXRhZGF0YSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWN0aW9uYXJ5LWluZm8tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpY3Rpb25hcnktdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e2Rpc3BsYXlOYW1lfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHJpUmlwcGxlRWZmZWN0RGljdCBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZXRhZGF0YS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwobWV0YURhdGFNb2RhbClcIj5cclxuICAgICAgICAgICAgICBWaWV3IE1ldGEgRGF0YVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBFZGl0IEJ1dHRvbnMgLS0+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCJkaXNhYmxlRGVsZXRlPyAnZGVhY3RpdmF0ZWQtY29sb3InOiAnYWN0aXZlLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQXJlWW91U3VyZU1vZGFsKGFyZVlvdVN1cmVNb2RhbClcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJjb2xvcjogdmFyKC0tYmx1ZXdhcm0tZGFya2VzdCk7IGZsb2F0OiByaWdodDsgZm9udC1zaXplOiAxNXB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBZGRSb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQWRkUm93KClcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBEaXNwbGF5IEdyaWQgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgaWQ9XCJkaWN0aW9uYXJ5LWdyaWQtZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RhdGFHcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBoY2ktZGljdGlvbmFyeS1kaXNwbGF5LWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRpY3Rpb25hcnlFbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidtdWx0aXBsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVDbGlja0VkaXRdPVwiJ3RydWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvbl09XCIndHJ1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cIid0cnVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVEaWN0aW9uYXJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgTWV0YWRhdGEgUG9wdXAgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI21ldGFEYXRhTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjEwMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIE1ldGEgRGF0YSBmb3Ige3tjbGFzc05hbWV9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbW9kYWwtYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjbWV0YUdyaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyNTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cInRoaXMub25NZXRhR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwidGhpcy5tZXRhR3JpZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRpY3Rpb25hcnk/LmZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ0Nsb3NlJylcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSBEaWN0aW9uYXJ5IERlbGV0ZSBDb21maXJtYXRpb24gUG9wdXAgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2FyZVlvdVN1cmVNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgQ29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICBBcmUgeW91IHN1cmU/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoJ0NhbmNlbCcpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXJlZFwiIChjbGljayk9XCJjbG9zZSgnRGVsZXRlJylcIj5EZWxldGU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBgLFxyXG4gICAgc3R5bGVzOiBbXHJcbiAgICAgIGBcclxuICAgICAgICAuZnVsbC1oZWlnaHQge1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYWctdGhlbWUtYmFsaGFtIHtcclxuICAgICAgICAgIGZvbnQtZmFtaWx5OiBcImhjaS1mb250XCI7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmFjdGl2ZS1jb2xvciB7XHJcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZXdhcm0tZGFya2VzdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGVhY3RpdmF0ZWQtY29sb3Ige1xyXG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLWdyZXl3YXJtLWRhcmtlc3QpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRpY3Rpb25hcnktaW5mby1zZWN0aW9uIHtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRpY3Rpb25hcnktdGl0bGUge1xyXG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgcGFkZGluZy10b3A6IDVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5tZXRhZGF0YS1idXR0b24ge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWxpZ2h0ZXN0KTtcclxuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLWhlYWRlci1jZWxsIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWV3YXJtdml2aWRmYWRlLWxpZ2h0ZXN0KTtcclxuICAgICAgICAgIGJvcmRlcjogbGlnaHRncmF5IHNvbGlkIHRoaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctY2VsbCB7XHJcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IGxpZ2h0Z3JheSBzb2xpZCB0aGluO1xyXG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IGxpZ2h0Z3JheSBzb2xpZCB0aGluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdyB7XHJcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xyXG4gICAgICAgICAgYm9yZGVyLXRvcDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctZXZlbiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13aGl0ZS1tZWRpdW0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmhjaS1kaWN0aW9uYXJ5LWRldGFpbC1ib2R5IHtcclxuICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHZhcigtLXdoaXRlLWxpZ2h0ZXN0KSAzMCUsIHZhcigtLWJsdWV3YXJtdml2aWRmYWRlLWxpZ2h0ZXIpIDEwMCUpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaGNpLWRpY3Rpb25hcnktZGlzcGxheS1ncmlkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gICAgICAgICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM1KSAwcHggNXB4IDE1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAqIERpY3Rpb25hcnkgUm93IEhvdmVyIENTU1xyXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctaG92ZXIge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLWdyZXktZGFya2VzdCkgIWltcG9ydGFudDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWV3YXJtdml2aWRmYWRlLWxpZ2h0ZXIpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAqIERpY3Rpb25hcnkgQ2VsbCBTZWxlY3RlZCBDU1NcclxuICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93LXNlbGVjdGVkIC5hZy1jZWxsIHtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZS1saWdodGVzdCkgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQgLmFnLWNlbGwtbm90LWlubGluZS1lZGl0aW5nIHtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZS1saWdodGVzdCkgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQgLmFnLWNlbGwtaW5saW5lLWVkaXRpbmcge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLWJsYWNrLWRhcmtlc3QpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAgICAgICAqIERpY3Rpb25hcnkgUm93IFNlbGVjdGVkIENTU1xyXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWRhcmtlc3QpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ibHVld2FybXZpdmlkLWxpZ2h0ZXIpICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICBgXHJcbiAgICBdXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBEaWN0aW9uYXJ5RWRpdG9yRGV0YWlsQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikgY2xhc3NMaXN0OiBzdHJpbmcgPSBcIm91dGxldC1jb2x1bW4geS1hdXRvXCI7XHJcblxyXG4gIHByaXZhdGUgc2Vjb25kYXJ5RGljdGlvbmFyeUVudHJpZXM6IGFueTtcclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogYW55O1xyXG4gIGRpY3Rpb25hcnk6IGFueTtcclxuICBkaWN0aW9uYXJ5RW50cmllczogYW55W10gPSBbXTtcclxuICBkYXRhQ29sdW1uczogYW55W107XHJcblxyXG4gIGlkQ29sdW1uOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xyXG4gIGxvYWRpbmdTdWJqZWN0czogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+W10gPSBbXTtcclxuICBoYWxmTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvY2Vzc2luZ0NhbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjYWxsUXVldWVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGJvdW5kTmV3Um93UG9zdENhbGw6IChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8YW55PjtcclxuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XHJcbiAgbmV3Um93U3Vic2NyaXB0aW9uOiBhbnk7XHJcbiAgcHJpdmF0ZSBkZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgbWV0YUdyaWRPcHRpb25zID0ge1xyXG4gICAgcm93U3R5bGU6IHtcclxuICAgICAgXCJmb250LWZhbWlseVwiOiBcImhjaS1mb250XCJcclxuICAgIH0sXHJcbiAgICBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIGVuc3VyZURvbU9yZGVyOiB0cnVlXHJcbiAgfTtcclxuICBmcmFtZXdvcmtDb21wb25lbnRzOiBhbnk7XHJcbiAgcHVibGljIGdyaWRBcGlNZXRhOiBHcmlkQXBpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgQEluamVjdChESUNUSU9OQVJZX0VORFBPSU5UKSBwcml2YXRlIERpY3Rpb25hcnlFbmRwb2ludDogc3RyaW5nXHJcbiAgKSB7XHJcblxyXG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjb21wb25lbnRQYXJlbnQ6IHRoaXNcclxuICAgICAgfSxcclxuICAgICAgb25HcmlkUmVhZHk6IERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQub25TYW1wbGVzR3JpZFJlYWR5LFxyXG4gICAgICBvbkdyaWRTaXplQ2hhbmdlZDogRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5vbkdyaWRTaXplQ2hhbmdlZCxcclxuICAgICAgc3VwcHJlc3NIb3Jpem9udGFsU2Nyb2xsOiBmYWxzZSxcclxuICAgICAgc2VsZWN0aW9uTW9kZTogXCJtdWx0aXBsZVwiLFxyXG4gICAgICBzdG9wRWRpdGluZ1doZW5HcmlkTG9zZXNGb2N1czogdHJ1ZSxcclxuICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcclxuICAgICAgZW5hYmxlRmlsdGVyOiB0cnVlXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZWQgb24gdGhlIHJvdXRlIGNsYXNzIG5hbWUsIG1ha2UgdGhlIGNhbGwgdG8gZmV0Y2ggdGhlIGRpY3Rpb25hcnkgZGF0YS4gIFNpbmNlIHRoaXMgY29tcG9uZW50IGlzIHJvdXRlIGJhc2VkLFxyXG4gICAqIHdoZW4gdGhlIGRpY3Rpb25hcnkgY2xhc3MgaW4gdGhlIHJvdXRlIGNoYW5nZXMsIHRoaXMgY29tcG9uZW50IGlzIHJlbG9hZGVkLlxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5ib3VuZE5ld1Jvd1Bvc3RDYWxsID0gdGhpcy5uZXdSb3dQb3N0LmJpbmQodGhpcyk7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHMucHVzaChuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKFxyXG4gICAgICBwYXJhbXMgPT4ge1xyXG5cclxuICAgICAgICBsZXQgY2xhc3NOYW1lOiBzdHJpbmcgPSBwYXJhbXNbXCJjbGFzc05hbWVcIl07XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeShjbGFzc05hbWUpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgICAgLy8gQSBuZXcgY2FsbCB3YXMgbWFkZSB0byBiZSBwcm9jZXNzZWQsIHByb2Nlc3MgdGhlIGNhbGxcclxuICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlCZWdpbih0aGlzLmNsYXNzTmFtZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQSBjYWxsIGNvbXBsZXRlZCB3aGlsZSBhbm90aGVyIGNhbGwgd2FzIG5vdCBxdWV1ZWQsIHByb2Nlc3NpbmcgY29tcGxldGVcclxuICAgICAgICB0aGlzLnByb2Nlc3NpbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3Blbk1vZGFsKG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCwge3dpbmRvd0NsYXNzOiBcIm1vZGFsLXhsXCJ9KS5yZXN1bHQudGhlbihcclxuICAgICAgKHJlc3VsdCkgPT4ge1xyXG4gICAgICB9LFxyXG4gICAgICAocmVhc29uKSA9PiB7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbHVtbkRlZk1ldGEoKSA6IGFueVtdIHtcclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7ZmllbGQ6IFwibmFtZVwiLCBoZWFkZXJOYW1lOiBcIk5hbWVcIiwgd2lkdGg6IDE3NSwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImRlc2NyaXB0aW9uXCIsIGhlYWRlck5hbWU6IFwiRGVzY3JpcHRpb25cIiwgd2lkdGg6IDI1MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImlkXCIsIGhlYWRlck5hbWU6IFwiSWRcIiwgd2lkdGg6IDYwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwidHlwZVwiLCBoZWFkZXJOYW1lOiBcIlR5cGVcIiwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcInByb3RlY3Rpb25UeXBlXCIsIGhlYWRlck5hbWU6IFwiUHJvdGVjdGlvblR5cGVcIiwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImZpbHRlckRpY3Rpb25hcnlDbGFzc1wiLCBoZWFkZXJOYW1lOiBcIkZpbHRlckRpY3Rpb25hcnlDbGFzc1wiLCB3aWR0aDogMTgwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwibm90TnVsbFwiLCBoZWFkZXJOYW1lOiBcIk5vdE51bGxcIiwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImludGVnZXJcIiwgaGVhZGVyTmFtZTogXCJJbnRlZ2VyXCIsIHdpZHRoOiA3NSwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcIm1pblwiLCBoZWFkZXJOYW1lOiBcIk1pblwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJtYXhcIiwgaGVhZGVyTmFtZTogXCJNYXhcIiwgd2lkdGg6IDYwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZnJhY3Rpb25cIiwgaGVhZGVyTmFtZTogXCJGcmFjdGlvblwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGljdGlvbmFyeVRvb2x0aXBcIiwgaGVhZGVyTmFtZTogXCJEaWN0aW9uYXJ5VG9vbHRpcFwiLCB3aWR0aDogMjAwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGljdGlvbmFyeURpc3BsYXlcIiwgaGVhZGVyTmFtZTogXCJEaWN0aW9uYXJ5RGlzcGxheVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZmlsdGVyYWJsZVwiLCBoZWFkZXJOYW1lOiBcIkZpbHRlcmFibGVcIiwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImRpc3BsYXlOYW1lXCIsIGhlYWRlck5hbWU6IFwiRGlzcGxheU5hbWVcIiwgd2lkdGg6IDE3NSwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImRpc3BsYXlPcmRlclwiLCBoZWFkZXJOYW1lOiBcIkRpc3BsYXlPcmRlclwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJjZWxsU3R5bGVcIiwgaGVhZGVyTmFtZTogXCJDZWxsU3R5bGVcIiwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgIF07IC8vIHRoZSB3aWR0aHMgZm9yIHRoZSBsYXN0IDIgY291bGQgYmUgd3JvbmcuXHJcblxyXG4gIH1cclxuXHJcbiAgb25NZXRhR3JpZFJlYWR5KHBhcmFtcyA6IGFueSkge1xyXG5cclxuICAgIHRoaXMuZ3JpZEFwaU1ldGEgPSBwYXJhbXMuYXBpO1xyXG4gICAgdGhpcy5ncmlkQXBpTWV0YS5zZXRDb2x1bW5EZWZzKHRoaXMuY29sdW1uRGVmTWV0YSgpKTtcclxuICAgIHRoaXMuZ3JpZEFwaU1ldGEuc2V0Um93RGF0YSh0aGlzLmRpY3Rpb25hcnk/LmZpZWxkcyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb3BlbkFyZVlvdVN1cmVNb2RhbChtb2RhbDogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4obW9kYWwpLnJlc3VsdC50aGVuKFxyXG4gICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gXCJEZWxldGVcIikge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVEaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKHJlYXNvbikgPT4ge1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lIGlmIHdlIGFyZSBsb2FkaW5nIHNvbWV0aGluZywgYW5kIHRoZW4gd2FpdCB1bnRpbCBpdCBpcyBkb25lIHRvIC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKi9cclxuICBnZXREaWN0aW9uYXJ5KGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmdDYWxsID09PSBmYWxzZSkge1xyXG4gICAgICAvLyBDYWxsIGlzIG5vdCBiZWluZyBwcm9jZXNzZWQsIHByb2Nlc3MgdGhpcyBjYWxsXHJcbiAgICAgIHRoaXMucHJvY2Vzc2luZ0NhbGwgPSB0cnVlO1xyXG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0c1swXS5uZXh0KHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQSBjYWxsIGlzIGFscmVhZHkgYmVpbmcgcHJvY2Vzc2VkLCBxdWV1ZSBhIHJlY2FsbCB3aGVuIGl0IGlzIGNvbXBsZXRlXHJcbiAgICAgIHRoaXMuY2FsbFF1ZXVlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCB0aGUgZGljdGlvbmFyeSBtZXRhZGF0YSBhbmQgZGljdGlvbmFyeSBlbnRyaWVzIGJhc2VkIHVwb24gdGhlIGRpY3Rpb25hcnkgY2xhc3MgbmFtZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKi9cclxuICBwcml2YXRlIGdldERpY3Rpb25hcnlCZWdpbihjbGFzc05hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5oYWxmTG9hZGVkID0gZmFsc2U7XHJcbiAgICAvLyBXaGVuIFNlbGVjdGluZyBBIE5ldyBEaWN0aW9uYXJ5LCBOYXZpZ2F0ZSBUbyBGaXJzdCBQYWdlXHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5wYWdpbmF0aW9uR29Ub0ZpcnN0UGFnZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICB0aGlzLmRlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnkoY2xhc3NOYW1lKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95KVxyXG4gICAgKS5zdWJzY3JpYmUoKGRpY3Rpb25hcnk6IE9iamVjdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXBEaWN0aW9uYXJ5R3JpZChkaWN0aW9uYXJ5KTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgfVxyXG5cclxuICBnZXREaWN0aW9uYXJ5RW50cmllcygpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kpKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkaWN0aW9uYXJ5RW50cmllczogT2JqZWN0W10pID0+IHtcclxuICAgICAgICB0aGlzLmRpY3Rpb25hcnlFbnRyaWVzID0gZGljdGlvbmFyeUVudHJpZXM7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YShkaWN0aW9uYXJ5RW50cmllcyk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmhhbGZMb2FkZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNhbGxRdWV1ZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgLy8gQSBjYWxsIGNvbXBsZXRlZCB3aGlsZSBhbm90aGVyIGNhbGwgd2FzIHF1ZXVlZCBzbyBtYWtlIHRoYXQgY2FsbCBub3dcclxuICAgICAgICAgICAgdGhpcy5jYWxsUXVldWVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUJlZ2luKHRoaXMuY2xhc3NOYW1lKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmhhbGZMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgZGljdGlvbmFyeSBtZXRhZGF0YS4gIFRoaXMgaXMgdXNlZCB0byBidWlsZCB0aGUgY29sdW1ucyBmb3IgdGhlIGRpY3Rpb25hcnkgZW50cmllcy4gIFRoZSBuYW1lcywgdmFsaWRhdGlvbixcclxuICAgKiBhbmQgZmlsdGVyIGNsYXNzZXMgYnVpbGQgdGhlIGNvbHVtbiBkZWZpbml0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRpY3Rpb25hcnlcclxuICAgKi9cclxuICBwcml2YXRlIHNldFVwRGljdGlvbmFyeUdyaWQoZGljdGlvbmFyeTogYW55KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJEaWN0aW9uYXJ5RWRpdG9yRGV0YWlsQ29tcG9uZW50LnNldERpY3Rpb25hcnlcIik7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoZGljdGlvbmFyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcclxuICAgIHRoaXMuc2Vjb25kYXJ5RGljdGlvbmFyeUVudHJpZXMgPSBbXTtcclxuICAgIGxldCBkaWN0aW9uYXJ5Q2xhc3NOYW1lcyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIGRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZC5maWx0ZXJEaWN0aW9uYXJ5Q2xhc3MpIHtcclxuICAgICAgICBkaWN0aW9uYXJ5Q2xhc3NOYW1lcy5wdXNoKGZpZWxkLmZpbHRlckRpY3Rpb25hcnlDbGFzcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldFNlY29uZGFyeURpY3Rpb25hcmllcyhkaWN0aW9uYXJ5Q2xhc3NOYW1lcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlY29uZGFyeURpY3Rpb25hcmllcyhkaWN0aW9uYXJ5TmFtZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBpZiAoZGljdGlvbmFyeU5hbWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuZmluaXNoQ29sdW1uU2V0dXAoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBkaWN0aW9uYXJ5TmFtZSA9IGRpY3Rpb25hcnlOYW1lcy5wb3AoKTtcclxuICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXREaWN0aW9uYXJ5RHJvcGRvd25FbnRyaWVzKGRpY3Rpb25hcnlOYW1lKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kpXHJcbiAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlY29uZGFyeURpY3Rpb25hcnlFbnRyaWVzLnB1c2goe2RpY3Rpb25hcnlOYW1lOiBkaWN0aW9uYXJ5TmFtZSwgZW50cmllczogcmVzcG9uc2V9KTtcclxuICAgICAgICAgIHRoaXMuZ2V0U2Vjb25kYXJ5RGljdGlvbmFyaWVzKGRpY3Rpb25hcnlOYW1lcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5pc2hDb2x1bW5TZXR1cCgpIHtcclxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmRpY3Rpb25hcnkuZGlzcGxheU5hbWU7XHJcblxyXG4gICAgLy8gVGhpcyBlc3RhYmxpc2hlcyB0aGUgcmVhZE9ubHkgZnVuY3Rpb25hbGl0eVxyXG4gICAgbGV0IGNvbHM6IGFueVtdID0gW107XHJcblxyXG4gICAgLy8gUHJvY2VzcyBDb2x1bW5zIEFuZCBDcmVhdGUgQ29sdW1uIERlZmluaXRpb25cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIHRoaXMuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmlkICYmIChpc051bGxPclVuZGVmaW5lZChmaWVsZC5jb2RlKSB8fCBmaWVsZC5jb2RlID09IGZhbHNlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY29sOiBhbnk7XHJcblxyXG4gICAgICBpZiAoZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKSB7XHJcbiAgICAgICAgLy8gdGhpcyBpcyBhIGRyb3Bkb3duIG9mIGFub3RoZXIgZGljdGlvbmFyeVxyXG4gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5zZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllcy5maW5kKFxyXG4gICAgICAgICAgKGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS5kaWN0aW9uYXJ5TmFtZSA9PT0gZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbCA9IHtcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgaGVhZGVyTmFtZTogZmllbGQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjZWxsUmVuZGVyZXJGcmFtZXdvcms6IFNlbGVjdFJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2VsZWN0RWRpdG9yLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uc0Rpc3BsYXlGaWVsZDogXCJkaXNwbGF5XCIsXHJcbiAgICAgICAgICBzZWxlY3RPcHRpb25zVmFsdWVGaWVsZDogXCJpZFwiLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZUdldHRlcjogdGhpcy5jb21ib0ZpbHRlclZhbHVlR2V0dGVyLFxyXG4gICAgICAgICAgc2VsZWN0T3B0aW9uczogW10sXHJcbiAgICAgICAgICBjb21wYXJhdG9yOiAodmFsdWVBLCB2YWx1ZUIsIG5vZGVBLCBub2RlQiwgaXNJbnZlcnRlZCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgIGNvbC5zZWxlY3RPcHRpb25zID0gb3B0aW9ucy5lbnRyaWVzLnNvcnQoXHJcbiAgICAgICAgICAgIChvcHRpb25BLCBvcHRpb25CKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgob3B0aW9uQi5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25BLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmVudHJpZXMpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZUIgJiYgIXZhbHVlQSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCF2YWx1ZUEgJiYgIXZhbHVlQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQSA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQSkpO1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9uQiA9IG9wdGlvbnMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gKFwiXCIgKyBlbnRyeS5pZCA9PT0gXCJcIiArIHZhbHVlQikpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkEgJiYgIW9wdGlvbkIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKG9wdGlvbkIgJiYgIW9wdGlvbkEpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghb3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkgPiBvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKChvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkEuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbjogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgcGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50LmRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29sRGVmLmZpZWxkID09IGZpZWxkLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4gPSBmaWVsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeURpc3BsYXkgPSBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheTtcclxuICAgICAgICBjb2wuZGljdGlvbmFyeVRvb2x0aXAgPSBmaWVsZC5kaWN0aW9uYXJ5VG9vbHRpcDtcclxuXHJcbiAgICAgICAgLy8gU2V0IGRlZmF1bHQgZmlsdGVyIGFzIGNvbXBhcmUgYnkgdGV4dC9udW1iZXJcclxuICAgICAgICAvLyBjb2wuZmlsdGVyUmVuZGVyZXIgPSBDb21wYXJlRmlsdGVyUmVuZGVyZXI7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSAmJiBmaWVsZC50eXBlID09IFwiRGF0ZVwiKSB7XHJcbiAgICAgICAgLy9kYXRlIHZhbHVlXHJcbiAgICAgICAgY29sID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiBmaWVsZC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlckZyYW1ld29yazogRGF0ZVJlbmRlcmVyLFxyXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogQWdHcmlkRGF0ZUNlbGxFZGl0b3JDb21wb25lbnQsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgIGRpY3Rpb25hcnlEaXNwbGF5OiBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgIGxldCBudW0gPSB0aGlzLmRhdGVDb21wYXJhdG9yKHZhbHVlQSwgdmFsdWVCKTtcclxuICAgICAgICAgIHJldHVybiBpc0ludmVydGVkID8gLTEgKiBudW0gOiBudW07IC8vZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyB3aXRoIGludmVydGVkP1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jZWxsU3R5bGUgPSBwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgdmFyIGNvbHVtbjogYW55ID0ge307XHJcbiAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb2xEZWYuZmllbGQgPT0gZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbiA9IGZpZWxkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuZGlzcGxheU9yZGVyID0gZmllbGQuZGlzcGxheU9yZGVyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMgaXMgYSBzdHJpbmcgdmFsdWVcclxuICAgICAgICBjb2wgPSB7XHJcbiAgICAgICAgICBmaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IGZpZWxkLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgZWRpdGFibGU6IHRoaXMuaXNFZGl0YWJsZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICBkaWN0aW9uYXJ5RGlzcGxheTogZmllbGQuZGljdGlvbmFyeURpc3BsYXlcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuY29tcGFyYXRvciA9ICh2YWx1ZUEsIHZhbHVlQiwgbm9kZUEsIG5vZGVCLCBpc0ludmVydGVkKSA9PiB7XHJcbiAgICAgICAgICBpZiAodmFsdWVBICYmICF2YWx1ZUIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlQiAmJiAhdmFsdWVBKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh2YWx1ZUEudG9Mb3dlckNhc2UoKSA+IHZhbHVlQi50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgodmFsdWVCLnRvTG93ZXJDYXNlKCkgPiB2YWx1ZUEudG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmNlbGxTdHlsZSA9IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICB2YXIgY29sdW1uOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogXCIjOGE5NDk5XCJ9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmRpc3BsYXlPcmRlciA9IGZpZWxkLmRpc3BsYXlPcmRlcjtcclxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBmaWx0ZXIgYXMgY29tcGFyZSBieSB0ZXh0L251bWJlclxyXG4gICAgICAgIC8vIGNvbC5maWx0ZXJSZW5kZXJlciA9IENvbXBhcmVGaWx0ZXJSZW5kZXJlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29scy5wdXNoKGNvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm93IHdlIG5lZWQgdG8gc29ydCB0aGUgY29sdW1uc1xyXG4gICAgaWYgKCF0aGlzLmRpY3Rpb25hcnkuZmllbGRzWzBdLmhhc093blByb3BlcnR5KFwiZGlzcGxheU9yZGVyXCIpKSB7XHJcbiAgICAgIC8vIGRlZmF1bHQgY2FzZSwgbm8gZGlzcGxheU9yZGVyXHJcbiAgICAgIGNvbHMgPSBjb2xzLnNvcnQoXHJcbiAgICAgICAgKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICghYS5oZWFkZXJOYW1lICYmIGIuaGVhZGVyTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWIuaGVhZGVyTmFtZSAmJiBhLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSB0cnVlICYmIGIuZGljdGlvbmFyeURpc3BsYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYi5kaWN0aW9uYXJ5RGlzcGxheSA9PT0gdHJ1ZSAmJiBhLmRpY3Rpb25hcnlEaXNwbGF5ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gdHJ1ZSAmJiBiLmRpY3Rpb25hcnlUb29sdGlwID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGIuZGljdGlvbmFyeVRvb2x0aXAgPT09IHRydWUgJiYgYS5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gRGlzcGxheU9yZGVyIGNhc2VcclxuICAgICAgLy8gSSB0aGluayB0aGlzIHdvcmtzPyBDaGVjayBsYXRlclxyXG4gICAgICBjb2xzID0gY29scy5zb3J0KFxyXG4gICAgICAgIChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWEuaGVhZGVyTmFtZSAmJiBiLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCFiLmhlYWRlck5hbWUgJiYgYS5oZWFkZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmRpc3BsYXlPcmRlciAtIGIuZGlzcGxheU9yZGVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZnRlciBDb2x1bW5zIEhhdmUgQmVlbiBTb3J0ZWRcclxuICAgIC8vIERpY3Rpb25hcnkgR3JpZCBXaWxsIFNvcnQgVGhlIEdyaWQgQXNjZW5kaW5nIE9yZGVyIEJ5IEZpcnN0IENvbHVtblxyXG4gICAgaWYoY29scyAgJiYgY29scy5sZW5ndGggIT0gMCkge1xyXG4gICAgICBjb2xzWzBdLnNvcnQgPSBcImFzY1wiO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YUNvbHVtbnMgPSBjb2xzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhQ29sdW1ucykgJiYgdGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMuZGF0YUNvbHVtbnMpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5oYWxmTG9hZGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhbGxRdWV1ZWQgPT09IHRydWUpIHtcclxuICAgICAgICAvLyBBIGNhbGwgY29tcGxldGVkIHdoaWxlIGFub3RoZXIgY2FsbCB3YXMgcXVldWVkIHNvIG1ha2UgdGhhdCBjYWxsIG5vd1xyXG4gICAgICAgIHRoaXMuY2FsbFF1ZXVlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUJlZ2luKHRoaXMuY2xhc3NOYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0c1swXS5uZXh0KGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYWxmTG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRWRpdGFibGUocGFyYW1zKTogYm9vbGVhbiB7XHJcblxyXG4gICAgbGV0IGlzRWRpdGFibGU6IGJvb2xlYW47XHJcblxyXG4gICAgbGV0IGNvbHVtbjogYW55ID0ge307XHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiB0aGlzLmRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgIGlmIChwYXJhbXMuY29sRGVmLmZpZWxkID09IGZpZWxkLm5hbWUpIHtcclxuICAgICAgICBjb2x1bW4gPSBmaWVsZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJhbXMuZGF0YS5lZGl0T3JOZXcgJiYgcGFyYW1zLmRhdGEuZWRpdE9yTmV3ID09IFwibmV3XCIpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCJuZXcgZWRpdGFibGU/XCIpO1xyXG4gICAgICBpc0VkaXRhYmxlID0gISh0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coXCJlZGl0IGVkaXRhYmxlP1wiKTtcclxuICAgICAgaXNFZGl0YWJsZSA9ICEodGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiIHx8IGNvbHVtbi5jcmVhdGVPbmx5IHx8XHJcbiAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiQ3JlYXRlIE9ubHlcIiB8fCBjb2x1bW4uY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzRWRpdGFibGU7XHJcbiAgfVxyXG5cclxuICBkZWxldGVEaWN0aW9uYXJ5RW50cmllcygpOiB2b2lkIHtcclxuXHJcbiAgICBsZXQgZGVsZXRlUm93czogYW55W10gPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuXHJcbiAgICBmb3IgKGxldCBkZWxldGVJZCBvZiB0aGlzLnNlbGVjdGVkUm93cykge1xyXG4gICAgICBmb3IgKGxldCBlbnRyeSBvZiB0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKSB7XHJcbiAgICAgICAgaWYgKGVudHJ5W3RoaXMuaWRDb2x1bW5dID09PSBkZWxldGVJZCkge1xyXG4gICAgICAgICAgZGVsZXRlUm93cy5wdXNoKGVudHJ5KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZGVsZXRlRGljdGlvbmFyeUVudHJpZXModGhpcy5jbGFzc05hbWUsIGRlbGV0ZVJvd3MpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEaWN0aW9uYXJ5KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJbXBvcnRhbnQgdG8gbm90ZSB0aGlzIHdpbGwgbm90IHVwZGF0ZSBjZWxscyB0byB0aGUgZGVtbyBidXQgd2lsbCB3aGVuIGltcG9ydGVkIHRvIENPUkUgb3Igb3RoZXIgYXBwbGljYXRpb25zLlxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS51cGRhdGVEaWN0aW9uYXJ5RW50cmllcyh0aGlzLmNsYXNzTmFtZSwgW2V2ZW50LmRhdGFdKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUVudHJpZXMoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkRW50cmllcygpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gIH1cclxuXHJcbiAgbmV3Um93UG9zdChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIHJldHVybiB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmFkZERpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lLCBbZGF0YV0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChcclxuICAgICAgICAgIChkYXRhOiBPYmplY3RbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiA8YW55PmRhdGFbMF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG9uU2FtcGxlc0dyaWRSZWFkeShldmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICBldmVudC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBvbkdyaWRTaXplQ2hhbmdlZChldmVudDogYW55KSB7XHJcblxyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmFwaSkge1xyXG4gICAgICBldmVudC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkaXNhYmxlQWRkUm93KCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICghdGhpcy5kaWN0aW9uYXJ5KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgJiYgdGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ID09PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBkaXNhYmxlRGVsZXRlKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICghdGhpcy5kaWN0aW9uYXJ5KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgJiYgdGhpcy5kaWN0aW9uYXJ5LnJlYWRPbmx5ID09PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXBpICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKS5sZW5ndGggPT09IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tYm9GaWx0ZXJWYWx1ZUdldHRlcihwYXJhbXMpOiBhbnkge1xyXG5cclxuICAgIGxldCB2YWx1ZSA9IHBhcmFtcy5kYXRhW3BhcmFtcy5jb2xEZWYuZmllbGRdO1xyXG5cclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBsZXQgb3B0aW9uID0gKChwYXJhbXMuY29sRGVmIGFzIGFueSkuc2VsZWN0T3B0aW9ucyBhcyBhbnlbXSkuZmluZCgoZW50cnkpID0+IChlbnRyeVtwYXJhbXMuY29sRGVmLnNlbGVjdE9wdGlvbnNWYWx1ZUZpZWxkXSA9PT0gdmFsdWUpKTtcclxuICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbltwYXJhbXMuY29sRGVmLnNlbGVjdE9wdGlvbnNEaXNwbGF5RmllbGRdIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tBZGRSb3coKSB7XHJcblxyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE5ld1Jvd0NvbXBvbmVudCxcclxuICAgICAge1xyXG4gICAgICAgIHNpemU6IFwibGdcIixcclxuICAgICAgICBrZXlib2FyZDogZmFsc2UsXHJcbiAgICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXHJcbiAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY29sRGVmcyA9IHRoaXMuZGF0YUNvbHVtbnM7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kaWN0aW9uYXJ5ID0gdGhpcy5kaWN0aW9uYXJ5O1xyXG5cclxuICAgIC8vIGlmICghdGhpcy5uZXdSb3dTdWJzY3JpcHRpb24pIHsgLy8gcmVtb3ZlZCBiZWNhdXNlIGl0IHdhcyBwcmV2ZW50aW5nIHNhdmUgYWZ0ZXIgY2FuY2VsXHJcbiAgICAgIC8vIHRlbGwgb3RoZXIgYWctZ3JpZCB0byBhZGQgcm93IHRvIGl0XHJcbiAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UubmV3Um93U3ViamVjdC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHRoZU5ld1JvdzogYW55W10pID0+IHtcclxuICAgICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSB0aGVOZXdSb3cuY29uY2F0KHRoaXMuZGljdGlvbmFyeUVudHJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Um93RGF0YSh0aGlzLmRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICAgIHRoaXMubmV3Um93U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBJbXBvcnRhbnQgdG8gbm90ZSB0aGlzIHdpbGwgbm90IGFkZCByb3dzIHRvIHRoZSBkZW1vIGJ1dCB3aWxsIHdoZW4gaW1wb3J0ZWQgdG8gQ09SRSBvciBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAgICAgICAgICB0aGlzLm5ld1Jvd1Bvc3QodGhlTmV3Um93WzBdKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmdldERpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcGFyYXRlciBUbyBDb21wYXJlIDIgRGF0ZXNcclxuICAgKiBAcGFyYW0gZGF0ZTEgRGF0ZSAxXHJcbiAgICogQHBhcmFtIGRhdGUyIERhdGUgMlxyXG4gICAqL1xyXG4gIGRhdGVDb21wYXJhdG9yKGRhdGUxLCBkYXRlMikge1xyXG5cclxuICAgIGxldCBkYXRlMU51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUxKTtcclxuICAgIGxldCBkYXRlMk51bWJlciA9IG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUyKTtcclxuXHJcbiAgICBpZiAoZGF0ZTFOdW1iZXIgPT09IG51bGwgJiYgZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRhdGUxTnVtYmVyID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0ZTJOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGUxTnVtYmVyIC0gZGF0ZTJOdW1iZXI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogRXh0cmFjdHMgRGF0ZSBBbmQgVHVybiBUbyBBIE51bWVyaWNhbCBWYWx1ZSBGb3IgQ29tcGFyaW5nIFB1cnBvc2VzXHJcbiAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbXBhcmFibGUgbnVtYmVyXHJcbiAqL1xyXG5mdW5jdGlvbiBtb250aFRvQ29tcGFyYWJsZU51bWJlcihkYXRlKSB7XHJcblxyXG4gIGlmIChkYXRlID09PSB1bmRlZmluZWQgfHwgZGF0ZSA9PT0gbnVsbCB8fCBkYXRlLmxlbmd0aCAhPT0gMTApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbGV0IHllYXJOdW1iZXIgPSBkYXRlLnN1YnN0cmluZygwLCA0KTtcclxuICBsZXQgbW9udGhOdW1iZXIgPSBkYXRlLnN1YnN0cmluZyg1LCA3KTtcclxuICBsZXQgZGF5TnVtYmVyID0gZGF0ZS5zdWJzdHJpbmcoOCwgMTApO1xyXG5cclxuICByZXR1cm4geWVhck51bWJlciAqIDEwMDAwICsgbW9udGhOdW1iZXIgKiAxMDAgKyBkYXlOdW1iZXI7XHJcbn1cclxuIl19
|
|
817
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RpY3Rpb25hcnktZWRpdG9yL3NyYy9jb21wb25lbnRzL2RldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFhLFdBQVcsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFXLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsUUFBUSxFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFRckcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFFakc7Ozs7Ozs7O0dBUUc7QUFzTUgsTUFBTSxPQUFPLCtCQUErQjtJQWtDMUMsWUFDVSxLQUFxQixFQUNyQixZQUFzQixFQUN0QixpQkFBb0MsRUFDUCxrQkFBMEI7UUFIdkQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsaUJBQVksR0FBWixZQUFZLENB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UUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDL0csRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUM1RixFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUNyRixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDekcsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDbkksRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDM0YsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQztZQUN0RyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUks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QUMsT0FBTzs7QUFpdUJ0Qjs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLElBQUk7SUFFbkMsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV0QyxPQUFPLFVBQVUsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIGlzRGV2TW9kZSwgVmlld0NoaWxkLCBIb3N0QmluZGluZywgVGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtmaW5hbGl6ZSwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtOZ2JNb2RhbCwgTmdiTW9kYWxSZWZ9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW1wb3J0IHtESUNUSU9OQVJZX0VORFBPSU5ULCBEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvZGljdGlvbmFyeS1zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29sdW1uQXBpLFxyXG4gIEdyaWRPcHRpb25zLFxyXG4gIEdyaWRSZWFkeUV2ZW50LFxyXG4gIEdyaWRBcGlcclxufSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuaW1wb3J0IHtTZWxlY3RSZW5kZXJlcn0gZnJvbSBcIi4uL2dyaWQtcmVuZGVyZXJzL3NlbGVjdC5yZW5kZXJlclwiO1xyXG5pbXBvcnQge1NlbGVjdEVkaXRvcn0gZnJvbSBcIi4uL2dyaWQtZWRpdG9ycy9zZWxlY3QuZWRpdG9yXCI7XHJcbmltcG9ydCB7TmV3Um93Q29tcG9uZW50fSBmcm9tIFwiLi9uZXctcm93LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwiaXMtd2hhdFwiO1xyXG5pbXBvcnQge0RhdGVSZW5kZXJlcn0gZnJvbSBcIi4uL2dyaWQtcmVuZGVyZXJzL2RhdGUucmVuZGVyZXJcIjtcclxuaW1wb3J0IHtBZ0dyaWREYXRlQ2VsbEVkaXRvckNvbXBvbmVudH0gZnJvbSBcIi4uL2dyaWQtZWRpdG9ycy9hZy1ncmlkLWRhdGUtY2VsbC1lZGl0b3IuY29tcG9uZW50XCI7XHJcblxyXG4vKipcclxuICogV2hlbiBhIGRpY3Rpb25hcnkgaXMgc2VsZWN0ZWQgdGhpcyBjb21wb25lbnQgaXMgc2hvd24uICBUaGVyZSBpcyBhIHRvcCBncmlkIHdoaWNoIGZvciBpdHMgZGF0YSBzaG93cyBhbGwgdGhlIGNvbHVtbnNcclxuICogZm9yIHRoZSBkaWN0aW9uYXJ5LiBDdXJyZW50bHksIGtlZXAgdGhpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIGhhdmUgbm9uLWVkaXRhYmxlLlxyXG4gKiBUaGUgYm90dG9tIGdyaWQgd2lsbCBzaG93IHRob3NlIGNvbHVtbnMgYXMgYWN0dWFsIGNvbHVtbnMgYW5kIGl0cyBkYXRhIGFyZSBhbGwgdGhlIGRpY3Rpb25hcnkgdmFsdWVzLiAgUm93cyBjYW4gYmVcclxuICogYWRkZWQuICBGb3IgZGVsZXRpbmcsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBpZCBpcyBub3QgdXNlZCBhbnl3aGVyZS4gIEZvciBlZGl0aW5nLCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY29kZSBvciBhbnl0aGluZ1xyXG4gKiBlbHNlIGlzbid0IGJlaW5nIHJlZmVyZW5jZWQuXHJcbiAqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQENvbXBvbmVudChcclxuICB7XHJcbiAgICBzZWxlY3RvcjogXCJoY2ktZGljdGlvbmFyeS1lZGl0b3ItZGV0YWlsXCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gaGNpLWRpY3Rpb25hcnktZGV0YWlsLWJvZHlcIj5cclxuICAgICAgICAgIDxoY2ktYnVzeSBbYnVzeVN1YmplY3RzXT1cImxvYWRpbmdTdWJqZWN0c1wiPjwvaGNpLWJ1c3k+XHJcblxyXG4gICAgICAgICAgPCEtLSBEaWN0aW9uYXJ5IFRpdGxlIEFuZCBNZXRhZGF0YSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWN0aW9uYXJ5LWluZm8tc2VjdGlvblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpY3Rpb25hcnktdGl0bGVcIj5cclxuICAgICAgICAgICAgICB7e2Rpc3BsYXlOYW1lfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHJpUmlwcGxlRWZmZWN0RGljdCBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZXRhZGF0YS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9kYWwobWV0YURhdGFNb2RhbClcIj5cclxuICAgICAgICAgICAgICBWaWV3IE1ldGEgRGF0YVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBFZGl0IEJ1dHRvbnMgLS0+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCJkaXNhYmxlRGVsZXRlPyAnZGVhY3RpdmF0ZWQtY29sb3InOiAnYWN0aXZlLWNvbG9yJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQXJlWW91U3VyZU1vZGFsKGFyZVlvdVN1cmVNb2RhbClcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJjb2xvcjogdmFyKC0tYmx1ZXdhcm0tZGFya2VzdCk7IGZsb2F0OiByaWdodDsgZm9udC1zaXplOiAxNXB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBZGRSb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrQWRkUm93KClcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gRGljdGlvbmFyeSBEaXNwbGF5IEdyaWQgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgaWQ9XCJkaWN0aW9uYXJ5LWdyaWQtZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RhdGFHcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC1oZWlnaHQgZnVsbC13aWR0aCBoY2ktZGljdGlvbmFyeS1kaXNwbGF5LWdyaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRpY3Rpb25hcnlFbnRyaWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidtdWx0aXBsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVDbGlja0VkaXRdPVwiJ3RydWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdGlvbl09XCIndHJ1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cIid0cnVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbFZhbHVlQ2hhbmdlZCk9XCJ1cGRhdGVEaWN0aW9uYXJ5KCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpY3Rpb25hcnkgTWV0YWRhdGEgUG9wdXAgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI21ldGFEYXRhTW9kYWwgbGV0LWNsb3NlPVwiY2xvc2VcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjEwMDBweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIE1ldGEgRGF0YSBmb3Ige3tjbGFzc05hbWV9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbW9kYWwtYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7IHdpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAjbWV0YUdyaWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyNTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JpZFJlYWR5KT1cInRoaXMub25NZXRhR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwidGhpcy5tZXRhR3JpZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93U2VsZWN0aW9uXT1cIidzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRpY3Rpb25hcnk/LmZpZWxkc1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gcmktYnRuLXNhdmVcIiAoY2xpY2spPVwiY2xvc2UoJ0Nsb3NlJylcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPCEtLSBEaWN0aW9uYXJ5IERlbGV0ZSBDb25maXJtYXRpb24gUG9wdXAgLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2FyZVlvdVN1cmVNb2RhbCBsZXQtY2xvc2U9XCJjbG9zZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgQ29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICBBcmUgeW91IHN1cmU/XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gcmktYnRuLWNhbmNlbFwiIChjbGljayk9XCJjbG9zZSgnQ2FuY2VsJylcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHJpUmlwcGxlRWZmZWN0RGljdCBjbGFzcz1cImJ0biByaS1idG4tZGVsZXRlXCIgKGNsaWNrKT1cImNsb3NlKCdEZWxldGUnKVwiPkRlbGV0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIGAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW0ge1xyXG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiaGNpLWZvbnRcIjtcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYWN0aXZlLWNvbG9yIHtcclxuICAgICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVld2FybS1kYXJrZXN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kZWFjdGl2YXRlZC1jb2xvciB7XHJcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3JleXdhcm0tZGFya2VzdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGljdGlvbmFyeS1pbmZvLXNlY3Rpb24ge1xyXG4gICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZGljdGlvbmFyeS10aXRsZSB7XHJcbiAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLm1ldGFkYXRhLWJ1dHRvbiB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUtbGlnaHRlc3QpO1xyXG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctaGVhZGVyLWNlbGwge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZXdhcm12aXZpZGZhZGUtbGlnaHRlc3QpO1xyXG4gICAgICAgICAgYm9yZGVyOiBsaWdodGdyYXkgc29saWQgdGhpbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1jZWxsIHtcclxuICAgICAgICAgIGJvcmRlci1yaWdodDogbGlnaHRncmF5IHNvbGlkIHRoaW47XHJcbiAgICAgICAgICBib3JkZXItbGVmdDogbGlnaHRncmF5IHNvbGlkIHRoaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA6aG9zdDo6bmctZGVlcCAuYWctcm93IHtcclxuICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XHJcbiAgICAgICAgICBib3JkZXItdG9wOiAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1ldmVuIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdoaXRlLW1lZGl1bSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaGNpLWRpY3Rpb25hcnktZGV0YWlsLWJvZHkge1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgdmFyKC0td2hpdGUtbGlnaHRlc3QpIDMwJSwgdmFyKC0tYmx1ZXdhcm12aXZpZGZhZGUtbGlnaHRlcikgMTAwJSkgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5oY2ktZGljdGlvbmFyeS1kaXNwbGF5LWdyaWQge1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbiAgICAgICAgICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMzUpIDBweCA1cHggMTVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICogRGljdGlvbmFyeSBSb3cgSG92ZXIgQ1NTXHJcbiAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1ob3ZlciB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZ3JleS1kYXJrZXN0KSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZXdhcm12aXZpZGZhZGUtbGlnaHRlcikgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICogRGljdGlvbmFyeSBDZWxsIFNlbGVjdGVkIENTU1xyXG4gICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIDpob3N0OjpuZy1kZWVwIC5hZy1yb3ctc2VsZWN0ZWQgLmFnLWNlbGwge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWxpZ2h0ZXN0KSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1zZWxlY3RlZCAuYWctY2VsbC1ub3QtaW5saW5lLWVkaXRpbmcge1xyXG4gICAgICAgICAgY29sb3I6IHZhcigtLXdoaXRlLWxpZ2h0ZXN0KSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1zZWxlY3RlZCAuYWctY2VsbC1pbmxpbmUtZWRpdGluZyB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tYmxhY2stZGFya2VzdCkgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICAgICogRGljdGlvbmFyeSBSb3cgU2VsZWN0ZWQgQ1NTXHJcbiAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgOmhvc3Q6Om5nLWRlZXAgLmFnLXJvdy1zZWxlY3RlZCB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0td2hpdGUtZGFya2VzdCkgIWltcG9ydGFudDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJsdWV3YXJtdml2aWQtbGlnaHRlcikgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwib3V0bGV0LWNvbHVtbiB5LWF1dG9cIjtcclxuXHJcbiAgcHJpdmF0ZSBzZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllczogYW55O1xyXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBhbnk7XHJcbiAgZGljdGlvbmFyeTogYW55O1xyXG4gIGRpY3Rpb25hcnlFbnRyaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGRhdGFDb2x1bW5zOiBhbnlbXTtcclxuXHJcbiAgaWRDb2x1bW46IHN0cmluZztcclxuICBzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XHJcbiAgbG9hZGluZ1N1YmplY3RzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj5bXSA9IFtdO1xyXG4gIGhhbGZMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm9jZXNzaW5nQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNhbGxRdWV1ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgYm91bmROZXdSb3dQb3N0Q2FsbDogKGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcclxuICBuZXdSb3dTdWJzY3JpcHRpb246IGFueTtcclxuICBwcml2YXRlIGRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBtZXRhR3JpZE9wdGlvbnMgPSB7XHJcbiAgICByb3dTdHlsZToge1xyXG4gICAgICBcImZvbnQtZmFtaWx5XCI6IFwiaGNpLWZvbnRcIlxyXG4gICAgfSxcclxuICAgIGVuYWJsZUNlbGxUZXh0U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgZW5zdXJlRG9tT3JkZXI6IHRydWVcclxuICB9O1xyXG4gIGZyYW1ld29ya0NvbXBvbmVudHM6IGFueTtcclxuICBwdWJsaWMgZ3JpZEFwaU1ldGE6IEdyaWRBcGk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KERJQ1RJT05BUllfRU5EUE9JTlQpIHByaXZhdGUgRGljdGlvbmFyeUVuZHBvaW50OiBzdHJpbmdcclxuICApIHtcclxuXHJcbiAgICB0aGlzLmdyaWRPcHRpb25zID0gPEdyaWRPcHRpb25zPntcclxuICAgICAgY29udGV4dDoge1xyXG4gICAgICAgIGNvbXBvbmVudFBhcmVudDogdGhpc1xyXG4gICAgICB9LFxyXG4gICAgICBvbkdyaWRSZWFkeTogRGljdGlvbmFyeUVkaXRvckRldGFpbENvbXBvbmVudC5vblNhbXBsZXNHcmlkUmVhZHksXHJcbiAgICAgIG9uR3JpZFNpemVDaGFuZ2VkOiBEaWN0aW9uYXJ5RWRpdG9yRGV0YWlsQ29tcG9uZW50Lm9uR3JpZFNpemVDaGFuZ2VkLFxyXG4gICAgICBzdXBwcmVzc0hvcml6b250YWxTY3JvbGw6IGZhbHNlLFxyXG4gICAgICBzZWxlY3Rpb25Nb2RlOiBcIm11bHRpcGxlXCIsXHJcbiAgICAgIHN0b3BFZGl0aW5nV2hlbkdyaWRMb3Nlc0ZvY3VzOiB0cnVlLFxyXG4gICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG4gICAgICBlbmFibGVGaWx0ZXI6IHRydWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiB0aGUgcm91dGUgY2xhc3MgbmFtZSwgbWFrZSB0aGUgY2FsbCB0byBmZXRjaCB0aGUgZGljdGlvbmFyeSBkYXRhLiAgU2luY2UgdGhpcyBjb21wb25lbnQgaXMgcm91dGUgYmFzZWQsXHJcbiAgICogd2hlbiB0aGUgZGljdGlvbmFyeSBjbGFzcyBpbiB0aGUgcm91dGUgY2hhbmdlcywgdGhpcyBjb21wb25lbnQgaXMgcmVsb2FkZWQuXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJvdW5kTmV3Um93UG9zdENhbGwgPSB0aGlzLm5ld1Jvd1Bvc3QuYmluZCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0cy5wdXNoKG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoXHJcbiAgICAgIHBhcmFtcyA9PiB7XHJcblxyXG4gICAgICAgIGxldCBjbGFzc05hbWU6IHN0cmluZyA9IHBhcmFtc1tcImNsYXNzTmFtZVwiXTtcclxuXHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5KGNsYXNzTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMF0uc3Vic2NyaWJlKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICAvLyBBIG5ldyBjYWxsIHdhcyBtYWRlIHRvIGJlIHByb2Nlc3NlZCwgcHJvY2VzcyB0aGUgY2FsbFxyXG4gICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUJlZ2luKHRoaXMuY2xhc3NOYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBBIGNhbGwgY29tcGxldGVkIHdoaWxlIGFub3RoZXIgY2FsbCB3YXMgbm90IHF1ZXVlZCwgcHJvY2Vzc2luZyBjb21wbGV0ZVxyXG4gICAgICAgIHRoaXMucHJvY2Vzc2luZ0NhbGwgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuTW9kYWwobW9kYWw6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKG1vZGFsLCB7d2luZG93Q2xhc3M6IFwibW9kYWwteGxcIn0pLnJlc3VsdC50aGVuKFxyXG4gICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZWFzb24pID0+IHtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uRGVmTWV0YSgpIDogYW55W10ge1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtmaWVsZDogXCJuYW1lXCIsIGhlYWRlck5hbWU6IFwiTmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGVzY3JpcHRpb25cIiwgaGVhZGVyTmFtZTogXCJEZXNjcmlwdGlvblwiLCB3aWR0aDogMjUwLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaWRcIiwgaGVhZGVyTmFtZTogXCJJZFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJ0eXBlXCIsIGhlYWRlck5hbWU6IFwiVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwicHJvdGVjdGlvblR5cGVcIiwgaGVhZGVyTmFtZTogXCJQcm90ZWN0aW9uVHlwZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyRGljdGlvbmFyeUNsYXNzXCIsIHdpZHRoOiAxODAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJub3ROdWxsXCIsIGhlYWRlck5hbWU6IFwiTm90TnVsbFwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiaW50ZWdlclwiLCBoZWFkZXJOYW1lOiBcIkludGVnZXJcIiwgd2lkdGg6IDc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwibWluXCIsIGhlYWRlck5hbWU6IFwiTWluXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcIm1heFwiLCBoZWFkZXJOYW1lOiBcIk1heFwiLCB3aWR0aDogNjAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmcmFjdGlvblwiLCBoZWFkZXJOYW1lOiBcIkZyYWN0aW9uXCIsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5VG9vbHRpcFwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlUb29sdGlwXCIsIHdpZHRoOiAyMDAsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJkaWN0aW9uYXJ5RGlzcGxheVwiLCBoZWFkZXJOYW1lOiBcIkRpY3Rpb25hcnlEaXNwbGF5XCIsIHdpZHRoOiAxNzUsIHNvcnRhYmxlOiB0cnVlLCByZXNpemFibGU6IHRydWUsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgIHtmaWVsZDogXCJmaWx0ZXJhYmxlXCIsIGhlYWRlck5hbWU6IFwiRmlsdGVyYWJsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU5hbWVcIiwgaGVhZGVyTmFtZTogXCJEaXNwbGF5TmFtZVwiLCB3aWR0aDogMTc1LCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgICB7ZmllbGQ6IFwiZGlzcGxheU9yZGVyXCIsIGhlYWRlck5hbWU6IFwiRGlzcGxheU9yZGVyXCIsIHdpZHRoOiA2MCwgc29ydGFibGU6IHRydWUsIHJlc2l6YWJsZTogdHJ1ZSwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAge2ZpZWxkOiBcImNlbGxTdHlsZVwiLCBoZWFkZXJOYW1lOiBcIkNlbGxTdHlsZVwiLCBzb3J0YWJsZTogdHJ1ZSwgcmVzaXphYmxlOiB0cnVlLCBlZGl0YWJsZTogZmFsc2V9LFxyXG4gICAgXTsgLy8gdGhlIHdpZHRocyBmb3IgdGhlIGxhc3QgMiBjb3VsZCBiZSB3cm9uZy5cclxuXHJcbiAgfVxyXG5cclxuICBvbk1ldGFHcmlkUmVhZHkocGFyYW1zIDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5ncmlkQXBpTWV0YSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRBcGlNZXRhLnNldENvbHVtbkRlZnModGhpcy5jb2x1bW5EZWZNZXRhKCkpO1xyXG4gICAgdGhpcy5ncmlkQXBpTWV0YS5zZXRSb3dEYXRhKHRoaXMuZGljdGlvbmFyeT8uZmllbGRzKTtcclxuXHJcbiAgfVxyXG5cclxuICBvcGVuQXJlWW91U3VyZU1vZGFsKG1vZGFsOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihtb2RhbCkucmVzdWx0LnRoZW4oXHJcbiAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSBcIkRlbGV0ZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZURpY3Rpb25hcnlFbnRyaWVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAocmVhc29uKSA9PiB7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmUgaWYgd2UgYXJlIGxvYWRpbmcgc29tZXRoaW5nLCBhbmQgdGhlbiB3YWl0IHVudGlsIGl0IGlzIGRvbmUgdG8gLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIGdldERpY3Rpb25hcnkoY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xyXG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZ0NhbGwgPT09IGZhbHNlKSB7XHJcbiAgICAgIC8vIENhbGwgaXMgbm90IGJlaW5nIHByb2Nlc3NlZCwgcHJvY2VzcyB0aGlzIGNhbGxcclxuICAgICAgdGhpcy5wcm9jZXNzaW5nQ2FsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBBIGNhbGwgaXMgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWQsIHF1ZXVlIGEgcmVjYWxsIHdoZW4gaXQgaXMgY29tcGxldGVcclxuICAgICAgdGhpcy5jYWxsUXVldWVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIHRoZSBkaWN0aW9uYXJ5IG1ldGFkYXRhIGFuZCBkaWN0aW9uYXJ5IGVudHJpZXMgYmFzZWQgdXBvbiB0aGUgZGljdGlvbmFyeSBjbGFzcyBuYW1lLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0RGljdGlvbmFyeUJlZ2luKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmhhbGZMb2FkZWQgPSBmYWxzZTtcclxuICAgIC8vIFdoZW4gU2VsZWN0aW5nIEEgTmV3IERpY3Rpb25hcnksIE5hdmlnYXRlIFRvIEZpcnN0IFBhZ2VcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb25zICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXBpKSB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFDb2x1bW5zID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuZGVzdHJveS5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kuY29tcGxldGUoKTtcclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0RGljdGlvbmFyeShjbGFzc05hbWUpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kpXHJcbiAgICApLnN1YnNjcmliZSgoZGljdGlvbmFyeTogT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcERpY3Rpb25hcnlHcmlkKGRpY3Rpb25hcnkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZ2V0RGljdGlvbmFyeUVudHJpZXMoKTtcclxuICB9XHJcblxyXG4gIGdldERpY3Rpb25hcnlFbnRyaWVzKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0RGljdGlvbmFyeUVudHJpZXModGhpcy5jbGFzc05hbWUpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSkpLnN1YnNjcmliZShcclxuICAgICAgKGRpY3Rpb25hcnlFbnRyaWVzOiBPYmplY3RbXSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJpZXMgPSBkaWN0aW9uYXJ5RW50cmllcztcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKGRpY3Rpb25hcnlFbnRyaWVzKTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFsZkxvYWRlZCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2FsbFF1ZXVlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyBBIGNhbGwgY29tcGxldGVkIHdoaWxlIGFub3RoZXIgY2FsbCB3YXMgcXVldWVkIHNvIG1ha2UgdGhhdCBjYWxsIG5vd1xyXG4gICAgICAgICAgICB0aGlzLmNhbGxRdWV1ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5QmVnaW4odGhpcy5jbGFzc05hbWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdHNbMF0ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaGFsZkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBkaWN0aW9uYXJ5IG1ldGFkYXRhLiAgVGhpcyBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBjb2x1bW5zIGZvciB0aGUgZGljdGlvbmFyeSBlbnRyaWVzLiAgVGhlIG5hbWVzLCB2YWxpZGF0aW9uLFxyXG4gICAqIGFuZCBmaWx0ZXIgY2xhc3NlcyBidWlsZCB0aGUgY29sdW1uIGRlZmluaXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGljdGlvbmFyeVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0VXBEaWN0aW9uYXJ5R3JpZChkaWN0aW9uYXJ5OiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhcIkRpY3Rpb25hcnlFZGl0b3JEZXRhaWxDb21wb25lbnQuc2V0RGljdGlvbmFyeVwiKTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhkaWN0aW9uYXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5O1xyXG4gICAgdGhpcy5zZWNvbmRhcnlEaWN0aW9uYXJ5RW50cmllcyA9IFtdO1xyXG4gICAgbGV0IGRpY3Rpb25hcnlDbGFzc05hbWVzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmZpbHRlckRpY3Rpb25hcnlDbGFzcykge1xyXG4gICAgICAgIGRpY3Rpb25hcnlDbGFzc05hbWVzLnB1c2goZmllbGQuZmlsdGVyRGljdGlvbmFyeUNsYXNzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0U2Vjb25kYXJ5RGljdGlvbmFyaWVzKGRpY3Rpb25hcnlDbGFzc05hbWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2Vjb25kYXJ5RGljdGlvbmFyaWVzKGRpY3Rpb25hcnlOYW1lczogc3RyaW5nW10pIHtcclxuICAgIGlmIChkaWN0aW9uYXJ5TmFtZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5maW5pc2hDb2x1bW5TZXR1cCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGRpY3Rpb25hcnlOYW1lID0gZGljdGlvbmFyeU5hbWVzLnBvcCgpO1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldERpY3Rpb25hcnlEcm9wZG93bkVudHJpZXMoZGljdGlvbmFyeU5hbWUpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSlcclxuICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5RGljdGlvbmFyeUVudHJpZXMucHVzaCh7ZGljdGlvbmFyeU5hbWU6IGRpY3Rpb25hcnlOYW1lLCBlbnRyaWVzOiByZXNwb25zZX0pO1xyXG4gICAgICAgICAgdGhpcy5nZXRTZWNvbmRhcnlEaWN0aW9uYXJpZXMoZGljdGlvbmFyeU5hbWVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaENvbHVtblNldHVwKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZGljdGlvbmFyeS5kaXNwbGF5TmFtZTtcclxuXHJcbiAgICAvLyBUaGlzIGVzdGFibGlzaGVzIHRoZSByZWFkT25seSBmdW5jdGlvbmFsaXR5XHJcbiAgICBsZXQgY29sczogYW55W10gPSBbXTtcclxuXHJcbiAgICAvLyBQcm9jZXNzIENvbHVtbnMgQW5kIENyZWF0ZSBDb2x1bW4gRGVmaW5pdGlvblxyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgdGhpcy5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuaWQgJiYgKGlzTnVsbE9yVW5kZWZpbmVkKGZpZWxkLmNvZGUpIHx8IGZpZWxkLmNvZGUgPT0gZmFsc2UpKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjb2w6IGFueTtcclxuXHJcbiAgICAgIGlmIChmaWVsZC5maWx0ZXJEaWN0aW9uYXJ5Q2xhc3MpIHtcclxuICAgICAgICAvLyB0aGlzIGlzIGEgZHJvcGRvd24gb2YgYW5vdGhlciBkaWN0aW9uYXJ5XHJcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLnNlY29uZGFyeURpY3Rpb25hcnlFbnRyaWVzLmZpbmQoXHJcbiAgICAgICAgICAoYTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmRpY3Rpb25hcnlOYW1lID09PSBmaWVsZC5maWx0ZXJEaWN0aW9uYXJ5Q2xhc3M7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29sID0ge1xyXG4gICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBoZWFkZXJOYW1lOiBmaWVsZC5kaXNwbGF5TmFtZSxcclxuICAgICAgICAgIGVkaXRhYmxlOiB0aGlzLmlzRWRpdGFibGUuYmluZCh0aGlzKSxcclxuICAgICAgICAgIGNlbGxSZW5kZXJlckZyYW1ld29yazogU2VsZWN0UmVuZGVyZXIsXHJcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTZWxlY3RFZGl0b3IsXHJcbiAgICAgICAgICBzZWxlY3RPcHRpb25zRGlzcGxheUZpZWxkOiBcImRpc3BsYXlcIixcclxuICAgICAgICAgIHNlbGVjdE9wdGlvbnNWYWx1ZUZpZWxkOiBcImlkXCIsXHJcbiAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlclZhbHVlR2V0dGVyOiB0aGlzLmNvbWJvRmlsdGVyVmFsdWVHZXR0ZXIsXHJcbiAgICAgICAgICBzZWxlY3RPcHRpb25zOiBbXSxcclxuICAgICAgICAgIGNvbXBhcmF0b3I6ICh2YWx1ZUEsIHZhbHVlQiwgbm9kZUEsIG5vZGVCLCBpc0ludmVydGVkKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZW50cmllcykge1xyXG4gICAgICAgICAgY29sLnNlbGVjdE9wdGlvbnMgPSBvcHRpb25zLmVudHJpZXMuc29ydChcclxuICAgICAgICAgICAgKG9wdGlvbkEsIG9wdGlvbkIpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uQiAmJiAhb3B0aW9uQSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKCFvcHRpb25BICYmICFvcHRpb25CKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChvcHRpb25BLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkIuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKChvcHRpb25CLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkEuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgY29sLmNvbXBhcmF0b3IgPSAodmFsdWVBLCB2YWx1ZUIsIG5vZGVBLCBub2RlQiwgaXNJbnZlcnRlZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuZW50cmllcykge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsdWVBICYmICF2YWx1ZUIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlQiAmJiAhdmFsdWVBKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIXZhbHVlQSAmJiAhdmFsdWVCKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25BID0gb3B0aW9ucy5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiAoXCJcIiArIGVudHJ5LmlkID09PSBcIlwiICsgdmFsdWVBKSk7XHJcbiAgICAgICAgICAgIGxldCBvcHRpb25CID0gb3B0aW9ucy5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiAoXCJcIiArIGVudHJ5LmlkID09PSBcIlwiICsgdmFsdWVCKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uQSAmJiAhb3B0aW9uQikge1xyXG4gICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob3B0aW9uQiAmJiAhb3B0aW9uQSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFvcHRpb25BICYmICFvcHRpb25CKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChvcHRpb25BLmRpc3BsYXkudG9Mb3dlckNhc2UoKSA+IG9wdGlvbkIuZGlzcGxheS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKG9wdGlvbkIuZGlzcGxheS50b0xvd2VyQ2FzZSgpID4gb3B0aW9uQS5kaXNwbGF5LnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29sLmNlbGxTdHlsZSA9IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICBsZXQgY29sdW1uOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBwYXJhbXMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb2xEZWYuZmllbGQgPT0gZmllbGQubmFtZSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbiA9IGZpZWxkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuZGlzcGxheU9yZGVyID0gZmllbGQuZGlzcGxheU9yZGVyO1xyXG4gICAgICAgIGNvbC5kaWN0aW9uYXJ5RGlzcGxheSA9IGZpZWxkLmRpY3Rpb25hcnlEaXNwbGF5O1xyXG4gICAgICAgIGNvbC5kaWN0aW9uYXJ5VG9vbHRpcCA9IGZpZWxkLmRpY3Rpb25hcnlUb29sdGlwO1xyXG5cclxuICAgICAgICAvLyBTZXQgZGVmYXVsdCBmaWx0ZXIgYXMgY29tcGFyZSBieSB0ZXh0L251bWJlclxyXG4gICAgICAgIC8vIGNvbC5maWx0ZXJSZW5kZXJlciA9IENvbXBhcmVGaWx0ZXJSZW5kZXJlcjtcclxuICAgICAgfSBlbHNlIGlmIChmaWVsZC50eXBlICYmIGZpZWxkLnR5cGUgPT0gXCJEYXRlXCIpIHtcclxuICAgICAgICAvL2RhdGUgdmFsdWVcclxuICAgICAgICBjb2wgPSB7XHJcbiAgICAgICAgICBmaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgIGhlYWRlck5hbWU6IGZpZWxkLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgICAgY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBEYXRlUmVuZGVyZXIsXHJcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBBZ0dyaWREYXRlQ2VsbEVkaXRvckNvbXBvbmVudCxcclxuICAgICAgICAgIGVkaXRhYmxlOiB0aGlzLmlzRWRpdGFibGUuYmluZCh0aGlzKSxcclxuICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgZGljdGlvbmFyeURpc3BsYXk6IGZpZWxkLmRpY3Rpb25hcnlEaXNwbGF5XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmNvbXBhcmF0b3IgPSAodmFsdWVBLCB2YWx1ZUIsIG5vZGVBLCBub2RlQiwgaXNJbnZlcnRlZCkgPT4ge1xyXG4gICAgICAgICAgbGV0IG51bSA9IHRoaXMuZGF0ZUNvbXBhcmF0b3IodmFsdWVBLCB2YWx1ZUIpO1xyXG4gICAgICAgICAgcmV0dXJuIGlzSW52ZXJ0ZWQgPyAtMSAqIG51bSA6IG51bTsgLy9kb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIHdpdGggaW52ZXJ0ZWQ/XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29sLmNlbGxTdHlsZSA9IHBhcmFtcyA9PiB7XHJcbiAgICAgICAgICB2YXIgY29sdW1uOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGZvciAobGV0IGZpZWxkIG9mIHBhcmFtcy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5LmZpZWxkcykge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbERlZi5maWVsZCA9PSBmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uID0gZmllbGQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAocGFyYW1zLmRhdGEuZWRpdE9yTmV3ICYmIHBhcmFtcy5kYXRhLmVkaXRPck5ldyA9PSBcIm5ld1wiKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIikge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7Y29sb3I6IFwiIzhhOTQ5OVwifTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHBhcmFtcy5jb250ZXh0LnJlYWRPbmx5IHx8IGNvbHVtbi5yZWFkT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIlJlYWQgT25seVwiIHx8IGNvbHVtbi5jcmVhdGVPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiQ3JlYXRlIE9ubHlcIiB8fCBjb2x1bW4uY29kZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7Y29sb3I6IFwiIzhhOTQ5OVwifTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5kaXNwbGF5T3JkZXIgPSBmaWVsZC5kaXNwbGF5T3JkZXI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcyBpcyBhIHN0cmluZyB2YWx1ZVxyXG4gICAgICAgIGNvbCA9IHtcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgaGVhZGVyTmFtZTogZmllbGQuZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICBlZGl0YWJsZTogdGhpcy5pc0VkaXRhYmxlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgIGRpY3Rpb25hcnlEaXNwbGF5OiBmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbC5jb21wYXJhdG9yID0gKHZhbHVlQSwgdmFsdWVCLCBub2RlQSwgbm9kZUIsIGlzSW52ZXJ0ZWQpID0+IHtcclxuICAgICAgICAgIGlmICh2YWx1ZUEgJiYgIXZhbHVlQikge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodmFsdWVCICYmICF2YWx1ZUEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghdmFsdWVBICYmICF2YWx1ZUIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHZhbHVlQS50b0xvd2VyQ2FzZSgpID4gdmFsdWVCLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKCh2YWx1ZUIudG9Mb3dlckNhc2UoKSA+IHZhbHVlQS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuY2VsbFN0eWxlID0gcGFyYW1zID0+IHtcclxuICAgICAgICAgIHZhciBjb2x1bW46IGFueSA9IHt9O1xyXG4gICAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgcGFyYW1zLmNvbnRleHQuY29tcG9uZW50UGFyZW50LmRpY3Rpb25hcnkuZmllbGRzKSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29sRGVmLmZpZWxkID09IGZpZWxkLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4gPSBmaWVsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLmNvbnRleHQucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJhbXMuY29udGV4dC5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIiB8fCBjb2x1bW4uY3JlYXRlT25seSB8fFxyXG4gICAgICAgICAgICAgIGNvbHVtbi5wcm90ZWN0aW9uVHlwZSA9PSBcIkNyZWF0ZSBPbmx5XCIgfHwgY29sdW1uLmNvZGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4ge2NvbG9yOiBcIiM4YTk0OTlcIn07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb2wuZGlzcGxheU9yZGVyID0gZmllbGQuZGlzcGxheU9yZGVyO1xyXG4gICAgICAgIC8vIFNldCBkZWZhdWx0IGZpbHRlciBhcyBjb21wYXJlIGJ5IHRleHQvbnVtYmVyXHJcbiAgICAgICAgLy8gY29sLmZpbHRlclJlbmRlcmVyID0gQ29tcGFyZUZpbHRlclJlbmRlcmVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb2xzLnB1c2goY29sKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOb3cgd2UgbmVlZCB0byBzb3J0IHRoZSBjb2x1bW5zXHJcbiAgICBpZiAoIXRoaXMuZGljdGlvbmFyeS5maWVsZHNbMF0uaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5T3JkZXJcIikpIHtcclxuICAgICAgLy8gZGVmYXVsdCBjYXNlLCBubyBkaXNwbGF5T3JkZXJcclxuICAgICAgY29scyA9IGNvbHMuc29ydChcclxuICAgICAgICAoYSwgYikgPT4ge1xyXG4gICAgICAgICAgaWYgKCFhLmhlYWRlck5hbWUgJiYgYi5oZWFkZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghYi5oZWFkZXJOYW1lICYmIGEuaGVhZGVyTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGEuZGljdGlvbmFyeURpc3BsYXkgPT09IHRydWUgJiYgYi5kaWN0aW9uYXJ5RGlzcGxheSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChiLmRpY3Rpb25hcnlEaXNwbGF5ID09PSB0cnVlICYmIGEuZGljdGlvbmFyeURpc3BsYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhLmRpY3Rpb25hcnlUb29sdGlwID09PSB0cnVlICYmIGIuZGljdGlvbmFyeVRvb2x0aXAgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYi5kaWN0aW9uYXJ5VG9vbHRpcCA9PT0gdHJ1ZSAmJiBhLmRpY3Rpb25hcnlUb29sdGlwID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBEaXNwbGF5T3JkZXIgY2FzZVxyXG4gICAgICAvLyBJIHRoaW5rIHRoaXMgd29ya3M/IENoZWNrIGxhdGVyXHJcbiAgICAgIGNvbHMgPSBjb2xzLnNvcnQoXHJcbiAgICAgICAgKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICghYS5oZWFkZXJOYW1lICYmIGIuaGVhZGVyTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIWIuaGVhZGVyTmFtZSAmJiBhLmhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGEuZGlzcGxheU9yZGVyIC0gYi5kaXNwbGF5T3JkZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFmdGVyIENvbHVtbnMgSGF2ZSBCZWVuIFNvcnRlZFxyXG4gICAgLy8gRGljdGlvbmFyeSBHcmlkIFdpbGwgU29ydCBUaGUgR3JpZCBBc2NlbmRpbmcgT3JkZXIgQnkgRmlyc3QgQ29sdW1uXHJcbiAgICBpZihjb2xzICAmJiBjb2xzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIGNvbHNbMF0uc29ydCA9IFwiYXNjXCI7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhQ29sdW1ucyA9IGNvbHM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFDb2x1bW5zKSAmJiB0aGlzLmdyaWRPcHRpb25zICYmIHRoaXMuZ3JpZE9wdGlvbnMuYXBpKSB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNldENvbHVtbkRlZnModGhpcy5kYXRhQ29sdW1ucyk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhbGZMb2FkZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY2FsbFF1ZXVlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIC8vIEEgY2FsbCBjb21wbGV0ZWQgd2hpbGUgYW5vdGhlciBjYWxsIHdhcyBxdWV1ZWQgc28gbWFrZSB0aGF0IGNhbGwgbm93XHJcbiAgICAgICAgdGhpcy5jYWxsUXVldWVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5QmVnaW4odGhpcy5jbGFzc05hbWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3RzWzBdLm5leHQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbGZMb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNFZGl0YWJsZShwYXJhbXMpOiBib29sZWFuIHtcclxuXHJcbiAgICBsZXQgaXNFZGl0YWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICBsZXQgY29sdW1uOiBhbnkgPSB7fTtcclxuICAgIGZvciAobGV0IGZpZWxkIG9mIHRoaXMuZGljdGlvbmFyeS5maWVsZHMpIHtcclxuICAgICAgaWYgKHBhcmFtcy5jb2xEZWYuZmllbGQgPT0gZmllbGQubmFtZSkge1xyXG4gICAgICAgIGNvbHVtbiA9IGZpZWxkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcmFtcy5kYXRhLmVkaXRPck5ldyAmJiBwYXJhbXMuZGF0YS5lZGl0T3JOZXcgPT0gXCJuZXdcIikge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIm5ldyBlZGl0YWJsZT9cIik7XHJcbiAgICAgIGlzRWRpdGFibGUgPSAhKHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSB8fCBjb2x1bW4ucmVhZE9ubHkgfHxcclxuICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJSZWFkIE9ubHlcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImVkaXQgZWRpdGFibGU/XCIpO1xyXG4gICAgICBpc0VkaXRhYmxlID0gISh0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgfHwgY29sdW1uLnJlYWRPbmx5IHx8XHJcbiAgICAgICAgY29sdW1uLnByb3RlY3Rpb25UeXBlID09IFwiUmVhZCBPbmx5XCIgfHwgY29sdW1uLmNyZWF0ZU9ubHkgfHxcclxuICAgICAgICBjb2x1bW4ucHJvdGVjdGlvblR5cGUgPT0gXCJDcmVhdGUgT25seVwiIHx8IGNvbHVtbi5jb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNFZGl0YWJsZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZURpY3Rpb25hcnlFbnRyaWVzKCk6IHZvaWQge1xyXG5cclxuICAgIGxldCBkZWxldGVSb3dzOiBhbnlbXSA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG5cclxuICAgIGZvciAobGV0IGRlbGV0ZUlkIG9mIHRoaXMuc2VsZWN0ZWRSb3dzKSB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIHRoaXMuZGljdGlvbmFyeUVudHJpZXMpIHtcclxuICAgICAgICBpZiAoZW50cnlbdGhpcy5pZENvbHVtbl0gPT09IGRlbGV0ZUlkKSB7XHJcbiAgICAgICAgICBkZWxldGVSb3dzLnB1c2goZW50cnkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5kZWxldGVEaWN0aW9uYXJ5RW50cmllcyh0aGlzLmNsYXNzTmFtZSwgZGVsZXRlUm93cykuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUVudHJpZXMoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURpY3Rpb25hcnkoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cclxuICAgIC8vIEltcG9ydGFudCB0byBub3RlIHRoaXMgd2lsbCBub3QgdXBkYXRlIGNlbGxzIHRvIHRoZSBkZW1vIGJ1dCB3aWxsIHdoZW4gaW1wb3J0ZWQgdG8gQ09SRSBvciBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLnVwZGF0ZURpY3Rpb25hcnlFbnRyaWVzKHRoaXMuY2xhc3NOYW1lLCBbZXZlbnQuZGF0YV0pLnN1YnNjcmliZShcclxuICAgICAgKGRhdGE6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5nZXREaWN0aW9uYXJ5RW50cmllcygpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRFbnRyaWVzKCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgfVxyXG5cclxuICBuZXdSb3dQb3N0KGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuYWRkRGljdGlvbmFyeUVudHJpZXModGhpcy5jbGFzc05hbWUsIFtkYXRhXSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKFxyXG4gICAgICAgICAgKGRhdGE6IE9iamVjdFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDxhbnk+ZGF0YVswXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgb25TYW1wbGVzR3JpZFJlYWR5KGV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xyXG5cclxuICAgIGV2ZW50LmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG9uR3JpZFNpemVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuXHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuYXBpKSB7XHJcbiAgICAgIGV2ZW50LmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2FibGVBZGRSb3coKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRpY3Rpb25hcnkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSAmJiB0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRpc2FibGVEZWxldGUoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRpY3Rpb25hcnkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGljdGlvbmFyeS5yZWFkT25seSAmJiB0aGlzLmRpY3Rpb25hcnkucmVhZE9ubHkgPT09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMgJiYgdGhpcy5ncmlkT3B0aW9ucy5hcGkgJiYgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpLmxlbmd0aCA9PT0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21ib0ZpbHRlclZhbHVlR2V0dGVyKHBhcmFtcyk6IGFueSB7XHJcblxyXG4gICAgbGV0IHZhbHVlID0gcGFyYW1zLmRhdGFbcGFyYW1zLmNvbERlZi5maWVsZF07XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGxldCBvcHRpb24gPSAoKHBhcmFtcy5jb2xEZWYgYXMgYW55KS5zZWxlY3RPcHRpb25zIGFzIGFueVtdKS5maW5kKChlbnRyeSkgPT4gKGVudHJ5W3BhcmFtcy5jb2xEZWYuc2VsZWN0T3B0aW9uc1ZhbHVlRmllbGRdID09PSB2YWx1ZSkpO1xyXG4gICAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW3BhcmFtcy5jb2xEZWYuc2VsZWN0T3B0aW9uc0Rpc3BsYXlGaWVsZF0gOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0FkZFJvdygpIHtcclxuXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTmV3Um93Q29tcG9uZW50LFxyXG4gICAgICB7XHJcbiAgICAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgICAgIGtleWJvYXJkOiBmYWxzZSxcclxuICAgICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5jb2xEZWZzID0gdGhpcy5kYXRhQ29sdW1ucztcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRpY3Rpb25hcnkgPSB0aGlzLmRpY3Rpb25hcnk7XHJcblxyXG4gICAgLy8gaWYgKCF0aGlzLm5ld1Jvd1N1YnNjcmlwdGlvbikgeyAvLyByZW1vdmVkIGJlY2F1c2UgaXQgd2FzIHByZXZlbnRpbmcgc2F2ZSBhZnRlciBjYW5jZWxcclxuICAgICAgLy8gdGVsbCBvdGhlciBhZy1ncmlkIHRvIGFkZCByb3cgdG8gaXRcclxuICAgICAgdGhpcy5uZXdSb3dTdWJzY3JpcHRpb24gPSBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5uZXdSb3dTdWJqZWN0LnN1YnNjcmliZShcclxuICAgICAgICAodGhlTmV3Um93OiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5RW50cmllcyA9IHRoZU5ld1Jvdy5jb25jYXQodGhpcy5kaWN0aW9uYXJ5RW50cmllcyk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5zZXRSb3dEYXRhKHRoaXMuZGljdGlvbmFyeUVudHJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5uZXdSb3dTdWJzY3JpcHRpb24gPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIEltcG9ydGFudCB0byBub3RlIHRoaXMgd2lsbCBub3QgYWRkIHJvd3MgdG8gdGhlIGRlbW8gYnV0IHdpbGwgd2hlbiBpbXBvcnRlZCB0byBDT1JFIG9yIG90aGVyIGFwcGxpY2F0aW9ucy5cclxuICAgICAgICAgIHRoaXMubmV3Um93UG9zdCh0aGVOZXdSb3dbMF0pLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0RGljdGlvbmFyeUVudHJpZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21wYXJhdGVyIFRvIENvbXBhcmUgMiBEYXRlc1xyXG4gICAqIEBwYXJhbSBkYXRlMSBEYXRlIDFcclxuICAgKiBAcGFyYW0gZGF0ZTIgRGF0ZSAyXHJcbiAgICovXHJcbiAgZGF0ZUNvbXBhcmF0b3IoZGF0ZTEsIGRhdGUyKSB7XHJcblxyXG4gICAgbGV0IGRhdGUxTnVtYmVyID0gbW9udGhUb0NvbXBhcmFibGVOdW1iZXIoZGF0ZTEpO1xyXG4gICAgbGV0IGRhdGUyTnVtYmVyID0gbW9udGhUb0NvbXBhcmFibGVOdW1iZXIoZGF0ZTIpO1xyXG5cclxuICAgIGlmIChkYXRlMU51bWJlciA9PT0gbnVsbCAmJiBkYXRlMk51bWJlciA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0ZTFOdW1iZXIgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRlMk51bWJlciA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0ZTFOdW1iZXIgLSBkYXRlMk51bWJlcjtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFeHRyYWN0cyBEYXRlIEFuZCBUdXJuIFRvIEEgTnVtZXJpY2FsIFZhbHVlIEZvciBDb21wYXJpbmcgUHVycG9zZXNcclxuICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY29tcGFyYWJsZSBudW1iZXJcclxuICovXHJcbmZ1bmN0aW9uIG1vbnRoVG9Db21wYXJhYmxlTnVtYmVyKGRhdGUpIHtcclxuXHJcbiAgaWYgKGRhdGUgPT09IHVuZGVmaW5lZCB8fCBkYXRlID09PSBudWxsIHx8IGRhdGUubGVuZ3RoICE9PSAxMCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBsZXQgeWVhck51bWJlciA9IGRhdGUuc3Vic3RyaW5nKDAsIDQpO1xyXG4gIGxldCBtb250aE51bWJlciA9IGRhdGUuc3Vic3RyaW5nKDUsIDcpO1xyXG4gIGxldCBkYXlOdW1iZXIgPSBkYXRlLnN1YnN0cmluZyg4LCAxMCk7XHJcblxyXG4gIHJldHVybiB5ZWFyTnVtYmVyICogMTAwMDAgKyBtb250aE51bWJlciAqIDEwMCArIGRheU51bWJlcjtcclxufVxyXG4iXX0=
|
|
@@ -94,13 +94,12 @@ export class NewRowComponent {
|
|
|
94
94
|
|
|
95
95
|
<div class="d-flex flex-row" style="padding: 0.5em;">
|
|
96
96
|
<div class="flex-grow-1"></div>
|
|
97
|
-
<button riRippleEffectDict class="btn btn-
|
|
98
|
-
style="
|
|
97
|
+
<button riRippleEffectDict class="btn ri-btn-cancel ms-3"
|
|
98
|
+
style="margin-right: 5px;"
|
|
99
99
|
(click)="activeModalSearch.dismiss('Cancel')">
|
|
100
100
|
Cancel
|
|
101
101
|
</button>
|
|
102
|
-
<button riRippleEffectDict class="btn btn-
|
|
103
|
-
style="color: var(--white-lightest);"
|
|
102
|
+
<button riRippleEffectDict class="btn ri-btn-save ms-3"
|
|
104
103
|
(click)="save()">
|
|
105
104
|
Save
|
|
106
105
|
</button>
|
|
@@ -132,13 +131,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
132
131
|
|
|
133
132
|
<div class="d-flex flex-row" style="padding: 0.5em;">
|
|
134
133
|
<div class="flex-grow-1"></div>
|
|
135
|
-
<button riRippleEffectDict class="btn btn-
|
|
136
|
-
style="
|
|
134
|
+
<button riRippleEffectDict class="btn ri-btn-cancel ms-3"
|
|
135
|
+
style="margin-right: 5px;"
|
|
137
136
|
(click)="activeModalSearch.dismiss('Cancel')">
|
|
138
137
|
Cancel
|
|
139
138
|
</button>
|
|
140
|
-
<button riRippleEffectDict class="btn btn-
|
|
141
|
-
style="color: var(--white-lightest);"
|
|
139
|
+
<button riRippleEffectDict class="btn ri-btn-save ms-3"
|
|
142
140
|
(click)="save()">
|
|
143
141
|
Save
|
|
144
142
|
</button>
|
|
@@ -146,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
146
144
|
</div>
|
|
147
145
|
`, styles: [".full-height{height:100%}.full-width{width:100%}.ag-theme-balham{font-family:hci-font}:host ::ng-deep .ag-ltr .ag-cell{border-right-color:var(--grey-darkest)}\n"] }]
|
|
148
146
|
}], ctorParameters: () => [{ type: i1.NgbActiveModal }] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvY29tcG9uZW50cy9uZXctcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQThEN0IsTUFBTSxPQUFPLGVBQWU7SUFHMUIsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUNuRSxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFPRCxZQUFtQixpQkFBaUM7UUFBakMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFnQjtRQW5CN0Msa0JBQWEsR0FBbUIsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQWNyRCxXQUFNLEdBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU0xQixJQUFJLENBQUMsV0FBVyxHQUFnQjtZQUM5QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZSxFQUFFLElBQUk7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLElBQUk7UUFDVCxzQkFBc0I7UUFDdEIsZ0VBQWdFO1FBQ2hFLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNCLFVBQVUsQ0FDUixHQUFHLEVBQUU7WUFDSCxJQUFJLE9BQU8sR0FBVSxFQUFFLENBQUM7WUFFeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQ3RCLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUNGLENBQUM7WUFFRiwrQkFBK0I7WUFDL0IsSUFBSSxPQUFPLEdBQVksSUFBSSxDQUFDO1lBRTVCLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2xFLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO29CQUU1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWU7MkJBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDekQsSUFBSSxVQUFVLEdBQVUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7d0JBQ25GLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNsRixDQUFDO29CQUVELHNFQUFzRTtvQkFDdEUsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFLENBQUM7d0JBQ3hFLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNsQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWix3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTix1Q0FBdUM7Z0JBQ3ZDLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFxQjtRQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDOytHQWxGVSxlQUFlO21HQUFmLGVBQWUsK0NBekR0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtDQzs7NEZBdUJNLGVBQWU7a0JBNUQzQixTQUFTOytCQUNJLFNBQVMsWUFFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtOZ2JBY3RpdmVNb2RhbH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7R3JpZEFwaSwgR3JpZE9wdGlvbnMsIEdyaWRSZWFkeUV2ZW50fSBmcm9tIFwiYWctZ3JpZC1jb21tdW5pdHlcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuZXctcm93XCIsXHJcbiAgICB0ZW1wbGF0ZTpcclxuICAgICAgYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIiBzdHlsZT1cImhlaWdodDoxMWVtOyB3aWR0aDo1OHZ3O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHg7IHdpZHRoOiAyMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZU1vZGFsU2VhcmNoLmRpc21pc3MoJ0NhbmNlbCcpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDhweDsgcGFkZGluZy1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gZnVsbC1oZWlnaHQgZnVsbC13aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwibmV3Um93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlQ2xpY2tFZGl0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJ0aGlzLm9uU2FtcGxlc0dyaWRSZWFkeSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvd1wiIHN0eWxlPVwicGFkZGluZzogMC41ZW07XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIHJpUmlwcGxlRWZmZWN0RGljdCBjbGFzcz1cImJ0biBidG4tcmVkIG1zLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IHZhcigtLXdoaXRlLWxpZ2h0ZXN0KTtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVNb2RhbFNlYXJjaC5kaXNtaXNzKCdDYW5jZWwnKVwiPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXMtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogdmFyKC0td2hpdGUtbGlnaHRlc3QpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiPlxyXG4gICAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgYFxyXG4gICAgLFxyXG4gICAgc3R5bGVzOiBbXHJcbiAgICAgIGBcclxuICAgICAgICAuZnVsbC1oZWlnaHQge1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYWctdGhlbWUtYmFsaGFte1xyXG4gICAgICAgICAgZm9udC1mYW1pbHk6IFwiaGNpLWZvbnRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDpob3N0IDo6bmctZGVlcCAuYWctbHRyIC5hZy1jZWxsIHtcclxuICAgICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tZ3JleS1kYXJrZXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIGBcclxuICAgIF1cclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIE5ld1Jvd0NvbXBvbmVudCB7XHJcbiAgcHVibGljIG5ld1Jvd1N1YmplY3Q6IFN1YmplY3Q8YW55W10+ID0gbmV3IFN1YmplY3Q8YW55W10+KCk7XHJcbiAgcHJpdmF0ZSBfY29sRGVmczogYW55W107XHJcbiAgcHVibGljIGdldCBjb2xEZWZzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbERlZnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGNvbERlZnModmFsdWU6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9jb2xEZWZzID0gdmFsdWU7XHJcbiAgICB0aGlzLm5ld1Jvd1swXVtcImVkaXRPck5ld1wiXSA9IFwibmV3XCI7IC8vbmVlZGVkIGZvciBlZGl0YWJsZSBmdW5jdGlvblxyXG4gICAgZm9yIChsZXQgY29sRGVmIG9mIHRoaXMuY29sRGVmcykge1xyXG4gICAgICB0aGlzLm5ld1Jvd1swXVtjb2xEZWYuZmllbGRdID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXdSb3c6IGFueVtdID0gW3t9XTtcclxuICBkaWN0aW9uYXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xyXG4gIGdyaWRBcGk6IEdyaWRBcGk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVNb2RhbFNlYXJjaDogTmdiQWN0aXZlTW9kYWwpIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSA8R3JpZE9wdGlvbnM+e1xyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgY29tcG9uZW50UGFyZW50OiB0aGlzXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpIHtcclxuICAgIC8vIGdldCBjb250ZW50cyBvZiByb3dcclxuICAgIC8vbWFraW5nIHN1cmUgdGhlIGdyaWQgaGFzIHN0b3BwZWQgZWRpdGluZyB3aGVuIHVzZXIgY2xpY2tzIHNhdmVcclxuICAgIC8vIHdhaXRpbmcgYSB0aWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGFzeW5jIGV2ZW50IGhhcyBmaW5pc2hlZFxyXG4gICAgdGhpcy5ncmlkQXBpLnN0b3BFZGl0aW5nKCk7XHJcblxyXG4gICAgc2V0VGltZW91dChcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGxldCBuZXdEYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmdyaWRBcGkuZm9yRWFjaE5vZGUoXHJcbiAgICAgICAgICAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld0RhdGEucHVzaChub2RlLmRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIHZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiByb3dcclxuICAgICAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGNvbERlZiBvZiB0aGlzLmNvbERlZnMpIHtcclxuICAgICAgICAgIGlmIChjb2xEZWYuZGljdGlvbmFyeURpc3BsYXkgPT0gdHJ1ZSAmJiAhbmV3RGF0YVswXVtjb2xEZWYuZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGxldCBkaXNwbGF5RGljdEZpZWxkID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQgJiYgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvbXBvbmVudFBhcmVudFxyXG4gICAgICAgICAgICAgICYmIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeSkge1xyXG4gICAgICAgICAgICAgIGxldCBkaWN0RmllbGRzOiBhbnlbXSA9IHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb21wb25lbnRQYXJlbnQuZGljdGlvbmFyeS5maWVsZHM7XHJcbiAgICAgICAgICAgICAgZGlzcGxheURpY3RGaWVsZCA9IGRpY3RGaWVsZHMuZmluZChmaWVsZCA9PiAoZmllbGQuZGljdGlvbmFyeURpc3BsYXkgPT09IHRydWUpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9kb24ndCByZXF1aXJlIGRpc3BsYXlGaWVsZCBpZiBpdCBpcyByZWFkb25seSB3aGVuIG1ha2luZyBhIG5ldyBlbnRyeVxyXG4gICAgICAgICAgICBpZiAoZGlzcGxheURpY3RGaWVsZCAmJiBkaXNwbGF5RGljdEZpZWxkLnByb3RlY3Rpb25UeXBlID09PSBcIlJlYWQgT25seVwiKSB7XHJcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgICAgLy8gc2VuZCBjb250ZW50cyBvZiByb3cgdG8gb3RoZXIgYWctZ3JpZFxyXG4gICAgICAgICAgdGhpcy5uZXdSb3dTdWJqZWN0Lm5leHQobmV3RGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsU2VhcmNoLmRpc21pc3MoXCJDYW5jZWxcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHNpZ25hbCB0aGV5IG5lZWQgdG8gZmlsbCBvdXQgdGhlIHJvd1xyXG4gICAgICAgICAgYWxlcnQoXCJUaGUgZGlzcGxheSB2YWx1ZSBpcyByZXF1aXJlZCwgcGxlYXNlIGVudGVyIGEgdmFsdWUgYW5kIHRoZW4gc2F2ZSBhZ2Fpbi5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2FtcGxlc0dyaWRSZWFkeShldmVudDogR3JpZFJlYWR5RXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMuY29sRGVmcyk7XHJcbiAgICBldmVudC5hcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgdGhpcy5ncmlkQXBpID0gZXZlbnQuYXBpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWN0aW9uYXJ5LWVkaXRvci9zcmMvY29tcG9uZW50cy9uZXctcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7OztBQTZEN0IsTUFBTSxPQUFPLGVBQWU7SUFHMUIsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLDhCQUE4QjtRQUNuRSxLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFPRCxZQUFtQixpQkFBaUM7UUFBakMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFnQjtRQW5CN0Msa0JBQWEsR0FBbUIsSUFBSSxPQUFPLEVBQVMsQ0FBQztRQWNyRCxXQUFNLEdBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU0xQixJQUFJLENBQUMsV0FBVyxHQUFnQjtZQUM5QixPQUFPLEVBQUU7Z0JBQ1AsZUFBZSxFQUFFLElBQUk7YUFDdEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLElBQUk7UUFDVCxzQkFBc0I7UUFDdEIsZ0VBQWdFO1FBQ2hFLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTNCLFVBQVUsQ0FDUixHQUFHLEVBQUU7WUFDSCxJQUFJLE9BQU8sR0FBVSxFQUFFLENBQUM7WUFFeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQ3RCLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUNGLENBQUM7WUFFRiwrQkFBK0I7WUFDL0IsSUFBSSxPQUFPLEdBQVksSUFBSSxDQUFDO1lBRTVCLEtBQUssSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2xFLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO29CQUU1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWU7MkJBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDekQsSUFBSSxVQUFVLEdBQVUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7d0JBQ25GLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNsRixDQUFDO29CQUVELHNFQUFzRTtvQkFDdEUsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFLENBQUM7d0JBQ3hFLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2pCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNsQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWix3Q0FBd0M7Z0JBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTix1Q0FBdUM7Z0JBQ3ZDLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFxQjtRQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDOytHQWxGVSxlQUFlO21HQUFmLGVBQWUsK0NBeER0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUNDOzs0RkF1Qk0sZUFBZTtrQkEzRDNCLFNBQVM7K0JBQ0ksU0FBUyxZQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TmdiQWN0aXZlTW9kYWx9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge0dyaWRBcGksIEdyaWRPcHRpb25zLCBHcmlkUmVhZHlFdmVudH0gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibmV3LXJvd1wiLFxyXG4gICAgdGVtcGxhdGU6XHJcbiAgICAgIGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCIgc3R5bGU9XCJoZWlnaHQ6MTFlbTsgd2lkdGg6NTh2dztcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4OyB3aWR0aDogMjBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVNb2RhbFNlYXJjaC5kaXNtaXNzKCdDYW5jZWwnKVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA4cHg7IHBhZGRpbmctbGVmdDogOHB4O1wiPlxyXG4gICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtIGZ1bGwtaGVpZ2h0IGZ1bGwtd2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cIm5ld1Jvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZUNsaWNrRWRpdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChncmlkUmVhZHkpPVwidGhpcy5vblNhbXBsZXNHcmlkUmVhZHkoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3dcIiBzdHlsZT1cInBhZGRpbmc6IDAuNWVtO1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiByaVJpcHBsZUVmZmVjdERpY3QgY2xhc3M9XCJidG4gcmktYnRuLWNhbmNlbCBtcy0zXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZU1vZGFsU2VhcmNoLmRpc21pc3MoJ0NhbmNlbCcpXCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHJpUmlwcGxlRWZmZWN0RGljdCBjbGFzcz1cImJ0biByaS1idG4tc2F2ZSBtcy0zXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCI+XHJcbiAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBgXHJcbiAgICAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgYFxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZnVsbC13aWR0aCB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5hZy10aGVtZS1iYWxoYW17XHJcbiAgICAgICAgICBmb250LWZhbWlseTogXCJoY2ktZm9udFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgOmhvc3QgOjpuZy1kZWVwIC5hZy1sdHIgLmFnLWNlbGwge1xyXG4gICAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB2YXIoLS1ncmV5LWRhcmtlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgYFxyXG4gICAgXVxyXG4gIH1cclxuKVxyXG5leHBvcnQgY2xhc3MgTmV3Um93Q29tcG9uZW50IHtcclxuICBwdWJsaWMgbmV3Um93U3ViamVjdDogU3ViamVjdDxhbnlbXT4gPSBuZXcgU3ViamVjdDxhbnlbXT4oKTtcclxuICBwcml2YXRlIF9jb2xEZWZzOiBhbnlbXTtcclxuICBwdWJsaWMgZ2V0IGNvbERlZnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sRGVmcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgY29sRGVmcyh2YWx1ZTogYW55W10pIHtcclxuICAgIHRoaXMuX2NvbERlZnMgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV3Um93WzBdW1wiZWRpdE9yTmV3XCJdID0gXCJuZXdcIjsgLy9uZWVkZWQgZm9yIGVkaXRhYmxlIGZ1bmN0aW9uXHJcbiAgICBmb3IgKGxldCBjb2xEZWYgb2YgdGhpcy5jb2xEZWZzKSB7XHJcbiAgICAgIHRoaXMubmV3Um93WzBdW2NvbERlZi5maWVsZF0gPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5ld1JvdzogYW55W10gPSBbe31dO1xyXG4gIGRpY3Rpb25hcnk6IGFueTtcclxuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XHJcbiAgZ3JpZEFwaTogR3JpZEFwaTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGFjdGl2ZU1vZGFsU2VhcmNoOiBOZ2JBY3RpdmVNb2RhbCkge1xyXG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IDxHcmlkT3B0aW9ucz57XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjb21wb25lbnRQYXJlbnQ6IHRoaXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCkge1xyXG4gICAgLy8gZ2V0IGNvbnRlbnRzIG9mIHJvd1xyXG4gICAgLy9tYWtpbmcgc3VyZSB0aGUgZ3JpZCBoYXMgc3RvcHBlZCBlZGl0aW5nIHdoZW4gdXNlciBjbGlja3Mgc2F2ZVxyXG4gICAgLy8gd2FpdGluZyBhIHRpY2sgdG8gbWFrZSBzdXJlIHRoYXQgYXN5bmMgZXZlbnQgaGFzIGZpbmlzaGVkXHJcbiAgICB0aGlzLmdyaWRBcGkuc3RvcEVkaXRpbmcoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgbGV0IG5ld0RhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuZ3JpZEFwaS5mb3JFYWNoTm9kZShcclxuICAgICAgICAgIChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbmV3RGF0YS5wdXNoKG5vZGUuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGNvbnRlbnRzIG9mIHJvd1xyXG4gICAgICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgY29sRGVmIG9mIHRoaXMuY29sRGVmcykge1xyXG4gICAgICAgICAgaWYgKGNvbERlZi5kaWN0aW9uYXJ5RGlzcGxheSA9PSB0cnVlICYmICFuZXdEYXRhWzBdW2NvbERlZi5maWVsZF0pIHtcclxuICAgICAgICAgICAgbGV0IGRpc3BsYXlEaWN0RmllbGQgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dCAmJiB0aGlzLmdyaWRPcHRpb25zLmNvbnRleHQuY29tcG9uZW50UGFyZW50XHJcbiAgICAgICAgICAgICAgJiYgdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5KSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRpY3RGaWVsZHM6IGFueVtdID0gdGhpcy5ncmlkT3B0aW9ucy5jb250ZXh0LmNvbXBvbmVudFBhcmVudC5kaWN0aW9uYXJ5LmZpZWxkcztcclxuICAgICAgICAgICAgICBkaXNwbGF5RGljdEZpZWxkID0gZGljdEZpZWxkcy5maW5kKGZpZWxkID0+IChmaWVsZC5kaWN0aW9uYXJ5RGlzcGxheSA9PT0gdHJ1ZSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2Rvbid0IHJlcXVpcmUgZGlzcGxheUZpZWxkIGlmIGl0IGlzIHJlYWRvbmx5IHdoZW4gbWFraW5nIGEgbmV3IGVudHJ5XHJcbiAgICAgICAgICAgIGlmIChkaXNwbGF5RGljdEZpZWxkICYmIGRpc3BsYXlEaWN0RmllbGQucHJvdGVjdGlvblR5cGUgPT09IFwiUmVhZCBPbmx5XCIpIHtcclxuICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgICAvLyBzZW5kIGNvbnRlbnRzIG9mIHJvdyB0byBvdGhlciBhZy1ncmlkXHJcbiAgICAgICAgICB0aGlzLm5ld1Jvd1N1YmplY3QubmV4dChuZXdEYXRhKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWxTZWFyY2guZGlzbWlzcyhcIkNhbmNlbFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gc2lnbmFsIHRoZXkgbmVlZCB0byBmaWxsIG91dCB0aGUgcm93XHJcbiAgICAgICAgICBhbGVydChcIlRoZSBkaXNwbGF5IHZhbHVlIGlzIHJlcXVpcmVkLCBwbGVhc2UgZW50ZXIgYSB2YWx1ZSBhbmQgdGhlbiBzYXZlIGFnYWluLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TYW1wbGVzR3JpZFJlYWR5KGV2ZW50OiBHcmlkUmVhZHlFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuYXBpLnNldENvbHVtbkRlZnModGhpcy5jb2xEZWZzKTtcclxuICAgIGV2ZW50LmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICB0aGlzLmdyaWRBcGkgPSBldmVudC5hcGk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|