@ieeesa-npm/groups 0.14.6 → 0.15.1

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.
@@ -2,13 +2,13 @@ import { Component, EventEmitter, Output, ViewChild, ViewEncapsulation, } from '
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { Validators } from '@angular/forms';
4
4
  import { AlignType, FormControlType, DynamicFormComponent, } from '@ieeesa-npm/presentation';
5
- import { AlertsService, AlertType, } from '@ieeesa-npm/utility';
5
+ import { AlertsService, } from '@ieeesa-npm/utility';
6
6
  import * as screenTexts from '../../assets/constants.json';
7
7
  import { GroupsValidationPatterns } from '../../assets/form-validations';
8
8
  import { HttpErrorResponse } from '@angular/common/http';
9
9
  import { MatDialogModule } from '@angular/material/dialog';
10
10
  import { Subject, takeUntil } from 'rxjs';
11
- import { FormStatus } from '../../models/form-status.model';
11
+ import { FormStatus, AlertType } from '@ieeesa-npm/models';
12
12
  import { GroupFunctionType } from '../../models/group-function-type.model';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "../../services/groups.service";
@@ -516,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
516
516
  type: ViewChild,
517
517
  args: [DynamicFormComponent]
518
518
  }] } });
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwsU0FBUyxFQUdULGVBQWUsRUFDZixvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsYUFBYSxFQUNiLFNBQVMsR0FFVixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFFM0UsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXRCOzs7OztHQUtHO0FBV0gsTUFBTSxPQUFPLG9CQUFvQjtJQW9DL0IsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ2xDLGFBQTRCO0lBQ3BDLDBDQUEwQztJQUNsQyx5QkFBb0Q7SUFDNUQsMENBQTBDO0lBQ25DLFlBQTJCLENBQUMsOENBQThDOztRQUp6RSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUU1Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBRXJELGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBMUNwQyxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFDcEQ7OztXQUdHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRDs7O1dBR0c7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxvQkFBZSxHQUFHLFdBQVcsRUFBRSxXQUFXLENBQUM7UUFDM0MsOERBQThEO1FBQzlELGNBQVMsR0FBUSxXQUFXLENBQUM7UUFDN0Isb0JBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUM7UUFDL0QscUJBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7UUFDakUsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBYSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBR2hFLHNCQUFpQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFLbkMsd0JBQW1CLEdBQXVCLEVBQUUsQ0FBQztRQUM3QywrQkFBMEIsR0FBbUIsRUFBRSxDQUFDO1FBQ2hELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixzQkFBaUIsR0FBc0I7WUFDckMsRUFBRSxFQUFFLENBQUM7WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCO1lBQ3JELE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQztJQVVDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUNwRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7WUFDckQsSUFBSSxDQUFDLHVCQUF1QjtnQkFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLGFBQWE7Z0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FDM0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxDQUMxQyxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFO2dCQUNyQyxNQUFNLGdCQUFnQixHQUNwQixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxFQUFFLFlBQVk7b0JBQ3pELEVBQUUsZ0JBQWdCLENBQUM7Z0JBQ3ZCLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxFQUFFO29CQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQy9ELEVBQUUsRUFBRSxXQUFXO3dCQUNmLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSTtxQkFDcEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDdEMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUNoRSxDQUFDO2lCQUNIO3FCQUFNO29CQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JFO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FDOUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3BDLEVBQUU7b0JBQ0YsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO2lCQUNqQixDQUFDLENBQ0gsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUN0QyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ1osVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEtBQUssQ0FBQztvQkFDekMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQ25ELENBQUM7YUFDSDtZQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2RTtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUI7UUFDZixJQUFJLGNBQTJCLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsSUFBSSxFQUFFO1lBQ3JELGNBQWMsR0FBRztnQkFDZixJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVM7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTO2dCQUM3QyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxJQUFJO2dCQUNsRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7Z0JBQzFELGlCQUFpQixFQUNmLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLFNBQVM7Z0JBQzNELFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQztTQUNIO2FBQU07WUFDTCxjQUFjLEdBQUc7Z0JBQ2YsSUFBSSxFQUFFLGVBQWUsRUFBRSxNQUFNO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7Z0JBQ25ELFdBQVcsRUFBRSxXQUFXO2dCQUN4QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTtnQkFDcEUsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDakMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUNoQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUztnQkFDNUQsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTO2dCQUM1RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxTQUFTO2dCQUMzRCxXQUFXLEVBQUUsRUFBRTthQUNoQixDQUFDO1NBQ0g7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsOERBQThEO0lBQzlELGVBQWUsQ0FBQyxTQUFlO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsUUFBUSxFQUFFO3dCQUNSLElBQUksQ0FBQyxpQkFBaUIsRUFBRTt3QkFDeEI7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLOzRCQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7NEJBQ25ELFdBQVcsRUFBRSxXQUFXOzRCQUN4QixvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hELEtBQUssRUFDSCxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQ0FDL0MsQ0FBQyxDQUFDLFNBQVM7b0NBQ1QsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTO29DQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVM7Z0NBQ3JDLENBQUMsQ0FBQyxFQUFFOzRCQUNSLFdBQVcsRUFBRSxFQUFFOzRCQUNmLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTOzRCQUM1RCxtQkFBbUIsRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTOzRCQUMxRCxVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQ2xCLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FDdkQ7Z0NBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxTQUFTLENBQUM7NkJBQ3hEOzRCQUNELGVBQWUsRUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7NEJBQ3hELFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDNUQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUzt5QkFDNUQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLOzRCQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7NEJBQ25ELFdBQVcsRUFBRSxXQUFXOzRCQUN4QixvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hELEtBQUssRUFDSCxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQ0FDL0MsQ0FBQyxDQUFDLFNBQVM7b0NBQ1QsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTO29DQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGNBQWM7Z0NBQzFDLENBQUMsQ0FBQyxFQUFFOzRCQUNSLG1CQUFtQixFQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVM7NEJBQzFELFdBQVcsRUFBRSxFQUFFOzRCQUNmLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTOzRCQUM1RCxVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQ2xCLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FDdEQ7Z0NBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxTQUFTLENBQUM7NkJBQ3hEOzRCQUNELGVBQWUsRUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVM7NEJBQ3hELFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDNUQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUzt5QkFDNUQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTOzRCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsVUFBVTs0QkFDOUMsV0FBVyxFQUFFLFlBQVk7NEJBQ3pCLG1CQUFtQixFQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVU7NEJBQzNELEtBQUssRUFDSCxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQ0FDL0MsQ0FBQyxDQUFDLFNBQVM7b0NBQ1QsQ0FBQyxDQUFDLFNBQVMsRUFBRSxVQUFVO29DQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVM7Z0NBQ3JDLENBQUMsQ0FBQyxFQUFFOzRCQUNSLFdBQVcsRUFBRSxFQUFFOzRCQUNmLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVOzRCQUM3RCxRQUFRLEVBQUUsSUFBSTs0QkFDZCxTQUFTLEVBQ1AsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsYUFBYTs0QkFDekQsVUFBVSxFQUFFO2dDQUNWLFVBQVUsQ0FBQyxTQUFTLENBQ2xCLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FDeEQ7Z0NBQ0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLENBQUM7NkJBQ3pEOzRCQUNELGVBQWUsRUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVU7NEJBQ3pELFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVTs0QkFDN0QsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVTt5QkFDN0Q7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUU7WUFDbkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsZUFBMEI7UUFDOUMsSUFDRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO1lBQ2hELGVBQWUsRUFBRSxhQUFhLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixLQUFLLGlCQUFpQixDQUFDLE1BQU0sRUFDbkQ7WUFDQSxJQUFJLENBQUMseUJBQXlCLENBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsV0FBVyxFQUM1RDtnQkFDRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVM7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxXQUFXO2dCQUMvQyxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsS0FBSyxFQUNILElBQUksQ0FBQyx1QkFBdUIsRUFBRSxTQUFTO29CQUN2QyxlQUFlLEVBQUUsU0FBUztnQkFDNUIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXO2dCQUM5RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxXQUFXO2dCQUM3RCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FDRixDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsSUFBSSxFQUFFO2dCQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsV0FBVyxFQUM1RDtvQkFDRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFlBQVk7b0JBQ25DLFdBQVcsRUFBRSxtQkFBbUI7b0JBQ2hDLFNBQVMsRUFDUCxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsaUJBQWlCO29CQUMzRCxpQkFBaUIsRUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUI7b0JBQ25FLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7b0JBQ3pDLFFBQVEsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxLQUFLLENBQUM7aUJBQ3ZELENBQ0YsQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUM1QixJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLFdBQVcsRUFDNUQ7d0JBQ0UsSUFBSSxFQUFFLGVBQWUsRUFBRSxNQUFNO3dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsY0FBYyxHQUFHLEdBQUc7d0JBQ3hELFdBQVcsRUFBRSxnQkFBZ0I7d0JBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUM1QyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUMzRCxDQUFDLENBQUMsQ0FBQzt3QkFDSixvQkFBb0IsRUFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7d0JBQ2hELFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7d0JBQ2pDLGVBQWUsRUFBRSxJQUFJLENBQUMsMEJBQTBCO3dCQUNoRCxXQUFXLEVBQUUsRUFBRTt3QkFDZixjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYzt3QkFDakUsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjO3dCQUNqRSxpQkFBaUIsRUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxjQUFjO3FCQUNqRSxDQUNGLENBQUM7aUJBQ0g7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHlCQUF5QixDQUN2QixhQUFxQixFQUNyQixXQUF3QjtRQUV4QixJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUM1QyxhQUFhLEVBQ2IsQ0FBQyxFQUNELFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLElBQWlCO1FBQzVCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUN4QyxpREFBaUQ7WUFDakQsSUFBSSxDQUFDLGlCQUFpQixLQUFLLGlCQUFpQixDQUFDLElBQUk7Z0JBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCw4REFBOEQ7SUFDOUQsV0FBVyxDQUFDLFFBQWE7UUFDdkIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztnQkFDOUIsY0FBYyxFQUFFLFFBQVEsRUFBRSxTQUFTO2dCQUNuQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFO2dCQUNsQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVU7Z0JBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxJQUFJLElBQUk7YUFDdkQ7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWE7YUFDZixXQUFXLENBQUMsa0JBQWtCLENBQUM7YUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3BDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDhEQUE4RDtJQUM5RCxTQUFTLENBQUMsUUFBYTtRQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLDBCQUEwQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQXFCO1lBQ3pDLE9BQU8sRUFBRTtnQkFDUCxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7Z0JBQzlCLGNBQWMsRUFBRSxRQUFRLEVBQUUsU0FBUztnQkFDbkMsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVO2dCQUMvQixhQUFhLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtvQkFDdEMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsRUFBRTtvQkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLElBQUksSUFBSTtnQkFDakQsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFpQjthQUNuRDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYTthQUNmLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQzthQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDcEM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLEtBQXdCO1FBQ25DLE1BQU0sVUFBVSxHQUFhLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztRQUM1RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdEQ7YUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUU7WUFDdEQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUMsSUFBaUI7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLE9BQTBCLEVBQUUsU0FBb0I7UUFDL0QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7WUFDN0IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBZTtRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhO2FBQ2Ysc0JBQXNCLENBQUMsT0FBTyxDQUFDO2FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzNCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUM7d0JBQ3BDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTzt3QkFDbkIsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUcsSUFBSSxHQUFHLE1BQU0sRUFBRSxZQUFZLEdBQUcsR0FBRztxQkFDNUQsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixLQUFLLENBQ04sQ0FBQztvQkFDRixJQUFJLENBQUMsd0JBQXdCLENBQzNCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLDBCQUEwQixDQUNoQyxDQUFDO2lCQUNIO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUMzQixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUM3QyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCx3QkFBd0IsQ0FDdEIsZUFBdUIsRUFDdkIsd0JBQWdDO0lBQ2hDLDhEQUE4RDtJQUM5RCxLQUFVO1FBRVYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEMsSUFDRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVztnQkFDakQsZUFBZTtnQkFDakIsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztnQkFFMUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1QkFBdUIsQ0FBQyxNQUF5QjtRQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDakQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLElBQWlCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FDMUQsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FDM0IsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQzdELENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0E5akJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG1KQUZwQixDQUFDLGFBQWEsQ0FBQyxnRkFxQ2Ysb0JBQW9CLGdEQzVGakMsaW9CQWN1QixnOFhEcUNYLFlBQVksbUlBQUUsb0JBQW9CLHFsQ0FBRSxlQUFlOzs0RkFNbEQsb0JBQW9CO2tCQVZoQyxTQUFTOytCQUVFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxDQUFDLGlCQUcvQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsYUFBYSxDQUFDO3dLQVFoQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkF3QjBCLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUdyaWQsXHJcbiAgRm9ybU1vZGVsLFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBBbGlnblR5cGUsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbiAgRmllbGRDb25maWcsXHJcbiAgRm9ybUNvbnRyb2xUeXBlLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBBbGVydFR5cGUsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2Zvcm0tdmFsaWRhdGlvbnMnO1xyXG5pbXBvcnQgeyBDcmVhdGVHcm91cFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY3JlYXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IEVkaXRHcm91cFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1TdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgUGFyZW50R3JvdXBzSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9wYXJlbnQtZ3JvdXBzLWluZm8ubW9kZWwnO1xyXG5jb25zdCBJTkRFWF9WQUxVRSA9IDQ7XHJcblxyXG4vKipcclxuICogQ3JlYXRlR3JvdXBDb21wb25lbnQgdXNlcyBEeW5hbWljRm9ybUNvbXBvbmVudCB0byBidWlsZCBjcmVhdGUgbmV3IGdyb3VwIGZvcm0gb3IgZWRpdCBncm91cCBhbmQgaW1wbGVtZW50IHRoZSBmdW5jdGlvbmFsaXRpZXMgb2Ygc3VibWlzc2lvbiBvZiBmb3JtIGFuZCBoYW5kbGluZyBzdWNjZXNzIGFuZCBlcnJvciBzY2VuYXJpb3MuXHJcbiAqIEBjbGFzcyBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKiBAaW1wbGVtZW50cyB7T25EZXN0cm95fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2llZWVzYS1jcmVhdGUtZ3JvdXAnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnQsIE1hdERpYWxvZ01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBwcm92aWRlcnM6IFtBbGVydHNTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VjY2Vzc2Z1bGx5IHN1Ym1pdHRlZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgc3VibWl0Rm9ybVJlc3BvbnNlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBjYW5jZWxsZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY3JlYXRlR3JvdXBUZXh0ID0gc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBsZWZ0QnV0dG9uTGFiZWwgPSB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5yaWdodEJ1dHRvbkxhYmVsO1xyXG4gIGlzTGVnZW5kVmlzaWJsZSA9IGZhbHNlO1xyXG4gIGlzTGVmdEJ1dHRvbk5lZWRlZCA9IHRydWU7XHJcbiAgY29sV2lkdGg6IEZvcm1HcmlkID0geyB4czogMTIsIHhsOiAxMiwgc206IDEyLCBtZDogMTIsIGxnOiAxMiB9O1xyXG4gIGZvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBncm91cFR5cGVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgYWN0aW9uQnV0dG9uQWxpZ24gPSBBbGlnblR5cGUuTEVGVDtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkR3JvdXBJbmZvITogR3JvdXBJbmZvIHwgdW5kZWZpbmVkO1xyXG4gIGdyb3VwRnVuY3Rpb25UeXBlITogR3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgc2VsZWN0ZWRHcm91cFBhcmVudEluZm8hOiBHcm91cEluZm8gfCB1bmRlZmluZWQ7XHJcbiAgYWxsb3dlZFBhcmVudEdyb3VwczogUGFyZW50R3JvdXBzSW5mb1tdID0gW107XHJcbiAgYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgaXNQYXJlbnRHcm91cENoYW5nZWQgPSBmYWxzZTtcclxuICBzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24gPSB7XHJcbiAgICBpZDogMSxcclxuICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmNoYW5nZVBhcmVudEdyb3VwLFxyXG4gICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgfTtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KSBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb25cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U6IEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uLFxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY3JlYXRlIGdyb3VwIGZvcm0gZ3JvdXAgYXJyYXkgYW5kIGNvbXBvbmVudC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldEdyb3VwRnVuY3Rpb25UeXBlKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZEdyb3VwSW5mbygpO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwUGFyZW50SW5mbyA9XHJcbiAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZEdyb3VwUGFyZW50SW5mbygpO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBQYXJlbnRJZClcclxuICAgICAgICB0aGlzLmdldFBhcmVudEdyb3Vwcyh0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkKTtcclxuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwVHlwZXMgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldEZvcm1hdHRlZEdyb3VwVHlwZXMoXHJcbiAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRMb2FkZWRHcm91cFR5cGVzKClcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwVHlwZSkge1xyXG4gICAgICAgIGNvbnN0IGFsbG93ZWRHcm91cFR5cGUgPVxyXG4gICAgICAgICAgZ3JvdXBUeXBlc1t0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFR5cGVdPy5idXNpbmVzc1J1bGVcclxuICAgICAgICAgICAgPy5hbGxvd2VkR3JvdXBUeXBlO1xyXG4gICAgICAgIGlmIChhbGxvd2VkR3JvdXBUeXBlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IGFsbG93ZWRHcm91cFR5cGUubWFwKChncm91cFR5cGVJZDogc3RyaW5nKSA9PiAoe1xyXG4gICAgICAgICAgICBpZDogZ3JvdXBUeXBlSWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGdyb3VwVHlwZXNbZ3JvdXBUeXBlSWRdPy5uYW1lLFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cFR5cGVzLmZpbHRlcihcclxuICAgICAgICAgICAgKGdyb3VwVHlwZSkgPT4gIWdyb3VwVHlwZXNbZ3JvdXBUeXBlLmlkXT8uYnVzaW5lc3NSdWxlPy5pc0FkbWluXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2Uoc2NyZWVuVGV4dHM/LmVycm9ycz8uRVIxMDAwLCBBbGVydFR5cGUuRVJST1IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSBPYmplY3QuZW50cmllcyhncm91cFR5cGVzKS5tYXAoXHJcbiAgICAgICAgICAoW2lkLCBpdGVtXTogW3N0cmluZywgR3JvdXBUeXBlXSkgPT4gKHtcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cFR5cGVzLmZpbHRlcihcclxuICAgICAgICAgIChncm91cFR5cGUpID0+XHJcbiAgICAgICAgICAgIGdyb3VwVHlwZXNbZ3JvdXBUeXBlLmlkXT8uaGllcmFyY2h5ID09PSAwICYmXHJcbiAgICAgICAgICAgICFncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmJ1c2luZXNzUnVsZT8uaXNBZG1pblxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZ3JvdXBUeXBlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2Uoc2NyZWVuVGV4dHM/LmVycm9ycz8uWycxMDEwJ10sIEFsZXJ0VHlwZS5FUlJPUik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgYW5kIHJldHVybnMgdGhlIGdyb3VwIHR5cGUgZm9ybSBmaWVsZCBiYXNlZCBvbiBlZGl0IGdyb3VwIG9yIG5vdC5cclxuICAgKiBAcmV0dXJuIHtGaWVsZENvbmZpZ30gLWdyb3VwIHR5cGUgZm9ybSBmaWVsZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVGaWVsZCgpOiBGaWVsZENvbmZpZyB7XHJcbiAgICBsZXQgZ3JvdXBUeXBlRmllbGQ6IEZpZWxkQ29uZmlnO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQpIHtcclxuICAgICAgZ3JvdXBUeXBlRmllbGQgPSB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGNvbnRyb2xOYW1lOiAnZ3JvdXBUeXBlJyxcclxuICAgICAgICBpc1JlYWRvbmx5OiB0cnVlLFxyXG4gICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFR5cGVJbmZvPy5uYW1lLFxyXG4gICAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmVkaXRHcm91cD8uYXJpYUxhYmVsPy5ncm91cFR5cGUsXHJcbiAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ncm91cFR5cGUsXHJcbiAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBncm91cFR5cGVGaWVsZCA9IHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cFR5cGUgKyAnKicsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdncm91cFR5cGUnLFxyXG4gICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgIHZhbHVlOiAnJyxcclxuICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmdyb3VwVHlwZXMsXHJcbiAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lmdyb3VwVHlwZSxcclxuICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwVHlwZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ3JvdXBUeXBlRmllbGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBjcmVhdGUgZ3JvdXAgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUZvcm1Hcm91cChmb3JtVmFsdWU/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcm91cFR5cGVGaWVsZCgpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5ncm91cE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdncm91cE5hbWUnLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZT8uZ3JvdXBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cE5hbWVcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjUwMFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnM/Lmdyb3VwTmFtZSksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5zaG9ydE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdzaG9ydE5hbWUnLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWx1ZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZT8uc2hvcnROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFNob3J0TmFtZVxyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aChcclxuICAgICAgICAgICAgICAgICAgc2NyZWVuVGV4dHM/LmNyZWF0ZUdyb3VwPy5jaGFyYWN0ZXJMaW1pdD8uY2hhcmFjdGVyMTVcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zPy5zaG9ydE5hbWUpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uc2hvcnROYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2dyb3VwU2NvcGUnLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWU/Lmdyb3VwU2NvcGVcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwRGVzY1xyXG4gICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIG1heExlbmd0aDpcclxuICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjIwMDAsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjE1MDBcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zPy5ncm91cFNjb3BlKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVDcmVhdGVGb3JtR3JvdXAodGhpcy5zZWxlY3RlZEdyb3VwSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGNyZWF0ZSBzdWIgZ3JvdXAgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gcGFyZW50R3JvdXBJbmZvIC1QYXJlbnQgZ3JvdXAgaW5mby5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVDcmVhdGVGb3JtR3JvdXAocGFyZW50R3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQgJiZcclxuICAgICAgICBwYXJlbnRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQpIHx8XHJcbiAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkNSRUFURVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQWRkVXNlckZvcm1Db250cm9scyhcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5wYXJlbnRHcm91cCxcclxuICAgICAgICAgIGNvbnRyb2xOYW1lOiAncGFyZW50R3JvdXAnLFxyXG4gICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBhcmVudEluZm8/Lmdyb3VwTmFtZSA/P1xyXG4gICAgICAgICAgICBwYXJlbnRHcm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/LnBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVQpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUFkZFVzZXJGb3JtQ29udHJvbHMoXHJcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uU0xJREVfVE9HR0xFLFxyXG4gICAgICAgICAgICBjb250cm9sTmFtZTogJ2NoYW5nZVBhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgYXJpYUxhYmVsOlxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5jaGFuZ2VQYXJlbnRHcm91cCxcclxuICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY2hhbmdlUGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIHNsaWRlVG9nZ2xlT3B0aW9uOiB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucy5sZW5ndGggPT09IDAsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gSU5ERVhfVkFMVUUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5uZXdQYXJlbnRHcm91cCArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ25ld1BhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZFxyXG4gICAgICAgICAgICAgIClbMF0sXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ubmV3UGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBjcmVhdGUgb3IgZWRpdCB1c2VyIGZvcm0gZ3JvdXAgY29udHJvbHMgYnkgYWRkaW5nIGZpZWxkQ29uZmlnIGF0IHJlcXVpcmVkIGluZGV4LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHtGaWVsZENvbmZpZ30gZmllbGRDb25maWdcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgaW5kZXhQb3NpdGlvbjogbnVtYmVyLFxyXG4gICAgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8uc3BsaWNlKFxyXG4gICAgICBpbmRleFBvc2l0aW9uLFxyXG4gICAgICAwLFxyXG4gICAgICBmaWVsZENvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGdyb3VwIG9yIGVkaXQgZ3JvdXAgbWV0aG9kcy5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtIC1BcnJheSBvZiBmb3JtR3JvdXBcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGlmIChmb3JtWzBdLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRCkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGZvcm1bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgID8gdGhpcy5lZGl0R3JvdXAoZm9ybURhdGEpXHJcbiAgICAgICAgOiB0aGlzLmNyZWF0ZUdyb3VwKGZvcm1EYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBjcmVhdGUgZ3JvdXAgcGF5bG9hZCBhbmQgY2FsbHMgY3JlYXRlIGdyb3VwIEFQSSBhbmQgZW1pdHMgY3JlYXRlIGdyb3VwIEFQSSByZXNwb25zZS5cclxuICAgKiBAcGFyYW0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNyZWF0ZUdyb3VwKGZvcm1EYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNyZWF0ZUdyb3VwUGF5bG9hZDogQ3JlYXRlR3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBOYW1lOiBmb3JtRGF0YT8uZ3JvdXBOYW1lLFxyXG4gICAgICAgIGdyb3VwU2hvcnROYW1lOiBmb3JtRGF0YT8uc2hvcnROYW1lLFxyXG4gICAgICAgIGdyb3VwVHlwZTogZm9ybURhdGE/Lmdyb3VwVHlwZT8uaWQsXHJcbiAgICAgICAgZ3JvdXBEZXNjOiBmb3JtRGF0YT8uZ3JvdXBTY29wZSxcclxuICAgICAgICBncm91cFBhcmVudElkOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkID8/IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5jcmVhdGVHcm91cChjcmVhdGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VibWl0Rm9ybVJlc3BvbnNlPy5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGVkaXQgZ3JvdXAgcGF5bG9hZCBhbmQgY2FsbHMgZWRpdCBncm91cCBBUEkgYW5kIGVtaXRzIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBlZGl0R3JvdXAoZm9ybURhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cyh0aGlzLmlzUGFyZW50R3JvdXBDaGFuZ2VkKTtcclxuICAgIGNvbnN0IGVkaXRHcm91cFBheWxvYWQ6IEVkaXRHcm91cFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBncm91cE5hbWU6IGZvcm1EYXRhPy5ncm91cE5hbWUsXHJcbiAgICAgICAgZ3JvdXBTaG9ydE5hbWU6IGZvcm1EYXRhPy5zaG9ydE5hbWUsXHJcbiAgICAgICAgZ3JvdXBEZXNjOiBmb3JtRGF0YT8uZ3JvdXBTY29wZSxcclxuICAgICAgICBncm91cFBhcmVudElkOiB0aGlzLmlzUGFyZW50R3JvdXBDaGFuZ2VkXHJcbiAgICAgICAgICA/IGZvcm1EYXRhPy5uZXdQYXJlbnRHcm91cD8uaWRcclxuICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBQYXJlbnRJZCA/PyBudWxsLFxyXG4gICAgICAgIGdyb3VwSWQ6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZWRpdEdyb3VwKGVkaXRHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VibWl0Rm9ybVJlc3BvbnNlPy5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VydmVyIHNpZGUgZXJyb3JzIGFuZCBoYW5kbGVzIHRoZSBlcnJvcnMgYmFzZWQgb24gdGhlIGN1c3RvbSBvciBIdHRwIGVycm9ycy5cclxuICAgKiBAcGFyYW0ge0h0dHBFcnJvclJlc3BvbnNlfSBlcnJvclxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXM6IHN0cmluZ1tdID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykpIHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5wYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzKTtcclxuICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKGVycm9yTWVzc2FnZSwgQWxlcnRUeXBlLkVSUk9SKTtcclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U/LmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmb3JtIHJlZmVyZW5jZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKGZvcm06IEZvcm1Hcm91cFtdKSB7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtWzBdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhbGVydHMgZm9yIGVycm9yLCB3YXJuaW5nLlxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IHN0cmluZ1tdKX0gbWVzc2FnZSAtZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHtBbGVydFR5cGV9IGFsZXJ0VHlwZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dBbGVydE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10sIGFsZXJ0VHlwZTogQWxlcnRUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICBhbGVydFR5cGU6IGFsZXJ0VHlwZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZm9ybSBjYW5jZWwgZXZlbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlR3JvdXBDYW5jZWxsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWw/LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsb3dlZCBwYXJlbnQgZ3JvdXBzIGZvciByZWFzc2lnbmluZyB0aGUgcGFyZW50LlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cElkXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0UGFyZW50R3JvdXBzKGdyb3VwSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzID0gW107XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEFsbG93ZWRQYXJlbnRHcm91cHMoZ3JvdXBJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlc3BvbnNlPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbj8uZ3JvdXBJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24/Lmdyb3VwTmFtZSArICcgKCcgKyBvcHRpb24/Lmdyb3VwQWNyb255bSArICcpJyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3VwcyA9IHJlc3BvbnNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICAgICAnY2hhbmdlUGFyZW50R3JvdXAnLFxyXG4gICAgICAgICAgICAgICdpc0Rpc2FibGVkJyxcclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICAgICAnbmV3UGFyZW50R3JvdXAnLFxyXG4gICAgICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICAgJ2NoYW5nZVBhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgJ2lzRGlzYWJsZWQnLFxyXG4gICAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBwYXNzZWQgZm9ybSBmaWVsZCB2YWx1ZXMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1Db250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbElucHV0UHJvcGVydHlcclxuICAgKiBAcGFyYW0geyp9IHZhbHVlXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBmb3JtQ29udHJvbElucHV0UHJvcGVydHk6IHN0cmluZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICB2YWx1ZTogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudD8uZm9ybUZpZWxkcz8udG9BcnJheSgpO1xyXG4gICAgZm9ybUZpZWxkcz8uZm9yRWFjaCgoZm9ybUZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtRmllbGQ/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmNvbmZpZz8uY29udHJvbE5hbWUgPT09XHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWUgJiZcclxuICAgICAgICBmb3JtRmllbGQ/LmNvbXBvbmVudD8uaW5zdGFuY2U/Lltmb3JtQ29udHJvbElucHV0UHJvcGVydHldXHJcbiAgICAgIClcclxuICAgICAgICBmb3JtRmllbGQuY29tcG9uZW50Lmluc3RhbmNlW2Zvcm1Db250cm9sSW5wdXRQcm9wZXJ0eV0gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcy9yZW1vdmVzIG5ldyBwYXJlbnQgZ3JvdXAgc2VsZWN0aW9uIG9wdGlvbnMgd2hlbmV2ZXIgQ2hhbmdlIFBhcmVudCBHcm91cCBzbGlkZXIgaXMgdG9nZ2xlZC5cclxuICAgKiBAcGFyYW0ge1NsaWRlVG9nZ2xlT3B0aW9ufSB0b2dnbGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1TbGlkZVRvZ2dsZUNoYW5nZSh0b2dnbGU6IFNsaWRlVG9nZ2xlT3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmNoZWNrZWQgPSB0b2dnbGU/LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmlzUGFyZW50R3JvdXBDaGFuZ2VkID0gdG9nZ2xlPy5jaGVja2VkO1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAodGhpcy5mb3JtPy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGNyZWF0ZSBncm91cCBmb3JtIGNoYW5nZSBldmVudC5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25DcmVhdGVHcm91cEZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzUGFyZW50R3JvdXBDaGFuZ2VkKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGFyZW50R3JvdXAgPSB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHM/LmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBQYXJlbnRHcm91cHNJbmZvKSA9PlxyXG4gICAgICAgICAgb3B0aW9uPy5ncm91cElkID09PVxyXG4gICAgICAgICAgZm9ybVswXT8uY29udHJvbHNbJ25ld1BhcmVudEdyb3VwJ10/LnZhbHVlPy5pZD8udG9TdHJpbmcoKVxyXG4gICAgICApWzBdO1xyXG4gICAgICB0aGlzLmZvcm0/LmdldCgncGFyZW50R3JvdXAnKT8uc2V0VmFsdWUoc2VsZWN0ZWRQYXJlbnRHcm91cD8uZ3JvdXBOYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGllZWVzYS1keW5hbWljLWZvcm1cclxuICAqbmdJZj1cImZvcm1Hcm91cFwiXHJcbiAgW2xlZnRCdXR0b25MYWJlbF09XCJsZWZ0QnV0dG9uTGFiZWxcIlxyXG4gIFtyaWdodEJ1dHRvbkxhYmVsXT1cInJpZ2h0QnV0dG9uTGFiZWxcIlxyXG4gIFtpc0xlZ2VuZFZpc2libGVdPVwiaXNMZWdlbmRWaXNpYmxlXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwiZm9ybUdyb3VwXCJcclxuICBbaXNMZWZ0QnV0dG9uTmVlZGVkXT1cImlzTGVmdEJ1dHRvbk5lZWRlZFwiXHJcbiAgKGZvcm1TdWJtaXQpPVwib25Gb3JtU3VibWl0KCRldmVudClcIlxyXG4gIChmb3JtTGVmdEJ1dHRvbkNsaWNrZWQpPVwiY3JlYXRlR3JvdXBDYW5jZWxsZWQoKVwiXHJcbiAgKGZvcm1Hcm91cHNSZWZlcmVuY2UpPVwiZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKCRldmVudClcIlxyXG4gIChmb3JtU2xpZGVUb2dnbGVDaGFuZ2UpPVwib25Gb3JtU2xpZGVUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgKGZvcm1DaGFuZ2UpPVwib25DcmVhdGVHcm91cEZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbj48L2llZWVzYS1keW5hbWljLWZvcm0+Il19
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwsU0FBUyxFQUdULGVBQWUsRUFDZixvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsYUFBYSxHQUVkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFFM0UsTUFB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Q0FBRSxlQUFlOzs0RkFNbEQsb0JBQW9CO2tCQVZoQyxTQUFTOytCQUVFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxDQUFDLGlCQUcvQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsYUFBYSxDQUFDO3dLQVFoQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkF3QjBCLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUdyaWQsXHJcbiAgRm9ybU1vZGVsLFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBBbGlnblR5cGUsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbiAgRmllbGRDb25maWcsXHJcbiAgRm9ybUNvbnRyb2xUeXBlLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IENyZWF0ZUdyb3VwUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9jcmVhdGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdEdyb3VwUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cywgQWxlcnRUeXBlIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHsgR3JvdXBGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFBhcmVudEdyb3Vwc0luZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcGFyZW50LWdyb3Vwcy1pbmZvLm1vZGVsJztcclxuY29uc3QgSU5ERVhfVkFMVUUgPSA0O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZUdyb3VwQ29tcG9uZW50IHVzZXMgRHluYW1pY0Zvcm1Db21wb25lbnQgdG8gYnVpbGQgY3JlYXRlIG5ldyBncm91cCBmb3JtIG9yIGVkaXQgZ3JvdXAgYW5kIGltcGxlbWVudCB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHN1Ym1pc3Npb24gb2YgZm9ybSBhbmQgaGFuZGxpbmcgc3VjY2VzcyBhbmQgZXJyb3Igc2NlbmFyaW9zLlxyXG4gKiBAY2xhc3MgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtY3JlYXRlLWdyb3VwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER5bmFtaWNGb3JtQ29tcG9uZW50LCBNYXREaWFsb2dNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Y2Nlc3NmdWxseSBzdWJtaXR0ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm1SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgY2FuY2VsbGVkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNyZWF0ZUdyb3VwVGV4dCA9IHNjcmVlblRleHRzPy5jcmVhdGVHcm91cDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8ucmlnaHRCdXR0b25MYWJlbDtcclxuICBpc0xlZ2VuZFZpc2libGUgPSBmYWxzZTtcclxuICBpc0xlZnRCdXR0b25OZWVkZWQgPSB0cnVlO1xyXG4gIGNvbFdpZHRoOiBGb3JtR3JpZCA9IHsgeHM6IDEyLCB4bDogMTIsIHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIgfTtcclxuICBmb3JtR3JvdXAhOiBGb3JtTW9kZWw7XHJcbiAgZ3JvdXBUeXBlcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzZWxlY3RlZEdyb3VwSW5mbyE6IEdyb3VwSW5mbyB8IHVuZGVmaW5lZDtcclxuICBncm91cEZ1bmN0aW9uVHlwZSE6IEdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvITogR3JvdXBJbmZvIHwgdW5kZWZpbmVkO1xyXG4gIGFsbG93ZWRQYXJlbnRHcm91cHM6IFBhcmVudEdyb3Vwc0luZm9bXSA9IFtdO1xyXG4gIGFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIGlzUGFyZW50R3JvdXBDaGFuZ2VkID0gZmFsc2U7XHJcbiAgc2xpZGVUb2dnbGVPcHRpb246IFNsaWRlVG9nZ2xlT3B0aW9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBsYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5jaGFuZ2VQYXJlbnRHcm91cCxcclxuICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gIH07XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudCkgZHluYW1pY0Zvcm1Db21wb25lbnQhOiBEeW5hbWljRm9ybUNvbXBvbmVudDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvbixcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGNyZWF0ZSBncm91cCBmb3JtIGdyb3VwIGFycmF5IGFuZCBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRHcm91cEZ1bmN0aW9uVHlwZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwSW5mbyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRHcm91cEluZm8oKTtcclxuICAgIGlmICh0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFBhcmVudEluZm8gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRHcm91cFBhcmVudEluZm8oKTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQpXHJcbiAgICAgICAgdGhpcy5nZXRQYXJlbnRHcm91cHModGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCk7XHJcbiAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBncm91cFR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRGb3JtYXR0ZWRHcm91cFR5cGVzKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0TG9hZGVkR3JvdXBUeXBlcygpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cFR5cGUpIHtcclxuICAgICAgICBjb25zdCBhbGxvd2VkR3JvdXBUeXBlID1cclxuICAgICAgICAgIGdyb3VwVHlwZXNbdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBUeXBlXT8uYnVzaW5lc3NSdWxlXHJcbiAgICAgICAgICAgID8uYWxsb3dlZEdyb3VwVHlwZTtcclxuICAgICAgICBpZiAoYWxsb3dlZEdyb3VwVHlwZT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSBhbGxvd2VkR3JvdXBUeXBlLm1hcCgoZ3JvdXBUeXBlSWQ6IHN0cmluZykgPT4gKHtcclxuICAgICAgICAgICAgaWQ6IGdyb3VwVHlwZUlkLFxyXG4gICAgICAgICAgICBuYW1lOiBncm91cFR5cGVzW2dyb3VwVHlwZUlkXT8ubmFtZSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBUeXBlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChncm91cFR5cGUpID0+ICFncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmJ1c2luZXNzUnVsZT8uaXNBZG1pblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKHNjcmVlblRleHRzPy5lcnJvcnM/LkVSMTAwMCwgQWxlcnRUeXBlLkVSUk9SKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBUeXBlcykubWFwKFxyXG4gICAgICAgICAgKFtpZCwgaXRlbV06IFtzdHJpbmcsIEdyb3VwVHlwZV0pID0+ICh7XHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBUeXBlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoZ3JvdXBUeXBlKSA9PlxyXG4gICAgICAgICAgICBncm91cFR5cGVzW2dyb3VwVHlwZS5pZF0/LmhpZXJhcmNoeSA9PT0gMCAmJlxyXG4gICAgICAgICAgICAhZ3JvdXBUeXBlc1tncm91cFR5cGUuaWRdPy5idXNpbmVzc1J1bGU/LmlzQWRtaW5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwVHlwZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKHNjcmVlblRleHRzPy5lcnJvcnM/LlsnMTAxMCddLCBBbGVydFR5cGUuRVJST1IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBncm91cCB0eXBlIGZvcm0gZmllbGQgYmFzZWQgb24gZWRpdCBncm91cCBvciBub3QuXHJcbiAgICogQHJldHVybiB7RmllbGRDb25maWd9IC1ncm91cCB0eXBlIGZvcm0gZmllbGQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlRmllbGQoKTogRmllbGRDb25maWcge1xyXG4gICAgbGV0IGdyb3VwVHlwZUZpZWxkOiBGaWVsZENvbmZpZztcclxuICAgIGlmICh0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUKSB7XHJcbiAgICAgIGdyb3VwVHlwZUZpZWxkID0ge1xyXG4gICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uVEVYVF9BUkVBLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/Lmdyb3VwVHlwZSxcclxuICAgICAgICBjb250cm9sTmFtZTogJ2dyb3VwVHlwZScsXHJcbiAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBUeXBlSW5mbz8ubmFtZSxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5lZGl0R3JvdXA/LmFyaWFMYWJlbD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZ3JvdXBUeXBlLFxyXG4gICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ3JvdXBUeXBlRmllbGQgPSB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5TRUxFQ1QsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBUeXBlICsgJyonLFxyXG4gICAgICAgIGNvbnRyb2xOYW1lOiAnZ3JvdXBUeXBlJyxcclxuICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICB2YWx1ZTogJycsXHJcbiAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5ncm91cFR5cGVzLFxyXG4gICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lmdyb3VwVHlwZSxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5ncm91cFR5cGUsXHJcbiAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ncm91cFR5cGUsXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwVHlwZUZpZWxkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgY3JlYXRlIGdyb3VwIGZvcm0gZ3JvdXAgYXJyYXkuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjcmVhdGVGb3JtR3JvdXAoZm9ybVZhbHVlPzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHtcclxuICAgICAgZm9ybUdyb3VwOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiAnJyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBUeXBlRmllbGQoKSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uZ3JvdXBOYW1lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZ3JvdXBOYW1lJyxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWU/Lmdyb3VwTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBOYW1lXHJcbiAgICAgICAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5ncm91cE5hbWUsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBzY3JlZW5UZXh0cz8uY3JlYXRlR3JvdXA/LmNoYXJhY3RlckxpbWl0Py5jaGFyYWN0ZXI1MDBcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oR3JvdXBzVmFsaWRhdGlvblBhdHRlcm5zPy5ncm91cE5hbWUpLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZ3JvdXBOYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lmdyb3VwTmFtZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uc2hvcnROYW1lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnc2hvcnROYW1lJyxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUXHJcbiAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgPyBmb3JtVmFsdWU/LnNob3J0TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBTaG9ydE5hbWVcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5zaG9ydE5hbWUsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uc3VwcG9ydFRleHQ/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgICAgICAgIHNjcmVlblRleHRzPy5jcmVhdGVHcm91cD8uY2hhcmFjdGVyTGltaXQ/LmNoYXJhY3RlcjE1XHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucz8uc2hvcnROYW1lKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LnNob3J0TmFtZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5zaG9ydE5hbWUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5zaG9ydE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdncm91cFNjb3BlJyxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cEZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICAgICAgICAgICAgICA/IGZvcm1WYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgID8gZm9ybVZhbHVlPy5ncm91cFNjb3BlXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cERlc2NcclxuICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5zdXBwb3J0VGV4dD8uZ3JvdXBTY29wZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBtYXhMZW5ndGg6XHJcbiAgICAgICAgICAgICAgICBzY3JlZW5UZXh0cz8uY3JlYXRlR3JvdXA/LmNoYXJhY3RlckxpbWl0Py5jaGFyYWN0ZXIyMDAwLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICAgICAgICBzY3JlZW5UZXh0cz8uY3JlYXRlR3JvdXA/LmNoYXJhY3RlckxpbWl0Py5jaGFyYWN0ZXIxNTAwXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucz8uZ3JvdXBTY29wZSksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmxhYmVsPy5hcmlhTGFiZWw/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ncm91cFNjb3BlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ3JlYXRlRm9ybUdyb3VwKHRoaXMuc2VsZWN0ZWRHcm91cEluZm8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSBjcmVhdGUgc3ViIGdyb3VwIGZvcm0gZ3JvdXAgYXJyYXkuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IHBhcmVudEdyb3VwSW5mbyAtUGFyZW50IGdyb3VwIGluZm8uXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlQ3JlYXRlRm9ybUdyb3VwKHBhcmVudEdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUICYmXHJcbiAgICAgICAgcGFyZW50R3JvdXBJbmZvPy5ncm91cFBhcmVudElkKSB8fFxyXG4gICAgICB0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5DUkVBVEVcclxuICAgICkge1xyXG4gICAgICB0aGlzLnVwZGF0ZUFkZFVzZXJGb3JtQ29udHJvbHMoXHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIElOREVYX1ZBTFVFLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uVEVYVF9BUkVBLFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8ucGFyZW50R3JvdXAsXHJcbiAgICAgICAgICBjb250cm9sTmFtZTogJ3BhcmVudEdyb3VwJyxcclxuICAgICAgICAgIHZhbHVlOlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBQYXJlbnRJbmZvPy5ncm91cE5hbWUgPz9cclxuICAgICAgICAgICAgcGFyZW50R3JvdXBJbmZvPy5ncm91cE5hbWUsXHJcbiAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5wYXJlbnRHcm91cCxcclxuICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5wYXJlbnRHcm91cCxcclxuICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwRnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBZGRVc2VyRm9ybUNvbnRyb2xzKFxyXG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIElOREVYX1ZBTFVFLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGU/LlNMSURFX1RPR0dMRSxcclxuICAgICAgICAgICAgY29udHJvbE5hbWU6ICdjaGFuZ2VQYXJlbnRHcm91cCcsXHJcbiAgICAgICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubGFiZWw/LmFyaWFMYWJlbD8uY2hhbmdlUGFyZW50R3JvdXAsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmNoYW5nZVBhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICBzbGlkZVRvZ2dsZU9wdGlvbjogdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbixcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnMubGVuZ3RoID09PSAwLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJlbnRHcm91cENoYW5nZWQpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQWRkVXNlckZvcm1Db250cm9scyhcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIElOREVYX1ZBTFVFLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8ubmV3UGFyZW50R3JvdXAgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICduZXdQYXJlbnRHcm91cCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM/LmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWRcclxuICAgICAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5jcmVhdGVHcm91cFRleHQ/LnN1cHBvcnRUZXh0Py5uZXdQYXJlbnRHcm91cCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYUxhYmVsPy5uZXdQYXJlbnRHcm91cCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/Lm5ld1BhcmVudEdyb3VwLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgY3JlYXRlIG9yIGVkaXQgdXNlciBmb3JtIGdyb3VwIGNvbnRyb2xzIGJ5IGFkZGluZyBmaWVsZENvbmZpZyBhdCByZXF1aXJlZCBpbmRleC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhQb3NpdGlvblxyXG4gICAqIEBwYXJhbSB7RmllbGRDb25maWd9IGZpZWxkQ29uZmlnXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlQWRkVXNlckZvcm1Db250cm9scyhcclxuICAgIGluZGV4UG9zaXRpb246IG51bWJlcixcclxuICAgIGZpZWxkQ29uZmlnOiBGaWVsZENvbmZpZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/LnNwbGljZShcclxuICAgICAgaW5kZXhQb3NpdGlvbixcclxuICAgICAgMCxcclxuICAgICAgZmllbGRDb25maWdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGNsaWVudCBzaWRlIHZhbGlkYXRpb24gYW5kIGNhbGxzIGNyZWF0ZSBncm91cCBvciBlZGl0IGdyb3VwIG1ldGhvZHMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybSAtQXJyYXkgb2YgZm9ybUdyb3VwXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU3VibWl0KGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBmb3JtWzBdPy5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAoZm9ybVswXS5zdGF0dXMgPT09IEZvcm1TdGF0dXMuVkFMSUQpIHtcclxuICAgICAgY29uc3QgZm9ybURhdGEgPSBmb3JtWzBdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXHJcbiAgICAgIHRoaXMuZ3JvdXBGdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgICA/IHRoaXMuZWRpdEdyb3VwKGZvcm1EYXRhKVxyXG4gICAgICAgIDogdGhpcy5jcmVhdGVHcm91cChmb3JtRGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgY3JlYXRlIGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGNyZWF0ZSBncm91cCBBUEkgYW5kIGVtaXRzIGNyZWF0ZSBncm91cCBBUEkgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjcmVhdGVHcm91cChmb3JtRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjcmVhdGVHcm91cFBheWxvYWQ6IENyZWF0ZUdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwTmFtZTogZm9ybURhdGE/Lmdyb3VwTmFtZSxcclxuICAgICAgICBncm91cFNob3J0TmFtZTogZm9ybURhdGE/LnNob3J0TmFtZSxcclxuICAgICAgICBncm91cFR5cGU6IGZvcm1EYXRhPy5ncm91cFR5cGU/LmlkLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5zZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBJZCA/PyBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuY3JlYXRlR3JvdXAoY3JlYXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBlZGl0IGdyb3VwIHBheWxvYWQgYW5kIGNhbGxzIGVkaXQgZ3JvdXAgQVBJIGFuZCBlbWl0cyBjcmVhdGUgZ3JvdXAgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdEdyb3VwKGZvcm1EYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXModGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCk7XHJcbiAgICBjb25zdCBlZGl0R3JvdXBQYXlsb2FkOiBFZGl0R3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBOYW1lOiBmb3JtRGF0YT8uZ3JvdXBOYW1lLFxyXG4gICAgICAgIGdyb3VwU2hvcnROYW1lOiBmb3JtRGF0YT8uc2hvcnROYW1lLFxyXG4gICAgICAgIGdyb3VwRGVzYzogZm9ybURhdGE/Lmdyb3VwU2NvcGUsXHJcbiAgICAgICAgZ3JvdXBQYXJlbnRJZDogdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZFxyXG4gICAgICAgICAgPyBmb3JtRGF0YT8ubmV3UGFyZW50R3JvdXA/LmlkXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwUGFyZW50SWQgPz8gbnVsbCxcclxuICAgICAgICBncm91cElkOiB0aGlzLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmVkaXRHcm91cChlZGl0R3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyB0aGUgZXJyb3JzIGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzOiBzdHJpbmdbXSA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShlcnJvck1lc3NhZ2UsIEFsZXJ0VHlwZS5FUlJPUik7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZm9ybSByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZvcm1Hcm91cFJlZmVyZW5jZShmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBlcnJvciwgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLWVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZVxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCBhbGVydFR5cGU6IEFsZXJ0VHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZUdyb3VwQ2FuY2VsbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsPy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGFsbG93ZWQgcGFyZW50IGdyb3VwcyBmb3IgcmVhc3NpZ25pbmcgdGhlIHBhcmVudC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBJZFxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFBhcmVudEdyb3Vwcyhncm91cElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbGxvd2VkUGFyZW50R3JvdXBzKGdyb3VwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsb3dlZFBhcmVudEdyb3Vwc09wdGlvbnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uPy5ncm91cE5hbWUgKyAnICgnICsgb3B0aW9uPy5ncm91cEFjcm9ueW0gKyAnKScsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHMgPSByZXNwb25zZTtcclxuICAgICAgICAgIGlmICh0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgJ2NoYW5nZVBhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICAnaXNEaXNhYmxlZCcsXHJcbiAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgJ25ld1BhcmVudEdyb3VwJyxcclxuICAgICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRQYXJlbnRHcm91cHNPcHRpb25zXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdjaGFuZ2VQYXJlbnRHcm91cCcsXHJcbiAgICAgICAgICAgICdpc0Rpc2FibGVkJyxcclxuICAgICAgICAgICAgdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzT3B0aW9ucy5sZW5ndGggPT09IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgcGFzc2VkIGZvcm0gZmllbGQgdmFsdWVzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XHJcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLFxyXG4gICAgZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5OiBzdHJpbmcsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgdmFsdWU6IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnQ/LmZvcm1GaWVsZHM/LnRvQXJyYXkoKTtcclxuICAgIGZvcm1GaWVsZHM/LmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5jb25maWc/LmNvbnRyb2xOYW1lID09PVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5bZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XVxyXG4gICAgICApXHJcbiAgICAgICAgZm9ybUZpZWxkLmNvbXBvbmVudC5pbnN0YW5jZVtmb3JtQ29udHJvbElucHV0UHJvcGVydHldID0gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMvcmVtb3ZlcyBuZXcgcGFyZW50IGdyb3VwIHNlbGVjdGlvbiBvcHRpb25zIHdoZW5ldmVyIENoYW5nZSBQYXJlbnQgR3JvdXAgc2xpZGVyIGlzIHRvZ2dsZWQuXHJcbiAgICogQHBhcmFtIHtTbGlkZVRvZ2dsZU9wdGlvbn0gdG9nZ2xlXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU2xpZGVUb2dnbGVDaGFuZ2UodG9nZ2xlOiBTbGlkZVRvZ2dsZU9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5jaGVja2VkID0gdG9nZ2xlPy5jaGVja2VkO1xyXG4gICAgdGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCA9IHRvZ2dsZT8uY2hlY2tlZDtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKHRoaXMuZm9ybT8udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBjcmVhdGUgZ3JvdXAgZm9ybSBjaGFuZ2UgZXZlbnQuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ3JlYXRlR3JvdXBGb3JtQ2hhbmdlKGZvcm06IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZFBhcmVudEdyb3VwID0gdGhpcy5hbGxvd2VkUGFyZW50R3JvdXBzPy5maWx0ZXIoXHJcbiAgICAgICAgKG9wdGlvbjogUGFyZW50R3JvdXBzSW5mbykgPT5cclxuICAgICAgICAgIG9wdGlvbj8uZ3JvdXBJZCA9PT1cclxuICAgICAgICAgIGZvcm1bMF0/LmNvbnRyb2xzWyduZXdQYXJlbnRHcm91cCddPy52YWx1ZT8uaWQ/LnRvU3RyaW5nKClcclxuICAgICAgKVswXTtcclxuICAgICAgdGhpcy5mb3JtPy5nZXQoJ3BhcmVudEdyb3VwJyk/LnNldFZhbHVlKHNlbGVjdGVkUGFyZW50R3JvdXA/Lmdyb3VwTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZUdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgKm5nSWY9XCJmb3JtR3JvdXBcIlxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImlzTGVnZW5kVmlzaWJsZVwiXHJcbiAgW2NvbFdpZHRoXT1cImNvbFdpZHRoXCJcclxuICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gIFtmb3JtR3JvdXBzXT1cImZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJpc0xlZnRCdXR0b25OZWVkZWRcIlxyXG4gIChmb3JtU3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgkZXZlbnQpXCJcclxuICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cImNyZWF0ZUdyb3VwQ2FuY2VsbGVkKClcIlxyXG4gIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldEZvcm1Hcm91cFJlZmVyZW5jZSgkZXZlbnQpXCJcclxuICAoZm9ybVNsaWRlVG9nZ2xlQ2hhbmdlKT1cIm9uRm9ybVNsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uQ3JlYXRlR3JvdXBGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPiJdfQ==
@@ -4,9 +4,8 @@ import { AlignType, FormControlType, DynamicFormComponent, } from '@ieeesa-npm/p
4
4
  import * as screenTexts from '../../assets/constants.json';
5
5
  import { Validators } from '@angular/forms';
6
6
  import { Subject, takeUntil } from 'rxjs';
7
- import { FormStatus } from '../../models/form-status.model';
7
+ import { FormStatus, AlertType } from '@ieeesa-npm/models';
8
8
  import { HttpErrorResponse } from '@angular/common/http';
9
- import { AlertType, } from '@ieeesa-npm/utility';
10
9
  import { GroupRosterType } from '../../models/roster-type.model';
11
10
  import { GroupsValidationPatterns } from '../../assets/form-validations';
12
11
  import * as i0 from "@angular/core";
@@ -533,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
533
532
  }], formCancel: [{
534
533
  type: Output
535
534
  }] } });
536
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUlmLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsR0FHVixNQUFNLHFCQUFxQixDQUFDO0FBTzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQU16RTs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7SUEwQmpDO0lBQ0Us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O0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsaUJBQWlCLEVBQ2pCLGdDQUFnQyxFQUNoQyxFQUFFLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0F0bUJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHlOQXVCdEIsb0JBQW9CLGdEQ25GakMsMjRCQWtCQSwrOFlEcUNZLFlBQVksK0JBQUUsb0JBQW9COzs0RkFLakMsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsaUJBRzlCLGlCQUFpQixDQUFDLElBQUk7d0tBeUJKLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ3JCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGlnblR5cGUsXHJcbiAgQXV0b0NvbXBsZXRlT3B0aW9uLFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHcm91cFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHtcclxuICBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQsXHJcbiAgQWRkT3JFZGl0VXNlclBheWxvYWQsXHJcbiAgUmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9hZGQtb3ItZWRpdC11c2VyLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBUeXBlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUm9zdGVyVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9yb3N0ZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHtcclxuICBPcmdhbml6YXRpb24sXHJcbiAgT3JnYW5pemF0aW9uUmVxdWVzdFBheWxvYWQsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL29yZ2FuaXphdGlvbi5tb2RlbCc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50IGltcGxlbWVudHMgdGhlIHZpZXcgYW5kIGZ1bmN0aW9uYWxpdGllcyB0byBlZGl0IGdyb3VwIHVzZXJzIHRvIHJvc3Rlci5cclxuICogQGNsYXNzIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWVkaXQtdXNlci1yb2xlcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRVc2VyUm9sZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBsZWZ0QnV0dG9uTGFiZWwgPSB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5zYXZlQnV0dG9uTGFiZWw7XHJcbiAgaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbFdpZHRoOiBGb3JtR3JpZCA9IHsgeHM6IDEyLCB4bDogMTIsIHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIgfTtcclxuICBlZGl0VXNlclJvbGVGb3JtR3JvdXAhOiBGb3JtTW9kZWw7XHJcbiAgZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmITogRm9ybUdyb3VwO1xyXG4gIHVzZXJSb2xlcyE6IENoZWNrYm94T3B0aW9uW107XHJcbiAgc2VsZWN0ZWRVc2VyUm9sZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBzZWxlY3RlZFVzZXJJbmZvITogR3JvdXBVc2VySW5mbztcclxuICBhY3Rpb25CdXR0b25BbGlnbiA9IEFsaWduVHlwZS5MRUZUO1xyXG4gIGNsYXNzaWZpY2F0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBtZW1iZXJUeXBlczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBvcmdhbml6YXRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIGdyb3VwVHlwZXMhOiBHcm91cFR5cGVDb25maWd1cmF0aW9uW107XHJcbiAgaGFzQ2xhc3NpZmljYXRpb24gPSBmYWxzZTtcclxuICBncm91cFJvc3RlclR5cGUhOiBHcm91cFJvc3RlclR5cGU7XHJcbiAgcmVwcmVzZW50aW5nT3JnYW5pemF0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBvcmdTZWFyY2hWYWx1ZSA9ICcnO1xyXG4gIEBWaWV3Q2hpbGQoRHluYW1pY0Zvcm1Db21wb25lbnQpIGR5bmFtaWNGb3JtQ29tcG9uZW50ITogRHluYW1pY0Zvcm1Db21wb25lbnQ7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm1SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXQgdXNlciByb2xlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGFuZCBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8gPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldFNlbGVjdGVkVXNlckluZm8oKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmZvckVhY2goXHJcbiAgICAgICh1c2VyOiBSZXByZXNlbnRpbmdPcmdhbml6YXRpb24pID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8udXNlcklkID09PSB1c2VyLnVzZXJJZCAmJlxyXG4gICAgICAgICAgdXNlci5vcmdhbml6YXRpb25zPy5sZW5ndGhcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHVzZXIub3JnYW5pemF0aW9ucy5mb3JFYWNoKChvcHRpb246IE9yZ2FuaXphdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBvcHRpb24ub3JnSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLm9yZ05hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xyXG4gICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zPy5sZW5ndGhcclxuICAgICAgPyAodGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2UpXHJcbiAgICAgIDogKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWUpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRVc2VyUm9sZU5hbWVzID0gdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5yb2xlXHJcbiAgICAgID8uc3BsaXQoJywnKVxyXG4gICAgICAubWFwKChyb2xlKSA9PiByb2xlPy50cmltKCkpO1xyXG4gICAgdGhpcy51c2VyUm9sZXMgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldEdyb3VwVHlwZVVzZXJSb2xlcygpO1xyXG4gICAgdGhpcy51c2VyUm9sZXM/LmZvckVhY2goKHJvbGUpID0+IHtcclxuICAgICAgaWYgKHNlbGVjdGVkVXNlclJvbGVOYW1lcz8uaW5jbHVkZXMocm9sZT8ubmFtZSBhcyBzdHJpbmcpKSB7XHJcbiAgICAgICAgcm9sZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHM/LnB1c2gocm9sZT8uaWQgYXMgc3RyaW5nKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBncm91cFR5cGUgPSB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0QnVzaW5lc3NSdWxlT2ZTZWxlY3RlZEdyb3VwKCk7XHJcbiAgICB0aGlzLmhhc0NsYXNzaWZpY2F0aW9uID0gZ3JvdXBUeXBlPy5oYXNDbGFzc2lmaWNhdGlvbiA/PyBmYWxzZTtcclxuICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID0gZ3JvdXBUeXBlPy5yb3N0ZXJUeXBlIGFzIEdyb3VwUm9zdGVyVHlwZTtcclxuICAgIGlmICghdGhpcy5ncm91cFJvc3RlclR5cGUpXHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKHtcclxuICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuY29uc3RhbnRzPy5lcnJvcnM/LkVSMTAwMSxcclxuICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZS5FUlJPUixcclxuICAgICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZT8uSU5ESVZJRFVBTCkge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0NsYXNzaWZpY2F0aW9uKSB0aGlzLmdldENsYXNzaWZpY2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZ2V0TWVtYmVyVHlwZXMoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZXNGb3JtR3JvdXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXQgdXNlciByb2xlIGZvcm0gZ3JvdXAgYXJyYXkuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBlZGl0VXNlclJvbGVzRm9ybUdyb3VwKCkge1xyXG4gICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXAgPSB7XHJcbiAgICAgIGZvcm1Hcm91cDogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogJycsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlPy5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uZW1haWwgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdlbWFpbCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZW1haWwsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5lbWFpbCxcclxuICAgICAgICAgICAgICBpc1JlYWRvbmx5OiB0cnVlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5mdWxsTmFtZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2Z1bGxOYW1lJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZnVsbE5hbWUsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICBsYWJlbDpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ucm9sZVxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ucm9sZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ3JvbGVzJyxcclxuICAgICAgICAgICAgICBjaGVja2JveE9wdGlvbnM6IHRoaXMudXNlclJvbGVzLFxyXG4gICAgICAgICAgICAgIG1pblNlbGVjdGlvblJlcXVpcmVkOiAxLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnJvbGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5yb2xlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMXHJcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICA/LnJvbGVGb3JJbmRpdmlkdWFsUm9zdGVyXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0Py5yb2xlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5JTkRJVklEVUFMXHJcbiAgICAgICAgICAgICAgICAgID8gW11cclxuICAgICAgICAgICAgICAgICAgOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGU/LklORElWSURVQUwpIHtcclxuICAgICAgdGhpcy51cGRhdGVFZGl0VXNlclJvbGVGb3JtR3JvdXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xhc3NpZmljYXRpb24sIE1lbWJlciBUeXBlIGFuZCBSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uIGZvcm0gY29udHJvbHMgd2hpbGUgZWRpdGluZyBuZXcgdXNlciB0byBhbiBpbmRpdmlkdWFsIGdyb3VwIHJvc3Rlci5cclxuICAgKiBAbWVtYmVyb2YgQWRkVXNlclJvc3RlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Hcm91cCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc0NsYXNzaWZpY2F0aW9uKVxyXG4gICAgICB0aGlzLnVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Db250cm9scyhcclxuICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gMSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uY2xhc3NpZmljYXRpb24gKyAnKicsXHJcbiAgICAgICAgICBjb250cm9sTmFtZTogJ2NsYXNzaWZpY2F0aW9uJyxcclxuICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5jbGFzc2lmaWNhdGlvbnMsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5jbGFzc2lmaWNhdGlvbnM/LmZpbHRlcihcclxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICApWzBdLFxyXG4gICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8uY2xhc3NpZmljYXRpb24sXHJcbiAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIHRoaXMudXBkYXRlRWRpdFVzZXJSb2xlRm9ybUNvbnRyb2xzKFxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoIC0gMSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ubWVtYmVyVHlwZSArICcqJyxcclxuICAgICAgICBjb250cm9sTmFtZTogJ21lbWJlclR5cGUnLFxyXG4gICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5tZW1iZXJUeXBlcyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5tZW1iZXJUeXBlcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkVXNlckluZm8/Lm1lbWJlclN0YXR1c1xyXG4gICAgICAgIClbMF0sXHJcbiAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICBzdXBwb3J0TWVzc2FnZTogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0Py5tZW1iZXJUeXBlLFxyXG4gICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/Lm1lbWJlclR5cGUsXHJcbiAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5tZW1iZXJUeXBlLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy51cGRhdGVFZGl0VXNlclJvbGVGb3JtQ29udHJvbHMoXHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwPy5mb3JtR3JvdXBbMF0/LmNvbnRyb2xzPy5sZW5ndGgsXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuTVVMVElfU0VMRUNUX0FVVE9fQ09NUExFVEUsXHJcbiAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uICsgJyonLFxyXG4gICAgICAgIGNvbnRyb2xOYW1lOiAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoXHJcbiAgICAgICAgICAgIEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWF4TGVuZ3RoXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoXHJcbiAgICAgICAgICAgIEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWluTGVuZ3RoXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb24pLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zOiB0aGlzLm9yZ2FuaXphdGlvbnMsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgICA/IHRoaXMub3JnU2VhcmNoVmFsdWU/Lmxlbmd0aFxyXG4gICAgICAgICAgICA/IHRoaXMub3JnU2VhcmNoVmFsdWVcclxuICAgICAgICAgICAgOiB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnNcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgICAgIHN1cHBvcnRNZXNzYWdlOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LnN1cHBvcnRUZXh0Py5yZXByZXNlbnRpbmdPcmdhbml6YXRpb24sXHJcbiAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdFxyXG4gICAgICAgICAgICA/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1heENoYXJzLFxyXG4gICAgICAgIG1pbkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXRcclxuICAgICAgICAgICAgPy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25NaW5DaGFycyxcclxuICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuXHJcbiAgICAgICAgICAgID8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLFxyXG4gICAgICAgIGFyaWFMYWJlbDpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb24sXHJcbiAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkXHJcbiAgICAgICAgICAgID8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBzZWxlY3RlZCBvcmdhbml6YXRpb25zLlxyXG4gICAqIEBwYXJhbSB7QXV0b0NvbXBsZXRlT3B0aW9uW119IHNlbGVjdGVkT3JnXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRTZWxlY3RlZE9yZ2FuaXphdGlvbnMoc2VsZWN0ZWRPcmc6IEF1dG9Db21wbGV0ZU9wdGlvbltdKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMgPSBzZWxlY3RlZE9yZztcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGhcclxuICAgICAgPyAodGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2UpXHJcbiAgICAgIDogKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBlZGl0IHVzZXIgZm9ybSBncm91cCBjb250cm9scyBieSBhZGRpbmcgZmllbGRDb25maWcgYXQgcmVxdWlyZWQgaW5kZXguXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4UG9zaXRpb25cclxuICAgKiBAcGFyYW0ge0ZpZWxkQ29uZmlnfSBmaWVsZENvbmZpZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRWRpdFVzZXJSb2xlRm9ybUNvbnRyb2xzKFxyXG4gICAgaW5kZXhQb3NpdGlvbjogbnVtYmVyLFxyXG4gICAgZmllbGRDb25maWc6IEZpZWxkQ29uZmlnXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cC5mb3JtR3JvdXBbMF0uY29udHJvbHMuc3BsaWNlKFxyXG4gICAgICBpbmRleFBvc2l0aW9uLFxyXG4gICAgICAwLFxyXG4gICAgICBmaWVsZENvbmZpZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdXNlciByb2xlIHNlbGVjdGlvbiBhbmQgc2F2ZSBidXR0b24gZW5hYmxlIGRpc2FibGUgaW4gZWRpdCB1c2VyIHJvbGVzIGZvcm0uXHJcbiAgICogQHBhcmFtIHtDaGVja2JveE9wdGlvbn0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVXNlclJvbGVTZWxlY3Rpb24oZXZlbnQ6IENoZWNrYm94T3B0aW9uKTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQ/LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5wdXNoKGV2ZW50Py5pZCBhcyBzdHJpbmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzID0gdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5maWx0ZXIoXHJcbiAgICAgICAgKGlkKSA9PiBpZCAhPT0gZXZlbnQ/LmlkXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncm91cFJvc3RlclR5cGUgPT09IEdyb3VwUm9zdGVyVHlwZS5TWVNURU1fVVNFUikge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0aGlzLmdyb3Vwc1NlcnZpY2UuaXNTdWJtaXRCdXR0b25EaXNhYmxlZChcclxuICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSxcclxuICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uc3RhdHVzLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHJvbGVzIGFuZCBkZXRhaWxzIG9mIHVzZXIgb24gZm9ybSBzdWJtaXNzaW9uLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlRm9ybVN1Ym1pdChmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgZm9ybVswXT8ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgaXNBbGxPdGhlckNvbnRyb2xzVmFsaWQgPSBPYmplY3Qua2V5cyhmb3JtWzBdLmNvbnRyb2xzKVxyXG4gICAgICAuZmlsdGVyKChjb250cm9sTmFtZSkgPT4gY29udHJvbE5hbWUgIT09ICdyZXByZXNlbnRpbmdPcmcnKVxyXG4gICAgICAuZXZlcnkoXHJcbiAgICAgICAgKGNvbnRyb2xOYW1lKSA9PiBmb3JtWzBdLmdldChjb250cm9sTmFtZSk/LnN0YXR1cyA9PT0gRm9ybVN0YXR1cz8uVkFMSURcclxuICAgICAgKTtcclxuICAgIGlmIChcclxuICAgICAgKGZvcm1bMF0uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKT8uc3RhdHVzID09PSBGb3JtU3RhdHVzPy5JTlZBTElEICYmXHJcbiAgICAgICAgaXNBbGxPdGhlckNvbnRyb2xzVmFsaWQgJiZcclxuICAgICAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoID4gMCkgfHxcclxuICAgICAgZm9ybVswXS5zdGF0dXMgPT09IEZvcm1TdGF0dXM/LlZBTElEXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgICAgLmVkaXRHcm91cHNVc2VyUm9sZSh0aGlzLmdldEVkaXRVc2VyUm9sZVBheWxvYWQoZm9ybVswXT8uZ2V0UmF3VmFsdWUoKSkpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdEZvcm1SZXNwb25zZT8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyBlZGl0IHVzZXIgcGF5bG9hZCBmcm9tIHRoZSBmb3JtIGRhdGEgZGVwZW5kcyBvbiB0aGUgR3JvdXBSb3N0ZXJUeXBlIGFuZCByZXR1cm5zLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIHsoQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQpfVxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RWRpdFVzZXJSb2xlUGF5bG9hZChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBmb3JtRGF0YTogYW55XHJcbiAgKTogQWRkT3JFZGl0VXNlclBheWxvYWQgfCBBZGRPckVkaXRVc2VySW5kaXZpZHVhbFJvc3RlclBheWxvYWQge1xyXG4gICAgbGV0IHBheWxvYWQ6IEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkO1xyXG4gICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGU/LklORElWSURVQUwpIHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkT3B0aW9ucyA9IHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBvcmdJZDogb3B0aW9uLmlkIGFzIHN0cmluZyxcclxuICAgICAgICAgIG9yZ05hbWU6IG9wdGlvbi5uYW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIHVzZXJJZDogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy51c2VySWQsXHJcbiAgICAgICAgICBlbWFpbDogdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5lbWFpbCxcclxuICAgICAgICAgIHJvbGVzOiB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHMsXHJcbiAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgb3JnYW5pemF0aW9uczogZm9ybWF0dGVkT3B0aW9ucyxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbilcclxuICAgICAgICBwYXlsb2FkLnBheWxvYWQuY2xhc3NpZmljYXRpb24gPSB7XHJcbiAgICAgICAgICBjbGFzc2lmaWNhdGlvbklkOiBmb3JtRGF0YT8uY2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICAgPyBmb3JtRGF0YT8uY2xhc3NpZmljYXRpb24/LmlkXHJcbiAgICAgICAgICAgIDogJycsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBmb3JtRGF0YT8ubWVtYmVyVHlwZSAmJlxyXG4gICAgICAgICFwYXlsb2FkLnBheWxvYWQucm9sZXM/LmluY2x1ZGVzKGZvcm1EYXRhPy5tZW1iZXJUeXBlPy5pZClcclxuICAgICAgKVxyXG4gICAgICAgIHBheWxvYWQucGF5bG9hZC5yb2xlcz8ucHVzaChmb3JtRGF0YT8ubWVtYmVyVHlwZT8uaWQpO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHBheWxvYWQgPSB7XHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8udXNlcklkLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkcyxcclxuICAgICAgICAgIGdyb3VwSWQ6IHRoaXMuZ3JvdXBzU2VydmljZT8uc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25FZGl0VXNlclJvbGVDYW5jZWxsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWw/LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmb3JtIHJlZmVyZW5jZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRGb3JtR3JvdXBSZWZlcmVuY2UoZm9ybTogRm9ybUdyb3VwW10pIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5jYW5EZWxldGUpIHtcclxuICAgICAgKHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmPy5jb250cm9sc1sncm9sZXMnXSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgPy5hdCgwKVxyXG4gICAgICAgID8uZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBlZGl0IHVzZXIgcm9sZSBmb3JtIGNoYW5nZSBldmVudC5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIGVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZlxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlRm9ybUNoYW5nZShmb3JtOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWYgPSBmb3JtWzBdO1xyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdGhpcy5ncm91cHNTZXJ2aWNlLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQoXHJcbiAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlLFxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uc3RhdHVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHNcclxuICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggJiZcclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWYuY29udHJvbHNbJ3JlcHJlc2VudGluZ09yZyddLnN0YXR1cyA9PT1cclxuICAgICAgICBGb3JtU3RhdHVzLklOVkFMSURcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgY2xhc3NpZmljYXRpb25zIGZyb20gbWFzdGVyIGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRDbGFzc2lmaWNhdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldENsYXNzaWZpY2F0aW9ucygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xhc3NpZmljYXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLmNsYXNzaWZpY2F0aW9uSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLmNsYXNzaWZpY2F0aW9uRGVzYyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAnY2xhc3NpZmljYXRpb24nLFxyXG4gICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgdGhpcy5jbGFzc2lmaWNhdGlvbnMsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uY2xhc3NpZmljYXRpb25cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVtYmVyIHR5cGVzIGZyb20gbWFzdGVyIGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNZW1iZXJUeXBlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1lbWJlclR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICBtZW1iZXJUeXBlcz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgIHRoaXMubWVtYmVyVHlwZXM/LnB1c2goe1xyXG4gICAgICAgIGlkOiBvcHRpb24ucm9sZUlkLFxyXG4gICAgICAgIG5hbWU6IG9wdGlvbi5yb2xlTmFtZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAnbWVtYmVyVHlwZScsXHJcbiAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICB0aGlzLm1lbWJlclR5cGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8/Lm1lbWJlclN0YXR1c1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJlcHJlc2VudGluZyBPcmdhbml6YXRpb25zLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmdOYW1lXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25zKG9yZ05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vcmdTZWFyY2hWYWx1ZSA9IG9yZ05hbWU7XHJcbiAgICB0aGlzLm9yZ2FuaXphdGlvbnMgPSBbXTtcclxuICAgIG9yZ05hbWUgPSBvcmdOYW1lPy50cmltU3RhcnQoKTtcclxuICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgJ211bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucycsXHJcbiAgICAgIFtdLFxyXG4gICAgICAnJ1xyXG4gICAgKTtcclxuICAgIGlmICghb3JnTmFtZSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3JnUmVxdWVzdFBheWxvYWQ6IE9yZ2FuaXphdGlvblJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7IG9yZ05hbWU6IG9yZ05hbWUgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldE9yZ2FuaXphdGlvbnMob3JnUmVxdWVzdFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnMgPSBbXTtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLm9yZ0lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5vcmdOYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdyZXByZXNlbnRpbmdPcmcnLFxyXG4gICAgICAgICAgICAnbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zJyxcclxuICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zLFxyXG4gICAgICAgICAgICBvcmdOYW1lXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3Qgb3JnTmFtZUxlbmd0aCA9XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmPy5nZXQoJ3JlcHJlc2VudGluZ09yZycpPy52YWx1ZT8ubmFtZVxyXG4gICAgICAgICAgICAgID8ubGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBvcmdOYW1lTGVuZ3RoICYmXHJcbiAgICAgICAgICAgIG9yZ05hbWVMZW5ndGggPFxyXG4gICAgICAgICAgICAgIEdyb3Vwc1ZhbGlkYXRpb25QYXR0ZXJucy5yZXByZXNlbnRpbmdPcmdOYW1lTWluTGVuZ3RoICYmXHJcbiAgICAgICAgICAgIG9yZ05hbWVMZW5ndGggIT09IDBcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICAgICAgICBtaW5sZW5ndGg6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgICAgICAgID8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uTWluQ2hhcnMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB0aGUgZHJvcGRvd24gb3B0aW9ucyBvZiBDbGFzc2lmaWNhdGlvbiwgTWVtYmVyIFR5cGUgYW5kIFJlcHJlc2VudGluZyBPcmdhbml6YXRpb24gZm9ybSBmaWVsZHMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZvcm1Db250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbElucHV0UHJvcGVydHlcclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbltdfSBvcHRpb25zXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyxcclxuICAgIGZvcm1Db250cm9sSW5wdXRQcm9wZXJ0eTogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogU2VsZWN0T3B0aW9uW10sXHJcbiAgICBzZWxlY3RlZE9wdGlvbj86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnQ/LmZvcm1GaWVsZHM/LnRvQXJyYXkoKTtcclxuICAgIGZvcm1GaWVsZHM/LmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xyXG4gICAgICBjb25zdCBzZWFyY2hlZE9yZ05hbWUgPSBvcHRpb25zPy5maWx0ZXIoKG9wdGlvbikgPT5cclxuICAgICAgICBzZWxlY3RlZE9wdGlvbj8uaW5jbHVkZXMob3B0aW9uPy5uYW1lKVxyXG4gICAgICApWzBdO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5jb25maWc/LmNvbnRyb2xOYW1lID09PVxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lICYmXHJcbiAgICAgICAgZm9ybUZpZWxkPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5bZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XVxyXG4gICAgICApXHJcbiAgICAgICAgZm9ybUZpZWxkLmNvbXBvbmVudC5pbnN0YW5jZVtmb3JtQ29udHJvbElucHV0UHJvcGVydHldID0gb3B0aW9ucztcclxuICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uICYmIHNlYXJjaGVkT3JnTmFtZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmXHJcbiAgICAgICAgICAuZ2V0KGZvcm1Db250cm9sTmFtZSlcclxuICAgICAgICAgID8uc2V0VmFsdWUoc2VhcmNoZWRPcmdOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VydmVyIHNpZGUgZXJyb3JzIGFuZCBoYW5kbGVzIGl0IGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgaGFuZGxlRXJyb3JzKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXMgPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvckNvZGVzKSAmJiAhZXJyb3I/LmVycm9yPy5zdGF0dXMpIHtcclxuICAgICAgaWYgKGVycm9yQ29kZXNbMF0gIT09ICczMDA0Jykge1xyXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2Uoe1xyXG4gICAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcclxuICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLkVSUk9SLFxyXG4gICAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZT8uaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBEaXNhYmxlcyBmb3JtIHN1Ym1pdCBidXR0b24gd2hlbiBvcmcgbmFtZSBsZW5ndGggaXMgbGVzcyB0aGFuIG1pbkNoYXJUb1NlYXJjaCBhbmQgZ3JlYXRlciB0aGFuIHplcm8uXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBkaXNhYmxlU3VibWl0QnV0dG9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgJ3JlcHJlc2VudGluZ09yZycsXHJcbiAgICAgICAgJ211bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucycsXHJcbiAgICAgICAgW11cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8aWVlZXNhLWR5bmFtaWMtZm9ybVxyXG4gIFtsZWZ0QnV0dG9uTGFiZWxdPVwibGVmdEJ1dHRvbkxhYmVsXCJcclxuICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICBbaXNMZWdlbmRWaXNpYmxlXT1cImZhbHNlXCJcclxuICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gIFthY3Rpb25CdXR0b25BbGlnbl09XCJhY3Rpb25CdXR0b25BbGlnblwiXHJcbiAgW2Zvcm1Hcm91cHNdPVwiZWRpdFVzZXJSb2xlRm9ybUdyb3VwXCJcclxuICBbaXNMZWZ0QnV0dG9uTmVlZGVkXT1cInRydWVcIlxyXG4gIChmb3JtU3VibWl0KT1cIm9uRWRpdFVzZXJSb2xlRm9ybVN1Ym1pdCgkZXZlbnQpXCJcclxuICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRWRpdFVzZXJSb2xlQ2FuY2VsbGVkKClcIlxyXG4gIChmb3JtQ2hlY2tib3hTZWxlY3Rpb24pPVwib25Vc2VyUm9sZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICAoZm9ybUdyb3Vwc1JlZmVyZW5jZSk9XCJnZXRGb3JtR3JvdXBSZWZlcmVuY2UoJGV2ZW50KVwiXHJcbiAgKGZvcm1DaGFuZ2UpPVwib25FZGl0VXNlclJvbGVGb3JtQ2hhbmdlKCRldmVudClcIlxyXG4gIChmb3JtTXVsdGlTZWxlY3RBdXRvQ29tcGxldGVTZWFyY2gpPVwiZ2V0T3JnYW5pemF0aW9ucygkZXZlbnQpXCJcclxuICAobXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zU2VsZWN0ZWQpPVwiZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKCRldmVudClcIlxyXG4gIChmb3JtTXVsdGlTZWxlY3RBdXRvQ29tcGxldGVDbGVhclNlYXJjaFZhbHVlKT1cImRpc2FibGVTdWJtaXRCdXR0b24oKVwiXHJcbj48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcbiJdfQ==
535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFDTCxTQUFTLEVBSVQsZUFBZSxFQUlmLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUF3QixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBV3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQU16RTs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7SUEwQmpDO0lBQ0UsMENBQTBDO0lBQ2xDLGFBQTRCO0lBQ3BDLDBDQUEwQztJ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QjtRQUNqQixJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FDM0IsaUJBQWlCLEVBQ2pCLGdDQUFnQyxFQUNoQyxFQUFFLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0F0bUJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHlOQXVCdEIsb0JBQW9CLGdEQ2xGakMsMjRCQWtCQSwrOFlEb0NZLFlBQVksK0JBQUUsb0JBQW9COzs0RkFLakMsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsaUJBRzlCLGlCQUFpQixDQUFDLElBQUk7d0tBeUJKLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ3JCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGlnblR5cGUsXHJcbiAgQXV0b0NvbXBsZXRlT3B0aW9uLFxyXG4gIENoZWNrYm94T3B0aW9uLFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtR3JpZCxcclxuICBGb3JtTW9kZWwsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBHcm91cFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdHVzLCBBbGVydFR5cGUgfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7XHJcbiAgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkLFxyXG4gIEFkZE9yRWRpdFVzZXJQYXlsb2FkLFxyXG4gIFJlcHJlc2VudGluZ09yZ2FuaXphdGlvbixcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvYWRkLW9yLWVkaXQtdXNlci1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFJvc3RlclR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm9zdGVyLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgT3JnYW5pemF0aW9uLFxyXG4gIE9yZ2FuaXphdGlvblJlcXVlc3RQYXlsb2FkLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9vcmdhbml6YXRpb24ubW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSB2aWV3IGFuZCBmdW5jdGlvbmFsaXRpZXMgdG8gZWRpdCBncm91cCB1c2VycyB0byByb3N0ZXIuXHJcbiAqIEBjbGFzcyBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkRlc3Ryb3l9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1lZGl0LXVzZXItcm9sZXMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY0Zvcm1Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0VXNlclJvbGVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uc2F2ZUJ1dHRvbkxhYmVsO1xyXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgZWRpdFVzZXJSb2xlRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cDtcclxuICB1c2VyUm9sZXMhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIHNlbGVjdGVkVXNlclJvbGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VsZWN0ZWRVc2VySW5mbyE6IEdyb3VwVXNlckluZm87XHJcbiAgYWN0aW9uQnV0dG9uQWxpZ24gPSBBbGlnblR5cGUuTEVGVDtcclxuICBjbGFzc2lmaWNhdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgbWVtYmVyVHlwZXM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgb3JnYW5pemF0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBncm91cFR5cGVzITogR3JvdXBUeXBlQ29uZmlndXJhdGlvbltdO1xyXG4gIGhhc0NsYXNzaWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgZ3JvdXBSb3N0ZXJUeXBlITogR3JvdXBSb3N0ZXJUeXBlO1xyXG4gIHJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgb3JnU2VhcmNoVmFsdWUgPSAnJztcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KSBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBzdWJtaXRGb3JtUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U6IEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBlZGl0IHVzZXIgcm9sZSByZXF1aXJlZCBpbmZvcm1hdGlvbiBhbmQgZm9ybSBncm91cCBhcnJheS5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2UucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5mb3JFYWNoKFxyXG4gICAgICAodXNlcjogUmVwcmVzZW50aW5nT3JnYW5pemF0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvLnVzZXJJZCA9PT0gdXNlci51c2VySWQgJiZcclxuICAgICAgICAgIHVzZXIub3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB1c2VyLm9yZ2FuaXphdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBPcmdhbml6YXRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogb3B0aW9uLm9yZ0lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5vcmdOYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcclxuICAgIHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucz8ubGVuZ3RoXHJcbiAgICAgID8gKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlKVxyXG4gICAgICA6ICh0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkVXNlclJvbGVOYW1lcyA9IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ucm9sZVxyXG4gICAgICA/LnNwbGl0KCcsJylcclxuICAgICAgLm1hcCgocm9sZSkgPT4gcm9sZT8udHJpbSgpKTtcclxuICAgIHRoaXMudXNlclJvbGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRHcm91cFR5cGVVc2VyUm9sZXMoKTtcclxuICAgIHRoaXMudXNlclJvbGVzPy5mb3JFYWNoKChyb2xlKSA9PiB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFVzZXJSb2xlTmFtZXM/LmluY2x1ZGVzKHJvbGU/Lm5hbWUgYXMgc3RyaW5nKSkge1xyXG4gICAgICAgIHJvbGUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzPy5wdXNoKHJvbGU/LmlkIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldEJ1c2luZXNzUnVsZU9mU2VsZWN0ZWRHcm91cCgpO1xyXG4gICAgdGhpcy5oYXNDbGFzc2lmaWNhdGlvbiA9IGdyb3VwVHlwZT8uaGFzQ2xhc3NpZmljYXRpb24gPz8gZmFsc2U7XHJcbiAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9IGdyb3VwVHlwZT8ucm9zdGVyVHlwZSBhcyBHcm91cFJvc3RlclR5cGU7XHJcbiAgICBpZiAoIXRoaXMuZ3JvdXBSb3N0ZXJUeXBlKVxyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbnN0YW50cz8uZXJyb3JzPy5FUjEwMDEsXHJcbiAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGU/LklORElWSURVQUwpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbikgdGhpcy5nZXRDbGFzc2lmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldE1lbWJlclR5cGVzKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVzRm9ybUdyb3VwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBlZGl0IHVzZXIgcm9sZSBmb3JtIGdyb3VwIGFycmF5LlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZWRpdFVzZXJSb2xlc0Zvcm1Hcm91cCgpIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6ICcnLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZT8uVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmVtYWlsICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW1haWwnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmVtYWlsLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZW1haWwsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiBmYWxzZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uZnVsbE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdmdWxsTmFtZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8ubmFtZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5mdWxsTmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmZ1bGxOYW1lLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IHRydWUsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgbGFiZWw6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlLklORElWSURVQUxcclxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJvbGVcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJvbGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdyb2xlcycsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLnVzZXJSb2xlcyxcclxuICAgICAgICAgICAgICBtaW5TZWxlY3Rpb25SZXF1aXJlZDogMSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yb2xlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ucm9sZSxcclxuICAgICAgICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTFxyXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgPy5yb2xlRm9ySW5kaXZpZHVhbFJvc3RlclxyXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ucm9sZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjpcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuSU5ESVZJRFVBTFxyXG4gICAgICAgICAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICAgICAgICAgIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlPy5JTkRJVklEVUFMKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRWRpdFVzZXJSb2xlRm9ybUdyb3VwKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGNsYXNzaWZpY2F0aW9uLCBNZW1iZXIgVHlwZSBhbmQgUmVwcmVzZW50aW5nIE9yZ2FuaXphdGlvbiBmb3JtIGNvbnRyb2xzIHdoaWxlIGVkaXRpbmcgbmV3IHVzZXIgdG8gYW4gaW5kaXZpZHVhbCBncm91cCByb3N0ZXIuXHJcbiAgICogQG1lbWJlcm9mIEFkZFVzZXJSb3N0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVFZGl0VXNlclJvbGVGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oYXNDbGFzc2lmaWNhdGlvbilcclxuICAgICAgdGhpcy51cGRhdGVFZGl0VXNlclJvbGVGb3JtQ29udHJvbHMoXHJcbiAgICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIDEsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmNsYXNzaWZpY2F0aW9uICsgJyonLFxyXG4gICAgICAgICAgY29udHJvbE5hbWU6ICdjbGFzc2lmaWNhdGlvbicsXHJcbiAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuY2xhc3NpZmljYXRpb25zLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuY2xhc3NpZmljYXRpb25zPy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5jbGFzc2lmaWNhdGlvblxyXG4gICAgICAgICAgKVswXSxcclxuICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uc3VwcG9ydFRleHQ/LmNsYXNzaWZpY2F0aW9uLFxyXG4gICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5jbGFzc2lmaWNhdGlvbixcclxuICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5jbGFzc2lmaWNhdGlvbixcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Db250cm9scyhcclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXA/LmZvcm1Hcm91cFswXT8uY29udHJvbHM/Lmxlbmd0aCAtIDEsXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/Lm1lbWJlclR5cGUgKyAnKicsXHJcbiAgICAgICAgY29udHJvbE5hbWU6ICdtZW1iZXJUeXBlJyxcclxuICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMubWVtYmVyVHlwZXMsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMubWVtYmVyVHlwZXM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5tZW1iZXJTdGF0dXNcclxuICAgICAgICApWzBdLFxyXG4gICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ubWVtYmVyVHlwZSxcclxuICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICBhcmlhTGFiZWw6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5tZW1iZXJUeXBlLFxyXG4gICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8ubWVtYmVyVHlwZSxcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHRoaXMudXBkYXRlRWRpdFVzZXJSb2xlRm9ybUNvbnRyb2xzKFxyXG4gICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cD8uZm9ybUdyb3VwWzBdPy5jb250cm9scz8ubGVuZ3RoLFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLk1VTFRJX1NFTEVDVF9BVVRPX0NPTVBMRVRFLFxyXG4gICAgICAgIGxhYmVsOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbiArICcqJyxcclxuICAgICAgICBjb250cm9sTmFtZTogJ3JlcHJlc2VudGluZ09yZycsXHJcbiAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxyXG4gICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnTmFtZU1heExlbmd0aFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKFxyXG4gICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnTmFtZU1pbkxlbmd0aFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uKSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9uczogdGhpcy5vcmdhbml6YXRpb25zLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnM/Lmxlbmd0aFxyXG4gICAgICAgICAgPyB0aGlzLm9yZ1NlYXJjaFZhbHVlPy5sZW5ndGhcclxuICAgICAgICAgICAgPyB0aGlzLm9yZ1NlYXJjaFZhbHVlXHJcbiAgICAgICAgICAgIDogdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcclxuICAgICAgICBzdXBwb3J0TWVzc2FnZTpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5zdXBwb3J0VGV4dD8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLFxyXG4gICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXRcclxuICAgICAgICAgICAgPy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25NYXhDaGFycyxcclxuICAgICAgICBtaW5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0XHJcbiAgICAgICAgICAgID8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uTWluQ2hhcnMsXHJcbiAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgIHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVyblxyXG4gICAgICAgICAgICA/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbixcclxuICAgICAgICBhcmlhTGFiZWw6XHJcbiAgICAgICAgICB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucmVwcmVzZW50aW5nT3JnYW5pemF0aW9uLFxyXG4gICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZFxyXG4gICAgICAgICAgICA/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbixcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgc2VsZWN0ZWQgb3JnYW5pemF0aW9ucy5cclxuICAgKiBAcGFyYW0ge0F1dG9Db21wbGV0ZU9wdGlvbltdfSBzZWxlY3RlZE9yZ1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRPcmdhbml6YXRpb25zKHNlbGVjdGVkT3JnOiBBdXRvQ29tcGxldGVPcHRpb25bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zID0gc2VsZWN0ZWRPcmc7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zXHJcbiAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoXHJcbiAgICAgID8gKHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlKVxyXG4gICAgICA6ICh0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgZWRpdCB1c2VyIGZvcm0gZ3JvdXAgY29udHJvbHMgYnkgYWRkaW5nIGZpZWxkQ29uZmlnIGF0IHJlcXVpcmVkIGluZGV4LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHtGaWVsZENvbmZpZ30gZmllbGRDb25maWdcclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZUVkaXRVc2VyUm9sZUZvcm1Db250cm9scyhcclxuICAgIGluZGV4UG9zaXRpb246IG51bWJlcixcclxuICAgIGZpZWxkQ29uZmlnOiBGaWVsZENvbmZpZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXAuZm9ybUdyb3VwWzBdLmNvbnRyb2xzLnNwbGljZShcclxuICAgICAgaW5kZXhQb3NpdGlvbixcclxuICAgICAgMCxcclxuICAgICAgZmllbGRDb25maWdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHVzZXIgcm9sZSBzZWxlY3Rpb24gYW5kIHNhdmUgYnV0dG9uIGVuYWJsZSBkaXNhYmxlIGluIGVkaXQgdXNlciByb2xlcyBmb3JtLlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb259IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBvblVzZXJSb2xlU2VsZWN0aW9uKGV2ZW50OiBDaGVja2JveE9wdGlvbik6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkcz8ucHVzaChldmVudD8uaWQgYXMgc3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkcyA9IHRoaXMuc2VsZWN0ZWRVc2VyUm9sZUlkcz8uZmlsdGVyKFxyXG4gICAgICAgIChpZCkgPT4gaWQgIT09IGV2ZW50Py5pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZ3JvdXBSb3N0ZXJUeXBlID09PSBHcm91cFJvc3RlclR5cGUuU1lTVEVNX1VTRVIpIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdGhpcy5ncm91cHNTZXJ2aWNlLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQoXHJcbiAgICAgICAgdGhpcy5ncm91cFJvc3RlclR5cGUsXHJcbiAgICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWY/LnN0YXR1cyxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHNcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSByb2xlcyBhbmQgZGV0YWlscyBvZiB1c2VyIG9uIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBvbkVkaXRVc2VyUm9sZUZvcm1TdWJtaXQoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGZvcm1bMF0/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgIGNvbnN0IGlzQWxsT3RoZXJDb250cm9sc1ZhbGlkID0gT2JqZWN0LmtleXMoZm9ybVswXS5jb250cm9scylcclxuICAgICAgLmZpbHRlcigoY29udHJvbE5hbWUpID0+IGNvbnRyb2xOYW1lICE9PSAncmVwcmVzZW50aW5nT3JnJylcclxuICAgICAgLmV2ZXJ5KFxyXG4gICAgICAgIChjb250cm9sTmFtZSkgPT4gZm9ybVswXS5nZXQoY29udHJvbE5hbWUpPy5zdGF0dXMgPT09IEZvcm1TdGF0dXM/LlZBTElEXHJcbiAgICAgICk7XHJcbiAgICBpZiAoXHJcbiAgICAgIChmb3JtWzBdLmdldCgncmVwcmVzZW50aW5nT3JnJyk/LnN0YXR1cyA9PT0gRm9ybVN0YXR1cz8uSU5WQUxJRCAmJlxyXG4gICAgICAgIGlzQWxsT3RoZXJDb250cm9sc1ZhbGlkICYmXHJcbiAgICAgICAgdGhpcy5yZXByZXNlbnRpbmdPcmdhbml6YXRpb25zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgIGZvcm1bMF0uc3RhdHVzID09PSBGb3JtU3RhdHVzPy5WQUxJRFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAgIC5lZGl0R3JvdXBzVXNlclJvbGUodGhpcy5nZXRFZGl0VXNlclJvbGVQYXlsb2FkKGZvcm1bMF0/LmdldFJhd1ZhbHVlKCkpKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRGb3JtUmVzcG9uc2U/LmVtaXQocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgZWRpdCB1c2VyIHBheWxvYWQgZnJvbSB0aGUgZm9ybSBkYXRhIGRlcGVuZHMgb24gdGhlIEdyb3VwUm9zdGVyVHlwZSBhbmQgcmV0dXJucy5cclxuICAgKiBAcGFyYW0geyp9IGZvcm1EYXRhXHJcbiAgICogQHJldHVybiB7KEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkKX1cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEVkaXRVc2VyUm9sZVBheWxvYWQoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgZm9ybURhdGE6IGFueVxyXG4gICk6IEFkZE9yRWRpdFVzZXJQYXlsb2FkIHwgQWRkT3JFZGl0VXNlckluZGl2aWR1YWxSb3N0ZXJQYXlsb2FkIHtcclxuICAgIGxldCBwYXlsb2FkOiBBZGRPckVkaXRVc2VyUGF5bG9hZCB8IEFkZE9yRWRpdFVzZXJJbmRpdmlkdWFsUm9zdGVyUGF5bG9hZDtcclxuICAgIGlmICh0aGlzLmdyb3VwUm9zdGVyVHlwZSA9PT0gR3JvdXBSb3N0ZXJUeXBlPy5JTkRJVklEVUFMKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZE9wdGlvbnMgPSB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubWFwKChvcHRpb24pID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgb3JnSWQ6IG9wdGlvbi5pZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICBvcmdOYW1lOiBvcHRpb24ubmFtZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgcGF5bG9hZCA9IHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICB1c2VySWQ6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8udXNlcklkLFxyXG4gICAgICAgICAgZW1haWw6IHRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uZW1haWwsXHJcbiAgICAgICAgICByb2xlczogdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzLFxyXG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICAgIG9yZ2FuaXphdGlvbnM6IGZvcm1hdHRlZE9wdGlvbnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2xhc3NpZmljYXRpb24pXHJcbiAgICAgICAgcGF5bG9hZC5wYXlsb2FkLmNsYXNzaWZpY2F0aW9uID0ge1xyXG4gICAgICAgICAgY2xhc3NpZmljYXRpb25JZDogZm9ybURhdGE/LmNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICAgID8gZm9ybURhdGE/LmNsYXNzaWZpY2F0aW9uPy5pZFxyXG4gICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZm9ybURhdGE/Lm1lbWJlclR5cGUgJiZcclxuICAgICAgICAhcGF5bG9hZC5wYXlsb2FkLnJvbGVzPy5pbmNsdWRlcyhmb3JtRGF0YT8ubWVtYmVyVHlwZT8uaWQpXHJcbiAgICAgIClcclxuICAgICAgICBwYXlsb2FkLnBheWxvYWQucm9sZXM/LnB1c2goZm9ybURhdGE/Lm1lbWJlclR5cGU/LmlkKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICBwYXlsb2FkID0ge1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIGVtYWlsOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmVtYWlsLFxyXG4gICAgICAgICAgdXNlcklkOiB0aGlzLnNlbGVjdGVkVXNlckluZm8/LnVzZXJJZCxcclxuICAgICAgICAgIHJvbGVzOiB0aGlzLnNlbGVjdGVkVXNlclJvbGVJZHMsXHJcbiAgICAgICAgICBncm91cElkOiB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cElkIGFzIHN0cmluZyxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBmb3JtIGNhbmNlbCBldmVudC5cclxuICAgKiBAbWVtYmVyb2YgRWRpdFVzZXJSb2xlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRWRpdFVzZXJSb2xlQ2FuY2VsbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsPy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZm9ybSByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKGZvcm06IEZvcm1Hcm91cFtdKSB7XHJcbiAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZiA9IGZvcm1bMF07XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRVc2VySW5mbz8uY2FuRGVsZXRlKSB7XHJcbiAgICAgICh0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uY29udHJvbHNbJ3JvbGVzJ10gYXMgRm9ybUFycmF5KVxyXG4gICAgICAgID8uYXQoMClcclxuICAgICAgICA/LmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZWRpdCB1c2VyIHJvbGUgZm9ybSBjaGFuZ2UgZXZlbnQuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBlZGl0VXNlclJvbGVGb3JtR3JvdXBSZWZcclxuICAgKi9cclxuICBvbkVkaXRVc2VyUm9sZUZvcm1DaGFuZ2UoZm9ybTogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmID0gZm9ybVswXTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRoaXMuZ3JvdXBzU2VydmljZS5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkKFxyXG4gICAgICB0aGlzLmdyb3VwUm9zdGVyVHlwZSxcclxuICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWY/LnN0YXR1cyxcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJSb2xlSWRzXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoICYmXHJcbiAgICAgIHRoaXMuZWRpdFVzZXJSb2xlRm9ybUdyb3VwUmVmLmNvbnRyb2xzWydyZXByZXNlbnRpbmdPcmcnXS5zdGF0dXMgPT09XHJcbiAgICAgICAgRm9ybVN0YXR1cy5JTlZBTElEXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVwcmVzZW50aW5nT3JnYW5pemF0aW9ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGNsYXNzaWZpY2F0aW9ucyBmcm9tIG1hc3RlciBkYXRhLlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q2xhc3NpZmljYXRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRDbGFzc2lmaWNhdGlvbnMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsYXNzaWZpY2F0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5jbGFzc2lmaWNhdGlvbklkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5jbGFzc2lmaWNhdGlvbkRlc2MsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICAgJ2NsYXNzaWZpY2F0aW9uJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuY2xhc3NpZmljYXRpb25zLFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlckluZm8/LmNsYXNzaWZpY2F0aW9uXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIG1lbWJlciB0eXBlcyBmcm9tIG1hc3RlciBkYXRhLlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0TWVtYmVyVHlwZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBtZW1iZXJUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZS5nZXRNZW1iZXJUeXBlcygpO1xyXG4gICAgbWVtYmVyVHlwZXM/LmZvckVhY2goKG9wdGlvbikgPT4ge1xyXG4gICAgICB0aGlzLm1lbWJlclR5cGVzPy5wdXNoKHtcclxuICAgICAgICBpZDogb3B0aW9uLnJvbGVJZCxcclxuICAgICAgICBuYW1lOiBvcHRpb24ucm9sZU5hbWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgJ21lbWJlclR5cGUnLFxyXG4gICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgdGhpcy5tZW1iZXJUeXBlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJbmZvPy5tZW1iZXJTdGF0dXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSByZXByZXNlbnRpbmcgT3JnYW5pemF0aW9ucy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JnTmFtZVxyXG4gICAqIEBtZW1iZXJvZiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9ucyhvcmdOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub3JnU2VhcmNoVmFsdWUgPSBvcmdOYW1lO1xyXG4gICAgdGhpcy5vcmdhbml6YXRpb25zID0gW107XHJcbiAgICBvcmdOYW1lID0gb3JnTmFtZT8udHJpbVN0YXJ0KCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgJ3JlcHJlc2VudGluZ09yZycsXHJcbiAgICAgICdtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMnLFxyXG4gICAgICBbXSxcclxuICAgICAgJydcclxuICAgICk7XHJcbiAgICBpZiAoIW9yZ05hbWUpIHJldHVybjtcclxuICAgIGNvbnN0IG9yZ1JlcXVlc3RQYXlsb2FkOiBPcmdhbml6YXRpb25SZXF1ZXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDogeyBvcmdOYW1lOiBvcmdOYW1lIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRPcmdhbml6YXRpb25zKG9yZ1JlcXVlc3RQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25zID0gW107XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9ucz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG9wdGlvbi5vcmdJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBvcHRpb24ub3JnTmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAncmVwcmVzZW50aW5nT3JnJyxcclxuICAgICAgICAgICAgJ211bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9ucyxcclxuICAgICAgICAgICAgb3JnTmFtZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IG9yZ05hbWVMZW5ndGggPVxyXG4gICAgICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZj8uZ2V0KCdyZXByZXNlbnRpbmdPcmcnKT8udmFsdWU/Lm5hbWVcclxuICAgICAgICAgICAgICA/Lmxlbmd0aDtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgb3JnTmFtZUxlbmd0aCAmJlxyXG4gICAgICAgICAgICBvcmdOYW1lTGVuZ3RoIDxcclxuICAgICAgICAgICAgICBHcm91cHNWYWxpZGF0aW9uUGF0dGVybnMucmVwcmVzZW50aW5nT3JnTmFtZU1pbkxlbmd0aCAmJlxyXG4gICAgICAgICAgICBvcmdOYW1lTGVuZ3RoICE9PSAwXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5lZGl0VXNlclJvbGVGb3JtR3JvdXBSZWY/LmdldCgncmVwcmVzZW50aW5nT3JnJyk/LnNldEVycm9ycyh7XHJcbiAgICAgICAgICAgICAgbWlubGVuZ3RoOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdFxyXG4gICAgICAgICAgICAgICAgICA/LnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbk1pbkNoYXJzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGRyb3Bkb3duIG9wdGlvbnMgb2YgQ2xhc3NpZmljYXRpb24sIE1lbWJlciBUeXBlIGFuZCBSZXByZXNlbnRpbmcgT3JnYW5pemF0aW9uIGZvcm0gZmllbGRzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtQ29udHJvbE5hbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gb3B0aW9uc1xyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsXHJcbiAgICBmb3JtQ29udHJvbElucHV0UHJvcGVydHk6IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdLFxyXG4gICAgc2VsZWN0ZWRPcHRpb24/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50Py5mb3JtRmllbGRzPy50b0FycmF5KCk7XHJcbiAgICBmb3JtRmllbGRzPy5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcclxuICAgICAgY29uc3Qgc2VhcmNoZWRPcmdOYW1lID0gb3B0aW9ucz8uZmlsdGVyKChvcHRpb24pID0+XHJcbiAgICAgICAgc2VsZWN0ZWRPcHRpb24/LmluY2x1ZGVzKG9wdGlvbj8ubmFtZSlcclxuICAgICAgKVswXTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uY29uZmlnPy5jb250cm9sTmFtZSA9PT1cclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZSAmJlxyXG4gICAgICAgIGZvcm1GaWVsZD8uY29tcG9uZW50Py5pbnN0YW5jZT8uW2Zvcm1Db250cm9sSW5wdXRQcm9wZXJ0eV1cclxuICAgICAgKVxyXG4gICAgICAgIGZvcm1GaWVsZC5jb21wb25lbnQuaW5zdGFuY2VbZm9ybUNvbnRyb2xJbnB1dFByb3BlcnR5XSA9IG9wdGlvbnM7XHJcbiAgICAgIGlmIChzZWxlY3RlZE9wdGlvbiAmJiBzZWFyY2hlZE9yZ05hbWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRVc2VyUm9sZUZvcm1Hcm91cFJlZlxyXG4gICAgICAgICAgLmdldChmb3JtQ29udHJvbE5hbWUpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHNlYXJjaGVkT3JnTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyBpdCBiYXNlZCBvbiB0aGUgY3VzdG9tIG9yIEh0dHAgZXJyb3JzLlxyXG4gICAqIEBwYXJhbSB7SHR0cEVycm9yUmVzcG9uc2V9IGVycm9yXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykgJiYgIWVycm9yPy5lcnJvcj8uc3RhdHVzKSB7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzWzBdICE9PSAnMzAwNCcpIHtcclxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKHtcclxuICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZS5FUlJPUixcclxuICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U/LmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZXMgZm9ybSBzdWJtaXQgYnV0dG9uIHdoZW4gb3JnIG5hbWUgbGVuZ3RoIGlzIGxlc3MgdGhhbiBtaW5DaGFyVG9TZWFyY2ggYW5kIGdyZWF0ZXIgdGhhbiB6ZXJvLlxyXG4gICAqIEBtZW1iZXJvZiBFZGl0VXNlclJvbGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGlzYWJsZVN1Ym1pdEJ1dHRvbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlcHJlc2VudGluZ09yZ2FuaXphdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICdyZXByZXNlbnRpbmdPcmcnLFxyXG4gICAgICAgICdtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMnLFxyXG4gICAgICAgIFtdXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIEVkaXRVc2VyUm9sZXNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGllZWVzYS1keW5hbWljLWZvcm1cclxuICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgW3JpZ2h0QnV0dG9uTGFiZWxdPVwicmlnaHRCdXR0b25MYWJlbFwiXHJcbiAgW2lzTGVnZW5kVmlzaWJsZV09XCJmYWxzZVwiXHJcbiAgW2lzU3VibWl0QnV0dG9uRGlzYWJsZWRdPVwiaXNTdWJtaXRCdXR0b25EaXNhYmxlZFwiXHJcbiAgW2NvbFdpZHRoXT1cImNvbFdpZHRoXCJcclxuICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gIFtmb3JtR3JvdXBzXT1cImVkaXRVc2VyUm9sZUZvcm1Hcm91cFwiXHJcbiAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAoZm9ybVN1Ym1pdCk9XCJvbkVkaXRVc2VyUm9sZUZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgKGZvcm1MZWZ0QnV0dG9uQ2xpY2tlZCk9XCJvbkVkaXRVc2VyUm9sZUNhbmNlbGxlZCgpXCJcclxuICAoZm9ybUNoZWNrYm94U2VsZWN0aW9uKT1cIm9uVXNlclJvbGVTZWxlY3Rpb24oJGV2ZW50KVwiXHJcbiAgKGZvcm1Hcm91cHNSZWZlcmVuY2UpPVwiZ2V0Rm9ybUdyb3VwUmVmZXJlbmNlKCRldmVudClcIlxyXG4gIChmb3JtQ2hhbmdlKT1cIm9uRWRpdFVzZXJSb2xlRm9ybUNoYW5nZSgkZXZlbnQpXCJcclxuICAoZm9ybU11bHRpU2VsZWN0QXV0b0NvbXBsZXRlU2VhcmNoKT1cImdldE9yZ2FuaXphdGlvbnMoJGV2ZW50KVwiXHJcbiAgKG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9uc1NlbGVjdGVkKT1cImdldFNlbGVjdGVkT3JnYW5pemF0aW9ucygkZXZlbnQpXCJcclxuICAoZm9ybU11bHRpU2VsZWN0QXV0b0NvbXBsZXRlQ2xlYXJTZWFyY2hWYWx1ZSk9XCJkaXNhYmxlU3VibWl0QnV0dG9uKClcIlxyXG4+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG4iXX0=