@experteam-mx/ngx-services 18.8.22 → 18.8.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/apis/api-companies.service.mjs +1 -11
- package/esm2022/lib/apis/models/api-companies.interfaces.mjs +1 -1
- package/esm2022/lib/apis/models/api-companies.types.mjs +1 -1
- package/fesm2022/experteam-mx-ngx-services.mjs +0 -10
- package/fesm2022/experteam-mx-ngx-services.mjs.map +1 -1
- package/lib/apis/api-companies.service.d.ts +1 -8
- package/lib/apis/models/api-companies.interfaces.d.ts +0 -10
- package/lib/apis/models/api-companies.types.d.ts +4 -10
- package/package.json +1 -1
|
@@ -1016,16 +1016,6 @@ export class ApiCompaniesService {
|
|
|
1016
1016
|
}
|
|
1017
1017
|
}).pipe(map(({ data }) => data));
|
|
1018
1018
|
}
|
|
1019
|
-
/**
|
|
1020
|
-
* Sends a POST request to create the global configuration for extra charge entities.
|
|
1021
|
-
*
|
|
1022
|
-
* @param {ExtraChargeEntityGlobalConfigIn} body - The request body containing the global configuration data for extra charge entities.
|
|
1023
|
-
* @return {Observable<ExtraChargeEntityGlobalConfigOut>} An observable that emits the created global configuration for extra charge entities.
|
|
1024
|
-
*/
|
|
1025
|
-
postExtraChargeEntityGlobalConfig(body) {
|
|
1026
|
-
return this.http.post(`${this.url}/extracharge-entities/global-config`, body)
|
|
1027
|
-
.pipe(map(({ data }) => data));
|
|
1028
|
-
}
|
|
1029
1019
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCompaniesService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1030
1020
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCompaniesService, providedIn: 'root' });
|
|
1031
1021
|
}
|
|
@@ -1038,4 +1028,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1038
1028
|
type: Inject,
|
|
1039
1029
|
args: ['env']
|
|
1040
1030
|
}] }, { type: i1.HttpClient }] });
|
|
1041
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvYXBpLWNvbXBhbmllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBZ0ZsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUE7OztBQVUxRCxNQUFNLE9BQU8sbUJBQW1CO0lBRUw7SUFDZjtJQUZWLFlBQ3lCLFlBQXlCLEVBQ3hDLElBQWdCO1FBREQsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN0QixDQUFDO0lBRUw7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFBO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLE1BQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQStCLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUUsRUFBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQzthQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxJQUFvQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGdCQUFnQixFQUFFLElBQUksQ0FBQzthQUNsRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFFLEVBQVUsRUFBRSxJQUFvQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUUsRUFBVTtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQzthQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUUsTUFBbUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMkIsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNoRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUUsRUFBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQixHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFFLElBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQTBCLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLElBQUksQ0FBQzthQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFFLEVBQVUsRUFBRSxJQUFnQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQixHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQy9FLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBRSxFQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBRSxNQUFtQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxHQUFHLElBQUksQ0FBQyxHQUFHLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDbkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUUsTUFBbUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0MsR0FBRyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFFLElBQXNCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdDLEdBQUcsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDO2FBQ3JGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBRSxNQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtZQUN0RSxNQUFNO1NBQ1AsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBRSxFQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBCLEdBQUcsSUFBSSxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUUsSUFBZ0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMEIsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDO2FBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUUsRUFBVSxFQUFFLElBQWdCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBCLEdBQUcsSUFBSSxDQUFDLEdBQUcsY0FBYyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDL0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFFLEVBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxjQUFjLEVBQUUsRUFBRSxDQUFDO2FBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFFLE1BQW1CO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUU7WUFDdkYsTUFBTTtTQUNQLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBRSxFQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtDLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO2FBQzFGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFFLEVBQVU7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7YUFDNUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gseUJBQXlCLENBQUUsSUFBNkI7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMEIsR0FBRyxJQUFJLENBQUMsR0FBRywyQkFBMkIsRUFBRSxJQUFJLENBQUM7YUFDekYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUUsTUFBbUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBa0MsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQy9GLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFFLEVBQVU7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0MsR0FBRyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7YUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUUsSUFBc0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0MsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxJQUFJLENBQUM7YUFDeEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGlCQUFpQixDQUFFLEVBQVUsRUFBRSxJQUFzQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxHQUFHLElBQUksQ0FBQyxHQUFHLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDN0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUUsRUFBVTtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLHNCQUFzQixFQUFFLEVBQUUsQ0FBQzthQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw2QkFBNkIsQ0FBRSxNQUFtQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE0QyxHQUFHLElBQUksQ0FBQyxHQUFHLCtCQUErQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDcEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsMkJBQTJCLENBQUUsRUFBVTtRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQyxHQUFHLElBQUksQ0FBQyxHQUFHLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQzthQUM1RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0QkFBNEIsQ0FBRSxNQUFtQjtRQUMvQyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQUM7YUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyw0QkFBNEI7aUJBQzdELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1osSUFBSSxDQUFDLG1CQUFtQixDQUFDO2dCQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2FBQzlCLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixHQUFHLElBQUk7Z0JBQ1AsSUFBSSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSzthQUN4QyxDQUFDLENBQUMsQ0FDSixDQUNGLENBQUE7WUFFSCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDJCQUEyQixDQUFFLEVBQVUsRUFBRSxJQUFnQztRQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQyxHQUFHLElBQUksQ0FBQyxHQUFHLGlDQUFpQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDbEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLENBQUUsSUFBZ0M7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMEMsR0FBRyxJQUFJLENBQUMsR0FBRywrQkFBK0IsRUFBRSxJQUFJLENBQUM7YUFDN0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsK0JBQStCLENBQUUsSUFBbUM7UUFDbEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNkMsR0FBRyxJQUFJLENBQUMsR0FBRyxrQ0FBa0MsRUFBRSxJQUFJLENBQUM7YUFDbkgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDhCQUE4QixDQUFFLEVBQVUsRUFBRSxJQUFtQztRQUM3RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE2QyxHQUFHLElBQUksQ0FBQyxHQUFHLG9DQUFvQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDeEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQ0FBZ0MsQ0FBRSxXQUF3QyxFQUFFLFFBQWtCO1FBQzVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsb0NBQW9DLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN4SCxTQUFTLEVBQUUsUUFBUSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVM7U0FDOUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBRSxNQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBRSxJQUFnQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUEwQixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUM7YUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBRSxFQUFVLEVBQUUsSUFBZ0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsR0FBRyxJQUFJLENBQUMsR0FBRyxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQzthQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUUsTUFBbUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMkIsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFFLE1BQW1CO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUN0RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUUsTUFBbUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsR0FBRyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUM7YUFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFFLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBeUIsR0FBRyxJQUFJLENBQUMsR0FBRyxhQUFhLEVBQUUsRUFBRSxDQUFDO2FBQ3ZFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBRSxJQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQzthQUN4RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFFLEVBQVUsRUFBRSxJQUFlO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsYUFBYSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUUsTUFBbUI7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzdGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLElBQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsSUFBSSxDQUFDO2FBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUF5QixDQUFFLE1BQW1CO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNyRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBRSxNQUFtQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUM7YUFDbEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFFLE1BQW1CO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQThCLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQzthQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUUsRUFBVTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE2QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQzthQUNoRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUUsSUFBbUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNkIsR0FBRyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUM7YUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FBRSxFQUFVLEVBQUUsSUFBbUI7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBNkIsR0FBRyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBRSxNQUFtQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE0QixHQUFHLElBQUksQ0FBQyxHQUFHLGFBQWEsRUFBRSxFQUFFLE1BQU0sR0FBRyxDQUFDO2FBQ25GLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxvQkFBb0IsQ0FBRSxFQUFFLFVBQVUsRUFBc0I7UUFDdEQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBa0MsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO2FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHlCQUF5QixDQUFFLFVBQStCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWtDLEdBQUcsSUFBSSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUNwRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUUsRUFDakIsU0FBUyxHQUNRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdDLEdBQUcsSUFBSSxDQUFDLEdBQUcsc0JBQXNCLFNBQVMsRUFBRSxDQUFDO2FBQzlGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFFLE1BQW1CO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNqRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBRSxFQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtDLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO2FBQzFGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtQkFBbUIsQ0FBRSxFQUFVLEVBQUUsSUFBd0I7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBa0MsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQ2hHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBRSxNQUFtQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEyQixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFFLE1BQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW9DLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNsRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBRSxJQUF5QjtRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLHFCQUFxQixFQUFFLElBQUksQ0FBQzthQUM1RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUUsRUFBVSxFQUFFLElBQXlCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQzthQUNqRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBRSxFQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLEVBQUUsRUFBRSxDQUFDO2FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQUUsUUFBNkIsRUFBRSxRQUFrQjtRQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLHVCQUF1QixRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDeEcsU0FBUyxFQUFFLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1NBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gseUJBQXlCLENBQUUsU0FBaUIsRUFBRSxJQUFVO1FBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBa0MsR0FBRyxJQUFJLENBQUMsR0FBRywwQkFBMEIsRUFBRSxJQUFJLENBQUM7YUFDaEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLENBQUUsRUFBUztRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsOEJBQThCLEVBQUU7WUFDOUQsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUMxQixZQUFZLEVBQUUsTUFBTTtTQUNyQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBRSxFQUFTO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdDLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBRSxNQUFtQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF5QixHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzVFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBRSxFQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLEVBQUUsQ0FBQzthQUNyRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUUsSUFBYztRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUM7YUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBRSxFQUFVLEVBQUUsSUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF3QixHQUFHLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQzNFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFFLE1BQW1CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdDLEdBQUcsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUMzRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBRSxJQUFzQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLElBQUksQ0FBQzthQUNyRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBRSxNQUFtQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFpQyxHQUFHLElBQUksQ0FBQyxHQUFHLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDN0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQUUsSUFBNEI7UUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxJQUFJLENBQUM7YUFDOUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFFLElBQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBeUIsR0FBRyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDO2FBQ3pFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQUUsRUFBVSxFQUFFLElBQWU7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBeUIsR0FBRyxJQUFJLENBQUMsR0FBRyxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQzthQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUUsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUUsTUFBbUI7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQzdGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFFLElBQXVCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsSUFBSSxDQUFDO2FBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDJCQUEyQixDQUFFLE1BQW1CO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBDLEdBQUcsSUFBSSxDQUFDLEdBQUcsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNoSCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0QkFBNEIsQ0FBRSxJQUErQjtRQUMzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUF5QyxHQUFHLElBQUksQ0FBQyxHQUFHLDZCQUE2QixFQUFFLElBQUksQ0FBQzthQUMxRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsMkJBQTJCLENBQUUsRUFBVSxFQUFFLElBQStCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsK0JBQStCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQzthQUMvRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBRSxNQUFtQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQyxHQUFHLElBQUksQ0FBQyxHQUFHLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDckcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUUsSUFBMkI7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUMsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLENBQUM7YUFDL0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUUsTUFBbUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBa0MsR0FBRyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQy9GLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG1CQUFtQixDQUFFLElBQXVCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWlDLEdBQUcsSUFBSSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsSUFBSSxDQUFDO2FBQ3pGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrQkFBa0IsQ0FBRSxFQUFVLEVBQUUsSUFBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQzlGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFFLEVBQVU7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUMsR0FBRyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsRUFBRSxFQUFFLENBQUM7YUFDM0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUUsTUFBbUI7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUMsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3JHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFFLEVBQVU7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7YUFDOUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUUsSUFBeUI7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBb0MsR0FBRyxJQUFJLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLENBQUM7YUFDL0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHFCQUFxQixDQUFFLEVBQVUsRUFBRSxJQUF5QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFvQyxHQUFHLElBQUksQ0FBQyxHQUFHLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDcEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCwyQkFBMkIsQ0FBRSxNQUFtRDtRQUM5RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLHFCQUFxQixFQUFFO1lBQ3ZGLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVztZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLFVBQVUsTUFBTSxDQUFDLEtBQUssRUFBRTthQUN4QztTQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQ0FBaUMsQ0FBRSxJQUFxQztRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUErQyxHQUFHLElBQUksQ0FBQyxHQUFHLHFDQUFxQyxFQUFFLElBQUksQ0FBQzthQUN4SCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQXhtQ1UsbUJBQW1CLGtCQUVwQixLQUFLOzRHQUZKLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHtcclxuICBBY2NvdW50Q2F0ZWdvcmllc091dCxcclxuICBBY2NvdW50RW50aXRpZXNJbixcclxuICBBY2NvdW50RW50aXRpZXNPdXQsXHJcbiAgQWNjb3VudEluLFxyXG4gIEFjY291bnRPdXQsXHJcbiAgQWNjb3VudHNPdXQsXHJcbiAgQWNjb3VudFR5cGVJbixcclxuICBBY2NvdW50VHlwZU91dCxcclxuICBBY2NvdW50VHlwZXNPdXQsXHJcbiAgQm9hcmRpbmdQcm9jZXNzSWRJbixcclxuICBCb2FyZGluZ1Byb2Nlc3NJbixcclxuICBDb21wYW55Q291bnRyaWVzT3V0LFxyXG4gIENvbXBhbnlDb3VudHJ5SW4sXHJcbiAgQ29tcGFueUNvdW50cnlPdXQsXHJcbiAgQ29tcGFueUNvdW50cnlUYXhlc091dCxcclxuICBDb21wYW55SW4sXHJcbiAgQ29tcGFueU91dCxcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc091dCxcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbixcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQsXHJcbiAgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlSW4sXHJcbiAgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VJbixcclxuICBDb3VudHJ5UmVmZXJlbmNlT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VQcm9kdWN0SW4sXHJcbiAgQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQsXHJcbiAgQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RzT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VzT3V0LFxyXG4gIEVtcGxveWVlQ3VzdG9tZXJzSW4sXHJcbiAgRW1wbG95ZWVDdXN0b21lcnNPdXQsXHJcbiAgRW1wbG95ZWVJbixcclxuICBFbXBsb3llZU91dCxcclxuICBFbXBsb3llZXNDdXN0b21lcnNPdXQsXHJcbiAgRW1wbG95ZWVzT3V0LFxyXG4gIEV4Y2hhbmdlSW4sXHJcbiAgRXhjaGFuZ2VPdXQsXHJcbiAgRXhjaGFuZ2VzT3V0LFxyXG4gIEV4dHJhQ2hhcmdlRW50aXRpZXNJbixcclxuICBFeHRyYUNoYXJnZUVudGl0aWVzT3V0LFxyXG4gIEV4dHJhQ2hhcmdlRW50aXR5R2xvYmFsQ29uZmlnSW4sXHJcbiAgRXh0cmFDaGFyZ2VFbnRpdHlHbG9iYWxDb25maWdPdXQsXHJcbiAgSW5zdGFsbGF0aW9uSW4sXHJcbiAgSW5zdGFsbGF0aW9uT3V0LFxyXG4gIEluc3RhbGxhdGlvbnNPdXQsXHJcbiAgTG9jYXRpb25FbXBsb3llZUJhdGNoSW4sXHJcbiAgTG9jYXRpb25FbXBsb3llZU91dCwgTG9jYXRpb25FbXBsb3llZXNJbixcclxuICBMb2NhdGlvbkVtcGxveWVlc091dCxcclxuICBMb2NhdGlvbkluLFxyXG4gIExvY2F0aW9uT3V0LFxyXG4gIExvY2F0aW9uc091dCxcclxuICBQYXJhbWV0ZXJDb25maWdJbixcclxuICBQYXJhbWV0ZXJDb25maWdPdXQsXHJcbiAgUGFyYW1ldGVyQ29uZmlnc091dCxcclxuICBQYXJhbWV0ZXJzQnlMZXZlbEluLFxyXG4gIFBhcmFtZXRlcnNPdXQsXHJcbiAgUGFyYW1ldGVyc1ZhbHVlc0luLFxyXG4gIFBhcmFtZXRlcnNWYWx1ZXNPdXQsXHJcbiAgUGFyYW1ldGVyVmFsdWVJbixcclxuICBQYXJhbWV0ZXJWYWx1ZU91dCxcclxuICBQcm9kdWN0RW50aXRpZXNJbixcclxuICBQcm9kdWN0RW50aXRpZXNPdXQsXHJcbiAgU3VwcGx5RW50aXRpZXNJbixcclxuICBTdXBwbHlFbnRpdGllc091dCxcclxuICBTeXN0ZW1FbnRpdGllc0luLFxyXG4gIFN5c3RlbUVudGl0aWVzT3V0LFxyXG4gIFN5c3RlbUluLFxyXG4gIFN5c3RlbU91dCxcclxuICBTeXN0ZW1zT3V0LFxyXG4gIFREWEFjY291bnRTZXR0aW5nc0luLFxyXG4gIFREWEFjY291bnRTZXR0aW5nc091dCxcclxuICBURFhBY2NvdW50c1NldHRpbmdzT3V0LFxyXG4gIFdvcmtmbG93Q29uZmlnc0JhdGNoSW4sXHJcbiAgV29ya2Zsb3dDb25maWdzT3V0LFxyXG4gIFdvcmtmbG93c091dFxyXG59IGZyb20gJy4vbW9kZWxzL2FwaS1jb21wYW5pZXMudHlwZXMnXHJcbmltcG9ydCB7IEFwaVN1Y2Nlc3MsIFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9tb2RlbHMvYXBpLm1vZGVscydcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQge1xyXG4gIENvdW50cnlDdXJyZW5jeVJhdGUsXHJcbiAgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlLFxyXG4gIEVtcGxveWVlQ3VzdG9tZXJEaGwsXHJcbn0gZnJvbSAnLi9tb2RlbHMvYXBpLWNvbXBhbmllcy5pbnRlcmZhY2VzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBpQ29tcGFuaWVzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IgKFxyXG4gICAgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBVUkwgZm9yIHRoZSBjb21wYW5pZXMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgVVJMIG9mIHRoZSBjb21wYW5pZXMgQVBJLlxyXG4gICAqL1xyXG4gIGdldCB1cmwgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudHMuYXBpQ29tcGFuaWVzVXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBpbnN0YWxsYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIGluc3RhbGxhdGlvbnMgcXVlcnkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25zT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpbnN0YWxsYXRpb24ncyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEluc3RhbGxhdGlvbnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8SW5zdGFsbGF0aW9uc091dD4+KGAke3RoaXMudXJsfS9pbnN0YWxsYXRpb25zYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGluc3RhbGxhdGlvbiBkZXRhaWxzIGJhc2VkIG9uIHRoZSBnaXZlbiBpbnN0YWxsYXRpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGluc3RhbGxhdGlvbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25PdXQ+fSBBbiBvYnNlcnZhYmxlIG9mIHRoZSBpbnN0YWxsYXRpb24gZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRJbnN0YWxsYXRpb24gKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbk91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxJbnN0YWxsYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vaW5zdGFsbGF0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBwb3N0LWluc3RhbGxhdGlvbiByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgYW5kIHJldHJpZXZlcyB0aGUgaW5zdGFsbGF0aW9uIGRldGFpbHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0luc3RhbGxhdGlvbklufSBib2R5IC0gVGhlIGluc3RhbGxhdGlvbiBkZXRhaWxzIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEluc3RhbGxhdGlvbk91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2UgY29udGFpbmluZyBpbnN0YWxsYXRpb24gb3V0cHV0IGRldGFpbHMuXHJcbiAgICovXHJcbiAgcG9zdEluc3RhbGxhdGlvbiAoYm9keTogSW5zdGFsbGF0aW9uSW4pOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbk91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8SW5zdGFsbGF0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2luc3RhbGxhdGlvbnNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uIHJlY29yZCBieSBpdHMgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpbnN0YWxsYXRpb24gdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSBib2R5IFRoZSBkYXRhIHBheWxvYWQgY29udGFpbmluZyB0aGUgdXBkYXRlZCBpbnN0YWxsYXRpb24gaW5mb3JtYXRpb24uXHJcbiAgICogQHJldHVybiBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgaW5zdGFsbGF0aW9uIGRhdGEgdXBvbiBhIHN1Y2Nlc3NmdWwgdXBkYXRlLlxyXG4gICAqL1xyXG4gIHB1dEluc3RhbGxhdGlvbiAoaWQ6IG51bWJlciwgYm9keTogSW5zdGFsbGF0aW9uSW4pOiBPYnNlcnZhYmxlPEluc3RhbGxhdGlvbk91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxJbnN0YWxsYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vaW5zdGFsbGF0aW9ucy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhbiBpbnN0YWxsYXRpb24gYnkgaXRzIHVuaXF1ZSBpZGVudGlmaWVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpbnN0YWxsYXRpb24gdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBhZnRlciB0aGUgaW5zdGFsbGF0aW9uIGlzIGRlbGV0ZWQuXHJcbiAgICovXHJcbiAgZGVsZXRlSW5zdGFsbGF0aW9uIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9pbnN0YWxsYXRpb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGxvY2F0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIHVzZSBmb3IgcXVlcnlpbmcgbG9jYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TG9jYXRpb25zT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsb2NhdGlvbidzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb25zIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxMb2NhdGlvbnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8TG9jYXRpb25zT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbG9jYXRpb24gZGV0YWlscyBmb3IgYSBnaXZlbiBsb2NhdGlvbiBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbG9jYXRpb24uXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxMb2NhdGlvbk91dD59IEFuIE9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbG9jYXRpb24gZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRMb2NhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8TG9jYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8TG9jYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vbG9jYXRpb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIGxvY2F0aW9uIG9iamVjdCB0byB0aGUgc2VydmVyIGFuZCByZXR1cm5zIHRoZSBjcmVhdGVkIGxvY2F0aW9uIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0xvY2F0aW9uSW59IGJvZHkgLSBUaGUgbG9jYXRpb24gaW5wdXQgb2JqZWN0IHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPExvY2F0aW9uT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3JlYXRlZCBsb2NhdGlvbiBvdXRwdXQgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHBvc3RMb2NhdGlvbiAoYm9keTogTG9jYXRpb25Jbik6IE9ic2VydmFibGU8TG9jYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPExvY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGxvY2F0aW9uIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtMb2NhdGlvbklufSBib2R5IC0gVGhlIHVwZGF0ZWQgbG9jYXRpb24gZGF0YSB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxMb2NhdGlvbk91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBsb2NhdGlvbiBpbmZvcm1hdGlvbi5cclxuICAgKi9cclxuICBwdXRMb2NhdGlvbiAoaWQ6IG51bWJlciwgYm9keTogTG9jYXRpb25Jbik6IE9ic2VydmFibGU8TG9jYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8TG9jYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vbG9jYXRpb25zLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgbG9jYXRpb24gYnkgaXRzIHVuaXF1ZSBpZGVudGlmaWVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBsb2NhdGlvbiB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gZW1wdHkgb2JqZWN0IHVwb24gc3VjY2Vzc2Z1bCBkZWxldGlvbi5cclxuICAgKi9cclxuICBkZWxldGVMb2NhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8e30+PihgJHt0aGlzLnVybH0vbG9jYXRpb25zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFjdGl2ZSBzdXBwbHkgZW50aXRpZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgc3VwcGx5IGVudGl0aWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3VwcGx5RW50aXRpZXNPdXQ+fSBPYnNlcnZhYmxlIGVtaXR0aW5nIHN1cHBseSBlbnRpdGllcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFN1cHBseUVudGl0aWVzQWN0aXZlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U3VwcGx5RW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3VwcGx5RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vc3VwcGx5LWVudGl0aWVzL2FjdGl2ZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBzdXBwbHkgZW50aXRpZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgZmV0Y2ggdGhlIHN1cHBseSBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFN1cHBseUVudGl0aWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBzdXBwbHkgZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRTdXBwbHlFbnRpdGllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U3VwcGx5RW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3VwcGx5RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vc3VwcGx5LWVudGl0aWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBzdXBwbHkgZW50aXRpZXMgaW5mb3JtYXRpb24gdG8gdGhlIHNlcnZlciBhbmQgcmVjZWl2ZXMgdGhlIHByb2Nlc3NlZCBzdXBwbHkgZW50aXRpZXMgZGF0YSBpbiByZXNwb25zZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7U3VwcGx5RW50aXRpZXNJbn0gYm9keSAtIFRoZSBzdXBwbHkgZW50aXRpZXMgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTdXBwbHlFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIHN1cHBseSBlbnRpdGllcyBkYXRhLlxyXG4gICAqL1xyXG4gIHB1dFN1cHBseUVudGl0aWVzIChib2R5OiBTdXBwbHlFbnRpdGllc0luKTogT2JzZXJ2YWJsZTxTdXBwbHlFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxTdXBwbHlFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9zdXBwbHktZW50aXRpZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGVtcGxveWVlcyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBmaWx0ZXIgYW5kIHNvcnQgdGhlIGVtcGxveWVlcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBlbXBsb3llZXMuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFbXBsb3llZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVzT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlc2AsIHtcclxuICAgICAgcGFyYW1zLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYW4gZW1wbG95ZWUncyBkZXRhaWxzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBlbXBsb3llZSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZW1wbG95ZWUncyBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIGdldEVtcGxveWVlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxFbXBsb3llZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxFbXBsb3llZU91dD4+KGAke3RoaXMudXJsfS9lbXBsb3llZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBhIG5ldyBlbXBsb3llZSByZWNvcmQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0VtcGxveWVlSW59IGJvZHkgLSBUaGUgZGF0YSBvZiB0aGUgZW1wbG95ZWUgdG8gYmUgY3JlYXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjcmVhdGVkIGVtcGxveWVlIGRhdGEuXHJcbiAgICovXHJcbiAgcG9zdEVtcGxveWVlIChib2R5OiBFbXBsb3llZUluKTogT2JzZXJ2YWJsZTxFbXBsb3llZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGVtcGxveWVlIHJlY29yZCB3aXRoIHRoZSBzcGVjaWZpZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge0VtcGxveWVlSW59IGJvZHkgLSBUaGUgZW1wbG95ZWUgZGF0YSB0byB1cGRhdGUgdGhlIHJlY29yZCB3aXRoLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgZW1wbG95ZWUgZGF0YS5cclxuICAgKi9cclxuICBwdXRFbXBsb3llZSAoaWQ6IG51bWJlciwgYm9keTogRW1wbG95ZWVJbik6IE9ic2VydmFibGU8RW1wbG95ZWVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWVzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGFuIGVtcGxveWVlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUgdG8gZGVsZXRlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHJlc3BvbnNlIGRhdGEgYWZ0ZXIgdGhlIGVtcGxveWVlIGlzIGRlbGV0ZWQuXHJcbiAgICovXHJcbiAgZGVsZXRlRW1wbG95ZWUgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIGVtcGxveWVlcyBmb3IgYSBzcGVjaWZpZWQgbG9jYXRpb24gYmFzZWQgb24gcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGFuZCByZXRyaWV2ZSB0aGUgbG9jYXRpb24gZW1wbG95ZWVzLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPExvY2F0aW9uRW1wbG95ZWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsaXN0IG9mIGVtcGxveWVlcyBmb3IgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi5cclxuICAgKi9cclxuICBnZXRMb2NhdGlvbkVtcGxveWVlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8TG9jYXRpb25FbXBsb3llZXNPdXQ+PihgJHt0aGlzLnVybH0vbG9jYXRpb24tZW1wbG95ZWVzYCwge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbG9jYXRpb24gZW1wbG95ZWUgZGV0YWlscyBmb3IgYSBnaXZlbiBlbXBsb3llZSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUgd2hvc2UgbG9jYXRpb24gZGV0YWlscyBhcmUgdG8gYmUgcmV0cmlldmVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZU91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbG9jYXRpb24gZW1wbG95ZWUgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRMb2NhdGlvbkVtcGxveWVlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxMb2NhdGlvbkVtcGxveWVlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uRW1wbG95ZWVPdXQ+PihgJHt0aGlzLnVybH0vbG9jYXRpb24tZW1wbG95ZWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgc3BlY2lmaWMgbG9jYXRpb24gZW1wbG95ZWUgYnkgdGhlaXIgdW5pcXVlIGlkZW50aWZpZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTx7fT59IC0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgYWZ0ZXIgdGhlIGRlbGV0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUxvY2F0aW9uRW1wbG95ZWUgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uLWVtcGxveWVlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBiYXRjaCBvZiBsb2NhdGlvbi1lbXBsb3llZSBhc3NvY2lhdGlvbnMgdG8gdGhlIHNlcnZlciBmb3IgcHJvY2Vzc2luZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7TG9jYXRpb25FbXBsb3llZUJhdGNoSW59IGJvZHkgLSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgYSBiYXRjaCBvZiBsb2NhdGlvbi1lbXBsb3llZSBkYXRhIHRvIGJlIHBvc3RlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcHJvY2Vzc2VkIGVtcGxveWVlIGRhdGEgZnJvbSB0aGUgc2VydmVyJ3MgcmVzcG9uc2UuXHJcbiAgICovXHJcbiAgcG9zdExvY2F0aW9uRW1wbG95ZWVCYXRjaCAoYm9keTogTG9jYXRpb25FbXBsb3llZUJhdGNoSW4pOiBPYnNlcnZhYmxlPEVtcGxveWVlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxFbXBsb3llZU91dD4+KGAke3RoaXMudXJsfS9sb2NhdGlvbi1lbXBsb3llZXMvYmF0Y2hgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgY291bnRyaWVzIHdoZXJlIHRoZSBjb21wYW55IG9wZXJhdGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBBUEkgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgY29tcGFueSBjb3VudHJpZXMuXHJcbiAgICovXHJcbiAgZ2V0Q29tcGFueUNvdW50cmllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q29tcGFueUNvdW50cmllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb21wYW55Q291bnRyaWVzT3V0Pj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50cnkgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWVkIGNvbXBhbnkgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb21wYW55LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgaW5mb3JtYXRpb24gb2YgdGhlIGNvbXBhbnkuXHJcbiAgICovXHJcbiAgZ2V0Q29tcGFueUNvdW50cnkgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvbXBhbnlDb3VudHJ5T3V0Pj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIHJlcXVlc3QgdG8gdXBkYXRlIG9yIGNyZWF0ZSBhIGNvbXBhbnkgY291bnRyeSBlbnRyeSBvbiB0aGUgc2VydmVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtDb21wYW55Q291bnRyeUlufSBib2R5IFRoZSBkYXRhIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGNvbXBhbnkgY291bnRyeSBpbmZvcm1hdGlvbiB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeU91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgc2VydmVyIHJlc3BvbnNlIHdpdGggdGhlIHVwZGF0ZWQgb3IgY3JlYXRlZCBjb21wYW55IGNvdW50cnkgZGF0YS5cclxuICAgKi9cclxuICBwb3N0Q29tcGFueUNvdW50cnkgKGJvZHk6IENvbXBhbnlDb3VudHJ5SW4pOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxDb21wYW55Q291bnRyeU91dD4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgY291bnRyeSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyBjb21wYW55LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb21wYW55IHdob3NlIGNvdW50cnkgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge0NvbXBhbnlDb3VudHJ5SW59IGJvZHkgLSBUaGUgdXBkYXRlZCBjb3VudHJ5IGluZm9ybWF0aW9uIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNvbXBhbnkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBjb21wYW55IGNvdW50cnkgaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgcHV0Q29tcGFueUNvdW50cnkgKGlkOiBudW1iZXIsIGJvZHk6IENvbXBhbnlDb3VudHJ5SW4pOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPENvbXBhbnlDb3VudHJ5T3V0Pj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgY29tcGFueS1jb3VudHJ5IGFzc29jaWF0aW9uIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueS1jb3VudHJ5IHJlY29yZCB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXN1bHQgb2YgdGhlIGRlbGV0ZSBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgZGVsZXRlQ29tcGFueUNvdW50cnkgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyaWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByZWZlcmVuY2UgY3VycmVuY2llcyBmb3IgYSBnaXZlbiBjb3VudHJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzT3V0Pn0gVGhlIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY291bnRyeSByZWZlcmVuY2UgY3VycmVuY2llcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc091dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1jdXJyZW5jaWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHJlZmVyZW5jZSBjdXJyZW5jeSBkZXRhaWxzIGZvciBhIHNwZWNpZmljIGNvdW50cnkgdXNpbmcgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb3VudHJ5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY291bnRyeSdzIHJlZmVyZW5jZSBjdXJyZW5jeSBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1jdXJyZW5jaWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGN1cnJlbmNpZXMgZm9yIGRpZmZlcmVudCBjb3VudHJpZXMgYWxvbmcgd2l0aCB0aGVpciBjdXJyZW50IGV4Y2hhbmdlIHJhdGVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmZXRjaCB0aGUgY291bnRyeSByZWZlcmVuY2UgY3VycmVuY2llcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlDdXJyZW5jeVJhdGVbXT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBhbiBhcnJheSBvZiBjb3VudHJ5IGN1cnJlbmN5IHJhdGVzLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlDdXJyZW5jaWVzV2l0aFJhdGUgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvdW50cnlDdXJyZW5jeVJhdGVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXMocGFyYW1zKVxyXG4gICAgICAucGlwZShtZXJnZU1hcCgoY3VycmVuY2llc0RhdGEpID0+IHtcclxuICAgICAgICBjb25zdCAkb2JzZXJ2YWJsZXMgPSBjdXJyZW5jaWVzRGF0YS5jb3VudHJ5X3JlZmVyZW5jZV9jdXJyZW5jaWVzXHJcbiAgICAgICAgICAubWFwKChpdGVtKSA9PlxyXG4gICAgICAgICAgICB0aGlzLmdldEN1cnJlbnRFeGNoYW5nZXMoe1xyXG4gICAgICAgICAgICAgIGN1cnJlbmN5X2lkOiBpdGVtLmN1cnJlbmN5LmlkLFxyXG4gICAgICAgICAgICB9KS5waXBlKFxyXG4gICAgICAgICAgICAgIG1hcCgoZXhjaGFuZ2VzRGF0YSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgICAgICByYXRlOiBleGNoYW5nZXNEYXRhLmV4Y2hhbmdlc1swXT8udmFsdWUsXHJcbiAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKCRvYnNlcnZhYmxlcylcclxuICAgICAgfSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSByZWZlcmVuY2UgY3VycmVuY3kgZm9yIGEgc3BlY2lmaWVkIGNvdW50cnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvdW50cnkuXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbn0gYm9keSAtIFRoZSBkYXRhIGZvciB1cGRhdGluZyB0aGUgY291bnRyeSdzIHJlZmVyZW5jZSBjdXJyZW5jeS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD59IEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2UgY3VycmVuY3kgZGF0YS5cclxuICAgKi9cclxuICBwdXRDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3kgKGlkOiBudW1iZXIsIGJvZHk6IENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeUluKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLWN1cnJlbmNpZXMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBhIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmN5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbn0gYm9keSAtIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmN5IGRhdGEuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBjcmVhdGVkIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmN5LlxyXG4gICAqL1xyXG4gIHBvc3RDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3kgKGJvZHk6IENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeUluKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1jdXJyZW5jaWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byBjcmVhdGUgb3IgdXBkYXRlIGEgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VJbn0gYm9keSAtIFRoZSByZXF1ZXN0IHBheWxvYWQgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2UuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHJlc3BvbnNlIHdpdGggdGhlIGNyZWF0ZWQgb3IgdXBkYXRlZCBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2UuXHJcbiAgICovXHJcbiAgcG9zdENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZSAoYm9keTogQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlSW4pOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlT3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLWV4dHJhLWNoYXJnZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYSBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2UgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2UgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge0NvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZUlufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2Ugd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2UuXHJcbiAgICovXHJcbiAgcHV0Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlIChpZDogbnVtYmVyLCBib2R5OiBDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1leHRyYS1jaGFyZ2VzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2V9IGV4dHJhQ2hhcmdlIC0gVGhlIGNvdW50cnkgcmVmZXJlbmNlIGV4dHJhIGNoYXJnZSBvYmplY3QgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0FjdGl2ZV0gLSBPcHRpb25hbCBwYXJhbWV0ZXIgdG8gZXhwbGljaXRseSBzZXQgdGhlIGFjdGl2ZSBzdGF0dXMgb2YgdGhlIGV4dHJhIGNoYXJnZS5cclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IGFjdGl2ZSBzdGF0dXMgd2lsbCBiZSB0b2dnbGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVDdXN0b21lcnNPdXQ+fSBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgZW1wbG95ZWUgY3VzdG9tZXJzIG91dHB1dC5cclxuICAgKi9cclxuICBwYXRjaENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZSAoZXh0cmFDaGFyZ2U6IENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZSwgaXNBY3RpdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxBcGlTdWNjZXNzPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLWV4dHJhLWNoYXJnZXMvJHtleHRyYUNoYXJnZS5pZH1gLCB7XHJcbiAgICAgIGlzX2FjdGl2ZTogaXNBY3RpdmUgPz8gIWV4dHJhQ2hhcmdlLmlzX2FjdGl2ZVxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhjaGFuZ2UgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIGV4Y2hhbmdlIGRhdGEuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFeGNoYW5nZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGV4Y2hhbmdlIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0RXhjaGFuZ2VzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFeGNoYW5nZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RXhjaGFuZ2VzT3V0Pj4oYCR7dGhpcy51cmx9L2V4Y2hhbmdlc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBhbiBleGNoYW5nZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXhjaGFuZ2VJbn0gYm9keSAtIFRoZSByZXF1ZXN0IGJvZHkgY29udGFpbmluZyB0aGUgZXhjaGFuZ2UgZGF0YSB0byBiZSBzZW50LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXhjaGFuZ2VPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIGNyZWF0ZWQgb3IgdXBkYXRlZCBleGNoYW5nZSBkYXRhLlxyXG4gICAqL1xyXG4gIHBvc3RFeGNoYW5nZSAoYm9keTogRXhjaGFuZ2VJbik6IE9ic2VydmFibGU8RXhjaGFuZ2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEV4Y2hhbmdlT3V0Pj4oYCR7dGhpcy51cmx9L2V4Y2hhbmdlc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBleGNoYW5nZSB3aXRoIG5ldyBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBleGNoYW5nZSB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtFeGNoYW5nZUlufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBleGNoYW5nZSB3aXRoLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXhjaGFuZ2VPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgZXhjaGFuZ2UgZGF0YS5cclxuICAgKi9cclxuICBwdXRFeGNoYW5nZSAoaWQ6IG51bWJlciwgYm9keTogRXhjaGFuZ2VJbik6IE9ic2VydmFibGU8RXhjaGFuZ2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8RXhjaGFuZ2VPdXQ+PihgJHt0aGlzLnVybH0vZXhjaGFuZ2VzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZXhjaGFuZ2VzIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIHRoZSBleGNoYW5nZXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxFeGNoYW5nZXNPdXQ+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgQVBJIHJlc3BvbnNlIGRhdGEgY29udGFpbmluZyB0aGUgY3VycmVudCBleGNoYW5nZXMuXHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudEV4Y2hhbmdlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RXhjaGFuZ2VzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEV4Y2hhbmdlc091dD4+KGAke3RoaXMudXJsfS9leGNoYW5nZXMvY3VycmVudGAsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgY291bnRyeS1zcGVjaWZpYyB0YXggaW5mb3JtYXRpb24gZm9yIGEgY29tcGFueS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGFuZCBxdWVyeSB0aGUgdGF4ZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeVRheGVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB0YXggaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0Q29tcGFueUNvdW50cnlUYXhlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q29tcGFueUNvdW50cnlUYXhlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb21wYW55Q291bnRyeVRheGVzT3V0Pj4oYCR7dGhpcy51cmx9L2NvbXBhbnktY291bnRyeS10YXhlc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhY2NvdW50IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZldGNoaW5nIGFjY291bnQgZGF0YS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgYWNjb3VudCBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEFjY291bnRzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxBY2NvdW50c091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxBY2NvdW50c091dD4+KGAke3RoaXMudXJsfS9hY2NvdW50c2ApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBhY2NvdW50IElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudE91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYWNjb3VudCBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIGdldEFjY291bnQgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFjY291bnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudE91dD4+KGAke3RoaXMudXJsfS9hY2NvdW50cy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBhY2NvdW50IGJ5IHNlbmRpbmcgYWNjb3VudCBkZXRhaWxzIGluIHRoZSBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBY2NvdW50SW59IGJvZHkgLSBUaGUgYWNjb3VudCBpbmZvcm1hdGlvbiB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50T3V0Pn0gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjcmVhdGVkIGFjY291bnQgZGV0YWlscyB1cG9uIHN1Y2Nlc3MuXHJcbiAgICovXHJcbiAgcG9zdEFjY291bnQgKGJvZHk6IEFjY291bnRJbik6IE9ic2VydmFibGU8QWNjb3VudE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8QWNjb3VudE91dD4+KGAke3RoaXMudXJsfS9hY2NvdW50c2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBhY2NvdW50IHdpdGggdGhlIHNwZWNpZmllZCBJRCB1c2luZyB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCB0byBiZSB1cGRhdGVkLlxyXG4gICAqIEBwYXJhbSB7QWNjb3VudElufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBhY2NvdW50IHdpdGguXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50T3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgdXBkYXRlZCBhY2NvdW50IGRldGFpbHMuXHJcbiAgICovXHJcbiAgcHV0QWNjb3VudCAoaWQ6IG51bWJlciwgYm9keTogQWNjb3VudEluKTogT2JzZXJ2YWJsZTxBY2NvdW50T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEFjY291bnRPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudHMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYWNjb3VudCBlbnRpdHkgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIEhUVFAgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYWNjb3VudCBlbnRpdGllcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEFjY291bnRFbnRpdGllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8QWNjb3VudEVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEFjY291bnRFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9hY2NvdW50LWVudGl0aWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGFjY291bnQgZW50aXR5IHVzaW5nIHRoZSBwcm92aWRlZCBkZXRhaWxzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBY2NvdW50RW50aXRpZXNJbn0gYm9keSBUaGUgYWNjb3VudCBlbnRpdHkgZGF0YSB0byBiZSB1cGRhdGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudEVudGl0aWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIGFjY291bnQgZW50aXR5IGRldGFpbHMuXHJcbiAgICovXHJcbiAgcHV0QWNjb3VudEVudGl0eSAoYm9keTogQWNjb3VudEVudGl0aWVzSW4pOiBPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxBY2NvdW50RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudC1lbnRpdGllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIGFjdGl2ZSBhY2NvdW50IGVudGl0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIGFuZCBxdWVyeSBhY3RpdmUgYWNjb3VudCBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBhY3RpdmUgYWNjb3VudCBlbnRpdGllcy5cclxuICAgKi9cclxuICBnZXRBY2NvdW50RW50aXRpZXNBY3RpdmVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxBY2NvdW50RW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudEVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtZW50aXRpZXMvYWN0aXZlc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYWNjb3VudCBjYXRlZ29yaWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIGFjY291bnQgY2F0ZWdvcmllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRDYXRlZ29yaWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmZXRjaGVkIGFjY291bnQgY2F0ZWdvcmllcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEFjY291bnRDYXRlZ29yaWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxBY2NvdW50Q2F0ZWdvcmllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxBY2NvdW50Q2F0ZWdvcmllc091dD4+KGAke3RoaXMudXJsfS9hY2NvdW50LWNhdGVnb3JpZXNgLCB7IHBhcmFtcywgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFjY291bnQgdHlwZXMgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIG9yIGN1c3RvbWl6ZSB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRUeXBlc091dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGFjY291bnQgdHlwZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRBY2NvdW50VHlwZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEFjY291bnRUeXBlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxBY2NvdW50VHlwZXNPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudC10eXBlc2AsIHsgcGFyYW1zLCB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgYWNjb3VudCB0eXBlIGZvciB0aGUgZ2l2ZW4gYWNjb3VudCBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRUeXBlT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBhY2NvdW50IHR5cGUgZGF0YS5cclxuICAgKi9cclxuICBnZXRBY2NvdW50VHlwZSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8QWNjb3VudFR5cGVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudFR5cGVPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudC10eXBlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIGEgbmV3IGFjY291bnQgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QWNjb3VudFR5cGVJbn0gYm9keSAtIFRoZSBkYXRhIGZvciB0aGUgYWNjb3VudCB0eXBlIHRvIGJlIGNyZWF0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50VHlwZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3JlYXRlZCBhY2NvdW50IHR5cGUgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHBvc3RBY2NvdW50VHlwZSAoYm9keTogQWNjb3VudFR5cGVJbik6IE9ic2VydmFibGU8QWNjb3VudFR5cGVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEFjY291bnRUeXBlT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtdHlwZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYW4gYWNjb3VudCB0eXBlIHdpdGggdGhlIHNwZWNpZmllZCBJRCB1c2luZyB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCB0eXBlIHRvIHVwZGF0ZS5cclxuICAgKiBAcGFyYW0ge0FjY291bnRUeXBlSW59IGJvZHkgLSBUaGUgZGF0YSB0byB1cGRhdGUgdGhlIGFjY291bnQgdHlwZSB3aXRoLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudFR5cGVPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgYWNjb3VudCB0eXBlIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0QWNjb3VudFR5cGUgKGlkOiBudW1iZXIsIGJvZHk6IEFjY291bnRUeXBlSW4pOiBPYnNlcnZhYmxlPEFjY291bnRUeXBlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEFjY291bnRUeXBlT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtdHlwZXMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBwYXJhbWV0ZXJzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgb3IgZmV0Y2ggdGhlIGRlc2lyZWQgcGFyYW1ldGVycy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlcnNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGZldGNoZWQgcGFyYW1ldGVycy5cclxuICAgKi9cclxuICBnZXRQYXJhbWV0ZXJzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFBhcmFtZXRlcnNPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVyc2AsIHsgcGFyYW1zLCB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgcGFyYW1ldGVyIHZhbHVlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyIG5hbWVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhcmFtcy5wYXJhbU5hbWVzIC0gQW4gYXJyYXkgb2YgcGFyYW1ldGVyIG5hbWVzIGZvciB3aGljaCB0aGUgdmFsdWVzIG5lZWQgdG8gYmUgZmV0Y2hlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGZldGNoZWQgcGFyYW1ldGVyIHZhbHVlcy5cclxuICAgKi9cclxuICBwb3N0UGFyYW1ldGVyc1ZhbHVlcyAoeyBwYXJhbU5hbWVzIH06IFBhcmFtZXRlcnNWYWx1ZXNJbik6IE9ic2VydmFibGU8UGFyYW1ldGVyc1ZhbHVlc091dD4ge1xyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHBhcmFtTmFtZXMubWFwKChwKSA9PiAoeyBuYW1lOiBwIH0pKVxyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVycy12YWx1ZXNgLCB7IHBhcmFtZXRlcnMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgcGFyYW1ldGVyIHZhbHVlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbGV2ZWwgY29uZmlndXJhdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UGFyYW1ldGVyc0J5TGV2ZWxJbn0gcGFyYW1ldGVycyAtIFRoZSBpbnB1dCBvYmplY3QgY29udGFpbmluZyB0aGUgY3JpdGVyaWEgb3IgbGV2ZWwgZGV0YWlscyB0byByZXRyaWV2ZSB0aGUgcGFyYW1ldGVycy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcmFtZXRlciB2YWx1ZXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgcG9zdFBhcmFtZXRlclZhbHVlQnlNb2RlbCAocGFyYW1ldGVyczogUGFyYW1ldGVyc0J5TGV2ZWxJbik6IE9ic2VydmFibGU8UGFyYW1ldGVyc1ZhbHVlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyc1ZhbHVlc091dD4+KGAke3RoaXMudXJsfS9wYXJhbWV0ZXJzLXZhbHVlc2AsIHsgcGFyYW1ldGVycyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpZWQgcGFyYW1ldGVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGlucHV0IC0gVGhlIGlucHV0IG9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXIgZGV0YWlscy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5wdXQucGFyYW1OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJWYWx1ZU91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyLlxyXG4gICAqL1xyXG4gIGdldFBhcmFtZXRlclZhbHVlICh7XHJcbiAgICBwYXJhbU5hbWUsXHJcbiAgfTogUGFyYW1ldGVyVmFsdWVJbik6IE9ic2VydmFibGU8UGFyYW1ldGVyVmFsdWVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyVmFsdWVPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVycy12YWx1ZXMvJHtwYXJhbU5hbWV9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGNvdW50cnkgcmVmZXJlbmNlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIGNvdW50cnkgcmVmZXJlbmNlcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBkYXRhLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2VzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlc091dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGRhdGEgZm9yIGEgZ2l2ZW4gY291bnRyeSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSBmb3Igd2hpY2ggdGhlIHJlZmVyZW5jZSBkYXRhIGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0Q291bnRyeVJlZmVyZW5jZSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlT3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhIGNvdW50cnkgcmVmZXJlbmNlIHJlc291cmNlIHdpdGggdGhlIHNwZWNpZmllZCBJRCBhbmQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSByZWZlcmVuY2UgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge0NvdW50cnlSZWZlcmVuY2VJbn0gYm9keSAtIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgY291bnRyeSByZWZlcmVuY2Ugd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2Ugb2JqZWN0LlxyXG4gICAqL1xyXG4gIHB1dENvdW50cnlSZWZlcmVuY2UgKGlkOiBudW1iZXIsIGJvZHk6IENvdW50cnlSZWZlcmVuY2VJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlT3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbGlzdCBvZiB3b3JrZmxvd3MgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciB3b3JrZmxvd3MuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxXb3JrZmxvd3NPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHdvcmtmbG93IGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0V29ya2Zsb3dzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxXb3JrZmxvd3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8V29ya2Zsb3dzT3V0Pj4oYCR7dGhpcy51cmx9L3dvcmtmbG93c2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbGlzdCBvZiBlbXBsb3llZSBjdXN0b21lclxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgZW1wbG95ZWUgY3VzdG9tZXJzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVDdXN0b21lcnNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGVtcGxveWVlIGN1c3RvbWVyIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVzQ3VzdG9tZXJzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFbXBsb3llZXNDdXN0b21lcnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVzQ3VzdG9tZXJzT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVyc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBlbXBsb3llZSBjdXN0b21lciByZWNvcmRzIGFuZCBwcm9jZXNzZXMgdGhlIHNlcnZlciByZXNwb25zZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RW1wbG95ZWVDdXN0b21lcnNJbn0gYm9keSAtIFRoZSByZXF1ZXN0IHBheWxvYWQgY29udGFpbmluZyBlbXBsb3llZSBjdXN0b21lciBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlci5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGVtcGxveWVlIGN1c3RvbWVyIGRhdGEgb24gc3VjY2Vzc2Z1bCByZXNwb25zZS5cclxuICAgKi9cclxuICBwb3N0RW1wbG95ZWVDdXN0b21lcnMgKGJvZHk6IEVtcGxveWVlQ3VzdG9tZXJzSW4pOiBPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxFbXBsb3llZUN1c3RvbWVyc091dD4+KGAke3RoaXMudXJsfS9lbXBsb3llZS1jdXN0b21lcnNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGVtcGxveWVlLWN1c3RvbWVyIGFzc29jaWF0aW9uIHJlY29yZCBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBJRCB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlLWN1c3RvbWVyIHJlY29yZCB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtFbXBsb3llZUN1c3RvbWVyc0lufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBlbXBsb3llZS1jdXN0b21lciByZWNvcmQgd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGVtcGxveWVlLWN1c3RvbWVyIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0RW1wbG95ZWVDdXN0b21lcnMgKGlkOiBudW1iZXIsIGJvZHk6IEVtcGxveWVlQ3VzdG9tZXJzSW4pOiBPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVycy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgZW1wbG95ZWUtY3VzdG9tZXIgZGV0YWlscyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW1wbG95ZWUgY3VzdG9tZXIgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgZW1wbG95ZWUtY3VzdG9tZXIgcmVjb3JkIHRvIHVwZGF0ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGVtcGxveWVlLWN1c3RvbWVyIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVDdXN0b21lciAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RW1wbG95ZWVDdXN0b21lcnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVDdXN0b21lcnNPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWUtY3VzdG9tZXJzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGFuIGVtcGxveWVlIGN1c3RvbWVyJ3MgYWN0aXZlIHN0YXRlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFbXBsb3llZUN1c3RvbWVyRGhsfSBlbXBsb3llZSAtIFRoZSBlbXBsb3llZSBjdXN0b21lciBvYmplY3QgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0FjdGl2ZV0gLSBPcHRpb25hbCBwYXJhbWV0ZXIgdG8gZXhwbGljaXRseSBzZXQgdGhlIGFjdGl2ZSBzdGF0ZS5cclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbnVsbCBvciB1bmRlZmluZWQsIHRoZSBhY3RpdmUgc3RhdGUgd2lsbCBiZSB0b2dnbGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVDdXN0b21lcnNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgZW1wbG95ZWUgY3VzdG9tZXIgb3V0cHV0LlxyXG4gICAqL1xyXG4gIHBhdGNoRW1wbG95ZWVDdXN0b21lcnMgKGVtcGxveWVlOiBFbXBsb3llZUN1c3RvbWVyRGhsLCBpc0FjdGl2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPEFwaVN1Y2Nlc3M8RW1wbG95ZWVDdXN0b21lcnNPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWUtY3VzdG9tZXJzLyR7ZW1wbG95ZWUuaWR9YCwge1xyXG4gICAgICBpc19hY3RpdmU6IGlzQWN0aXZlID8/ICFlbXBsb3llZS5pc19hY3RpdmVcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJtaXRzIGEgZmlsZSBjb250YWluaW5nIGVtcGxveWVlIGN1c3RvbWVyIGRhdGEgZm9yIGEgc3BlY2lmaWMgY291bnRyeSB0byB0aGUgc2VydmVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50cnlJZCAtIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb3VudHJ5IGZvciB3aGljaCB0aGUgZGF0YSBpcyBiZWluZyB1cGxvYWRlZC5cclxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGUgLSBUaGUgZmlsZSBjb250YWlucyBlbXBsb3llZSBjdXN0b21lciBkYXRhIHRvIGJlIHVwbG9hZGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Qm9hcmRpbmdQcm9jZXNzSWRJbj59IE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcHJvY2Vzc2VkIGJvYXJkaW5nIHByb2Nlc3MgSUQgb24gc3VjY2Vzcy5cclxuICAgKi9cclxuICBwb3N0RW1wbG95ZWVDdXN0b21lcnNMb2FkIChjb3VudHJ5SWQ6IG51bWJlciwgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8Qm9hcmRpbmdQcm9jZXNzSWRJbj4ge1xyXG4gICAgY29uc3QgYm9keSA9IG5ldyBGb3JtRGF0YSgpXHJcblxyXG4gICAgYm9keS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxyXG4gICAgYm9keS5hcHBlbmQoJ2NvdW50cnlfaWQnLCBjb3VudHJ5SWQudG9TdHJpbmcoKSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxCb2FyZGluZ1Byb2Nlc3NJZEluPj4oYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVycy9sb2FkYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZHMgYSBmaWxlIGNvbnRhaW5pbmcgY3VzdG9tZXIgZGF0YSBmb3IgYSBzcGVjaWZpYyBlbXBsb3llZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY291bnRyeSBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSBJRCBvZiB0aGUgY291bnRyeSB1c2VkIGFzIGEgZmlsdGVyIGZvciBmZXRjaGluZyB0aGUgZW1wbG95ZWUncyBjdXN0b21lcnMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxCbG9iPn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmaWxlIGJsb2IgY29udGFpbmluZyB0aGUgY3VzdG9tZXIgZGF0YS5cclxuICAgKi9cclxuICBnZXRFbXBsb3llZUN1c3RvbWVyc0Rvd25sb2FkIChpZDpudW1iZXIpOk9ic2VydmFibGU8QmxvYj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVycy9kb3dubG9hZGAsIHtcclxuICAgICAgcGFyYW1zOiB7IGNvdW50cnlfaWQ6IGlkIH0sXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBib2FyZGluZyBwcm9jZXNzIGRldGFpbHMgZm9yIGEgZ2l2ZW4gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGJvYXJkaW5nIHByb2Nlc3MgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxCb2FyZGluZ1Byb2Nlc3NJbj59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgYm9hcmRpbmcgcHJvY2VzcyBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIGdldEJvYXJkaW5nUHJvY2VzcyAoaWQ6bnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEJvYXJkaW5nUHJvY2Vzc0luPj4oYCR7dGhpcy51cmx9L2JvYXJkaW5nLXByb2Nlc3MvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIHN5c3RlbXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciB0aGUgc3lzdGVtcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFN5c3RlbXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJldHJpZXZlZCBzeXN0ZW1zIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0U3lzdGVtcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U3lzdGVtc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxTeXN0ZW1zT3V0Pj4oYCR7dGhpcy51cmx9L3N5c3RlbXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgc3lzdGVtIGJ5IHRoZSBzcGVjaWZpZWQgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHN5c3RlbSB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTeXN0ZW1PdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlcXVlc3RlZCBzeXN0ZW0gaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0U3lzdGVtIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTeXN0ZW1PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3lzdGVtT3V0Pj4oYCR7dGhpcy51cmx9L3N5c3RlbXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBvciB1cGRhdGUgYSBzeXN0ZW0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1N5c3RlbUlufSBib2R5IC0gVGhlIGRhdGEgcmVwcmVzZW50aW5nIHRoZSBzeXN0ZW0gdG8gYmUgY3JlYXRlZCBvciB1cGRhdGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3lzdGVtT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzdWx0aW5nIHN5c3RlbSBvdXRwdXQgYWZ0ZXIgdGhlIEFQSSByZXF1ZXN0IHN1Y2NlZWRzLlxyXG4gICAqL1xyXG4gIHBvc3RTeXN0ZW0gKGJvZHk6IFN5c3RlbUluKTogT2JzZXJ2YWJsZTxTeXN0ZW1PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPFN5c3RlbU91dD4+KGAke3RoaXMudXJsfS9zeXN0ZW1zYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBzeXN0ZW0gaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgcHJvdmlkZWQgcmVxdWVzdCBib2R5IGFuZCByZXR1cm5zIHRoZSB1cGRhdGVkIHN5c3RlbSBkZXRhaWxzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzeXN0ZW0gdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge1N5c3RlbUlufSBib2R5IC0gVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgdXBkYXRlZCBzeXN0ZW0gZGV0YWlscy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFN5c3RlbU91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHVwZGF0ZWQgc3lzdGVtIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0U3lzdGVtIChpZDogbnVtYmVyLCBib2R5OiBTeXN0ZW1Jbik6IE9ic2VydmFibGU8U3lzdGVtT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFN5c3RlbU91dD4+KGAke3RoaXMudXJsfS9zeXN0ZW1zLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHN5c3RlbSBlbnRpdGllcyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBvciBzcGVjaWZ5IHRoZSBzeXN0ZW0gZW50aXRpZXMgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTeXN0ZW1FbnRpdGllc091dD59IEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmV0cmlldmVkIHN5c3RlbSBlbnRpdGllcy5cclxuICAgKi9cclxuICBnZXRTeXN0ZW1FbnRpdGllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8U3lzdGVtRW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3lzdGVtRW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vc3lzdGVtLWVudGl0aWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBzeXN0ZW0gZW50aXRpZXMgYnkgc2VuZGluZyB0aGUgcHJvdmlkZWQgZGF0YSB0byB0aGUgc2VydmVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtTeXN0ZW1FbnRpdGllc0lufSBib2R5IC0gVGhlIGRhdGEgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc3lzdGVtIGVudGl0aWVzIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTeXN0ZW1FbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBzeXN0ZW0gZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBwdXRTeXN0ZW1FbnRpdGllcyAoYm9keTogU3lzdGVtRW50aXRpZXNJbik6IE9ic2VydmFibGU8U3lzdGVtRW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8U3lzdGVtRW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vc3lzdGVtLWVudGl0aWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8V29ya2Zsb3dDb25maWdzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgd29ya2Zsb3cgY29uZmlndXJhdGlvbnMuXHJcbiAgICovXHJcbiAgZ2V0V29ya2Zsb3dDb25maWdzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxXb3JrZmxvd0NvbmZpZ3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8V29ya2Zsb3dDb25maWdzT3V0Pj4oYCR7dGhpcy51cmx9L3dvcmtmbG93LWNvbmZpZ3NgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgYmF0Y2ggb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbiBkYXRhIHRvIHRoZSBzZXJ2ZXIgZm9yIHByb2Nlc3NpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1dvcmtmbG93Q29uZmlnc0JhdGNoSW59IGJvZHkgLSBUaGUgaW5wdXQgZGF0YSBjb250YWluaW5nIGEgYmF0Y2ggb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgdG8gYmUgc2VudC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFdvcmtmbG93Q29uZmlnc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcHJvY2Vzc2VkIGJhdGNoIG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb24gZGF0YSBhcyBhIHJlc3BvbnNlLlxyXG4gICAqL1xyXG4gIHBvc3RXb3JrZmxvd0NvbmZpZ3NCYXRjaCAoYm9keTogV29ya2Zsb3dDb25maWdzQmF0Y2hJbik6IE9ic2VydmFibGU8V29ya2Zsb3dDb25maWdzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxXb3JrZmxvd0NvbmZpZ3NPdXQ+PihgJHt0aGlzLnVybH0vd29ya2Zsb3ctY29uZmlncy9iYXRjaGAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIGEgbmV3IGNvbXBhbnkgYW5kIHJldHVybnMgdGhlIGNyZWF0ZWQgY29tcGFueSdzIGRldGFpbHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0NvbXBhbnlJbn0gYm9keSAtIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGNvbXBhbnkgdG8gYmUgY3JlYXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlPdXQ+fSBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSB3aXRoIHRoZSBjcmVhdGVkIGNvbXBhbnkncyBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIHBvc3RDb21wYW55IChib2R5OiBDb21wYW55SW4pOiBPYnNlcnZhYmxlPENvbXBhbnlPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPENvbXBhbnlPdXQ+PihgJHt0aGlzLnVybH0vY29tcGFuaWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBkZXRhaWxzIG9mIGFuIGV4aXN0aW5nIGNvbXBhbnkgdXNpbmcgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb21wYW55IHRvIHVwZGF0ZS5cclxuICAgKiBAcGFyYW0ge0NvbXBhbnlJbn0gYm9keSAtIFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgdXBkYXRlZCBjb21wYW55IGRhdGEuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55T3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGNvbXBhbnkgZGV0YWlscy5cclxuICAgKi9cclxuICBwdXRDb21wYW55IChpZDogbnVtYmVyLCBib2R5OiBDb21wYW55SW4pOiBPYnNlcnZhYmxlPENvbXBhbnlPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Q29tcGFueU91dD4+KGAke3RoaXMudXJsfS9jb21wYW5pZXMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBjb21wYW55IGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueSB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gZW1wdHkgb2JqZWN0IHVwb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvciBhbiBlcnJvciBpZiB0aGUgb3BlcmF0aW9uIGZhaWxzLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUNvbXBhbnkgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2NvbXBhbmllcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBwcm9kdWN0IGVudGl0aWVzIGZyb20gdGhlIHNlcnZlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIG1vZGlmeSB0aGUgcmVxdWVzdCBmb3IgcHJvZHVjdCBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFByb2R1Y3RFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcHJvZHVjdCBlbnRpdGllcyByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIGdldFByb2R1Y3RFbnRpdGllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8UHJvZHVjdEVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFByb2R1Y3RFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9wcm9kdWN0LWVudGl0aWVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBVVCByZXF1ZXN0IHRvIHVwZGF0ZSBwcm9kdWN0IGVudGl0aWVzIGFuZCByZXR1cm5zIHRoZSB1cGRhdGVkIGVudGl0eS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UHJvZHVjdEVudGl0aWVzSW59IGJvZHkgLSBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZHVjdCBlbnRpdHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQcm9kdWN0RW50aXRpZXNPdXQ+fSBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgcHJvZHVjdCBlbnRpdHkuXHJcbiAgICovXHJcbiAgcHV0UHJvZHVjdEVudGl0aWVzIChib2R5OiBQcm9kdWN0RW50aXRpZXNJbik6IE9ic2VydmFibGU8UHJvZHVjdEVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFByb2R1Y3RFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9wcm9kdWN0LWVudGl0aWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3RzIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGFuZCByZXRyaWV2ZSB0aGUgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdHMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdHNPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBmZXRjaGVkIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3RzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RzT3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLXByb2R1Y3RzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIHJlcXVlc3QgdG8gdXBkYXRlIG9yIGNyZWF0ZSBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RJbn0gYm9keSAtIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3RzIHRvIHBvc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdE91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBvciBjcmVhdGVkIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3QgZGF0YS5cclxuICAgKi9cclxuICBwb3N0Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RzIChib2R5OiBDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdEluKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtcHJvZHVjdHNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYSBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0IHdpdGggdGhlIHNwZWNpZmllZCBJRCB1c2luZyB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdCB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdElufSBib2R5IC0gVGhlIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdCBkYXRhIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VQcm9kdWN0T3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgdXBkYXRlZCBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0LlxyXG4gICAqL1xyXG4gIHB1dENvdW50cnlSZWZlcmVuY2VQcm9kdWN0cyAoaWQ6IG51bWJlciwgYm9keTogQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtcHJvZHVjdHMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGV4dHJhIGNoYXJnZSBlbnRpdGllcyBmcm9tIHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIGV4dHJhIGNoYXJnZSBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV4dHJhQ2hhcmdlRW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGV4dHJhIGNoYXJnZSBlbnRpdGllcyByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIGdldEV4dHJhQ2hhcmdlRW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEV4dHJhQ2hhcmdlRW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RXh0cmFDaGFyZ2VFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9leHRyYWNoYXJnZS1lbnRpdGllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBleHRyYSBjaGFyZ2UgZW50aXRpZXMgYnkgc2VuZGluZyB0aGUgcHJvdmlkZWQgZGF0YSB0byB0aGUgc2VydmVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFeHRyYUNoYXJnZUVudGl0aWVzSW59IGJvZHkgLSBUaGUgZGF0YSB0byB1cGRhdGUgdGhlIGV4dHJhIGNoYXJnZSBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV4dHJhQ2hhcmdlRW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgZXh0cmEgY2hhcmdlIGVudGl0aWVzLlxyXG4gICAqL1xyXG4gIHB1dEV4dHJhQ2hhcmdlRW50aXRpZXMgKGJvZHk6IEV4dHJhQ2hhcmdlRW50aXRpZXNJbik6IE9ic2VydmFibGU8RXh0cmFDaGFyZ2VFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxFeHRyYUNoYXJnZUVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L2V4dHJhY2hhcmdlLWVudGl0aWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHBhcmFtZXRlciBjb25maWd1cmF0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25zIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0UGFyYW1ldGVyQ29uZmlncyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxQYXJhbWV0ZXJDb25maWdzT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlci1jb25maWdzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byBjcmVhdGUgb3IgdXBkYXRlIGEgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BhcmFtZXRlckNvbmZpZ0lufSBib2R5IC0gVGhlIGlucHV0IGRhdGEgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlciBjb25maWd1cmF0aW9uIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgc2VydmVyJ3MgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgdXBkYXRlZCBvciBuZXdseSBjcmVhdGVkIHBhcmFtZXRlciBjb25maWd1cmF0aW9uLlxyXG4gICAqL1xyXG4gIHBvc3RQYXJhbWV0ZXJDb25maWcgKGJvZHk6IFBhcmFtZXRlckNvbmZpZ0luKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJDb25maWdPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPFBhcmFtZXRlckNvbmZpZ091dD4+KGAke3RoaXMudXJsfS9wYXJhbWV0ZXItY29uZmlnc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBhIHBhcmFtZXRlciB3aXRoIHRoZSBwcm92aWRlZCBJRCBhbmQgaW5wdXQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb24gdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge1BhcmFtZXRlckNvbmZpZ0lufSBib2R5IC0gVGhlIGlucHV0IGRhdGEgY29udGFpbmluZyB0aGUgdXBkYXRlZCBjb25maWd1cmF0aW9uIGZvciB0aGUgcGFyYW1ldGVyLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIHBhcmFtZXRlciBjb25maWd1cmF0aW9uLlxyXG4gICAqL1xyXG4gIHB1dFBhcmFtZXRlckNvbmZpZyAoaWQ6IG51bWJlciwgYm9keTogUGFyYW1ldGVyQ29uZmlnSW4pOiBPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxQYXJhbWV0ZXJDb25maWdPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVyLWNvbmZpZ3MvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbiBzcGVjaWZpZWQgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbiB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBkZWxldGVkIHBhcmFtZXRlciBjb25maWd1cmF0aW9uIGRhdGEuXHJcbiAgICovXHJcbiAgZGVsZXRlUGFyYW1ldGVyQ29uZmlnIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJDb25maWdPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8UGFyYW1ldGVyQ29uZmlnT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlci1jb25maWdzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIFREWCBhY2NvdW50IHNldHRpbmdzIGJhc2VkIG9uIHRoZSBnaXZlbiBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gUXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBvciBwYWdpbmF0ZSB0aGUgcmVzdWx0cy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxURFhBY2NvdW50c1NldHRpbmdzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBsaXN0IG9mIFREWCBhY2NvdW50IHNldHRpbmdzLlxyXG4gICAqL1xyXG4gIGdldFREWEFjY291bnRzU2V0dGluZ3MgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFREWEFjY291bnRzU2V0dGluZ3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8VERYQWNjb3VudHNTZXR0aW5nc091dD4+KGAke3RoaXMudXJsfS90ZHgtYWNjb3VudC1zZXR0aW5nc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgc2luZ2xlIFREWCBhY2NvdW50IHNldHRpbmcgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBURFggYWNjb3VudCBzZXR0aW5nIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxURFhBY2NvdW50U2V0dGluZ3NPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHJlcXVlc3RlZCBURFggYWNjb3VudCBzZXR0aW5nLlxyXG4gICAqL1xyXG4gIGdldFREWEFjY291bnRTZXR0aW5ncyAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8VERYQWNjb3VudFNldHRpbmdzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFREWEFjY291bnRTZXR0aW5nc091dD4+KGAke3RoaXMudXJsfS90ZHgtYWNjb3VudC1zZXR0aW5ncy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBURFggYWNjb3VudCBzZXR0aW5nIHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1REWEFjY291bnRTZXR0aW5nc0lufSBib2R5IC0gVGhlIGRhdGEgdXNlZCB0byBjcmVhdGUgdGhlIG5ldyBURFggYWNjb3VudCBzZXR0aW5nLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFREWEFjY291bnRTZXR0aW5nc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbmV3bHkgY3JlYXRlZCBURFggYWNjb3VudCBzZXR0aW5nLlxyXG4gICAqL1xyXG4gIHBvc3RURFhBY2NvdW50U2V0dGluZ3MgKGJvZHk6VERYQWNjb3VudFNldHRpbmdzSW4pOiBPYnNlcnZhYmxlPFREWEFjY291bnRTZXR0aW5nc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8VERYQWNjb3VudFNldHRpbmdzT3V0Pj4oYCR7dGhpcy51cmx9L3RkeC1hY2NvdW50LXNldHRpbmdzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIFREWCBhY2NvdW50IHNldHRpbmcgaWRlbnRpZmllZCBieSBpdHMgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIFREWCBhY2NvdW50IHNldHRpbmcgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge1REWEFjY291bnRTZXR0aW5nc0lufSBib2R5IC0gVGhlIHVwZGF0ZWQgZGF0YSBmb3IgdGhlIFREWCBhY2NvdW50IHNldHRpbmcuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8VERYQWNjb3VudFNldHRpbmdzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIFREWCBhY2NvdW50IHNldHRpbmcuXHJcbiAgICovXHJcbiAgcHV0VERYQWNjb3VudFNldHRpbmdzIChpZDogbnVtYmVyLCBib2R5OlREWEFjY291bnRTZXR0aW5nc0luKTogT2JzZXJ2YWJsZTxURFhBY2NvdW50U2V0dGluZ3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8VERYQWNjb3VudFNldHRpbmdzT3V0Pj4oYCR7dGhpcy51cmx9L3RkeC1hY2NvdW50LXNldHRpbmdzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGVtcGxveWVlcyBvZiBhIHNwZWNpZmljIGxvY2F0aW9uIHVzaW5nIGEgcHJvdmlkZWQgdG9rZW4uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gSW5wdXQgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QsIGRlZmluZWQgYnkgdGhlIGBMb2NhdGlvbkVtcGxveWVlc0luYCBpbnRlcmZhY2UuXHJcbiAgICogQHJldHVybnMgQW4gYE9ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZXNPdXQ+YCB0aGF0IGVtaXRzIHRoZSBlbXBsb3llZXNcclxuICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGxvY2F0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSB0eXBlIGlzIGBBcGlTdWNjZXNzPExvY2F0aW9uRW1wbG95ZWVzT3V0PmAsIGZyb20gd2hpY2ggdGhlIGBkYXRhYCBmaWVsZCBpcyBleHRyYWN0ZWQuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb25FbXBsb3llZXNCeVRva2VuIChwYXJhbXM6IHsgdG9rZW46IHN0cmluZywgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zIH0pOiBPYnNlcnZhYmxlPExvY2F0aW9uRW1wbG95ZWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uRW1wbG95ZWVzT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uLWVtcGxveWVlc2AsIHtcclxuICAgICAgcGFyYW1zOiBwYXJhbXMucXVlcnlQYXJhbXMsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cGFyYW1zLnRva2VufWBcclxuICAgICAgfVxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZm9yIGV4dHJhIGNoYXJnZSBlbnRpdGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXh0cmFDaGFyZ2VFbnRpdHlHbG9iYWxDb25maWdJbn0gYm9keSAtIFRoZSByZXF1ZXN0IGJvZHkgY29udGFpbmluZyB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgZXh0cmEgY2hhcmdlIGVudGl0aWVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXh0cmFDaGFyZ2VFbnRpdHlHbG9iYWxDb25maWdPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGNyZWF0ZWQgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZm9yIGV4dHJhIGNoYXJnZSBlbnRpdGllcy5cclxuICAgKi9cclxuICBwb3N0RXh0cmFDaGFyZ2VFbnRpdHlHbG9iYWxDb25maWcgKGJvZHk6IEV4dHJhQ2hhcmdlRW50aXR5R2xvYmFsQ29uZmlnSW4pOiBPYnNlcnZhYmxlPEV4dHJhQ2hhcmdlRW50aXR5R2xvYmFsQ29uZmlnT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxFeHRyYUNoYXJnZUVudGl0eUdsb2JhbENvbmZpZ091dD4+KGAke3RoaXMudXJsfS9leHRyYWNoYXJnZS1lbnRpdGllcy9nbG9iYWwtY29uZmlnYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1031
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvYXBpLWNvbXBhbmllcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBOEVsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUE7OztBQVUxRCxNQUFNLE9BQU8sbUJBQW1CO0lBRUw7SUFDZjtJQUZWLFlBQ3lCLFlBQXlCLEVBQ3hDLElBQWdCO1FBREQsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN0QixDQUFDO0lBRUw7Ozs7T0FJRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFBO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLE1BQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQStCLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUUsRUFBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQzthQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJ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QUMsR0FBRyxDQUFvQyxHQUFHLElBQUksQ0FBQyxHQUFHLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7YUFDcEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCwyQkFBMkIsQ0FBRSxNQUFtRDtRQUM5RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQyxHQUFHLElBQUksQ0FBQyxHQUFHLHFCQUFxQixFQUFFO1lBQ3ZGLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVztZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLFVBQVUsTUFBTSxDQUFDLEtBQUssRUFBRTthQUN4QztTQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQTdsQ1UsbUJBQW1CLGtCQUVwQixLQUFLOzRHQUZKLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL25neC1zZXJ2aWNlcy5tb2RlbHMnXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHtcclxuICBBY2NvdW50Q2F0ZWdvcmllc091dCxcclxuICBBY2NvdW50RW50aXRpZXNJbixcclxuICBBY2NvdW50RW50aXRpZXNPdXQsXHJcbiAgQWNjb3VudEluLFxyXG4gIEFjY291bnRPdXQsXHJcbiAgQWNjb3VudHNPdXQsXHJcbiAgQWNjb3VudFR5cGVJbixcclxuICBBY2NvdW50VHlwZU91dCxcclxuICBBY2NvdW50VHlwZXNPdXQsXHJcbiAgQm9hcmRpbmdQcm9jZXNzSWRJbixcclxuICBCb2FyZGluZ1Byb2Nlc3NJbixcclxuICBDb21wYW55Q291bnRyaWVzT3V0LFxyXG4gIENvbXBhbnlDb3VudHJ5SW4sXHJcbiAgQ29tcGFueUNvdW50cnlPdXQsXHJcbiAgQ29tcGFueUNvdW50cnlUYXhlc091dCxcclxuICBDb21wYW55SW4sXHJcbiAgQ29tcGFueU91dCxcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc091dCxcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbixcclxuICBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQsXHJcbiAgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlSW4sXHJcbiAgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VJbixcclxuICBDb3VudHJ5UmVmZXJlbmNlT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VQcm9kdWN0SW4sXHJcbiAgQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQsXHJcbiAgQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RzT3V0LFxyXG4gIENvdW50cnlSZWZlcmVuY2VzT3V0LFxyXG4gIEVtcGxveWVlQ3VzdG9tZXJzSW4sXHJcbiAgRW1wbG95ZWVDdXN0b21lcnNPdXQsXHJcbiAgRW1wbG95ZWVJbixcclxuICBFbXBsb3llZU91dCxcclxuICBFbXBsb3llZXNDdXN0b21lcnNPdXQsXHJcbiAgRW1wbG95ZWVzT3V0LFxyXG4gIEV4Y2hhbmdlSW4sXHJcbiAgRXhjaGFuZ2VPdXQsXHJcbiAgRXhjaGFuZ2VzT3V0LFxyXG4gIEV4dHJhQ2hhcmdlRW50aXRpZXNJbixcclxuICBFeHRyYUNoYXJnZUVudGl0aWVzT3V0LFxyXG4gIEluc3RhbGxhdGlvbkluLFxyXG4gIEluc3RhbGxhdGlvbk91dCxcclxuICBJbnN0YWxsYXRpb25zT3V0LFxyXG4gIExvY2F0aW9uRW1wbG95ZWVCYXRjaEluLFxyXG4gIExvY2F0aW9uRW1wbG95ZWVPdXQsIExvY2F0aW9uRW1wbG95ZWVzSW4sXHJcbiAgTG9jYXRpb25FbXBsb3llZXNPdXQsXHJcbiAgTG9jYXRpb25JbixcclxuICBMb2NhdGlvbk91dCxcclxuICBMb2NhdGlvbnNPdXQsXHJcbiAgUGFyYW1ldGVyQ29uZmlnSW4sXHJcbiAgUGFyYW1ldGVyQ29uZmlnT3V0LFxyXG4gIFBhcmFtZXRlckNvbmZpZ3NPdXQsXHJcbiAgUGFyYW1ldGVyc0J5TGV2ZWxJbixcclxuICBQYXJhbWV0ZXJzT3V0LFxyXG4gIFBhcmFtZXRlcnNWYWx1ZXNJbixcclxuICBQYXJhbWV0ZXJzVmFsdWVzT3V0LFxyXG4gIFBhcmFtZXRlclZhbHVlSW4sXHJcbiAgUGFyYW1ldGVyVmFsdWVPdXQsXHJcbiAgUHJvZHVjdEVudGl0aWVzSW4sXHJcbiAgUHJvZHVjdEVudGl0aWVzT3V0LFxyXG4gIFN1cHBseUVudGl0aWVzSW4sXHJcbiAgU3VwcGx5RW50aXRpZXNPdXQsXHJcbiAgU3lzdGVtRW50aXRpZXNJbixcclxuICBTeXN0ZW1FbnRpdGllc091dCxcclxuICBTeXN0ZW1JbixcclxuICBTeXN0ZW1PdXQsXHJcbiAgU3lzdGVtc091dCxcclxuICBURFhBY2NvdW50U2V0dGluZ3NJbixcclxuICBURFhBY2NvdW50U2V0dGluZ3NPdXQsXHJcbiAgVERYQWNjb3VudHNTZXR0aW5nc091dCxcclxuICBXb3JrZmxvd0NvbmZpZ3NCYXRjaEluLFxyXG4gIFdvcmtmbG93Q29uZmlnc091dCxcclxuICBXb3JrZmxvd3NPdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktY29tcGFuaWVzLnR5cGVzJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7IGZvcmtKb2luLCBtYXAsIG1lcmdlTWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHtcclxuICBDb3VudHJ5Q3VycmVuY3lSYXRlLFxyXG4gIENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZSxcclxuICBFbXBsb3llZUN1c3RvbWVyRGhsLFxyXG59IGZyb20gJy4vbW9kZWxzL2FwaS1jb21wYW5pZXMuaW50ZXJmYWNlcydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaUNvbXBhbmllc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yIChcclxuICAgIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52aXJvbm1lbnRzOiBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgVVJMIGZvciB0aGUgY29tcGFuaWVzIEFQSSBmcm9tIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9ucy5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIFVSTCBvZiB0aGUgY29tcGFuaWVzIEFQSS5cclxuICAgKi9cclxuICBnZXQgdXJsICgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnRzLmFwaUNvbXBhbmllc1VybCA/PyAnJ1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgaW5zdGFsbGF0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIHRoZSBpbnN0YWxsYXRpb25zIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8SW5zdGFsbGF0aW9uc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaW5zdGFsbGF0aW9uJ3MgZGF0YS5cclxuICAgKi9cclxuICBnZXRJbnN0YWxsYXRpb25zIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25zT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEluc3RhbGxhdGlvbnNPdXQ+PihgJHt0aGlzLnVybH0vaW5zdGFsbGF0aW9uc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBpbnN0YWxsYXRpb24gZGV0YWlscyBiYXNlZCBvbiB0aGUgZ2l2ZW4gaW5zdGFsbGF0aW9uIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBpbnN0YWxsYXRpb24gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SW5zdGFsbGF0aW9uT3V0Pn0gQW4gb2JzZXJ2YWJsZSBvZiB0aGUgaW5zdGFsbGF0aW9uIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0SW5zdGFsbGF0aW9uIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8SW5zdGFsbGF0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2luc3RhbGxhdGlvbnMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgcG9zdC1pbnN0YWxsYXRpb24gcmVxdWVzdCB0byB0aGUgc2VydmVyIGFuZCByZXRyaWV2ZXMgdGhlIGluc3RhbGxhdGlvbiBkZXRhaWxzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtJbnN0YWxsYXRpb25Jbn0gYm9keSAtIFRoZSBpbnN0YWxsYXRpb24gZGV0YWlscyB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25PdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlIGNvbnRhaW5pbmcgaW5zdGFsbGF0aW9uIG91dHB1dCBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIHBvc3RJbnN0YWxsYXRpb24gKGJvZHk6IEluc3RhbGxhdGlvbkluKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEluc3RhbGxhdGlvbk91dD4+KGAke3RoaXMudXJsfS9pbnN0YWxsYXRpb25zYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiByZWNvcmQgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaW5zdGFsbGF0aW9uIHRvIHVwZGF0ZS5cclxuICAgKiBAcGFyYW0gYm9keSBUaGUgZGF0YSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgaW5zdGFsbGF0aW9uIGluZm9ybWF0aW9uLlxyXG4gICAqIEByZXR1cm4gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGluc3RhbGxhdGlvbiBkYXRhIHVwb24gYSBzdWNjZXNzZnVsIHVwZGF0ZS5cclxuICAgKi9cclxuICBwdXRJbnN0YWxsYXRpb24gKGlkOiBudW1iZXIsIGJvZHk6IEluc3RhbGxhdGlvbkluKTogT2JzZXJ2YWJsZTxJbnN0YWxsYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8SW5zdGFsbGF0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2luc3RhbGxhdGlvbnMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYW4gaW5zdGFsbGF0aW9uIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaW5zdGFsbGF0aW9uIHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTx7fT59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2UgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBkZWxldGVkLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUluc3RhbGxhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8e30+PihgJHt0aGlzLnVybH0vaW5zdGFsbGF0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBsb2NhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHF1ZXJ5aW5nIGxvY2F0aW9ucy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPExvY2F0aW9uc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbG9jYXRpb24ncyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldExvY2F0aW9ucyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8TG9jYXRpb25zT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uc091dD4+KGAke3RoaXMudXJsfS9sb2NhdGlvbnNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxvY2F0aW9uIGRldGFpbHMgZm9yIGEgZ2l2ZW4gbG9jYXRpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGxvY2F0aW9uLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TG9jYXRpb25PdXQ+fSBBbiBPYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGxvY2F0aW9uIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb24gKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPExvY2F0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBsb2NhdGlvbiBvYmplY3QgdG8gdGhlIHNlcnZlciBhbmQgcmV0dXJucyB0aGUgY3JlYXRlZCBsb2NhdGlvbiBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtMb2NhdGlvbklufSBib2R5IC0gVGhlIGxvY2F0aW9uIGlucHV0IG9iamVjdCB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxMb2NhdGlvbk91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGNyZWF0ZWQgbG9jYXRpb24gb3V0cHV0IG9iamVjdC5cclxuICAgKi9cclxuICBwb3N0TG9jYXRpb24gKGJvZHk6IExvY2F0aW9uSW4pOiBPYnNlcnZhYmxlPExvY2F0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxMb2NhdGlvbk91dD4+KGAke3RoaXMudXJsfS9sb2NhdGlvbnNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBsb2NhdGlvbiB0byBiZSB1cGRhdGVkLlxyXG4gICAqIEBwYXJhbSB7TG9jYXRpb25Jbn0gYm9keSAtIFRoZSB1cGRhdGVkIGxvY2F0aW9uIGRhdGEgdG8gYmUgc2VudCBpbiB0aGUgcmVxdWVzdCBib2R5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8TG9jYXRpb25PdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgbG9jYXRpb24gaW5mb3JtYXRpb24uXHJcbiAgICovXHJcbiAgcHV0TG9jYXRpb24gKGlkOiBudW1iZXIsIGJvZHk6IExvY2F0aW9uSW4pOiBPYnNlcnZhYmxlPExvY2F0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPExvY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9ucy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIGxvY2F0aW9uIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbG9jYXRpb24gdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGVtcHR5IG9iamVjdCB1cG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uXHJcbiAgICovXHJcbiAgZGVsZXRlTG9jYXRpb24gKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHt9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPHt9Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhY3RpdmUgc3VwcGx5IGVudGl0aWVzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIHN1cHBseSBlbnRpdGllcy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFN1cHBseUVudGl0aWVzT3V0Pn0gT2JzZXJ2YWJsZSBlbWl0dGluZyBzdXBwbHkgZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRTdXBwbHlFbnRpdGllc0FjdGl2ZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFN1cHBseUVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFN1cHBseUVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L3N1cHBseS1lbnRpdGllcy9hY3RpdmVzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc3VwcGx5IGVudGl0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgYW5kIGZldGNoIHRoZSBzdXBwbHkgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTdXBwbHlFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgc3VwcGx5IGVudGl0aWVzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0U3VwcGx5RW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFN1cHBseUVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFN1cHBseUVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L3N1cHBseS1lbnRpdGllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgc3VwcGx5IGVudGl0aWVzIGluZm9ybWF0aW9uIHRvIHRoZSBzZXJ2ZXIgYW5kIHJlY2VpdmVzIHRoZSBwcm9jZXNzZWQgc3VwcGx5IGVudGl0aWVzIGRhdGEgaW4gcmVzcG9uc2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1N1cHBseUVudGl0aWVzSW59IGJvZHkgLSBUaGUgc3VwcGx5IGVudGl0aWVzIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3VwcGx5RW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHByb2Nlc3NlZCBzdXBwbHkgZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBwdXRTdXBwbHlFbnRpdGllcyAoYm9keTogU3VwcGx5RW50aXRpZXNJbik6IE9ic2VydmFibGU8U3VwcGx5RW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8U3VwcGx5RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vc3VwcGx5LWVudGl0aWVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBlbXBsb3llZXMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gZmlsdGVyIGFuZCBzb3J0IHRoZSBlbXBsb3llZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxpc3Qgb2YgZW1wbG95ZWVzLlxyXG4gICAqL1xyXG4gIGdldEVtcGxveWVlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RW1wbG95ZWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEVtcGxveWVlc091dD4+KGAke3RoaXMudXJsfS9lbXBsb3llZXNgLCB7XHJcbiAgICAgIHBhcmFtcyxcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFuIGVtcGxveWVlJ3MgZGV0YWlscyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW1wbG95ZWUgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RW1wbG95ZWVPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGVtcGxveWVlJ3MgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRFbXBsb3llZSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8RW1wbG95ZWVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWVzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byBjcmVhdGUgYSBuZXcgZW1wbG95ZWUgcmVjb3JkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtFbXBsb3llZUlufSBib2R5IC0gVGhlIGRhdGEgb2YgdGhlIGVtcGxveWVlIHRvIGJlIGNyZWF0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZU91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY3JlYXRlZCBlbXBsb3llZSBkYXRhLlxyXG4gICAqL1xyXG4gIHBvc3RFbXBsb3llZSAoYm9keTogRW1wbG95ZWVJbik6IE9ic2VydmFibGU8RW1wbG95ZWVPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEVtcGxveWVlT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBlbXBsb3llZSByZWNvcmQgd2l0aCB0aGUgc3BlY2lmaWVkIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtFbXBsb3llZUlufSBib2R5IC0gVGhlIGVtcGxveWVlIGRhdGEgdG8gdXBkYXRlIHRoZSByZWNvcmQgd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIGVtcGxveWVlIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0RW1wbG95ZWUgKGlkOiBudW1iZXIsIGJvZHk6IEVtcGxveWVlSW4pOiBPYnNlcnZhYmxlPEVtcGxveWVlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEVtcGxveWVlT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhbiBlbXBsb3llZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSByZXNwb25zZSBkYXRhIGFmdGVyIHRoZSBlbXBsb3llZSBpcyBkZWxldGVkLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUVtcGxveWVlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9lbXBsb3llZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBlbXBsb3llZXMgZm9yIGEgc3BlY2lmaWVkIGxvY2F0aW9uIGJhc2VkIG9uIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgcmV0cmlldmUgdGhlIGxvY2F0aW9uIGVtcGxveWVlcy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxMb2NhdGlvbkVtcGxveWVlc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgbGlzdCBvZiBlbXBsb3llZXMgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb25FbXBsb3llZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPExvY2F0aW9uRW1wbG95ZWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPExvY2F0aW9uRW1wbG95ZWVzT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uLWVtcGxveWVlc2AsIHtcclxuICAgICAgcGFyYW1zLFxyXG4gICAgfSkucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxvY2F0aW9uIGVtcGxveWVlIGRldGFpbHMgZm9yIGEgZ2l2ZW4gZW1wbG95ZWUgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlIHdob3NlIGxvY2F0aW9uIGRldGFpbHMgYXJlIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPExvY2F0aW9uRW1wbG95ZWVPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGxvY2F0aW9uIGVtcGxveWVlIGRldGFpbHMuXHJcbiAgICovXHJcbiAgZ2V0TG9jYXRpb25FbXBsb3llZSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8TG9jYXRpb25FbXBsb3llZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxMb2NhdGlvbkVtcGxveWVlT3V0Pj4oYCR7dGhpcy51cmx9L2xvY2F0aW9uLWVtcGxveWVlcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIHNwZWNpZmljIGxvY2F0aW9uIGVtcGxveWVlIGJ5IHRoZWlyIHVuaXF1ZSBpZGVudGlmaWVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBlbXBsb3llZSB0byBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8e30+fSAtIEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHNlcnZlcidzIHJlc3BvbnNlIGFmdGVyIHRoZSBkZWxldGlvbi5cclxuICAgKi9cclxuICBkZWxldGVMb2NhdGlvbkVtcGxveWVlIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9sb2NhdGlvbi1lbXBsb3llZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgYmF0Y2ggb2YgbG9jYXRpb24tZW1wbG95ZWUgYXNzb2NpYXRpb25zIHRvIHRoZSBzZXJ2ZXIgZm9yIHByb2Nlc3NpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0xvY2F0aW9uRW1wbG95ZWVCYXRjaElufSBib2R5IC0gVGhlIG9iamVjdCBjb250YWluaW5nIGEgYmF0Y2ggb2YgbG9jYXRpb24tZW1wbG95ZWUgZGF0YSB0byBiZSBwb3N0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZU91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHByb2Nlc3NlZCBlbXBsb3llZSBkYXRhIGZyb20gdGhlIHNlcnZlcidzIHJlc3BvbnNlLlxyXG4gICAqL1xyXG4gIHBvc3RMb2NhdGlvbkVtcGxveWVlQmF0Y2ggKGJvZHk6IExvY2F0aW9uRW1wbG95ZWVCYXRjaEluKTogT2JzZXJ2YWJsZTxFbXBsb3llZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVPdXQ+PihgJHt0aGlzLnVybH0vbG9jYXRpb24tZW1wbG95ZWVzL2JhdGNoYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGNvdW50cmllcyB3aGVyZSB0aGUgY29tcGFueSBvcGVyYXRlcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgQVBJIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55Q291bnRyaWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBsaXN0IG9mIGNvbXBhbnkgY291bnRyaWVzLlxyXG4gICAqL1xyXG4gIGdldENvbXBhbnlDb3VudHJpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cmllc091dD4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjb3VudHJ5IGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmllZCBjb21wYW55IGJ5IGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5T3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IGluZm9ybWF0aW9uIG9mIHRoZSBjb21wYW55LlxyXG4gICAqL1xyXG4gIGdldENvbXBhbnlDb3VudHJ5IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb21wYW55Q291bnRyeU91dD4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSByZXF1ZXN0IHRvIHVwZGF0ZSBvciBjcmVhdGUgYSBjb21wYW55IGNvdW50cnkgZW50cnkgb24gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Q29tcGFueUNvdW50cnlJbn0gYm9keSBUaGUgZGF0YSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjb21wYW55IGNvdW50cnkgaW5mb3JtYXRpb24gdG8gYmUgc2VudCB0byB0aGUgc2VydmVyLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSB1cGRhdGVkIG9yIGNyZWF0ZWQgY29tcGFueSBjb3VudHJ5IGRhdGEuXHJcbiAgICovXHJcbiAgcG9zdENvbXBhbnlDb3VudHJ5IChib2R5OiBDb21wYW55Q291bnRyeUluKTogT2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cnlPdXQ+PihgJHt0aGlzLnVybH0vY29tcGFueS1jb3VudHJpZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGNvdW50cnkgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWMgY29tcGFueS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueSB3aG9zZSBjb3VudHJ5IGluZm9ybWF0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtDb21wYW55Q291bnRyeUlufSBib2R5IC0gVGhlIHVwZGF0ZWQgY291bnRyeSBpbmZvcm1hdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBjb21wYW55LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgY29tcGFueSBjb3VudHJ5IGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIHB1dENvbXBhbnlDb3VudHJ5IChpZDogbnVtYmVyLCBib2R5OiBDb21wYW55Q291bnRyeUluKTogT2JzZXJ2YWJsZTxDb21wYW55Q291bnRyeU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxDb21wYW55Q291bnRyeU91dD4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIGNvbXBhbnktY291bnRyeSBhc3NvY2lhdGlvbiBieSBpdHMgdW5pcXVlIGlkZW50aWZpZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbXBhbnktY291bnRyeSByZWNvcmQgdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzdWx0IG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZUNvbXBhbnlDb3VudHJ5IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cmllcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgcmVmZXJlbmNlIGN1cnJlbmNpZXMgZm9yIGEgZ2l2ZW4gY291bnRyeS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llc091dD59IFRoZSBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmNpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY2llcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmNpZXNPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtY3VycmVuY2llc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSByZWZlcmVuY2UgY3VycmVuY3kgZGV0YWlscyBmb3IgYSBzcGVjaWZpYyBjb3VudHJ5IHVzaW5nIGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGNvdW50cnkncyByZWZlcmVuY2UgY3VycmVuY3kgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3kgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtY3VycmVuY2llcy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjdXJyZW5jaWVzIGZvciBkaWZmZXJlbnQgY291bnRyaWVzIGFsb25nIHdpdGggdGhlaXIgY3VycmVudCBleGNoYW5nZSByYXRlcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmV0Y2ggdGhlIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmNpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5Q3VycmVuY3lSYXRlW10+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gYXJyYXkgb2YgY291bnRyeSBjdXJyZW5jeSByYXRlcy5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5Q3VycmVuY2llc1dpdGhSYXRlIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxDb3VudHJ5Q3VycmVuY3lSYXRlW10+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENvdW50cnlSZWZlcmVuY2VDdXJyZW5jaWVzKHBhcmFtcylcclxuICAgICAgLnBpcGUobWVyZ2VNYXAoKGN1cnJlbmNpZXNEYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgJG9ic2VydmFibGVzID0gY3VycmVuY2llc0RhdGEuY291bnRyeV9yZWZlcmVuY2VfY3VycmVuY2llc1xyXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT5cclxuICAgICAgICAgICAgdGhpcy5nZXRDdXJyZW50RXhjaGFuZ2VzKHtcclxuICAgICAgICAgICAgICBjdXJyZW5jeV9pZDogaXRlbS5jdXJyZW5jeS5pZCxcclxuICAgICAgICAgICAgfSkucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKGV4Y2hhbmdlc0RhdGEpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICAgICAgcmF0ZTogZXhjaGFuZ2VzRGF0YS5leGNoYW5nZXNbMF0/LnZhbHVlLFxyXG4gICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbigkb2JzZXJ2YWJsZXMpXHJcbiAgICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgcmVmZXJlbmNlIGN1cnJlbmN5IGZvciBhIHNwZWNpZmllZCBjb3VudHJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBjb3VudHJ5LlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5SW59IGJvZHkgLSBUaGUgZGF0YSBmb3IgdXBkYXRpbmcgdGhlIGNvdW50cnkncyByZWZlcmVuY2UgY3VycmVuY3kuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+fSBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB1cGRhdGVkIGNvdW50cnkgcmVmZXJlbmNlIGN1cnJlbmN5IGRhdGEuXHJcbiAgICovXHJcbiAgcHV0Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5IChpZDogbnVtYmVyLCBib2R5OiBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1jdXJyZW5jaWVzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byBjcmVhdGUgYSBjb3VudHJ5IHJlZmVyZW5jZSBjdXJyZW5jeS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5SW59IGJvZHkgLSBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBjdXJyZW5jeSBkYXRhLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3JlYXRlZCBjb3VudHJ5IHJlZmVyZW5jZSBjdXJyZW5jeS5cclxuICAgKi9cclxuICBwb3N0Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5IChib2R5OiBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUN1cnJlbmN5T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3lPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtY3VycmVuY2llc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBhIGNvdW50cnkgcmVmZXJlbmNlIGV4dHJhIGNoYXJnZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlSW59IGJvZHkgLSBUaGUgcmVxdWVzdCBwYXlsb2FkIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCB0aGUgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSByZXNwb25zZSB3aXRoIHRoZSBjcmVhdGVkIG9yIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlLlxyXG4gICAqL1xyXG4gIHBvc3RDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2UgKGJvZHk6IENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZUluKTogT2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1leHRyYS1jaGFyZ2VzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGEgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlIGJ5IGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VJbn0gYm9keSAtIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlIHdpdGguXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2UgZXh0cmEgY2hhcmdlLlxyXG4gICAqL1xyXG4gIHB1dENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZSAoaWQ6IG51bWJlciwgYm9keTogQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlSW4pOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VFeHRyYUNoYXJnZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2VPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2UtZXh0cmEtY2hhcmdlcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIGNvdW50cnkgcmVmZXJlbmNlIGV4dHJhIGNoYXJnZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlfSBleHRyYUNoYXJnZSAtIFRoZSBjb3VudHJ5IHJlZmVyZW5jZSBleHRyYSBjaGFyZ2Ugb2JqZWN0IHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNBY3RpdmVdIC0gT3B0aW9uYWwgcGFyYW1ldGVyIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSBhY3RpdmUgc3RhdHVzIG9mIHRoZSBleHRyYSBjaGFyZ2UuXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudCBhY3RpdmUgc3RhdHVzIHdpbGwgYmUgdG9nZ2xlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGVtcGxveWVlIGN1c3RvbWVycyBvdXRwdXQuXHJcbiAgICovXHJcbiAgcGF0Y2hDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2UgKGV4dHJhQ2hhcmdlOiBDb3VudHJ5UmVmZXJlbmNlRXh0cmFDaGFyZ2UsIGlzQWN0aXZlPzogYm9vbGVhbik6IE9ic2VydmFibGU8RW1wbG95ZWVDdXN0b21lcnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8QXBpU3VjY2VzczxFbXBsb3llZUN1c3RvbWVyc091dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1leHRyYS1jaGFyZ2VzLyR7ZXh0cmFDaGFyZ2UuaWR9YCwge1xyXG4gICAgICBpc19hY3RpdmU6IGlzQWN0aXZlID8/ICFleHRyYUNoYXJnZS5pc19hY3RpdmVcclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGV4Y2hhbmdlIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyBleGNoYW5nZSBkYXRhLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8RXhjaGFuZ2VzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBleGNoYW5nZSBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEV4Y2hhbmdlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RXhjaGFuZ2VzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEV4Y2hhbmdlc091dD4+KGAke3RoaXMudXJsfS9leGNoYW5nZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBvciB1cGRhdGUgYW4gZXhjaGFuZ2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0V4Y2hhbmdlSW59IGJvZHkgLSBUaGUgcmVxdWVzdCBib2R5IGNvbnRhaW5pbmcgdGhlIGV4Y2hhbmdlIGRhdGEgdG8gYmUgc2VudC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV4Y2hhbmdlT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBjb250YWluaW5nIHRoZSBjcmVhdGVkIG9yIHVwZGF0ZWQgZXhjaGFuZ2UgZGF0YS5cclxuICAgKi9cclxuICBwb3N0RXhjaGFuZ2UgKGJvZHk6IEV4Y2hhbmdlSW4pOiBPYnNlcnZhYmxlPEV4Y2hhbmdlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxFeGNoYW5nZU91dD4+KGAke3RoaXMudXJsfS9leGNoYW5nZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYW4gZXhpc3RpbmcgZXhjaGFuZ2Ugd2l0aCBuZXcgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZXhjaGFuZ2UgdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSB7RXhjaGFuZ2VJbn0gYm9keSAtIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgZXhjaGFuZ2Ugd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEV4Y2hhbmdlT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGV4Y2hhbmdlIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0RXhjaGFuZ2UgKGlkOiBudW1iZXIsIGJvZHk6IEV4Y2hhbmdlSW4pOiBPYnNlcnZhYmxlPEV4Y2hhbmdlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPEV4Y2hhbmdlT3V0Pj4oYCR7dGhpcy51cmx9L2V4Y2hhbmdlcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGV4Y2hhbmdlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciB0aGUgZXhjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8RXhjaGFuZ2VzT3V0Pn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIEFQSSByZXNwb25zZSBkYXRhIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgZXhjaGFuZ2VzLlxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnRFeGNoYW5nZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEV4Y2hhbmdlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxFeGNoYW5nZXNPdXQ+PihgJHt0aGlzLnVybH0vZXhjaGFuZ2VzL2N1cnJlbnRgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNvdW50cnktc3BlY2lmaWMgdGF4IGluZm9ybWF0aW9uIGZvciBhIGNvbXBhbnkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgcXVlcnkgdGhlIHRheGVzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueUNvdW50cnlUYXhlc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdGF4IGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIGdldENvbXBhbnlDb3VudHJ5VGF4ZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPENvbXBhbnlDb3VudHJ5VGF4ZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q29tcGFueUNvdW50cnlUYXhlc091dD4+KGAke3RoaXMudXJsfS9jb21wYW55LWNvdW50cnktdGF4ZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYWNjb3VudCBpbmZvcm1hdGlvbiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciBmZXRjaGluZyBhY2NvdW50IGRhdGEuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50c091dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGFjY291bnQgZGF0YS5cclxuICAgKi9cclxuICBnZXRBY2NvdW50cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8QWNjb3VudHNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudHNPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudHNgKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgYWNjb3VudCBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGFjY291bnQgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRBY2NvdW50IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxBY2NvdW50T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEFjY291bnRPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudHMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgYWNjb3VudCBieSBzZW5kaW5nIGFjY291bnQgZGV0YWlscyBpbiB0aGUgYm9keS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QWNjb3VudElufSBib2R5IC0gVGhlIGFjY291bnQgaW5mb3JtYXRpb24gdG8gYmUgc2VudCBpbiB0aGUgcmVxdWVzdCBib2R5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudE91dD59IE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3JlYXRlZCBhY2NvdW50IGRldGFpbHMgdXBvbiBzdWNjZXNzLlxyXG4gICAqL1xyXG4gIHBvc3RBY2NvdW50IChib2R5OiBBY2NvdW50SW4pOiBPYnNlcnZhYmxlPEFjY291bnRPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPEFjY291bnRPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudHNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYW4gYWNjb3VudCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgdXNpbmcgdGhlIHByb3ZpZGVkIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge0FjY291bnRJbn0gYm9keSAtIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgYWNjb3VudCB3aXRoLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudE91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHVwZGF0ZWQgYWNjb3VudCBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIHB1dEFjY291bnQgKGlkOiBudW1iZXIsIGJvZHk6IEFjY291bnRJbik6IE9ic2VydmFibGU8QWNjb3VudE91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxBY2NvdW50T3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnRzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGFjY291bnQgZW50aXR5IGRhdGEgZnJvbSB0aGUgc2VydmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSBIVFRQIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50RW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGFjY291bnQgZW50aXRpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRBY2NvdW50RW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxBY2NvdW50RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudC1lbnRpdGllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBhY2NvdW50IGVudGl0eSB1c2luZyB0aGUgcHJvdmlkZWQgZGV0YWlscy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7QWNjb3VudEVudGl0aWVzSW59IGJvZHkgVGhlIGFjY291bnQgZW50aXR5IGRhdGEgdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRFbnRpdGllc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBhY2NvdW50IGVudGl0eSBkZXRhaWxzLlxyXG4gICAqL1xyXG4gIHB1dEFjY291bnRFbnRpdHkgKGJvZHk6IEFjY291bnRFbnRpdGllc0luKTogT2JzZXJ2YWJsZTxBY2NvdW50RW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8QWNjb3VudEVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtZW50aXRpZXNgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBhY3RpdmUgYWNjb3VudCBlbnRpdGllcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBhbmQgcXVlcnkgYWN0aXZlIGFjY291bnQgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50RW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxpc3Qgb2YgYWN0aXZlIGFjY291bnQgZW50aXRpZXMuXHJcbiAgICovXHJcbiAgZ2V0QWNjb3VudEVudGl0aWVzQWN0aXZlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8QWNjb3VudEVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEFjY291bnRFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9hY2NvdW50LWVudGl0aWVzL2FjdGl2ZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGFjY291bnQgY2F0ZWdvcmllcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIHRoZSBhY2NvdW50IGNhdGVnb3JpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50Q2F0ZWdvcmllc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmV0Y2hlZCBhY2NvdW50IGNhdGVnb3JpZXMgZGF0YS5cclxuICAgKi9cclxuICBnZXRBY2NvdW50Q2F0ZWdvcmllcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8QWNjb3VudENhdGVnb3JpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudENhdGVnb3JpZXNPdXQ+PihgJHt0aGlzLnVybH0vYWNjb3VudC1jYXRlZ29yaWVzYCwgeyBwYXJhbXMsIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhY2NvdW50IHR5cGVzIGZyb20gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHRvIGZpbHRlciBvciBjdXN0b21pemUgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50VHlwZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSBhY2NvdW50IHR5cGVzIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0QWNjb3VudFR5cGVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxBY2NvdW50VHlwZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8QWNjb3VudFR5cGVzT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtdHlwZXNgLCB7IHBhcmFtcywgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGFjY291bnQgdHlwZSBmb3IgdGhlIGdpdmVuIGFjY291bnQgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxBY2NvdW50VHlwZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgYWNjb3VudCB0eXBlIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0QWNjb3VudFR5cGUgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFjY291bnRUeXBlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEFjY291bnRUeXBlT3V0Pj4oYCR7dGhpcy51cmx9L2FjY291bnQtdHlwZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBhIG5ldyBhY2NvdW50IHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0FjY291bnRUeXBlSW59IGJvZHkgLSBUaGUgZGF0YSBmb3IgdGhlIGFjY291bnQgdHlwZSB0byBiZSBjcmVhdGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QWNjb3VudFR5cGVPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGNyZWF0ZWQgYWNjb3VudCB0eXBlIG9iamVjdC5cclxuICAgKi9cclxuICBwb3N0QWNjb3VudFR5cGUgKGJvZHk6IEFjY291bnRUeXBlSW4pOiBPYnNlcnZhYmxlPEFjY291bnRUeXBlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxBY2NvdW50VHlwZU91dD4+KGAke3RoaXMudXJsfS9hY2NvdW50LXR5cGVzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGFjY291bnQgdHlwZSB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgdXNpbmcgdGhlIHByb3ZpZGVkIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQgdHlwZSB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtBY2NvdW50VHlwZUlufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBhY2NvdW50IHR5cGUgd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEFjY291bnRUeXBlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIGFjY291bnQgdHlwZSBkYXRhLlxyXG4gICAqL1xyXG4gIHB1dEFjY291bnRUeXBlIChpZDogbnVtYmVyLCBib2R5OiBBY2NvdW50VHlwZUluKTogT2JzZXJ2YWJsZTxBY2NvdW50VHlwZU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxBY2NvdW50VHlwZU91dD4+KGAke3RoaXMudXJsfS9hY2NvdW50LXR5cGVzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIG9yIGZldGNoIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmZXRjaGVkIHBhcmFtZXRlcnMuXHJcbiAgICovXHJcbiAgZ2V0UGFyYW1ldGVycyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8UGFyYW1ldGVyc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxQYXJhbWV0ZXJzT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlcnNgLCB7IHBhcmFtcywgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHBhcmFtZXRlciB2YWx1ZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhcmFtZXRlciBuYW1lcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXJhbXMucGFyYW1OYW1lcyAtIEFuIGFycmF5IG9mIHBhcmFtZXRlciBuYW1lcyBmb3Igd2hpY2ggdGhlIHZhbHVlcyBuZWVkIHRvIGJlIGZldGNoZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJzVmFsdWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBmZXRjaGVkIHBhcmFtZXRlciB2YWx1ZXMuXHJcbiAgICovXHJcbiAgcG9zdFBhcmFtZXRlcnNWYWx1ZXMgKHsgcGFyYW1OYW1lcyB9OiBQYXJhbWV0ZXJzVmFsdWVzSW4pOiBPYnNlcnZhYmxlPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+IHtcclxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBwYXJhbU5hbWVzLm1hcCgocCkgPT4gKHsgbmFtZTogcCB9KSlcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxQYXJhbWV0ZXJzVmFsdWVzT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlcnMtdmFsdWVzYCwgeyBwYXJhbWV0ZXJzIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHBhcmFtZXRlciB2YWx1ZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGxldmVsIGNvbmZpZ3VyYXRpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1BhcmFtZXRlcnNCeUxldmVsSW59IHBhcmFtZXRlcnMgLSBUaGUgaW5wdXQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNyaXRlcmlhIG9yIGxldmVsIGRldGFpbHMgdG8gcmV0cmlldmUgdGhlIHBhcmFtZXRlcnMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJzVmFsdWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJhbWV0ZXIgdmFsdWVzIGZldGNoZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIHBvc3RQYXJhbWV0ZXJWYWx1ZUJ5TW9kZWwgKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnNCeUxldmVsSW4pOiBPYnNlcnZhYmxlPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPFBhcmFtZXRlcnNWYWx1ZXNPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVycy12YWx1ZXNgLCB7IHBhcmFtZXRlcnMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWVkIHBhcmFtZXRlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dCAtIFRoZSBpbnB1dCBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyYW1ldGVyIGRldGFpbHMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LnBhcmFtTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgd2hvc2UgdmFsdWUgaXMgdG8gYmUgcmV0cmlldmVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UGFyYW1ldGVyVmFsdWVPdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlci5cclxuICAgKi9cclxuICBnZXRQYXJhbWV0ZXJWYWx1ZSAoe1xyXG4gICAgcGFyYW1OYW1lLFxyXG4gIH06IFBhcmFtZXRlclZhbHVlSW4pOiBPYnNlcnZhYmxlPFBhcmFtZXRlclZhbHVlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFBhcmFtZXRlclZhbHVlT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlcnMtdmFsdWVzLyR7cGFyYW1OYW1lfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBjb3VudHJ5IHJlZmVyZW5jZXMgYmFzZWQgb24gdGhlIGdpdmVuIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgcmV0cmlldmluZyBjb3VudHJ5IHJlZmVyZW5jZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgY291bnRyeSByZWZlcmVuY2UgZGF0YS5cclxuICAgKi9cclxuICBnZXRDb3VudHJ5UmVmZXJlbmNlcyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZXNPdXQ+PihgJHt0aGlzLnVybH0vY291bnRyeS1yZWZlcmVuY2VzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBkYXRhIGZvciBhIGdpdmVuIGNvdW50cnkgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvdW50cnkgZm9yIHdoaWNoIHRoZSByZWZlcmVuY2UgZGF0YSBpcyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBkYXRhLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2UgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgYSBjb3VudHJ5IHJlZmVyZW5jZSByZXNvdXJjZSB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgYW5kIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtDb3VudHJ5UmVmZXJlbmNlSW59IGJvZHkgLSBUaGUgZGF0YSB0byB1cGRhdGUgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHdpdGguXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGNvdW50cnkgcmVmZXJlbmNlIG9iamVjdC5cclxuICAgKi9cclxuICBwdXRDb3VudHJ5UmVmZXJlbmNlIChpZDogbnVtYmVyLCBib2R5OiBDb3VudHJ5UmVmZXJlbmNlSW4pOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Q291bnRyeVJlZmVyZW5jZU91dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZXMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2Ygd29ya2Zsb3dzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgd29ya2Zsb3dzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8V29ya2Zsb3dzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB3b3JrZmxvdyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFdvcmtmbG93cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8V29ya2Zsb3dzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFdvcmtmbG93c091dD4+KGAke3RoaXMudXJsfS93b3JrZmxvd3NgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgZW1wbG95ZWUgY3VzdG9tZXJcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGVtcGxveWVlIGN1c3RvbWVycy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBlbXBsb3llZSBjdXN0b21lciBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEVtcGxveWVlc0N1c3RvbWVycyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8RW1wbG95ZWVzQ3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEVtcGxveWVlc0N1c3RvbWVyc091dD4+KGAke3RoaXMudXJsfS9lbXBsb3llZS1jdXN0b21lcnNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBvciB1cGRhdGUgZW1wbG95ZWUgY3VzdG9tZXIgcmVjb3JkcyBhbmQgcHJvY2Vzc2VzIHRoZSBzZXJ2ZXIgcmVzcG9uc2UuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0VtcGxveWVlQ3VzdG9tZXJzSW59IGJvZHkgLSBUaGUgcmVxdWVzdCBwYXlsb2FkIGNvbnRhaW5pbmcgZW1wbG95ZWUgY3VzdG9tZXIgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBlbXBsb3llZSBjdXN0b21lciBkYXRhIG9uIHN1Y2Nlc3NmdWwgcmVzcG9uc2UuXHJcbiAgICovXHJcbiAgcG9zdEVtcGxveWVlQ3VzdG9tZXJzIChib2R5OiBFbXBsb3llZUN1c3RvbWVyc0luKTogT2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8RW1wbG95ZWVDdXN0b21lcnNPdXQ+PihgJHt0aGlzLnVybH0vZW1wbG95ZWUtY3VzdG9tZXJzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBlbXBsb3llZS1jdXN0b21lciBhc3NvY2lhdGlvbiByZWNvcmQgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gSUQgd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBlbXBsb3llZS1jdXN0b21lciByZWNvcmQgdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSB7RW1wbG95ZWVDdXN0b21lcnNJbn0gYm9keSAtIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgZW1wbG95ZWUtY3VzdG9tZXIgcmVjb3JkIHdpdGguXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBlbXBsb3llZS1jdXN0b21lciBkYXRhLlxyXG4gICAqL1xyXG4gIHB1dEVtcGxveWVlQ3VzdG9tZXJzIChpZDogbnVtYmVyLCBib2R5OiBFbXBsb3llZUN1c3RvbWVyc0luKTogT2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxFbXBsb3llZUN1c3RvbWVyc091dD4+KGAke3RoaXMudXJsfS9lbXBsb3llZS1jdXN0b21lcnMvJHtpZH1gLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGVtcGxveWVlLWN1c3RvbWVyIGRldGFpbHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGVtcGxveWVlIGN1c3RvbWVyIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIGlkZW50aWZpZXIgb2YgdGhlIGVtcGxveWVlLWN1c3RvbWVyIHJlY29yZCB0byB1cGRhdGUuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBlbXBsb3llZS1jdXN0b21lciBkYXRhLlxyXG4gICAqL1xyXG4gIGdldEVtcGxveWVlQ3VzdG9tZXIgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVycy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhbiBlbXBsb3llZSBjdXN0b21lcidzIGFjdGl2ZSBzdGF0ZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RW1wbG95ZWVDdXN0b21lckRobH0gZW1wbG95ZWUgLSBUaGUgZW1wbG95ZWUgY3VzdG9tZXIgb2JqZWN0IHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBbaXNBY3RpdmVdIC0gT3B0aW9uYWwgcGFyYW1ldGVyIHRvIGV4cGxpY2l0bHkgc2V0IHRoZSBhY3RpdmUgc3RhdGUuXHJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG51bGwgb3IgdW5kZWZpbmVkLCB0aGUgYWN0aXZlIHN0YXRlIHdpbGwgYmUgdG9nZ2xlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSB1cGRhdGVkIGVtcGxveWVlIGN1c3RvbWVyIG91dHB1dC5cclxuICAgKi9cclxuICBwYXRjaEVtcGxveWVlQ3VzdG9tZXJzIChlbXBsb3llZTogRW1wbG95ZWVDdXN0b21lckRobCwgaXNBY3RpdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFbXBsb3llZUN1c3RvbWVyc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxBcGlTdWNjZXNzPEVtcGxveWVlQ3VzdG9tZXJzT3V0Pj4oYCR7dGhpcy51cmx9L2VtcGxveWVlLWN1c3RvbWVycy8ke2VtcGxveWVlLmlkfWAsIHtcclxuICAgICAgaXNfYWN0aXZlOiBpc0FjdGl2ZSA/PyAhZW1wbG95ZWUuaXNfYWN0aXZlXHJcbiAgICB9KS5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3VibWl0cyBhIGZpbGUgY29udGFpbmluZyBlbXBsb3llZSBjdXN0b21lciBkYXRhIGZvciBhIHNwZWNpZmljIGNvdW50cnkgdG8gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudHJ5SWQgLSBUaGUgaWRlbnRpZmllciBvZiB0aGUgY291bnRyeSBmb3Igd2hpY2ggdGhlIGRhdGEgaXMgYmVpbmcgdXBsb2FkZWQuXHJcbiAgICogQHBhcmFtIHtGaWxlfSBmaWxlIC0gVGhlIGZpbGUgY29udGFpbnMgZW1wbG95ZWUgY3VzdG9tZXIgZGF0YSB0byBiZSB1cGxvYWRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEJvYXJkaW5nUHJvY2Vzc0lkSW4+fSBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHByb2Nlc3NlZCBib2FyZGluZyBwcm9jZXNzIElEIG9uIHN1Y2Nlc3MuXHJcbiAgICovXHJcbiAgcG9zdEVtcGxveWVlQ3VzdG9tZXJzTG9hZCAoY291bnRyeUlkOiBudW1iZXIsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPEJvYXJkaW5nUHJvY2Vzc0lkSW4+IHtcclxuICAgIGNvbnN0IGJvZHkgPSBuZXcgRm9ybURhdGEoKVxyXG5cclxuICAgIGJvZHkuYXBwZW5kKCdmaWxlJywgZmlsZSlcclxuICAgIGJvZHkuYXBwZW5kKCdjb3VudHJ5X2lkJywgY291bnRyeUlkLnRvU3RyaW5nKCkpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8Qm9hcmRpbmdQcm9jZXNzSWRJbj4+KGAke3RoaXMudXJsfS9lbXBsb3llZS1jdXN0b21lcnMvbG9hZGAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIGEgZmlsZSBjb250YWluaW5nIGN1c3RvbWVyIGRhdGEgZm9yIGEgc3BlY2lmaWMgZW1wbG95ZWUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvdW50cnkgSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgSUQgb2YgdGhlIGNvdW50cnkgdXNlZCBhcyBhIGZpbHRlciBmb3IgZmV0Y2hpbmcgdGhlIGVtcGxveWVlJ3MgY3VzdG9tZXJzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8QmxvYj59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmlsZSBibG9iIGNvbnRhaW5pbmcgdGhlIGN1c3RvbWVyIGRhdGEuXHJcbiAgICovXHJcbiAgZ2V0RW1wbG95ZWVDdXN0b21lcnNEb3dubG9hZCAoaWQ6bnVtYmVyKTpPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJsfS9lbXBsb3llZS1jdXN0b21lcnMvZG93bmxvYWRgLCB7XHJcbiAgICAgIHBhcmFtczogeyBjb3VudHJ5X2lkOiBpZCB9LFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgYm9hcmRpbmcgcHJvY2VzcyBkZXRhaWxzIGZvciBhIGdpdmVuIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBib2FyZGluZyBwcm9jZXNzIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Qm9hcmRpbmdQcm9jZXNzSW4+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIGJvYXJkaW5nIHByb2Nlc3MgZGV0YWlscy5cclxuICAgKi9cclxuICBnZXRCb2FyZGluZ1Byb2Nlc3MgKGlkOm51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxCb2FyZGluZ1Byb2Nlc3NJbj4+KGAke3RoaXMudXJsfS9ib2FyZGluZy1wcm9jZXNzLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBzeXN0ZW1zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgdGhlIHN5c3RlbXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTeXN0ZW1zT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXRyaWV2ZWQgc3lzdGVtcyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFN5c3RlbXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFN5c3RlbXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8U3lzdGVtc091dD4+KGAke3RoaXMudXJsfS9zeXN0ZW1zYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIHN5c3RlbSBieSB0aGUgc3BlY2lmaWVkIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzeXN0ZW0gdG8gYmUgcmV0cmlldmVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3lzdGVtT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXF1ZXN0ZWQgc3lzdGVtIGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIGdldFN5c3RlbSAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8U3lzdGVtT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFN5c3RlbU91dD4+KGAke3RoaXMudXJsfS9zeXN0ZW1zLyR7aWR9YClcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byBjcmVhdGUgb3IgdXBkYXRlIGEgc3lzdGVtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtTeXN0ZW1Jbn0gYm9keSAtIFRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGUgc3lzdGVtIHRvIGJlIGNyZWF0ZWQgb3IgdXBkYXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFN5c3RlbU91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3VsdGluZyBzeXN0ZW0gb3V0cHV0IGFmdGVyIHRoZSBBUEkgcmVxdWVzdCBzdWNjZWVkcy5cclxuICAgKi9cclxuICBwb3N0U3lzdGVtIChib2R5OiBTeXN0ZW1Jbik6IE9ic2VydmFibGU8U3lzdGVtT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxTeXN0ZW1PdXQ+PihgJHt0aGlzLnVybH0vc3lzdGVtc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgc3lzdGVtIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIElEIHdpdGggdGhlIHByb3ZpZGVkIHJlcXVlc3QgYm9keSBhbmQgcmV0dXJucyB0aGUgdXBkYXRlZCBzeXN0ZW0gZGV0YWlscy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgc3lzdGVtIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtTeXN0ZW1Jbn0gYm9keSAtIFRoZSBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgc3lzdGVtIGRldGFpbHMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxTeXN0ZW1PdXQ+fSBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB1cGRhdGVkIHN5c3RlbSBkYXRhLlxyXG4gICAqL1xyXG4gIHB1dFN5c3RlbSAoaWQ6IG51bWJlciwgYm9keTogU3lzdGVtSW4pOiBPYnNlcnZhYmxlPFN5c3RlbU91dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxTeXN0ZW1PdXQ+PihgJHt0aGlzLnVybH0vc3lzdGVtcy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBzeXN0ZW0gZW50aXRpZXMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgb3Igc3BlY2lmeSB0aGUgc3lzdGVtIGVudGl0aWVzIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3lzdGVtRW50aXRpZXNPdXQ+fSBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJldHJpZXZlZCBzeXN0ZW0gZW50aXRpZXMuXHJcbiAgICovXHJcbiAgZ2V0U3lzdGVtRW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFN5c3RlbUVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFN5c3RlbUVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L3N5c3RlbS1lbnRpdGllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgc3lzdGVtIGVudGl0aWVzIGJ5IHNlbmRpbmcgdGhlIHByb3ZpZGVkIGRhdGEgdG8gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7U3lzdGVtRW50aXRpZXNJbn0gYm9keSAtIFRoZSBkYXRhIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN5c3RlbSBlbnRpdGllcyB0byBiZSB1cGRhdGVkLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8U3lzdGVtRW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgc3lzdGVtIGVudGl0aWVzIGRhdGEuXHJcbiAgICovXHJcbiAgcHV0U3lzdGVtRW50aXRpZXMgKGJvZHk6IFN5c3RlbUVudGl0aWVzSW4pOiBPYnNlcnZhYmxlPFN5c3RlbUVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFN5c3RlbUVudGl0aWVzT3V0Pj4oYCR7dGhpcy51cmx9L3N5c3RlbS1lbnRpdGllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIHRoZSB3b3JrZmxvdyBjb25maWd1cmF0aW9ucy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFdvcmtmbG93Q29uZmlnc091dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqL1xyXG4gIGdldFdvcmtmbG93Q29uZmlncyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8V29ya2Zsb3dDb25maWdzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFdvcmtmbG93Q29uZmlnc091dD4+KGAke3RoaXMudXJsfS93b3JrZmxvdy1jb25maWdzYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIGJhdGNoIG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb24gZGF0YSB0byB0aGUgc2VydmVyIGZvciBwcm9jZXNzaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtXb3JrZmxvd0NvbmZpZ3NCYXRjaElufSBib2R5IC0gVGhlIGlucHV0IGRhdGEgY29udGFpbmluZyBhIGJhdGNoIG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHRvIGJlIHNlbnQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxXb3JrZmxvd0NvbmZpZ3NPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHByb2Nlc3NlZCBiYXRjaCBvZiB3b3JrZmxvdyBjb25maWd1cmF0aW9uIGRhdGEgYXMgYSByZXNwb25zZS5cclxuICAgKi9cclxuICBwb3N0V29ya2Zsb3dDb25maWdzQmF0Y2ggKGJvZHk6IFdvcmtmbG93Q29uZmlnc0JhdGNoSW4pOiBPYnNlcnZhYmxlPFdvcmtmbG93Q29uZmlnc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFwaVN1Y2Nlc3M8V29ya2Zsb3dDb25maWdzT3V0Pj4oYCR7dGhpcy51cmx9L3dvcmtmbG93LWNvbmZpZ3MvYmF0Y2hgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUE9TVCByZXF1ZXN0IHRvIGNyZWF0ZSBhIG5ldyBjb21wYW55IGFuZCByZXR1cm5zIHRoZSBjcmVhdGVkIGNvbXBhbnkncyBkZXRhaWxzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtDb21wYW55SW59IGJvZHkgLSBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBjb21wYW55IHRvIGJlIGNyZWF0ZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb21wYW55T3V0Pn0gQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2Ugd2l0aCB0aGUgY3JlYXRlZCBjb21wYW55J3MgZGV0YWlscy5cclxuICAgKi9cclxuICBwb3N0Q29tcGFueSAoYm9keTogQ29tcGFueUluKTogT2JzZXJ2YWJsZTxDb21wYW55T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxDb21wYW55T3V0Pj4oYCR7dGhpcy51cmx9L2NvbXBhbmllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgZGV0YWlscyBvZiBhbiBleGlzdGluZyBjb21wYW55IHVzaW5nIGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgY29tcGFueSB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIHtDb21wYW55SW59IGJvZHkgLSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgY29tcGFueSBkYXRhLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q29tcGFueU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBjb21wYW55IGRldGFpbHMuXHJcbiAgICovXHJcbiAgcHV0Q29tcGFueSAoaWQ6IG51bWJlciwgYm9keTogQ29tcGFueUluKTogT2JzZXJ2YWJsZTxDb21wYW55T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPENvbXBhbnlPdXQ+PihgJHt0aGlzLnVybH0vY29tcGFuaWVzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgY29tcGFueSBieSBpdHMgdW5pcXVlIGlkZW50aWZpZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbXBhbnkgdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuIGVtcHR5IG9iamVjdCB1cG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb3IgYW4gZXJyb3IgaWYgdGhlIG9wZXJhdGlvbiBmYWlscy5cclxuICAgKi9cclxuICBkZWxldGVDb21wYW55IChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx7fT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8QXBpU3VjY2Vzczx7fT4+KGAke3RoaXMudXJsfS9jb21wYW5pZXMvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgcHJvZHVjdCBlbnRpdGllcyBmcm9tIHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBtb2RpZnkgdGhlIHJlcXVlc3QgZm9yIHByb2R1Y3QgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQcm9kdWN0RW50aXRpZXNPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHByb2R1Y3QgZW50aXRpZXMgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlci5cclxuICAgKi9cclxuICBnZXRQcm9kdWN0RW50aXRpZXMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFByb2R1Y3RFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxQcm9kdWN0RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vcHJvZHVjdC1lbnRpdGllc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQVVQgcmVxdWVzdCB0byB1cGRhdGUgcHJvZHVjdCBlbnRpdGllcyBhbmQgcmV0dXJucyB0aGUgdXBkYXRlZCBlbnRpdHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1Byb2R1Y3RFbnRpdGllc0lufSBib2R5IC0gVGhlIHBheWxvYWQgY29udGFpbmluZyB0aGUgZGF0YSB0byB1cGRhdGUgdGhlIHByb2R1Y3QgZW50aXR5LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8UHJvZHVjdEVudGl0aWVzT3V0Pn0gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIHByb2R1Y3QgZW50aXR5LlxyXG4gICAqL1xyXG4gIHB1dFByb2R1Y3RFbnRpdGllcyAoYm9keTogUHJvZHVjdEVudGl0aWVzSW4pOiBPYnNlcnZhYmxlPFByb2R1Y3RFbnRpdGllc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8QXBpU3VjY2VzczxQcm9kdWN0RW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vcHJvZHVjdC1lbnRpdGllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0cyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyBUaGUgcXVlcnkgcGFyYW1ldGVycyB1c2VkIHRvIGZpbHRlciBhbmQgcmV0cmlldmUgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3RzLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgZmV0Y2hlZCBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0cyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldENvdW50cnlSZWZlcmVuY2VQcm9kdWN0cyAocGFyYW1zOiBRdWVyeVBhcmFtcyk6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VQcm9kdWN0c091dD4+KGAke3RoaXMudXJsfS9jb3VudHJ5LXJlZmVyZW5jZS1wcm9kdWN0c2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSByZXF1ZXN0IHRvIHVwZGF0ZSBvciBjcmVhdGUgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0NvdW50cnlSZWZlcmVuY2VQcm9kdWN0SW59IGJvZHkgLSBUaGUgcGF5bG9hZCBjb250YWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0cyB0byBwb3N0LlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHVwZGF0ZWQgb3IgY3JlYXRlZCBjb3VudHJ5IHJlZmVyZW5jZSBwcm9kdWN0IGRhdGEuXHJcbiAgICovXHJcbiAgcG9zdENvdW50cnlSZWZlcmVuY2VQcm9kdWN0cyAoYm9keTogQ291bnRyeVJlZmVyZW5jZVByb2R1Y3RJbik6IE9ic2VydmFibGU8Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VQcm9kdWN0T3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLXByb2R1Y3RzYCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGEgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQgdXNpbmcgdGhlIHByb3ZpZGVkIGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3QgdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSB7Q291bnRyeVJlZmVyZW5jZVByb2R1Y3RJbn0gYm9keSAtIFRoZSB1cGRhdGVkIGNvdW50cnkgcmVmZXJlbmNlIHByb2R1Y3QgZGF0YSB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdE91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHVwZGF0ZWQgY291bnRyeSByZWZlcmVuY2UgcHJvZHVjdC5cclxuICAgKi9cclxuICBwdXRDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdHMgKGlkOiBudW1iZXIsIGJvZHk6IENvdW50cnlSZWZlcmVuY2VQcm9kdWN0SW4pOiBPYnNlcnZhYmxlPENvdW50cnlSZWZlcmVuY2VQcm9kdWN0T3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPENvdW50cnlSZWZlcmVuY2VQcm9kdWN0T3V0Pj4oYCR7dGhpcy51cmx9L2NvdW50cnktcmVmZXJlbmNlLXByb2R1Y3RzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBleHRyYSBjaGFyZ2UgZW50aXRpZXMgZnJvbSB0aGUgc2VydmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gZmlsdGVyIHRoZSBleHRyYSBjaGFyZ2UgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFeHRyYUNoYXJnZUVudGl0aWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBleHRyYSBjaGFyZ2UgZW50aXRpZXMgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlci5cclxuICAgKi9cclxuICBnZXRFeHRyYUNoYXJnZUVudGl0aWVzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxFeHRyYUNoYXJnZUVudGl0aWVzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPEV4dHJhQ2hhcmdlRW50aXRpZXNPdXQ+PihgJHt0aGlzLnVybH0vZXh0cmFjaGFyZ2UtZW50aXRpZXNgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgZXh0cmEgY2hhcmdlIGVudGl0aWVzIGJ5IHNlbmRpbmcgdGhlIHByb3ZpZGVkIGRhdGEgdG8gdGhlIHNlcnZlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7RXh0cmFDaGFyZ2VFbnRpdGllc0lufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBleHRyYSBjaGFyZ2UgZW50aXRpZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxFeHRyYUNoYXJnZUVudGl0aWVzT3V0Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB1cGRhdGVkIGV4dHJhIGNoYXJnZSBlbnRpdGllcy5cclxuICAgKi9cclxuICBwdXRFeHRyYUNoYXJnZUVudGl0aWVzIChib2R5OiBFeHRyYUNoYXJnZUVudGl0aWVzSW4pOiBPYnNlcnZhYmxlPEV4dHJhQ2hhcmdlRW50aXRpZXNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8RXh0cmFDaGFyZ2VFbnRpdGllc091dD4+KGAke3RoaXMudXJsfS9leHRyYWNoYXJnZS1lbnRpdGllc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbnMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHF1ZXJ5IHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge1F1ZXJ5UGFyYW1zfSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyB0byBmaWx0ZXIgdGhlIHBhcmFtZXRlciBjb25maWd1cmF0aW9ucy5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ3NPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcmFtZXRlciBjb25maWd1cmF0aW9ucyBkYXRhLlxyXG4gICAqL1xyXG4gIGdldFBhcmFtZXRlckNvbmZpZ3MgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyQ29uZmlnc091dD4+KGAke3RoaXMudXJsfS9wYXJhbWV0ZXItY29uZmlnc2AsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBhIHBhcmFtZXRlciBjb25maWd1cmF0aW9uLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtQYXJhbWV0ZXJDb25maWdJbn0gYm9keSAtIFRoZSBpbnB1dCBkYXRhIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbiB0byBiZSBzZW50IGluIHRoZSByZXF1ZXN0IGJvZHkuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxQYXJhbWV0ZXJDb25maWdPdXQ+fSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNlcnZlcidzIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgb3IgbmV3bHkgY3JlYXRlZCBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBwb3N0UGFyYW1ldGVyQ29uZmlnIChib2R5OiBQYXJhbWV0ZXJDb25maWdJbik6IE9ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxQYXJhbWV0ZXJDb25maWdPdXQ+PihgJHt0aGlzLnVybH0vcGFyYW1ldGVyLWNvbmZpZ3NgLCBib2R5KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYSBwYXJhbWV0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgSUQgYW5kIGlucHV0IGRhdGEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmFtZXRlciBjb25maWd1cmF0aW9uIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtQYXJhbWV0ZXJDb25maWdJbn0gYm9keSAtIFRoZSBpbnB1dCBkYXRhIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBhcmFtZXRlci5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdXBkYXRlZCBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBwdXRQYXJhbWV0ZXJDb25maWcgKGlkOiBudW1iZXIsIGJvZHk6IFBhcmFtZXRlckNvbmZpZ0luKTogT2JzZXJ2YWJsZTxQYXJhbWV0ZXJDb25maWdPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8UGFyYW1ldGVyQ29uZmlnT3V0Pj4oYCR7dGhpcy51cmx9L3BhcmFtZXRlci1jb25maWdzLyR7aWR9YCwgYm9keSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5IGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb24gdG8gYmUgZGVsZXRlZC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPFBhcmFtZXRlckNvbmZpZ091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgZGVsZXRlZCBwYXJhbWV0ZXIgY29uZmlndXJhdGlvbiBkYXRhLlxyXG4gICAqL1xyXG4gIGRlbGV0ZVBhcmFtZXRlckNvbmZpZyAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8UGFyYW1ldGVyQ29uZmlnT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxBcGlTdWNjZXNzPFBhcmFtZXRlckNvbmZpZ091dD4+KGAke3RoaXMudXJsfS9wYXJhbWV0ZXItY29uZmlncy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBURFggYWNjb3VudCBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgZ2l2ZW4gcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFF1ZXJ5IHBhcmFtZXRlcnMgdXNlZCB0byBmaWx0ZXIgb3IgcGFnaW5hdGUgdGhlIHJlc3VsdHMuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8VERYQWNjb3VudHNTZXR0aW5nc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgbGlzdCBvZiBURFggYWNjb3VudCBzZXR0aW5ncy5cclxuICAgKi9cclxuICBnZXRURFhBY2NvdW50c1NldHRpbmdzIChwYXJhbXM6IFF1ZXJ5UGFyYW1zKTogT2JzZXJ2YWJsZTxURFhBY2NvdW50c1NldHRpbmdzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPFREWEFjY291bnRzU2V0dGluZ3NPdXQ+PihgJHt0aGlzLnVybH0vdGR4LWFjY291bnQtc2V0dGluZ3NgLCB7IHBhcmFtcyB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIHNpbmdsZSBURFggYWNjb3VudCBzZXR0aW5nIGJ5IGl0cyBJRC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgVERYIGFjY291bnQgc2V0dGluZyB0byBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8VERYQWNjb3VudFNldHRpbmdzT3V0Pn0gQW4gb2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSByZXF1ZXN0ZWQgVERYIGFjY291bnQgc2V0dGluZy5cclxuICAgKi9cclxuICBnZXRURFhBY2NvdW50U2V0dGluZ3MgKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFREWEFjY291bnRTZXR0aW5nc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxURFhBY2NvdW50U2V0dGluZ3NPdXQ+PihgJHt0aGlzLnVybH0vdGR4LWFjY291bnQtc2V0dGluZ3MvJHtpZH1gKVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgVERYIGFjY291bnQgc2V0dGluZyB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtURFhBY2NvdW50U2V0dGluZ3NJbn0gYm9keSAtIFRoZSBkYXRhIHVzZWQgdG8gY3JlYXRlIHRoZSBuZXcgVERYIGFjY291bnQgc2V0dGluZy5cclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxURFhBY2NvdW50U2V0dGluZ3NPdXQ+fSBBbiBvYnNlcnZhYmxlIGNvbnRhaW5pbmcgdGhlIG5ld2x5IGNyZWF0ZWQgVERYIGFjY291bnQgc2V0dGluZy5cclxuICAgKi9cclxuICBwb3N0VERYQWNjb3VudFNldHRpbmdzIChib2R5OlREWEFjY291bnRTZXR0aW5nc0luKTogT2JzZXJ2YWJsZTxURFhBY2NvdW50U2V0dGluZ3NPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxBcGlTdWNjZXNzPFREWEFjY291bnRTZXR0aW5nc091dD4+KGAke3RoaXMudXJsfS90ZHgtYWNjb3VudC1zZXR0aW5nc2AsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBURFggYWNjb3VudCBzZXR0aW5nIGlkZW50aWZpZWQgYnkgaXRzIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBURFggYWNjb3VudCBzZXR0aW5nIHRvIGJlIHVwZGF0ZWQuXHJcbiAgICogQHBhcmFtIHtURFhBY2NvdW50U2V0dGluZ3NJbn0gYm9keSAtIFRoZSB1cGRhdGVkIGRhdGEgZm9yIHRoZSBURFggYWNjb3VudCBzZXR0aW5nLlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFREWEFjY291bnRTZXR0aW5nc091dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBURFggYWNjb3VudCBzZXR0aW5nLlxyXG4gICAqL1xyXG4gIHB1dFREWEFjY291bnRTZXR0aW5ncyAoaWQ6IG51bWJlciwgYm9keTpURFhBY2NvdW50U2V0dGluZ3NJbik6IE9ic2VydmFibGU8VERYQWNjb3VudFNldHRpbmdzT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxBcGlTdWNjZXNzPFREWEFjY291bnRTZXR0aW5nc091dD4+KGAke3RoaXMudXJsfS90ZHgtYWNjb3VudC1zZXR0aW5ncy8ke2lkfWAsIGJvZHkpXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBlbXBsb3llZXMgb2YgYSBzcGVjaWZpYyBsb2NhdGlvbiB1c2luZyBhIHByb3ZpZGVkIHRva2VuLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIElucHV0IHBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0LCBkZWZpbmVkIGJ5IHRoZSBgTG9jYXRpb25FbXBsb3llZXNJbmAgaW50ZXJmYWNlLlxyXG4gICAqIEByZXR1cm5zIEFuIGBPYnNlcnZhYmxlPExvY2F0aW9uRW1wbG95ZWVzT3V0PmAgdGhhdCBlbWl0cyB0aGUgZW1wbG95ZWVzXHJcbiAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBsb2NhdGlvbi5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgdHlwZSBpcyBgQXBpU3VjY2VzczxMb2NhdGlvbkVtcGxveWVlc091dD5gLCBmcm9tIHdoaWNoIHRoZSBgZGF0YWAgZmllbGQgaXMgZXh0cmFjdGVkLlxyXG4gICAqL1xyXG4gIGdldExvY2F0aW9uRW1wbG95ZWVzQnlUb2tlbiAocGFyYW1zOiB7IHRva2VuOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtcyB9KTogT2JzZXJ2YWJsZTxMb2NhdGlvbkVtcGxveWVlc091dD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXBpU3VjY2VzczxMb2NhdGlvbkVtcGxveWVlc091dD4+KGAke3RoaXMudXJsfS9sb2NhdGlvbi1lbXBsb3llZXNgLCB7XHJcbiAgICAgIHBhcmFtczogcGFyYW1zLnF1ZXJ5UGFyYW1zLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3BhcmFtcy50b2tlbn1gXHJcbiAgICAgIH1cclxuICAgIH0pLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvbW9kZWxzL2FwaS1jb21wYW5pZXMuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZlTGVzc0xhcmF2ZWxNb2RlbCwgTGFyYXZlbE1vZGVsIH0gZnJvbSAnLi9hcGkubW9kZWxzJ1xyXG5pbXBvcnQgeyBCb2FyZGluZ1Byb2Nlc3NTdGF0dXMsIENvdW50cnksIEN1cnJlbmN5LCBJZGVudGlmaWNhdGlvblR5cGUsIFByb2R1Y3QsIFN0YXRlIH0gZnJvbSAnLi9hcGktY2F0YWxvZy5pbnRlcmZhY2VzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBudW1iZXI6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXHJcbiAgYWNjb3VudF90eXBlX2lkOiBudW1iZXJcclxuICBhY2NvdW50X3R5cGU6IEFjY291bnRUeXBlXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZG9tZXN0aWNfYXBwcm92ZWQ6IGJvb2xlYW5cclxuICBpc19kZWZhdWx0OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudENhdGVnb3J5IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50VHlwZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgYWNjb3VudF9jYXRlZ29yeV9pZDogbnVtYmVyXHJcbiAgYWNjb3VudF9jYXRlZ29yeT86IEFjY291bnRDYXRlZ29yeVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhbnkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGlkOiBudW1iZXJcclxuICBjcmVhdGVkX2F0OiBzdHJpbmdcclxuICB1cGRhdGVkX2F0OiBzdHJpbmdcclxuICBuYW1lOiBzdHJpbmdcclxuICBjb250YWN0X25hbWU6IHN0cmluZ1xyXG4gIGNvbnRhY3RfZW1haWw6IHN0cmluZ1xyXG4gIGNvbnRhY3RfcGhvbmU6IHN0cmluZ1xyXG4gIHN0YXRlOiBzdHJpbmdcclxuICBjaXR5OiBzdHJpbmdcclxuICBjb3VudHlfbmFtZTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG4gIGFkZHJlc3MxOiBzdHJpbmdcclxuICBhZGRyZXNzMjogc3RyaW5nXHJcbiAgYWRkcmVzczM6IHN0cmluZ1xyXG4gIGlzX2FjdGl2ZTogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhbnlDb3VudHJ5IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb21wYW55X2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBoZWFkcXVhcnRlcnNfY2l0eV9jb2RlOiBzdHJpbmdcclxuICBscF9jb2RlOiBzdHJpbmdcclxuICBjb21wYW55OiBDb21wYW55XHJcbiAgY29udGFjdF9uYW1lOiBzdHJpbmdcclxuICBjb250YWN0X2VtYWlsOiBzdHJpbmdcclxuICBjb250YWN0X3Bob25lX2NvZGU6IHN0cmluZ1xyXG4gIGNvbnRhY3RfcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBzdGF0ZTogc3RyaW5nXHJcbiAgY2l0eTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG4gIGNvdW50eV9uYW1lOiBzdHJpbmdcclxuICBhZGRyZXNzMTogc3RyaW5nXHJcbiAgYWRkcmVzczI6IHN0cmluZ1xyXG4gIGFkZHJlc3MzOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wYW55Q291bnRyeVRheCBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgcGVyY2VudGFnZTogbnVtYmVyXHJcbiAgY29tcGFueV9jb3VudHJ5X2lkOiBudW1iZXJcclxuICBzaGlwbWVudF9zY29wZXM6IG51bWJlcltdXHJcbiAgYmFzZV9wZXJjZW50YWdlOiBudW1iZXJcclxuICB0YXhfdHlwZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeUN1cnJlbmN5UmF0ZSBleHRlbmRzIENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeSB7XHJcbiAgcmF0ZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeVJlZmVyZW5jZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbGFuZ3VhZ2VfaWQ6IG51bWJlclxyXG4gIGRlY2ltYWxfcG9pbnQ6IG51bWJlclxyXG4gIGRlY2ltYWxfc2VwYXJhdG9yOiBzdHJpbmdcclxuICB0aG91c2FuZHNfc2VwYXJhdG9yOiBzdHJpbmdcclxuICB1c2VfYmlsbGluZzogYm9vbGVhblxyXG4gIHVzZV9wYXltZW50czogYm9vbGVhblxyXG4gIHJlc3RyaWN0ZWRfaW1wb3J0X2NvdW50cmllczogbnVtYmVyW11cclxuICBjdXJyZW5jeV9pZDogbnVtYmVyXHJcbiAgbWF4X3F1YW50aXR5X2RvY3VtZW50X3BpZWNlOiBudW1iZXJcclxuICBtYXhfcXVhbnRpdHlfcGFja2FnZV9waWVjZTogbnVtYmVyXHJcbiAgd2VpZ2h0X3Jlc3RyaWN0aW9uX3BpZWNlOiBudW1iZXJcclxuICByZXN0cmljdGlvbl9zaGlwbWVudDogbnVtYmVyXHJcbiAgcmVzdHJpY3Rpb25fZGltZW5zaW9uOiBudW1iZXJcclxuICBtYXhfZGVjbGFyZWRfdmFsdWU6IG51bWJlclxyXG4gIHRlcnJpdG9yaWVzOiBudW1iZXJbXVxyXG4gIHNvbWVfb3BlbmluZ3M6IGJvb2xlYW5cclxuICBsb2NhbGU6IHN0cmluZ1xyXG4gIGNvdW50cnlfaWQ6IG51bWJlclxyXG4gIGxhYmVsX3ByaW50ZXJfbmFtZTogc3RyaW5nXHJcbiAgcmVjZWlwdF9wcmludGVyX25hbWU6IHN0cmluZ1xyXG4gIG90aGVyc19wcmludGVyX25hbWU6IHN0cmluZ1xyXG4gIGNvdW50cnk6IENvdW50cnlcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3kgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGNvdW50cnlfaWQ6IG51bWJlclxyXG4gIGN1cnJlbmN5X2lkOiBudW1iZXJcclxuICBpc19sb2NhbDogYm9vbGVhblxyXG4gIGNhbl90cmFuc2FjdDogYm9vbGVhblxyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGlzX2RlZmF1bHQ6IGJvb2xlYW5cclxuICBpc19kZWNsYXJlZF9pbnN1cmVkOiBib29sZWFuXHJcbiAgY3VycmVuY3k6IEN1cnJlbmN5XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBleHRyYV9jaGFyZ2VfaWQ6IG51bWJlclxyXG4gIGxvY2FsX2F2YWlsYWJpbGl0eTogYm9vbGVhblxyXG4gIG1hbmRhdG9yeTogYm9vbGVhblxyXG4gIHNlbGVjdGVkOiBib29sZWFuXHJcbiAgc2hpcG1lbnRfc2NvcGVzOiBudW1iZXJbXVxyXG4gIHNoaXBtZW50X2NvbnRlbnRfdHlwZXM6IG51bWJlcltdXHJcbiAgdmFsdWVfbG9jYWw6IG51bWJlclxyXG4gIHZhbHVlX3VzZDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFDaGFyZ2VFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtcGxveWVlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICBsYXN0X25hbWU6IHN0cmluZ1xyXG4gIG51bWJlcjogc3RyaW5nXHJcbiAgZW1haWw6IHN0cmluZ1xyXG4gIHVzZXJuYW1lOiBzdHJpbmdcclxuICBjb21wYW55X2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBleHRlcm5hbDogYm9vbGVhblxyXG4gIHBob25lX2NvZGU6IHN0cmluZ1xyXG4gIHBob25lX251bWJlcjogc3RyaW5nXHJcbiAgbG9jYXRpb25zOiBMb2NhdGlvbltdXHJcbiAgY29tcGFueTogQ29tcGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2hhbmdlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb21wYW55X2NvdW50cnlfY3VycmVuY3lfaWQ6IG51bWJlclxyXG4gIHZhbGlkX3NpbmNlOiBzdHJpbmdcclxuICB2YWxpZF91bnRpbDogc3RyaW5nIHwgbnVsbFxyXG4gIHZhbHVlOiBzdHJpbmdcclxuICB0eXBlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5RXhjaGFuZ2UgZXh0ZW5kcyBFeGNoYW5nZSB7XHJcbiAgY3VycmVuY3k6IEN1cnJlbmN5XHJcbiAgY291bnRyeV9yZWZlcmVuY2VfY3VycmVuY3k6IENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxhdGlvbiBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgc3lzdGVtX2lkOiBudW1iZXJcclxuICBtYWNfYWRkcmVzczogc3RyaW5nXHJcbiAgaXBfYWRkcmVzczogc3RyaW5nXHJcbiAgbG9jYXRpb25faWQ6IG51bWJlclxyXG4gIG51bWJlcjogbnVtYmVyXHJcbiAgc3lzdGVtOiBTeXN0ZW1cclxuICBjdXN0b21lcl9zY3JlZW46IGJvb2xlYW5cclxuICBlcG9kX2NhcHR1cmU6IGJvb2xlYW5cclxuICBjeF9zdXJ2ZXk6IGJvb2xlYW5cclxuICBjdXN0b21lcl9mbG93OiBib29sZWFuXHJcbiAgcHJvbW90aW9uYWxfY29udGVudDogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBhY2NvdW50czogQWNjb3VudFtdXHJcbiAgYWRkcmVzczE6IHN0cmluZ1xyXG4gIGFkZHJlc3MyOiBzdHJpbmdcclxuICBhZGRyZXNzMzogc3RyaW5nXHJcbiAgYmlsbGluZ19jb2RlOiBzdHJpbmcgfCBudWxsXHJcbiAgY2l0eV9uYW1lOiBzdHJpbmdcclxuICBjb21taXNzaW9uX2FjY291bnQ6IHN0cmluZyB8IG51bGxcclxuICBjb21wYW55X2NvdW50cnk6IENvbXBhbnlDb3VudHJ5XHJcbiAgY29tcGFueV9jb3VudHJ5X2lkOiBudW1iZXJcclxuICBjb250YWN0X25hbWU6IHN0cmluZyB8IG51bGxcclxuICBjb3VudHJ5X3JlZ2lvbjogbnVsbFxyXG4gIGNvdW50cnlfcmVnaW9uX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgY291bnRyeV96b25lOiBudWxsXHJcbiAgY291bnRyeV96b25lX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgY291bnR5X25hbWU6IHN0cmluZ1xyXG4gIGRlZmF1bHRfYWNjb3VudF9pZDogbnVtYmVyIHwgbnVsbFxyXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsXHJcbiAgZXRvb2xzX2F1dG9fYmlsbGluZ19lbmFibGVkOiBib29sZWFuXHJcbiAgZXh0cmFfZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIH1cclxuICBmYWNpbGl0eV9jb2RlOiBzdHJpbmdcclxuICBmYWNpbGl0eV9pZDogbnVtYmVyXHJcbiAgZ210X29mZnNldDogc3RyaW5nXHJcbiAgZ29vZ2xlX21hcHNfaWQ6IHN0cmluZ1xyXG4gIGlhdGFfY29kZTogc3RyaW5nXHJcbiAgaXNfb2NjdXJzOiBib29sZWFuXHJcbiAgbG9jYXRpb25fY29kZTogc3RyaW5nIHwgbnVsbFxyXG4gIGxvY2tlcl9lbmFibGVkOiBib29sZWFuXHJcbiAgbWFuYWdlbWVudF9hcmVhOiBudWxsXHJcbiAgbWFuYWdlbWVudF9hcmVhX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgcGhvbmVfY29kZTogc3RyaW5nXHJcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBxdWV1ZV9tYW5hZ2VyX2VuYWJsZWQ6IGJvb2xlYW5cclxuICByb3V0ZV9udW1iZXI6IHN0cmluZ1xyXG4gIHNlcnZpY2VfYXJlYV9jb2RlOiBzdHJpbmdcclxuICBzZXJ2aWNlX3BvaW50X2lkOiBzdHJpbmdcclxuICBzdGF0ZTogU3RhdGVcclxuICBzdGF0ZV9jb2RlOiBzdHJpbmcgfCBudWxsXHJcbiAgc3RhdGVfaWQ6IG51bWJlclxyXG4gIHN0YXRlX25hbWU6IHN0cmluZ1xyXG4gIHN1cGVydmlzb3I6IEVtcGxveWVlXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uRW1wbG95ZWUgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGxvY2F0aW9uX2lkOiBudW1iZXJcclxuICBlbXBsb3llZV9pZDogbnVtYmVyXHJcbiAgaXNfYWN0aXZlOiBib29sZWFuXHJcbiAgaXNfc3VwZXJ2aXNvcjogYm9vbGVhblxyXG4gIGVtcGxveWVlOiBFbXBsb3llZVxyXG4gIGxvY2F0aW9uOiBMb2NhdGlvblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlciBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgcmVnZXg6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbClbXSB9XHJcbiAgcGFyYW1ldGVyX3R5cGVfaWQ6IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbmZpZyB7XHJcbiAgaWQ6IG51bWJlclxyXG4gIGxldmVsOiBudW1iZXJcclxuICBtb2RlbF90eXBlOiBzdHJpbmcgfCBudWxsXHJcbiAgbW9kZWxfaWQ6IG51bWJlciB8IG51bGxcclxuICBwYXJhbWV0ZXJfaWQ6IG51bWJlclxyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsKVtdIH1cclxuICBwYXJhbWV0ZXI6IFBhcmFtZXRlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93Q29uZmlnIHtcclxuICBpZDogbnVtYmVyXHJcbiAgc3lzdGVtX2lkOiBudW1iZXJcclxuICBsZXZlbDogc3RyaW5nXHJcbiAgbW9kZWxfdHlwZTogc3RyaW5nXHJcbiAgbW9kZWxfaWQ6IG51bWJlclxyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHBhZ2VfaWQ6IG51bWJlclxyXG4gIHBhZ2VfbmFtZTogc3RyaW5nXHJcbiAgZW5hYmxlZDogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtcGxveWVlQ3VzdG9tZXJEaGwgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGlkZW50aWZpY2F0aW9uX3R5cGVfaWQ6IG51bWJlclxyXG4gIGlkZW50aWZpY2F0aW9uX3R5cGVfdmFsdWU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGxhc3RfbmFtZTogc3RyaW5nXHJcbiAgYWRkcmVzczogc3RyaW5nXHJcbiAgcGhvbmVfY29kZTogc3RyaW5nXHJcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBlbWFpbDogc3RyaW5nXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZW1wbG95ZWVfaWQ6IG51bWJlciB8IG51bGxcclxuICBpZGVudGlmaWNhdGlvbl90eXBlOiBJZGVudGlmaWNhdGlvblR5cGVcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCb2FyZGluZ1Byb2Nlc3Mge1xyXG4gIGlkOiBudW1iZXJcclxuICBib2FyZGluZ19wcm9jZXNzX3R5cGVfaWQ6IG51bWJlclxyXG4gIHN0YXR1c19pZDogbnVtYmVyXHJcbiAgaXNfZmluaXNoZWQ6IGJvb2xlYW5cclxuICBzdGFydF9kYXRlX3RpbWU6IHN0cmluZ1xyXG4gIGVuZF9kYXRlX3RpbWU6IHN0cmluZ1xyXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHN0YXR1czogQm9hcmRpbmdQcm9jZXNzU3RhdHVzXHJcbiAgYm9hcmRpbmdfcHJvY2Vzc19oaXN0b3JpZXM6IEJvYXJkaW5nUHJvY2Vzc0hpc3RvcnlbXVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nUHJvY2Vzc0hpc3Rvcnkge1xyXG4gIGlkOiBudW1iZXJcclxuICBib2FyZGluZ19wcm9jZXNzX2lkOiBudW1iZXJcclxuICBzdGF0dXNfaWQ6IG51bWJlclxyXG4gIG1lc3NhZ2VzOiBzdHJpbmdbXVxyXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgY29uZmlndXJhdGlvbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxyXG4gIGNhbl93b3JrZmxvd19jb25maWc6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdCBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgcHJvZHVjdF9pZDogbnVtYmVyXHJcbiAgbG9jYWxfbmFtZTogc3RyaW5nXHJcbiAgbWluX3dlaWdodDogbnVtYmVyXHJcbiAgbWF4X3dlaWdodDogbnVtYmVyXHJcbiAgaW5zdXJhbmNlOiBudW1iZXJcclxuICBidXNpbmVzc19sZXR0ZXI6IGJvb2xlYW5cclxuICBwYWNrYWdpbmc6IGJvb2xlYW5cclxuICBhbnRpX2RydWdfbGV0dGVyOiBib29sZWFuXHJcbiAgbWF4X2RlY2xhcmVkX3ZhbHVlOiBudW1iZXJcclxuICBzaGlwbWVudF9ncm91cHM6IG51bWJlcltdXHJcbiAgc2hpcG1lbnRfc2NvcGVzOiBudW1iZXJbXVxyXG4gIHNoaXBtZW50X2NvbnRlbnRfdHlwZXM6IG51bWJlcltdXHJcbiAgaXNfcHJlcGFpZF9kcm9wb2ZmOiBib29sZWFuXHJcbiAgcHJvZHVjdDogUHJvZHVjdFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGdsb2JhbF9jb2RlOiBzdHJpbmdcclxuICBsb2NhbF9jb2RlOiBzdHJpbmdcclxuICBnbG9iYWxfbmFtZTogc3RyaW5nXHJcbiAgbG9jYWxfbmFtZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVERYQWNjb3VudFNldHRpbmcgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGxvY2F0aW9uX2lkOiBudW1iZXJcclxuICBhY2NvdW50X2lkOiBudW1iZXJcclxuICBwcm9kdWN0X2lkOiBudW1iZXJcclxuICBwcm9kdWN0X2dsb2JhbF9jb2RlX25hbWU6IHN0cmluZ1xyXG4gIHByb2R1Y3RfbG9jYWxfY29kZV9uYW1lOiBzdHJpbmdcclxuICBhY2NvdW50OiBBY2NvdW50VG9URFhcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50VG9URFggZXh0ZW5kcyBBY3RpdmVMZXNzTGFyYXZlbE1vZGVsIHtcclxuICBudW1iZXI6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXHJcbiAgYWNjb3VudF90eXBlX2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBudWxsIHwgc3RyaW5nXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZW5hYmxlZF9mb3JfZHJvcG9mZjogYm9vbGVhblxyXG4gIHN1cHBseV90eXBlOiBTdXBwbHlFbnRpdHlUeXBlXHJcbiAgc3VwcGx5X3BhY2tpbmc6IFN1cHBseUVudGl0eVBhY2tpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHlUeXBlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHlQYWNraW5nIHtcclxuICB2YWx1ZTogbnVtYmVyXHJcbiAgd2VpZ2h0OiBudW1iZXJcclxuICBoZWlnaHQ6IG51bWJlclxyXG4gIGRlcHRoOiBudW1iZXJcclxuICB3aWR0aDogbnVtYmVyXHJcbiAgZW1vYmlsZV9jb2RlOiBudWxsIHwgc3RyaW5nXHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nXHJcbiAgdXBkYXRlZF9hdDogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFDaGFyZ2VFbnRpdHlDb25maWdHbG9iYWwgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGV4dHJhY2hhcmdlX2lkOiBudW1iZXJcclxuICBlbnRpdHlfaWQ6IG51bWJlclxyXG4gIGVudGl0eTogRW50aXR5RXh0cmFDaGFyZ2VcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlFeHRyYUNoYXJnZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbGV2ZWw6IHN0cmluZ1xyXG4gIG1vZGVsX3R5cGU6IHN0cmluZ1xyXG4gIG1vZGVsX2lkOiBzdHJpbmcsXHJcbn1cclxuIl19
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbXBhbmllcy5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC1zZXJ2aWNlcy9zcmMvbGliL2FwaXMvbW9kZWxzL2FwaS1jb21wYW5pZXMuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aXZlTGVzc0xhcmF2ZWxNb2RlbCwgTGFyYXZlbE1vZGVsIH0gZnJvbSAnLi9hcGkubW9kZWxzJ1xyXG5pbXBvcnQgeyBCb2FyZGluZ1Byb2Nlc3NTdGF0dXMsIENvdW50cnksIEN1cnJlbmN5LCBJZGVudGlmaWNhdGlvblR5cGUsIFByb2R1Y3QsIFN0YXRlIH0gZnJvbSAnLi9hcGktY2F0YWxvZy5pbnRlcmZhY2VzJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBudW1iZXI6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXHJcbiAgYWNjb3VudF90eXBlX2lkOiBudW1iZXJcclxuICBhY2NvdW50X3R5cGU6IEFjY291bnRUeXBlXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZG9tZXN0aWNfYXBwcm92ZWQ6IGJvb2xlYW5cclxuICBpc19kZWZhdWx0OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudENhdGVnb3J5IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50VHlwZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgYWNjb3VudF9jYXRlZ29yeV9pZDogbnVtYmVyXHJcbiAgYWNjb3VudF9jYXRlZ29yeT86IEFjY291bnRDYXRlZ29yeVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhbnkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGlkOiBudW1iZXJcclxuICBjcmVhdGVkX2F0OiBzdHJpbmdcclxuICB1cGRhdGVkX2F0OiBzdHJpbmdcclxuICBuYW1lOiBzdHJpbmdcclxuICBjb250YWN0X25hbWU6IHN0cmluZ1xyXG4gIGNvbnRhY3RfZW1haWw6IHN0cmluZ1xyXG4gIGNvbnRhY3RfcGhvbmU6IHN0cmluZ1xyXG4gIHN0YXRlOiBzdHJpbmdcclxuICBjaXR5OiBzdHJpbmdcclxuICBjb3VudHlfbmFtZTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG4gIGFkZHJlc3MxOiBzdHJpbmdcclxuICBhZGRyZXNzMjogc3RyaW5nXHJcbiAgYWRkcmVzczM6IHN0cmluZ1xyXG4gIGlzX2FjdGl2ZTogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhbnlDb3VudHJ5IGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb21wYW55X2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBoZWFkcXVhcnRlcnNfY2l0eV9jb2RlOiBzdHJpbmdcclxuICBscF9jb2RlOiBzdHJpbmdcclxuICBjb21wYW55OiBDb21wYW55XHJcbiAgY29udGFjdF9uYW1lOiBzdHJpbmdcclxuICBjb250YWN0X2VtYWlsOiBzdHJpbmdcclxuICBjb250YWN0X3Bob25lX2NvZGU6IHN0cmluZ1xyXG4gIGNvbnRhY3RfcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBzdGF0ZTogc3RyaW5nXHJcbiAgY2l0eTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG4gIGNvdW50eV9uYW1lOiBzdHJpbmdcclxuICBhZGRyZXNzMTogc3RyaW5nXHJcbiAgYWRkcmVzczI6IHN0cmluZ1xyXG4gIGFkZHJlc3MzOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wYW55Q291bnRyeVRheCBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgY29kZTogc3RyaW5nXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgcGVyY2VudGFnZTogbnVtYmVyXHJcbiAgY29tcGFueV9jb3VudHJ5X2lkOiBudW1iZXJcclxuICBzaGlwbWVudF9zY29wZXM6IG51bWJlcltdXHJcbiAgYmFzZV9wZXJjZW50YWdlOiBudW1iZXJcclxuICB0YXhfdHlwZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeUN1cnJlbmN5UmF0ZSBleHRlbmRzIENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeSB7XHJcbiAgcmF0ZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeVJlZmVyZW5jZSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbGFuZ3VhZ2VfaWQ6IG51bWJlclxyXG4gIGRlY2ltYWxfcG9pbnQ6IG51bWJlclxyXG4gIGRlY2ltYWxfc2VwYXJhdG9yOiBzdHJpbmdcclxuICB0aG91c2FuZHNfc2VwYXJhdG9yOiBzdHJpbmdcclxuICB1c2VfYmlsbGluZzogYm9vbGVhblxyXG4gIHVzZV9wYXltZW50czogYm9vbGVhblxyXG4gIHJlc3RyaWN0ZWRfaW1wb3J0X2NvdW50cmllczogbnVtYmVyW11cclxuICBjdXJyZW5jeV9pZDogbnVtYmVyXHJcbiAgbWF4X3F1YW50aXR5X2RvY3VtZW50X3BpZWNlOiBudW1iZXJcclxuICBtYXhfcXVhbnRpdHlfcGFja2FnZV9waWVjZTogbnVtYmVyXHJcbiAgd2VpZ2h0X3Jlc3RyaWN0aW9uX3BpZWNlOiBudW1iZXJcclxuICByZXN0cmljdGlvbl9zaGlwbWVudDogbnVtYmVyXHJcbiAgcmVzdHJpY3Rpb25fZGltZW5zaW9uOiBudW1iZXJcclxuICBtYXhfZGVjbGFyZWRfdmFsdWU6IG51bWJlclxyXG4gIHRlcnJpdG9yaWVzOiBudW1iZXJbXVxyXG4gIHNvbWVfb3BlbmluZ3M6IGJvb2xlYW5cclxuICBsb2NhbGU6IHN0cmluZ1xyXG4gIGNvdW50cnlfaWQ6IG51bWJlclxyXG4gIGxhYmVsX3ByaW50ZXJfbmFtZTogc3RyaW5nXHJcbiAgcmVjZWlwdF9wcmludGVyX25hbWU6IHN0cmluZ1xyXG4gIG90aGVyc19wcmludGVyX25hbWU6IHN0cmluZ1xyXG4gIGNvdW50cnk6IENvdW50cnlcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5UmVmZXJlbmNlQ3VycmVuY3kgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGNvdW50cnlfaWQ6IG51bWJlclxyXG4gIGN1cnJlbmN5X2lkOiBudW1iZXJcclxuICBpc19sb2NhbDogYm9vbGVhblxyXG4gIGNhbl90cmFuc2FjdDogYm9vbGVhblxyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGlzX2RlZmF1bHQ6IGJvb2xlYW5cclxuICBpc19kZWNsYXJlZF9pbnN1cmVkOiBib29sZWFuXHJcbiAgY3VycmVuY3k6IEN1cnJlbmN5XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ291bnRyeVJlZmVyZW5jZUV4dHJhQ2hhcmdlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBleHRyYV9jaGFyZ2VfaWQ6IG51bWJlclxyXG4gIGxvY2FsX2F2YWlsYWJpbGl0eTogYm9vbGVhblxyXG4gIG1hbmRhdG9yeTogYm9vbGVhblxyXG4gIHNlbGVjdGVkOiBib29sZWFuXHJcbiAgc2hpcG1lbnRfc2NvcGVzOiBudW1iZXJbXVxyXG4gIHNoaXBtZW50X2NvbnRlbnRfdHlwZXM6IG51bWJlcltdXHJcbiAgdmFsdWVfbG9jYWw6IG51bWJlclxyXG4gIHZhbHVlX3VzZDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXh0cmFDaGFyZ2VFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGNvZGU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtcGxveWVlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICBsYXN0X25hbWU6IHN0cmluZ1xyXG4gIG51bWJlcjogc3RyaW5nXHJcbiAgZW1haWw6IHN0cmluZ1xyXG4gIHVzZXJuYW1lOiBzdHJpbmdcclxuICBjb21wYW55X2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxuICBleHRlcm5hbDogYm9vbGVhblxyXG4gIHBob25lX2NvZGU6IHN0cmluZ1xyXG4gIHBob25lX251bWJlcjogc3RyaW5nXHJcbiAgbG9jYXRpb25zOiBMb2NhdGlvbltdXHJcbiAgY29tcGFueTogQ29tcGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2hhbmdlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBjb21wYW55X2NvdW50cnlfY3VycmVuY3lfaWQ6IG51bWJlclxyXG4gIHZhbGlkX3NpbmNlOiBzdHJpbmdcclxuICB2YWxpZF91bnRpbDogc3RyaW5nIHwgbnVsbFxyXG4gIHZhbHVlOiBzdHJpbmdcclxuICB0eXBlOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5RXhjaGFuZ2UgZXh0ZW5kcyBFeGNoYW5nZSB7XHJcbiAgY3VycmVuY3k6IEN1cnJlbmN5XHJcbiAgY291bnRyeV9yZWZlcmVuY2VfY3VycmVuY3k6IENvdW50cnlSZWZlcmVuY2VDdXJyZW5jeVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxhdGlvbiBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgc3lzdGVtX2lkOiBudW1iZXJcclxuICBtYWNfYWRkcmVzczogc3RyaW5nXHJcbiAgaXBfYWRkcmVzczogc3RyaW5nXHJcbiAgbG9jYXRpb25faWQ6IG51bWJlclxyXG4gIG51bWJlcjogbnVtYmVyXHJcbiAgc3lzdGVtOiBTeXN0ZW1cclxuICBjdXN0b21lcl9zY3JlZW46IGJvb2xlYW5cclxuICBlcG9kX2NhcHR1cmU6IGJvb2xlYW5cclxuICBjeF9zdXJ2ZXk6IGJvb2xlYW5cclxuICBjdXN0b21lcl9mbG93OiBib29sZWFuXHJcbiAgcHJvbW90aW9uYWxfY29udGVudDogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBhY2NvdW50czogQWNjb3VudFtdXHJcbiAgYWRkcmVzczE6IHN0cmluZ1xyXG4gIGFkZHJlc3MyOiBzdHJpbmdcclxuICBhZGRyZXNzMzogc3RyaW5nXHJcbiAgYmlsbGluZ19jb2RlOiBzdHJpbmcgfCBudWxsXHJcbiAgY2l0eV9uYW1lOiBzdHJpbmdcclxuICBjb21taXNzaW9uX2FjY291bnQ6IHN0cmluZyB8IG51bGxcclxuICBjb21wYW55X2NvdW50cnk6IENvbXBhbnlDb3VudHJ5XHJcbiAgY29tcGFueV9jb3VudHJ5X2lkOiBudW1iZXJcclxuICBjb250YWN0X25hbWU6IHN0cmluZyB8IG51bGxcclxuICBjb3VudHJ5X3JlZ2lvbjogbnVsbFxyXG4gIGNvdW50cnlfcmVnaW9uX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgY291bnRyeV96b25lOiBudWxsXHJcbiAgY291bnRyeV96b25lX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgY291bnR5X25hbWU6IHN0cmluZ1xyXG4gIGRlZmF1bHRfYWNjb3VudF9pZDogbnVtYmVyIHwgbnVsbFxyXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsXHJcbiAgZXRvb2xzX2F1dG9fYmlsbGluZ19lbmFibGVkOiBib29sZWFuXHJcbiAgZXh0cmFfZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIH1cclxuICBmYWNpbGl0eV9jb2RlOiBzdHJpbmdcclxuICBmYWNpbGl0eV9pZDogbnVtYmVyXHJcbiAgZ210X29mZnNldDogc3RyaW5nXHJcbiAgZ29vZ2xlX21hcHNfaWQ6IHN0cmluZ1xyXG4gIGlhdGFfY29kZTogc3RyaW5nXHJcbiAgaXNfb2NjdXJzOiBib29sZWFuXHJcbiAgbG9jYXRpb25fY29kZTogc3RyaW5nIHwgbnVsbFxyXG4gIGxvY2tlcl9lbmFibGVkOiBib29sZWFuXHJcbiAgbWFuYWdlbWVudF9hcmVhOiBudWxsXHJcbiAgbWFuYWdlbWVudF9hcmVhX2lkOiBudW1iZXIgfCBudWxsXHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgcGhvbmVfY29kZTogc3RyaW5nXHJcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBxdWV1ZV9tYW5hZ2VyX2VuYWJsZWQ6IGJvb2xlYW5cclxuICByb3V0ZV9udW1iZXI6IHN0cmluZ1xyXG4gIHNlcnZpY2VfYXJlYV9jb2RlOiBzdHJpbmdcclxuICBzZXJ2aWNlX3BvaW50X2lkOiBzdHJpbmdcclxuICBzdGF0ZTogU3RhdGVcclxuICBzdGF0ZV9jb2RlOiBzdHJpbmcgfCBudWxsXHJcbiAgc3RhdGVfaWQ6IG51bWJlclxyXG4gIHN0YXRlX25hbWU6IHN0cmluZ1xyXG4gIHN1cGVydmlzb3I6IEVtcGxveWVlXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgemlwX2NvZGU6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uRW1wbG95ZWUgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGxvY2F0aW9uX2lkOiBudW1iZXJcclxuICBlbXBsb3llZV9pZDogbnVtYmVyXHJcbiAgaXNfYWN0aXZlOiBib29sZWFuXHJcbiAgaXNfc3VwZXJ2aXNvcjogYm9vbGVhblxyXG4gIGVtcGxveWVlOiBFbXBsb3llZVxyXG4gIGxvY2F0aW9uOiBMb2NhdGlvblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlciBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgcmVnZXg6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcclxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbClbXSB9XHJcbiAgcGFyYW1ldGVyX3R5cGVfaWQ6IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtZXRlckNvbmZpZyB7XHJcbiAgaWQ6IG51bWJlclxyXG4gIGxldmVsOiBudW1iZXJcclxuICBtb2RlbF90eXBlOiBzdHJpbmcgfCBudWxsXHJcbiAgbW9kZWxfaWQ6IG51bWJlciB8IG51bGxcclxuICBwYXJhbWV0ZXJfaWQ6IG51bWJlclxyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHsgW2tleTogc3RyaW5nXTogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsKVtdIH1cclxuICBwYXJhbWV0ZXI6IFBhcmFtZXRlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93Q29uZmlnIHtcclxuICBpZDogbnVtYmVyXHJcbiAgc3lzdGVtX2lkOiBudW1iZXJcclxuICBsZXZlbDogc3RyaW5nXHJcbiAgbW9kZWxfdHlwZTogc3RyaW5nXHJcbiAgbW9kZWxfaWQ6IG51bWJlclxyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHBhZ2VfaWQ6IG51bWJlclxyXG4gIHBhZ2VfbmFtZTogc3RyaW5nXHJcbiAgZW5hYmxlZDogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVtcGxveWVlQ3VzdG9tZXJEaGwgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGlkZW50aWZpY2F0aW9uX3R5cGVfaWQ6IG51bWJlclxyXG4gIGlkZW50aWZpY2F0aW9uX3R5cGVfdmFsdWU6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGxhc3RfbmFtZTogc3RyaW5nXHJcbiAgYWRkcmVzczogc3RyaW5nXHJcbiAgcGhvbmVfY29kZTogc3RyaW5nXHJcbiAgcGhvbmVfbnVtYmVyOiBzdHJpbmdcclxuICBlbWFpbDogc3RyaW5nXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZW1wbG95ZWVfaWQ6IG51bWJlciB8IG51bGxcclxuICBpZGVudGlmaWNhdGlvbl90eXBlOiBJZGVudGlmaWNhdGlvblR5cGVcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCb2FyZGluZ1Byb2Nlc3Mge1xyXG4gIGlkOiBudW1iZXJcclxuICBib2FyZGluZ19wcm9jZXNzX3R5cGVfaWQ6IG51bWJlclxyXG4gIHN0YXR1c19pZDogbnVtYmVyXHJcbiAgaXNfZmluaXNoZWQ6IGJvb2xlYW5cclxuICBzdGFydF9kYXRlX3RpbWU6IHN0cmluZ1xyXG4gIGVuZF9kYXRlX3RpbWU6IHN0cmluZ1xyXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHN0YXR1czogQm9hcmRpbmdQcm9jZXNzU3RhdHVzXHJcbiAgYm9hcmRpbmdfcHJvY2Vzc19oaXN0b3JpZXM6IEJvYXJkaW5nUHJvY2Vzc0hpc3RvcnlbXVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJvYXJkaW5nUHJvY2Vzc0hpc3Rvcnkge1xyXG4gIGlkOiBudW1iZXJcclxuICBib2FyZGluZ19wcm9jZXNzX2lkOiBudW1iZXJcclxuICBzdGF0dXNfaWQ6IG51bWJlclxyXG4gIG1lc3NhZ2VzOiBzdHJpbmdbXVxyXG4gIGNyZWF0ZWRfYXQ6IHN0cmluZ1xyXG4gIHVwZGF0ZWRfYXQ6IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbSBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgdHlwZTogc3RyaW5nXHJcbiAgY29uZmlndXJhdGlvbjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxyXG4gIGNhbl93b3JrZmxvd19jb25maWc6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5UmVmZXJlbmNlUHJvZHVjdCBleHRlbmRzIExhcmF2ZWxNb2RlbCB7XHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgcHJvZHVjdF9pZDogbnVtYmVyXHJcbiAgbG9jYWxfbmFtZTogc3RyaW5nXHJcbiAgbWluX3dlaWdodDogbnVtYmVyXHJcbiAgbWF4X3dlaWdodDogbnVtYmVyXHJcbiAgaW5zdXJhbmNlOiBudW1iZXJcclxuICBidXNpbmVzc19sZXR0ZXI6IGJvb2xlYW5cclxuICBwYWNrYWdpbmc6IGJvb2xlYW5cclxuICBhbnRpX2RydWdfbGV0dGVyOiBib29sZWFuXHJcbiAgbWF4X2RlY2xhcmVkX3ZhbHVlOiBudW1iZXJcclxuICBzaGlwbWVudF9ncm91cHM6IG51bWJlcltdXHJcbiAgc2hpcG1lbnRfc2NvcGVzOiBudW1iZXJbXVxyXG4gIHNoaXBtZW50X2NvbnRlbnRfdHlwZXM6IG51bWJlcltdXHJcbiAgaXNfcHJlcGFpZF9kcm9wb2ZmOiBib29sZWFuXHJcbiAgcHJvZHVjdDogUHJvZHVjdFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGdsb2JhbF9jb2RlOiBzdHJpbmdcclxuICBsb2NhbF9jb2RlOiBzdHJpbmdcclxuICBnbG9iYWxfbmFtZTogc3RyaW5nXHJcbiAgbG9jYWxfbmFtZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVERYQWNjb3VudFNldHRpbmcgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIGxvY2F0aW9uX2lkOiBudW1iZXJcclxuICBhY2NvdW50X2lkOiBudW1iZXJcclxuICBwcm9kdWN0X2lkOiBudW1iZXJcclxuICBwcm9kdWN0X2dsb2JhbF9jb2RlX25hbWU6IHN0cmluZ1xyXG4gIHByb2R1Y3RfbG9jYWxfY29kZV9uYW1lOiBzdHJpbmdcclxuICBhY2NvdW50OiBBY2NvdW50VG9URFhcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50VG9URFggZXh0ZW5kcyBBY3RpdmVMZXNzTGFyYXZlbE1vZGVsIHtcclxuICBudW1iZXI6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsXHJcbiAgYWNjb3VudF90eXBlX2lkOiBudW1iZXJcclxuICBjb3VudHJ5X2lkOiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHkgZXh0ZW5kcyBMYXJhdmVsTW9kZWwge1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGRlc2NyaXB0aW9uOiBudWxsIHwgc3RyaW5nXHJcbiAgY291bnRyeV9pZDogbnVtYmVyXHJcbiAgZW5hYmxlZF9mb3JfZHJvcG9mZjogYm9vbGVhblxyXG4gIHN1cHBseV90eXBlOiBTdXBwbHlFbnRpdHlUeXBlXHJcbiAgc3VwcGx5X3BhY2tpbmc6IFN1cHBseUVudGl0eVBhY2tpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHlUeXBlIGV4dGVuZHMgTGFyYXZlbE1vZGVsIHtcclxuICBuYW1lOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwbHlFbnRpdHlQYWNraW5nIHtcclxuICB2YWx1ZTogbnVtYmVyXHJcbiAgd2VpZ2h0OiBudW1iZXJcclxuICBoZWlnaHQ6IG51bWJlclxyXG4gIGRlcHRoOiBudW1iZXJcclxuICB3aWR0aDogbnVtYmVyXHJcbiAgZW1vYmlsZV9jb2RlOiBudWxsIHwgc3RyaW5nXHJcbiAgY3JlYXRlZF9hdDogc3RyaW5nXHJcbiAgdXBkYXRlZF9hdDogc3RyaW5nXHJcbn1cclxuIl19
|