@revxui/api-clients-ts 1.1.430 → 1.1.431
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/README.md +2 -2
- package/api/auditController.service.d.ts +8 -3
- package/api/safeguardController.service.d.ts +20 -5
- package/esm2020/api/auditController.service.mjs +17 -2
- package/esm2020/api/safeguardController.service.mjs +53 -3
- package/esm2020/model/activityLog.mjs +1 -1
- package/esm2020/model/apiResponseObjectListSafeguardBlockedItemsDTO.mjs +2 -0
- package/esm2020/model/apiResponseObjectMapstringlong.mjs +13 -0
- package/esm2020/model/models.mjs +4 -6
- package/esm2020/model/safeguardBlockedItemsDTO.mjs +22 -0
- package/esm2020/model/siteModel.mjs +1 -1
- package/esm2020/model/statusBaseObject.mjs +1 -1
- package/fesm2015/revxui-api-clients-ts.mjs +91 -20
- package/fesm2015/revxui-api-clients-ts.mjs.map +1 -1
- package/fesm2020/revxui-api-clients-ts.mjs +103 -20
- package/fesm2020/revxui-api-clients-ts.mjs.map +1 -1
- package/model/activityLog.d.ts +1 -0
- package/model/{apiResponseObjectListSafeguardRuleExecutionLogEntity.d.ts → apiResponseObjectListSafeguardBlockedItemsDTO.d.ts} +3 -3
- package/model/{safeguardLiMappingEntity.d.ts → apiResponseObjectMapstringlong.d.ts} +6 -5
- package/model/models.d.ts +3 -5
- package/model/safeguardBlockedItemsDTO.d.ts +30 -0
- package/model/siteModel.d.ts +2 -0
- package/model/statusBaseObject.d.ts +2 -0
- package/package.json +1 -1
- package/esm2020/model/apiResponseObjectListSafeguardRuleExecutionLogEntity.mjs +0 -2
- package/esm2020/model/safeguardEntity.mjs +0 -8
- package/esm2020/model/safeguardLiMappingEntity.mjs +0 -2
- package/esm2020/model/safeguardRuleExecutionLogEntity.mjs +0 -8
- package/esm2020/model/safeguardScheduleEntity.mjs +0 -2
- package/model/safeguardEntity.d.ts +0 -35
- package/model/safeguardRuleExecutionLogEntity.d.ts +0 -30
- package/model/safeguardScheduleEntity.d.ts +0 -19
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## @revxui/api-clients-ts@1.1.
|
|
1
|
+
## @revxui/api-clients-ts@1.1.431
|
|
2
2
|
|
|
3
3
|
### Building
|
|
4
4
|
|
|
@@ -19,7 +19,7 @@ Navigate to the folder of your consuming project and run one of next commands.
|
|
|
19
19
|
_published:_
|
|
20
20
|
|
|
21
21
|
```
|
|
22
|
-
npm install @revxui/api-clients-ts@1.1.
|
|
22
|
+
npm install @revxui/api-clients-ts@1.1.431 --save
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
_without publishing (not recommended):_
|
|
@@ -49,17 +49,22 @@ export declare class AuditControllerService {
|
|
|
49
49
|
/**
|
|
50
50
|
* get user activity log
|
|
51
51
|
*
|
|
52
|
+
* @param advertiserId advertiserId
|
|
53
|
+
* @param campaignId campaignId
|
|
54
|
+
* @param endTime endTime
|
|
52
55
|
* @param entities entities
|
|
53
56
|
* @param pageNumber pageNumber
|
|
54
57
|
* @param pageSize pageSize
|
|
55
58
|
* @param reqId request id
|
|
59
|
+
* @param startTime startTime
|
|
60
|
+
* @param strategyId strategyId
|
|
56
61
|
* @param token Auth Token
|
|
57
62
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
58
63
|
* @param reportProgress flag to report request and response progress.
|
|
59
64
|
*/
|
|
60
|
-
getUserActivityLogUsingGET(entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiListResponseActivityLog>;
|
|
61
|
-
getUserActivityLogUsingGET(entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiListResponseActivityLog>>;
|
|
62
|
-
getUserActivityLogUsingGET(entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiListResponseActivityLog>>;
|
|
65
|
+
getUserActivityLogUsingGET(advertiserId?: number, campaignId?: number, endTime?: number, entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, startTime?: number, strategyId?: number, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiListResponseActivityLog>;
|
|
66
|
+
getUserActivityLogUsingGET(advertiserId?: number, campaignId?: number, endTime?: number, entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, startTime?: number, strategyId?: number, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiListResponseActivityLog>>;
|
|
67
|
+
getUserActivityLogUsingGET(advertiserId?: number, campaignId?: number, endTime?: number, entities?: string, pageNumber?: number, pageSize?: number, reqId?: string, startTime?: number, strategyId?: number, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiListResponseActivityLog>>;
|
|
63
68
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuditControllerService, [null, { optional: true; }, { optional: true; }]>;
|
|
64
69
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuditControllerService>;
|
|
65
70
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { ApiResponseObjectListMapstringobject } from '../model/apiResponseObjectListMapstringobject';
|
|
4
|
+
import { ApiResponseObjectListSafeguardBlockedItemsDTO } from '../model/apiResponseObjectListSafeguardBlockedItemsDTO';
|
|
4
5
|
import { ApiResponseObjectListSafeguardDetail } from '../model/apiResponseObjectListSafeguardDetail';
|
|
5
6
|
import { ApiResponseObjectListSafeguardExclusionDTO } from '../model/apiResponseObjectListSafeguardExclusionDTO';
|
|
6
|
-
import { ApiResponseObjectListSafeguardRuleExecutionLogEntity } from '../model/apiResponseObjectListSafeguardRuleExecutionLogEntity';
|
|
7
7
|
import { ApiResponseObjectListSafeguardRuleMasterEntity } from '../model/apiResponseObjectListSafeguardRuleMasterEntity';
|
|
8
8
|
import { ApiResponseObjectMaplongstring } from '../model/apiResponseObjectMaplongstring';
|
|
9
|
+
import { ApiResponseObjectMapstringlong } from '../model/apiResponseObjectMapstringlong';
|
|
9
10
|
import { ApiResponseObjectSafeguardDetail } from '../model/apiResponseObjectSafeguardDetail';
|
|
10
11
|
import { ApiResponseObjectSafeguardExclusionDTO } from '../model/apiResponseObjectSafeguardExclusionDTO';
|
|
11
12
|
import { ApiResponseObjectSafeguardResponseDTO } from '../model/apiResponseObjectSafeguardResponseDTO';
|
|
@@ -50,17 +51,31 @@ export declare class SafeguardControllerService {
|
|
|
50
51
|
createSafeguardRuleUsingPOST(safeguardRequestDTO: SafeguardRequestDTO, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiResponseObjectSafeguardResponseDTO>>;
|
|
51
52
|
createSafeguardRuleUsingPOST(safeguardRequestDTO: SafeguardRequestDTO, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiResponseObjectSafeguardResponseDTO>>;
|
|
52
53
|
/**
|
|
53
|
-
* API to fetch all the blocked
|
|
54
|
+
* API to fetch count of all the blocked items for the specific strategy mapped to safeguard rule
|
|
54
55
|
*
|
|
55
56
|
* @param safeguardId safeguardId
|
|
57
|
+
* @param strategyId strategyId
|
|
56
58
|
* @param reqId request id
|
|
57
59
|
* @param token Auth Token
|
|
58
60
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
59
61
|
* @param reportProgress flag to report request and response progress.
|
|
60
62
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
63
|
+
getBlockedItemCountUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiResponseObjectMapstringlong>;
|
|
64
|
+
getBlockedItemCountUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiResponseObjectMapstringlong>>;
|
|
65
|
+
getBlockedItemCountUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiResponseObjectMapstringlong>>;
|
|
66
|
+
/**
|
|
67
|
+
* API to fetch all the blocked item details for the specific strategy mapped to safeguard rule
|
|
68
|
+
*
|
|
69
|
+
* @param safeguardId safeguardId
|
|
70
|
+
* @param strategyId strategyId
|
|
71
|
+
* @param reqId request id
|
|
72
|
+
* @param token Auth Token
|
|
73
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
74
|
+
* @param reportProgress flag to report request and response progress.
|
|
75
|
+
*/
|
|
76
|
+
getBlockedItemDetailsUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'body', reportProgress?: boolean): Observable<ApiResponseObjectListSafeguardBlockedItemsDTO>;
|
|
77
|
+
getBlockedItemDetailsUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<ApiResponseObjectListSafeguardBlockedItemsDTO>>;
|
|
78
|
+
getBlockedItemDetailsUsingGET(safeguardId: number, strategyId: number, reqId?: string, token?: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<ApiResponseObjectListSafeguardBlockedItemsDTO>>;
|
|
64
79
|
/**
|
|
65
80
|
* API to fetch exclusion list details for a campaign
|
|
66
81
|
*
|
|
@@ -141,8 +141,17 @@ export class AuditControllerService {
|
|
|
141
141
|
reportProgress: reportProgress
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
getUserActivityLogUsingGET(entities, pageNumber, pageSize, reqId, token, observe = 'body', reportProgress = false) {
|
|
144
|
+
getUserActivityLogUsingGET(advertiserId, campaignId, endTime, entities, pageNumber, pageSize, reqId, startTime, strategyId, token, observe = 'body', reportProgress = false) {
|
|
145
145
|
let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });
|
|
146
|
+
if (advertiserId !== undefined && advertiserId !== null) {
|
|
147
|
+
queryParameters = queryParameters.set('advertiserId', advertiserId);
|
|
148
|
+
}
|
|
149
|
+
if (campaignId !== undefined && campaignId !== null) {
|
|
150
|
+
queryParameters = queryParameters.set('campaignId', campaignId);
|
|
151
|
+
}
|
|
152
|
+
if (endTime !== undefined && endTime !== null) {
|
|
153
|
+
queryParameters = queryParameters.set('endTime', endTime);
|
|
154
|
+
}
|
|
146
155
|
if (entities !== undefined && entities !== null) {
|
|
147
156
|
queryParameters = queryParameters.set('entities', entities);
|
|
148
157
|
}
|
|
@@ -152,6 +161,12 @@ export class AuditControllerService {
|
|
|
152
161
|
if (pageSize !== undefined && pageSize !== null) {
|
|
153
162
|
queryParameters = queryParameters.set('pageSize', pageSize);
|
|
154
163
|
}
|
|
164
|
+
if (startTime !== undefined && startTime !== null) {
|
|
165
|
+
queryParameters = queryParameters.set('startTime', startTime);
|
|
166
|
+
}
|
|
167
|
+
if (strategyId !== undefined && strategyId !== null) {
|
|
168
|
+
queryParameters = queryParameters.set('strategyId', strategyId);
|
|
169
|
+
}
|
|
155
170
|
let headers = this.defaultHeaders;
|
|
156
171
|
if (reqId !== undefined && reqId !== null) {
|
|
157
172
|
headers = headers.set('reqId', String(reqId));
|
|
@@ -190,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
190
205
|
}] }, { type: i2.Configuration, decorators: [{
|
|
191
206
|
type: Optional
|
|
192
207
|
}] }]; } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXVkaXRDb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxXQUFXLEVBQUUsVUFBVSxFQUNWLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFRL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7QUFJckYsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLGdDQUFnQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFHdkMsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUM1QjtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxRQUFrQjtRQUNyQyxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUNuQyxLQUFL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QUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDakQ7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxpQkFBaUIsR0FBYTtZQUM5QixrQkFBa0I7U0FDckIsQ0FBQztRQUNGLE1BQU0sd0JBQXdCLEdBQXVCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RyxJQUFJLHdCQUF3QixJQUFJLFNBQVMsRUFBRTtZQUN2QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztTQUM3RDtRQUVELHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBYSxFQUMxQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBNkIsR0FBRyxJQUFJLENBQUMsUUFBUSx5QkFBeUIsRUFDNUY7WUFDSSxNQUFNLEVBQUUsZUFBZTtZQUN2QixlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQ0osQ0FBQztJQUNOLENBQUM7O29IQXpQUSxzQkFBc0IsNENBTWtDLFNBQVM7d0hBTmpFLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFPd0MsUUFBUTs7MEJBQUcsTUFBTTsyQkFBQyxTQUFTOzswQkFBcUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBpIERvY3VtZW50YXRpb25cbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKlxuICogT3BlbkFQSSBzcGVjIHZlcnNpb246IDEuMFxuICogXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSB0aGUgc3dhZ2dlciBjb2RlIGdlbmVyYXRvciBwcm9ncmFtLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbi5naXRcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcbiAgICAgICAgIEh0dHBSZXNwb25zZSwgSHR0cEV2ZW50IH0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYyB9ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vZW5jb2Rlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2cgfSBmcm9tICcuLi9tb2RlbC9hcGlMaXN0UmVzcG9uc2VBY3Rpdml0eUxvZyc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHMgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHMnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXRNYXJrZXIgfSBmcm9tICcuLi9tb2RlbC9hcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdE1hcmtlcic7XG5cbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdWRpdENvbnRyb2xsZXJTZXJ2aWNlIHtcblxuICAgIHByb3RlY3RlZCBiYXNlUGF0aCA9ICdodHRwczovL2FwaXYyc3RhZ2UzLmF0b21leC5uZXQnO1xuICAgIHB1YmxpYyBkZWZhdWx0SGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIHB1YmxpYyBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBAT3B0aW9uYWwoKUBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nLCBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChiYXNlUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoIHx8IGNvbmZpZ3VyYXRpb24uYmFzZVBhdGggfHwgdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXG4gICAgICogQHJldHVybiB0cnVlOiBjb25zdW1lcyBjb250YWlucyAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsIGZhbHNlOiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gJ211bHRpcGFydC9mb3JtLWRhdGEnO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnN1bWUgb2YgY29uc3VtZXMpIHtcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogZ2V0IEF1ZGl0IERldGFpbCBmb3IgY2FtcGFpZ24gYW5kIHN0cmF0ZWd5XG4gICAgICogXG4gICAgICogQHBhcmFtIGVuZFRpbWUgZW5kVGltZVxuICAgICAqIEBwYXJhbSBlbnRpdHkgZW50aXR5XG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHN0YXJ0VGltZSBzdGFydFRpbWVcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldEF1ZGl0RGV0YWlsc1VzaW5nR0VUKGVuZFRpbWU6IG51bWJlciwgZW50aXR5OiAnQURWRVJUSVNFUicgfCAnQ0FNUEFJR04nIHwgJ1NUUkFURUdZJyB8ICdDUkVBVElWRScgfCAnSE9NRVBBR0UnIHwgJ1BST0RVQ1RfQ0FUQUxPRycgfCAnQ0FURUdPUllfUEVSRk9STUFOQ0UnIHwgJ0NSRUFUSVZFX1NFVCcsIGlkOiBudW1iZXIsIHN0YXJ0VGltZTogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXREZXRhaWxzPjtcbiAgICBwdWJsaWMgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0RGV0YWlscz4+O1xuICAgIHB1YmxpYyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0RGV0YWlscz4+O1xuICAgIHB1YmxpYyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBpZiAoZW5kVGltZSA9PT0gbnVsbCB8fCBlbmRUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGVuZFRpbWUgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGVudGl0eSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldEF1ZGl0RGV0YWlsc1VzaW5nR0VULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhcnRUaW1lID09PSBudWxsIHx8IHN0YXJ0VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzdGFydFRpbWUgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChlbmRUaW1lICE9PSB1bmRlZmluZWQgJiYgZW5kVGltZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnZW5kVGltZScsIDxhbnk+ZW5kVGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2lkJywgPGFueT5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkICYmIHN0YXJ0VGltZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3RhcnRUaW1lJywgPGFueT5zdGFydFRpbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHM+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hY3Rpdml0eS9kZXRhaWwvJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGVudGl0eSkpfWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgQXVkaXQgTG9nIGZvciBjYW1wYWlnbiBhbmQgc3RyYXRlZ3lcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW5kVGltZSBlbmRUaW1lXG4gICAgICogQHBhcmFtIGVudGl0eSBlbnRpdHlcbiAgICAgKiBAcGFyYW0gaWQgaWRcbiAgICAgKiBAcGFyYW0gc3RhcnRUaW1lIHN0YXJ0VGltZVxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXVkaXRMb2dVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0TWFya2VyPjtcbiAgICBwdWJsaWMgZ2V0QXVkaXRMb2dVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXRNYXJrZXI+PjtcbiAgICBwdWJsaWMgZ2V0QXVkaXRMb2dVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0TWFya2VyPj47XG4gICAgcHVibGljIGdldEF1ZGl0TG9nVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGVuZFRpbWUgPT09IG51bGwgfHwgZW5kVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBlbmRUaW1lIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXRMb2dVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRpdHkgPT09IG51bGwgfHwgZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGVudGl0eSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldEF1ZGl0TG9nVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBdWRpdExvZ1VzaW5nR0VULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCB8fCBzdGFydFRpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgc3RhcnRUaW1lIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXRMb2dVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChlbmRUaW1lICE9PSB1bmRlZmluZWQgJiYgZW5kVGltZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnZW5kVGltZScsIDxhbnk+ZW5kVGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2lkJywgPGFueT5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkICYmIHN0YXJ0VGltZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnc3RhcnRUaW1lJywgPGFueT5zdGFydFRpbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICBpZiAocmVxSWQgIT09IHVuZGVmaW5lZCAmJiByZXFJZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdyZXFJZCcsIFN0cmluZyhyZXFJZCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbiAhPT0gdW5kZWZpbmVkICYmIHRva2VuICE9PSBudWxsKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ3Rva2VuJywgU3RyaW5nKHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICBpZiAoaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdE1hcmtlcj4oYCR7dGhpcy5iYXNlUGF0aH0vdjIvYXBpL2FjdGl2aXR5L2xvZy8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZW50aXR5KSl9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB1c2VyIGFjdGl2aXR5IGxvZ1xuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRpdGllcyBlbnRpdGllc1xuICAgICAqIEBwYXJhbSBwYWdlTnVtYmVyIHBhZ2VOdW1iZXJcbiAgICAgKiBAcGFyYW0gcGFnZVNpemUgcGFnZVNpemVcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFVzZXJBY3Rpdml0eUxvZ1VzaW5nR0VUKGVudGl0aWVzPzogc3RyaW5nLCBwYWdlTnVtYmVyPzogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nPjtcbiAgICBwdWJsaWMgZ2V0VXNlckFjdGl2aXR5TG9nVXNpbmdHRVQoZW50aXRpZXM/OiBzdHJpbmcsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlMaXN0UmVzcG9uc2VBY3Rpdml0eUxvZz4+O1xuICAgIHB1YmxpYyBnZXRVc2VyQWN0aXZpdHlMb2dVc2luZ0dFVChlbnRpdGllcz86IHN0cmluZywgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlMaXN0UmVzcG9uc2VBY3Rpdml0eUxvZz4+O1xuICAgIHB1YmxpYyBnZXRVc2VyQWN0aXZpdHlMb2dVc2luZ0dFVChlbnRpdGllcz86IHN0cmluZywgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG5cblxuXG4gICAgICAgIGxldCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogbmV3IEN1c3RvbUh0dHBVcmxFbmNvZGluZ0NvZGVjKCl9KTtcbiAgICAgICAgaWYgKGVudGl0aWVzICE9PSB1bmRlZmluZWQgJiYgZW50aXRpZXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2VudGl0aWVzJywgPGFueT5lbnRpdGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZ2VOdW1iZXIgIT09IHVuZGVmaW5lZCAmJiBwYWdlTnVtYmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdwYWdlTnVtYmVyJywgPGFueT5wYWdlTnVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFnZVNpemUgIT09IHVuZGVmaW5lZCAmJiBwYWdlU2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgncGFnZVNpemUnLCA8YW55PnBhZ2VTaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2c+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS91c2VyYWN0aXZpdHlsb2dgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRDb250cm9sbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXVkaXRDb250cm9sbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBMkIsZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxXQUFXLEVBQUUsVUFBVSxFQUNWLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFRL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7QUFJckYsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLGdDQUFnQyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFHdkMsSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztTQUM1QjtRQUNELElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxRQUFrQjtRQUNyQyxNQUFNLElBQUksR0FBRyxxQkFBcUIsQ0FBQztRQUNuQyxLQUFL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N0Q7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxRQUFRLEdBQWEsRUFDMUIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQTZCLEdBQUcsSUFBSSxDQUFDLFFBQVEseUJBQXlCLEVBQzVGO1lBQ0ksTUFBTSxFQUFFLGVBQWU7WUFDdkIsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOztvSEFsUlEsc0JBQXNCLDRDQU1rQyxTQUFTO3dIQU5qRSxzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBT3dDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQXFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwaSBEb2N1bWVudGF0aW9uXG4gKiBBcGkgRG9jdW1lbnRhdGlvblxuICpcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxLjBcbiAqIFxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgdGhlIHN3YWdnZXIgY29kZSBnZW5lcmF0b3IgcHJvZ3JhbS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbi8qIHRzbGludDpkaXNhYmxlOm5vLXVudXNlZC12YXJpYWJsZSBtZW1iZXItb3JkZXJpbmcgKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsXG4gICAgICAgICBIdHRwUmVzcG9uc2UsIEh0dHBFdmVudCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nIH0gZnJvbSAnLi4vbW9kZWwvYXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2cnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXREZXRhaWxzIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXREZXRhaWxzJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0TWFya2VyIH0gZnJvbSAnLi4vbW9kZWwvYXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXRNYXJrZXInO1xuXG5pbXBvcnQgeyBCQVNFX1BBVEgsIENPTExFQ1RJT05fRk9STUFUUyB9ICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vdmFyaWFibGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXVkaXRDb250cm9sbGVyU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cHM6Ly9hcGl2MnN0YWdlMy5hdG9tZXgubmV0JztcbiAgICBwdWJsaWMgZGVmYXVsdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCwgQE9wdGlvbmFsKClASW5qZWN0KEJBU0VfUEFUSCkgYmFzZVBhdGg6IHN0cmluZywgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgICAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVBhdGggPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgIHRoaXMuYmFzZVBhdGggPSBiYXNlUGF0aCB8fCBjb25maWd1cmF0aW9uLmJhc2VQYXRoIHx8IHRoaXMuYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29uc3VtZXMgc3RyaW5nW10gbWltZS10eXBlc1xuICAgICAqIEByZXR1cm4gdHJ1ZTogY29uc3VtZXMgY29udGFpbnMgJ211bHRpcGFydC9mb3JtLWRhdGEnLCBmYWxzZTogb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjYW5Db25zdW1lRm9ybShjb25zdW1lczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZm9ybSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhJztcbiAgICAgICAgZm9yIChjb25zdCBjb25zdW1lIG9mIGNvbnN1bWVzKSB7XG4gICAgICAgICAgICBpZiAoZm9ybSA9PT0gY29uc3VtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIGdldCBBdWRpdCBEZXRhaWwgZm9yIGNhbXBhaWduIGFuZCBzdHJhdGVneVxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbmRUaW1lIGVuZFRpbWVcbiAgICAgKiBAcGFyYW0gZW50aXR5IGVudGl0eVxuICAgICAqIEBwYXJhbSBpZCBpZFxuICAgICAqIEBwYXJhbSBzdGFydFRpbWUgc3RhcnRUaW1lXG4gICAgICogQHBhcmFtIHJlcUlkIHJlcXVlc3QgaWRcbiAgICAgKiBAcGFyYW0gdG9rZW4gQXV0aCBUb2tlblxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVChlbmRUaW1lOiBudW1iZXIsIGVudGl0eTogJ0FEVkVSVElTRVInIHwgJ0NBTVBBSUdOJyB8ICdTVFJBVEVHWScgfCAnQ1JFQVRJVkUnIHwgJ0hPTUVQQUdFJyB8ICdQUk9EVUNUX0NBVEFMT0cnIHwgJ0NBVEVHT1JZX1BFUkZPUk1BTkNFJyB8ICdDUkVBVElWRV9TRVQnLCBpZDogbnVtYmVyLCBzdGFydFRpbWU6IG51bWJlciwgcmVxSWQ/OiBzdHJpbmcsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0RGV0YWlscz47XG4gICAgcHVibGljIGdldEF1ZGl0RGV0YWlsc1VzaW5nR0VUKGVuZFRpbWU6IG51bWJlciwgZW50aXR5OiAnQURWRVJUSVNFUicgfCAnQ0FNUEFJR04nIHwgJ1NUUkFURUdZJyB8ICdDUkVBVElWRScgfCAnSE9NRVBBR0UnIHwgJ1BST0RVQ1RfQ0FUQUxPRycgfCAnQ0FURUdPUllfUEVSRk9STUFOQ0UnIHwgJ0NSRUFUSVZFX1NFVCcsIGlkOiBudW1iZXIsIHN0YXJ0VGltZTogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHM+PjtcbiAgICBwdWJsaWMgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdERldGFpbHM+PjtcbiAgICBwdWJsaWMgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICAgICAgaWYgKGVuZFRpbWUgPT09IG51bGwgfHwgZW5kVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBlbmRUaW1lIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5ID09PSBudWxsIHx8IGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBlbnRpdHkgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBdWRpdERldGFpbHNVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldEF1ZGl0RGV0YWlsc1VzaW5nR0VULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCB8fCBzdGFydFRpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgc3RhcnRUaW1lIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXREZXRhaWxzVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHtlbmNvZGVyOiBuZXcgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMoKX0pO1xuICAgICAgICBpZiAoZW5kVGltZSAhPT0gdW5kZWZpbmVkICYmIGVuZFRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2VuZFRpbWUnLCA8YW55PmVuZFRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdpZCcsIDxhbnk+aWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFRpbWUgIT09IHVuZGVmaW5lZCAmJiBzdGFydFRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ3N0YXJ0VGltZScsIDxhbnk+c3RhcnRUaW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXREZXRhaWxzPihgJHt0aGlzLmJhc2VQYXRofS92Mi9hcGkvYWN0aXZpdHkvZGV0YWlsLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhlbnRpdHkpKX1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IEF1ZGl0IExvZyBmb3IgY2FtcGFpZ24gYW5kIHN0cmF0ZWd5XG4gICAgICogXG4gICAgICogQHBhcmFtIGVuZFRpbWUgZW5kVGltZVxuICAgICAqIEBwYXJhbSBlbnRpdHkgZW50aXR5XG4gICAgICogQHBhcmFtIGlkIGlkXG4gICAgICogQHBhcmFtIHN0YXJ0VGltZSBzdGFydFRpbWVcbiAgICAgKiBAcGFyYW0gcmVxSWQgcmVxdWVzdCBpZFxuICAgICAqIEBwYXJhbSB0b2tlbiBBdXRoIFRva2VuXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldEF1ZGl0TG9nVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdE1hcmtlcj47XG4gICAgcHVibGljIGdldEF1ZGl0TG9nVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFwaVJlc3BvbnNlT2JqZWN0TGlzdEF1ZGl0TWFya2VyPj47XG4gICAgcHVibGljIGdldEF1ZGl0TG9nVXNpbmdHRVQoZW5kVGltZTogbnVtYmVyLCBlbnRpdHk6ICdBRFZFUlRJU0VSJyB8ICdDQU1QQUlHTicgfCAnU1RSQVRFR1knIHwgJ0NSRUFUSVZFJyB8ICdIT01FUEFHRScgfCAnUFJPRFVDVF9DQVRBTE9HJyB8ICdDQVRFR09SWV9QRVJGT1JNQU5DRScgfCAnQ1JFQVRJVkVfU0VUJywgaWQ6IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcGlSZXNwb25zZU9iamVjdExpc3RBdWRpdE1hcmtlcj4+O1xuICAgIHB1YmxpYyBnZXRBdWRpdExvZ1VzaW5nR0VUKGVuZFRpbWU6IG51bWJlciwgZW50aXR5OiAnQURWRVJUSVNFUicgfCAnQ0FNUEFJR04nIHwgJ1NUUkFURUdZJyB8ICdDUkVBVElWRScgfCAnSE9NRVBBR0UnIHwgJ1BST0RVQ1RfQ0FUQUxPRycgfCAnQ0FURUdPUllfUEVSRk9STUFOQ0UnIHwgJ0NSRUFUSVZFX1NFVCcsIGlkOiBudW1iZXIsIHN0YXJ0VGltZTogbnVtYmVyLCByZXFJZD86IHN0cmluZywgdG9rZW4/OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgICAgIGlmIChlbmRUaW1lID09PSBudWxsIHx8IGVuZFRpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZW5kVGltZSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldEF1ZGl0TG9nVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50aXR5ID09PSBudWxsIHx8IGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBlbnRpdHkgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRBdWRpdExvZ1VzaW5nR0VULicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZ2V0QXVkaXRMb2dVc2luZ0dFVC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydFRpbWUgPT09IG51bGwgfHwgc3RhcnRUaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHN0YXJ0VGltZSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGdldEF1ZGl0TG9nVXNpbmdHRVQuJyk7XG4gICAgICAgIH1cblxuXG5cbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHtlbmNvZGVyOiBuZXcgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMoKX0pO1xuICAgICAgICBpZiAoZW5kVGltZSAhPT0gdW5kZWZpbmVkICYmIGVuZFRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2VuZFRpbWUnLCA8YW55PmVuZFRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkICYmIGlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdpZCcsIDxhbnk+aWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydFRpbWUgIT09IHVuZGVmaW5lZCAmJiBzdGFydFRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ3N0YXJ0VGltZScsIDxhbnk+c3RhcnRUaW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzcG9uc2VPYmplY3RMaXN0QXVkaXRNYXJrZXI+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS9hY3Rpdml0eS9sb2cvJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGVudGl0eSkpfWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiBxdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgdXNlciBhY3Rpdml0eSBsb2dcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWR2ZXJ0aXNlcklkIGFkdmVydGlzZXJJZFxuICAgICAqIEBwYXJhbSBjYW1wYWlnbklkIGNhbXBhaWduSWRcbiAgICAgKiBAcGFyYW0gZW5kVGltZSBlbmRUaW1lXG4gICAgICogQHBhcmFtIGVudGl0aWVzIGVudGl0aWVzXG4gICAgICogQHBhcmFtIHBhZ2VOdW1iZXIgcGFnZU51bWJlclxuICAgICAqIEBwYXJhbSBwYWdlU2l6ZSBwYWdlU2l6ZVxuICAgICAqIEBwYXJhbSByZXFJZCByZXF1ZXN0IGlkXG4gICAgICogQHBhcmFtIHN0YXJ0VGltZSBzdGFydFRpbWVcbiAgICAgKiBAcGFyYW0gc3RyYXRlZ3lJZCBzdHJhdGVneUlkXG4gICAgICogQHBhcmFtIHRva2VuIEF1dGggVG9rZW5cbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VXNlckFjdGl2aXR5TG9nVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCBjYW1wYWlnbklkPzogbnVtYmVyLCBlbmRUaW1lPzogbnVtYmVyLCBlbnRpdGllcz86IHN0cmluZywgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzdGFydFRpbWU/OiBudW1iZXIsIHN0cmF0ZWd5SWQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEFwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nPjtcbiAgICBwdWJsaWMgZ2V0VXNlckFjdGl2aXR5TG9nVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCBjYW1wYWlnbklkPzogbnVtYmVyLCBlbmRUaW1lPzogbnVtYmVyLCBlbnRpdGllcz86IHN0cmluZywgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzdGFydFRpbWU/OiBudW1iZXIsIHN0cmF0ZWd5SWQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2c+PjtcbiAgICBwdWJsaWMgZ2V0VXNlckFjdGl2aXR5TG9nVXNpbmdHRVQoYWR2ZXJ0aXNlcklkPzogbnVtYmVyLCBjYW1wYWlnbklkPzogbnVtYmVyLCBlbmRUaW1lPzogbnVtYmVyLCBlbnRpdGllcz86IHN0cmluZywgcGFnZU51bWJlcj86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIsIHJlcUlkPzogc3RyaW5nLCBzdGFydFRpbWU/OiBudW1iZXIsIHN0cmF0ZWd5SWQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFwaUxpc3RSZXNwb25zZUFjdGl2aXR5TG9nPj47XG4gICAgcHVibGljIGdldFVzZXJBY3Rpdml0eUxvZ1VzaW5nR0VUKGFkdmVydGlzZXJJZD86IG51bWJlciwgY2FtcGFpZ25JZD86IG51bWJlciwgZW5kVGltZT86IG51bWJlciwgZW50aXRpZXM/OiBzdHJpbmcsIHBhZ2VOdW1iZXI/OiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyLCByZXFJZD86IHN0cmluZywgc3RhcnRUaW1lPzogbnVtYmVyLCBzdHJhdGVneUlkPzogbnVtYmVyLCB0b2tlbj86IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgICAgICBsZXQgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IEh0dHBQYXJhbXMoe2VuY29kZXI6IG5ldyBDdXN0b21IdHRwVXJsRW5jb2RpbmdDb2RlYygpfSk7XG4gICAgICAgIGlmIChhZHZlcnRpc2VySWQgIT09IHVuZGVmaW5lZCAmJiBhZHZlcnRpc2VySWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2FkdmVydGlzZXJJZCcsIDxhbnk+YWR2ZXJ0aXNlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtcGFpZ25JZCAhPT0gdW5kZWZpbmVkICYmIGNhbXBhaWduSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2NhbXBhaWduSWQnLCA8YW55PmNhbXBhaWduSWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbmRUaW1lICE9PSB1bmRlZmluZWQgJiYgZW5kVGltZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgnZW5kVGltZScsIDxhbnk+ZW5kVGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudGl0aWVzICE9PSB1bmRlZmluZWQgJiYgZW50aXRpZXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycyA9IHF1ZXJ5UGFyYW1ldGVycy5zZXQoJ2VudGl0aWVzJywgPGFueT5lbnRpdGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZ2VOdW1iZXIgIT09IHVuZGVmaW5lZCAmJiBwYWdlTnVtYmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdwYWdlTnVtYmVyJywgPGFueT5wYWdlTnVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFnZVNpemUgIT09IHVuZGVmaW5lZCAmJiBwYWdlU2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzLnNldCgncGFnZVNpemUnLCA8YW55PnBhZ2VTaXplKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRUaW1lICE9PSB1bmRlZmluZWQgJiYgc3RhcnRUaW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdzdGFydFRpbWUnLCA8YW55PnN0YXJ0VGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5SWQgIT09IHVuZGVmaW5lZCAmJiBzdHJhdGVneUlkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMgPSBxdWVyeVBhcmFtZXRlcnMuc2V0KCdzdHJhdGVneUlkJywgPGFueT5zdHJhdGVneUlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHJlcUlkICE9PSB1bmRlZmluZWQgJiYgcmVxSWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgncmVxSWQnLCBTdHJpbmcocmVxSWQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0b2tlbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCd0b2tlbicsIFN0cmluZyh0b2tlbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgICAgICBjb25zdCBjb25zdW1lczogc3RyaW5nW10gPSBbXG4gICAgICAgIF07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpTGlzdFJlc3BvbnNlQWN0aXZpdHlMb2c+KGAke3RoaXMuYmFzZVBhdGh9L3YyL2FwaS91c2VyYWN0aXZpdHlsb2dgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhcmFtczogcXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
|