@aneoconsultingfr/armonik.api.angular 3.11.0-edge.89.ab31d7c → 3.11.0
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 +1 -1
- package/esm2022/lib/generated/applications-common.pb.mjs +22 -618
- package/esm2022/lib/generated/applications-fields.pb.mjs +231 -0
- package/esm2022/lib/generated/applications-filters.pb.mjs +349 -0
- package/esm2022/lib/generated/applications-service.pb.mjs +1 -1
- package/esm2022/lib/generated/applications-service.pbsc.mjs +6 -36
- package/esm2022/lib/generated/events-common.pb.mjs +19 -3
- package/esm2022/lib/generated/filters-common.pb.mjs +642 -0
- package/esm2022/lib/generated/partitions-common.pb.mjs +25 -433
- package/esm2022/lib/generated/partitions-fields.pb.mjs +233 -0
- package/esm2022/lib/generated/partitions-filters.pb.mjs +431 -0
- package/esm2022/lib/generated/partitions-service.pb.mjs +1 -1
- package/esm2022/lib/generated/partitions-service.pbsc.mjs +10 -10
- package/esm2022/lib/generated/results-common.pb.mjs +33 -565
- package/esm2022/lib/generated/results-fields.pb.mjs +234 -0
- package/esm2022/lib/generated/results-filters.pb.mjs +546 -0
- package/esm2022/lib/generated/results-service.pb.mjs +1 -1
- package/esm2022/lib/generated/results-service.pbsc.mjs +39 -39
- package/esm2022/lib/generated/sessions-common.pb.mjs +104 -822
- package/esm2022/lib/generated/sessions-fields.pb.mjs +504 -0
- package/esm2022/lib/generated/sessions-filters.pb.mjs +602 -0
- package/esm2022/lib/generated/sessions-service.pb.mjs +1 -1
- package/esm2022/lib/generated/sessions-service.pbsc.mjs +24 -24
- package/esm2022/lib/generated/tasks-common.pb.mjs +166 -900
- package/esm2022/lib/generated/tasks-fields.pb.mjs +513 -0
- package/esm2022/lib/generated/tasks-filters.pb.mjs +602 -0
- package/esm2022/lib/generated/tasks-service.pb.mjs +1 -1
- package/esm2022/lib/generated/tasks-service.pbsc.mjs +36 -36
- package/esm2022/lib/index.mjs +22 -12
- package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs +11857 -10006
- package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs.map +1 -1
- package/lib/generated/applications-common.pb.d.ts +11 -388
- package/lib/generated/applications-fields.pb.d.ts +153 -0
- package/lib/generated/applications-filters.pb.d.ts +222 -0
- package/lib/generated/applications-service.pbsc.d.ts +5 -21
- package/lib/generated/events-common.pb.d.ts +5 -0
- package/lib/generated/filters-common.pb.d.ts +408 -0
- package/lib/generated/partitions-common.pb.d.ts +15 -260
- package/lib/generated/partitions-fields.pb.d.ts +155 -0
- package/lib/generated/partitions-filters.pb.d.ts +240 -0
- package/lib/generated/partitions-service.pbsc.d.ts +9 -9
- package/lib/generated/results-common.pb.d.ts +24 -295
- package/lib/generated/results-fields.pb.d.ts +156 -0
- package/lib/generated/results-filters.pb.d.ts +315 -0
- package/lib/generated/results-service.pbsc.d.ts +38 -38
- package/lib/generated/sessions-common.pb.d.ts +76 -489
- package/lib/generated/sessions-fields.pb.d.ts +318 -0
- package/lib/generated/sessions-filters.pb.d.ts +327 -0
- package/lib/generated/sessions-service.pbsc.d.ts +19 -19
- package/lib/generated/tasks-common.pb.d.ts +139 -561
- package/lib/generated/tasks-fields.pb.d.ts +327 -0
- package/lib/generated/tasks-filters.pb.d.ts +327 -0
- package/lib/generated/tasks-service.pbsc.d.ts +31 -31
- package/lib/index.d.ts +21 -11
- package/package.json +2 -2
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
8
8
|
import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
|
|
9
9
|
import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
|
|
10
|
-
import * as
|
|
11
|
-
import * as
|
|
10
|
+
import * as armonikApiGrpcV1007 from './objects.pb';
|
|
11
|
+
import * as armonikApiGrpcV1Results008 from './results-common.pb';
|
|
12
12
|
import { GRPC_RESULTS_CLIENT_SETTINGS } from './results-service.pbconf';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@ngx-grpc/core";
|
|
@@ -29,7 +29,7 @@ export class ResultsClient {
|
|
|
29
29
|
*
|
|
30
30
|
* @param requestMessage Request message
|
|
31
31
|
* @param requestMetadata Request metadata
|
|
32
|
-
* @returns Observable<GrpcEvent<
|
|
32
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.ListResultsResponse>>
|
|
33
33
|
*/
|
|
34
34
|
listResults: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
35
35
|
return this.handler.handle({
|
|
@@ -38,8 +38,8 @@ export class ResultsClient {
|
|
|
38
38
|
path: '/armonik.api.grpc.v1.results.Results/ListResults',
|
|
39
39
|
requestData,
|
|
40
40
|
requestMetadata,
|
|
41
|
-
requestClass:
|
|
42
|
-
responseClass:
|
|
41
|
+
requestClass: armonikApiGrpcV1Results008.ListResultsRequest,
|
|
42
|
+
responseClass: armonikApiGrpcV1Results008.ListResultsResponse
|
|
43
43
|
});
|
|
44
44
|
},
|
|
45
45
|
/**
|
|
@@ -47,7 +47,7 @@ export class ResultsClient {
|
|
|
47
47
|
*
|
|
48
48
|
* @param requestMessage Request message
|
|
49
49
|
* @param requestMetadata Request metadata
|
|
50
|
-
* @returns Observable<GrpcEvent<
|
|
50
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.GetResultResponse>>
|
|
51
51
|
*/
|
|
52
52
|
getResult: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
53
53
|
return this.handler.handle({
|
|
@@ -56,8 +56,8 @@ export class ResultsClient {
|
|
|
56
56
|
path: '/armonik.api.grpc.v1.results.Results/GetResult',
|
|
57
57
|
requestData,
|
|
58
58
|
requestMetadata,
|
|
59
|
-
requestClass:
|
|
60
|
-
responseClass:
|
|
59
|
+
requestClass: armonikApiGrpcV1Results008.GetResultRequest,
|
|
60
|
+
responseClass: armonikApiGrpcV1Results008.GetResultResponse
|
|
61
61
|
});
|
|
62
62
|
},
|
|
63
63
|
/**
|
|
@@ -65,7 +65,7 @@ export class ResultsClient {
|
|
|
65
65
|
*
|
|
66
66
|
* @param requestMessage Request message
|
|
67
67
|
* @param requestMetadata Request metadata
|
|
68
|
-
* @returns Observable<GrpcEvent<
|
|
68
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.GetOwnerTaskIdResponse>>
|
|
69
69
|
*/
|
|
70
70
|
getOwnerTaskId: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
71
71
|
return this.handler.handle({
|
|
@@ -74,8 +74,8 @@ export class ResultsClient {
|
|
|
74
74
|
path: '/armonik.api.grpc.v1.results.Results/GetOwnerTaskId',
|
|
75
75
|
requestData,
|
|
76
76
|
requestMetadata,
|
|
77
|
-
requestClass:
|
|
78
|
-
responseClass:
|
|
77
|
+
requestClass: armonikApiGrpcV1Results008.GetOwnerTaskIdRequest,
|
|
78
|
+
responseClass: armonikApiGrpcV1Results008.GetOwnerTaskIdResponse
|
|
79
79
|
});
|
|
80
80
|
},
|
|
81
81
|
/**
|
|
@@ -83,7 +83,7 @@ export class ResultsClient {
|
|
|
83
83
|
*
|
|
84
84
|
* @param requestMessage Request message
|
|
85
85
|
* @param requestMetadata Request metadata
|
|
86
|
-
* @returns Observable<GrpcEvent<
|
|
86
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.CreateResultsMetaDataResponse>>
|
|
87
87
|
*/
|
|
88
88
|
createResultsMetaData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
89
89
|
return this.handler.handle({
|
|
@@ -92,8 +92,8 @@ export class ResultsClient {
|
|
|
92
92
|
path: '/armonik.api.grpc.v1.results.Results/CreateResultsMetaData',
|
|
93
93
|
requestData,
|
|
94
94
|
requestMetadata,
|
|
95
|
-
requestClass:
|
|
96
|
-
responseClass:
|
|
95
|
+
requestClass: armonikApiGrpcV1Results008.CreateResultsMetaDataRequest,
|
|
96
|
+
responseClass: armonikApiGrpcV1Results008.CreateResultsMetaDataResponse
|
|
97
97
|
});
|
|
98
98
|
},
|
|
99
99
|
/**
|
|
@@ -101,7 +101,7 @@ export class ResultsClient {
|
|
|
101
101
|
*
|
|
102
102
|
* @param requestMessage Request message
|
|
103
103
|
* @param requestMetadata Request metadata
|
|
104
|
-
* @returns Observable<GrpcEvent<
|
|
104
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.CreateResultsResponse>>
|
|
105
105
|
*/
|
|
106
106
|
createResults: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
107
107
|
return this.handler.handle({
|
|
@@ -110,8 +110,8 @@ export class ResultsClient {
|
|
|
110
110
|
path: '/armonik.api.grpc.v1.results.Results/CreateResults',
|
|
111
111
|
requestData,
|
|
112
112
|
requestMetadata,
|
|
113
|
-
requestClass:
|
|
114
|
-
responseClass:
|
|
113
|
+
requestClass: armonikApiGrpcV1Results008.CreateResultsRequest,
|
|
114
|
+
responseClass: armonikApiGrpcV1Results008.CreateResultsResponse
|
|
115
115
|
});
|
|
116
116
|
},
|
|
117
117
|
/**
|
|
@@ -119,7 +119,7 @@ export class ResultsClient {
|
|
|
119
119
|
*
|
|
120
120
|
* @param requestMessage Request message
|
|
121
121
|
* @param requestMetadata Request metadata
|
|
122
|
-
* @returns Observable<GrpcEvent<
|
|
122
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.UploadResultDataResponse>>
|
|
123
123
|
*/
|
|
124
124
|
uploadResultData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
125
125
|
return this.handler.handle({
|
|
@@ -128,8 +128,8 @@ export class ResultsClient {
|
|
|
128
128
|
path: '/armonik.api.grpc.v1.results.Results/UploadResultData',
|
|
129
129
|
requestData,
|
|
130
130
|
requestMetadata,
|
|
131
|
-
requestClass:
|
|
132
|
-
responseClass:
|
|
131
|
+
requestClass: armonikApiGrpcV1Results008.UploadResultDataRequest,
|
|
132
|
+
responseClass: armonikApiGrpcV1Results008.UploadResultDataResponse
|
|
133
133
|
});
|
|
134
134
|
},
|
|
135
135
|
/**
|
|
@@ -137,7 +137,7 @@ export class ResultsClient {
|
|
|
137
137
|
*
|
|
138
138
|
* @param requestMessage Request message
|
|
139
139
|
* @param requestMetadata Request metadata
|
|
140
|
-
* @returns Observable<GrpcEvent<
|
|
140
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.DownloadResultDataResponse>>
|
|
141
141
|
*/
|
|
142
142
|
downloadResultData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
143
143
|
return this.handler.handle({
|
|
@@ -146,8 +146,8 @@ export class ResultsClient {
|
|
|
146
146
|
path: '/armonik.api.grpc.v1.results.Results/DownloadResultData',
|
|
147
147
|
requestData,
|
|
148
148
|
requestMetadata,
|
|
149
|
-
requestClass:
|
|
150
|
-
responseClass:
|
|
149
|
+
requestClass: armonikApiGrpcV1Results008.DownloadResultDataRequest,
|
|
150
|
+
responseClass: armonikApiGrpcV1Results008.DownloadResultDataResponse
|
|
151
151
|
});
|
|
152
152
|
},
|
|
153
153
|
/**
|
|
@@ -155,7 +155,7 @@ export class ResultsClient {
|
|
|
155
155
|
*
|
|
156
156
|
* @param requestMessage Request message
|
|
157
157
|
* @param requestMetadata Request metadata
|
|
158
|
-
* @returns Observable<GrpcEvent<
|
|
158
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.DeleteResultsDataResponse>>
|
|
159
159
|
*/
|
|
160
160
|
deleteResultsData: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
161
161
|
return this.handler.handle({
|
|
@@ -164,8 +164,8 @@ export class ResultsClient {
|
|
|
164
164
|
path: '/armonik.api.grpc.v1.results.Results/DeleteResultsData',
|
|
165
165
|
requestData,
|
|
166
166
|
requestMetadata,
|
|
167
|
-
requestClass:
|
|
168
|
-
responseClass:
|
|
167
|
+
requestClass: armonikApiGrpcV1Results008.DeleteResultsDataRequest,
|
|
168
|
+
responseClass: armonikApiGrpcV1Results008.DeleteResultsDataResponse
|
|
169
169
|
});
|
|
170
170
|
},
|
|
171
171
|
/**
|
|
@@ -173,7 +173,7 @@ export class ResultsClient {
|
|
|
173
173
|
*
|
|
174
174
|
* @param requestMessage Request message
|
|
175
175
|
* @param requestMetadata Request metadata
|
|
176
|
-
* @returns Observable<GrpcEvent<
|
|
176
|
+
* @returns Observable<GrpcEvent<armonikApiGrpcV1Results008.ResultsServiceConfigurationResponse>>
|
|
177
177
|
*/
|
|
178
178
|
getServiceConfiguration: (requestData, requestMetadata = new GrpcMetadata()) => {
|
|
179
179
|
return this.handler.handle({
|
|
@@ -182,8 +182,8 @@ export class ResultsClient {
|
|
|
182
182
|
path: '/armonik.api.grpc.v1.results.Results/GetServiceConfiguration',
|
|
183
183
|
requestData,
|
|
184
184
|
requestMetadata,
|
|
185
|
-
requestClass:
|
|
186
|
-
responseClass:
|
|
185
|
+
requestClass: armonikApiGrpcV1007.Empty,
|
|
186
|
+
responseClass: armonikApiGrpcV1Results008.ResultsServiceConfigurationResponse
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
};
|
|
@@ -194,7 +194,7 @@ export class ResultsClient {
|
|
|
194
194
|
*
|
|
195
195
|
* @param requestMessage Request message
|
|
196
196
|
* @param requestMetadata Request metadata
|
|
197
|
-
* @returns Observable<
|
|
197
|
+
* @returns Observable<armonikApiGrpcV1Results008.ListResultsResponse>
|
|
198
198
|
*/
|
|
199
199
|
listResults(requestData, requestMetadata = new GrpcMetadata()) {
|
|
200
200
|
return this.$raw
|
|
@@ -206,7 +206,7 @@ export class ResultsClient {
|
|
|
206
206
|
*
|
|
207
207
|
* @param requestMessage Request message
|
|
208
208
|
* @param requestMetadata Request metadata
|
|
209
|
-
* @returns Observable<
|
|
209
|
+
* @returns Observable<armonikApiGrpcV1Results008.GetResultResponse>
|
|
210
210
|
*/
|
|
211
211
|
getResult(requestData, requestMetadata = new GrpcMetadata()) {
|
|
212
212
|
return this.$raw
|
|
@@ -218,7 +218,7 @@ export class ResultsClient {
|
|
|
218
218
|
*
|
|
219
219
|
* @param requestMessage Request message
|
|
220
220
|
* @param requestMetadata Request metadata
|
|
221
|
-
* @returns Observable<
|
|
221
|
+
* @returns Observable<armonikApiGrpcV1Results008.GetOwnerTaskIdResponse>
|
|
222
222
|
*/
|
|
223
223
|
getOwnerTaskId(requestData, requestMetadata = new GrpcMetadata()) {
|
|
224
224
|
return this.$raw
|
|
@@ -230,7 +230,7 @@ export class ResultsClient {
|
|
|
230
230
|
*
|
|
231
231
|
* @param requestMessage Request message
|
|
232
232
|
* @param requestMetadata Request metadata
|
|
233
|
-
* @returns Observable<
|
|
233
|
+
* @returns Observable<armonikApiGrpcV1Results008.CreateResultsMetaDataResponse>
|
|
234
234
|
*/
|
|
235
235
|
createResultsMetaData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
236
236
|
return this.$raw
|
|
@@ -242,7 +242,7 @@ export class ResultsClient {
|
|
|
242
242
|
*
|
|
243
243
|
* @param requestMessage Request message
|
|
244
244
|
* @param requestMetadata Request metadata
|
|
245
|
-
* @returns Observable<
|
|
245
|
+
* @returns Observable<armonikApiGrpcV1Results008.CreateResultsResponse>
|
|
246
246
|
*/
|
|
247
247
|
createResults(requestData, requestMetadata = new GrpcMetadata()) {
|
|
248
248
|
return this.$raw
|
|
@@ -254,7 +254,7 @@ export class ResultsClient {
|
|
|
254
254
|
*
|
|
255
255
|
* @param requestMessage Request message
|
|
256
256
|
* @param requestMetadata Request metadata
|
|
257
|
-
* @returns Observable<
|
|
257
|
+
* @returns Observable<armonikApiGrpcV1Results008.UploadResultDataResponse>
|
|
258
258
|
*/
|
|
259
259
|
uploadResultData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
260
260
|
return this.$raw
|
|
@@ -266,7 +266,7 @@ export class ResultsClient {
|
|
|
266
266
|
*
|
|
267
267
|
* @param requestMessage Request message
|
|
268
268
|
* @param requestMetadata Request metadata
|
|
269
|
-
* @returns Observable<
|
|
269
|
+
* @returns Observable<armonikApiGrpcV1Results008.DownloadResultDataResponse>
|
|
270
270
|
*/
|
|
271
271
|
downloadResultData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
272
272
|
return this.$raw
|
|
@@ -278,7 +278,7 @@ export class ResultsClient {
|
|
|
278
278
|
*
|
|
279
279
|
* @param requestMessage Request message
|
|
280
280
|
* @param requestMetadata Request metadata
|
|
281
|
-
* @returns Observable<
|
|
281
|
+
* @returns Observable<armonikApiGrpcV1Results008.DeleteResultsDataResponse>
|
|
282
282
|
*/
|
|
283
283
|
deleteResultsData(requestData, requestMetadata = new GrpcMetadata()) {
|
|
284
284
|
return this.$raw
|
|
@@ -290,7 +290,7 @@ export class ResultsClient {
|
|
|
290
290
|
*
|
|
291
291
|
* @param requestMessage Request message
|
|
292
292
|
* @param requestMetadata Request metadata
|
|
293
|
-
* @returns Observable<
|
|
293
|
+
* @returns Observable<armonikApiGrpcV1Results008.ResultsServiceConfigurationResponse>
|
|
294
294
|
*/
|
|
295
295
|
getServiceConfiguration(requestData, requestMetadata = new GrpcMetadata()) {
|
|
296
296
|
return this.$raw
|
|
@@ -312,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
312
312
|
type: Inject,
|
|
313
313
|
args: [GRPC_CLIENT_FACTORY]
|
|
314
314
|
}] }, { type: i1.GrpcHandler }]; } });
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1zZXJ2aWNlLnBic2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvcmVzdWx0cy1zZXJ2aWNlLnBic2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixjQUFjO0FBQ2QsRUFBRTtBQUNGLDJCQUEyQjtBQUMzQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFDTCxZQUFZLEVBSVosWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFReEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEtBQUssMEJBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUN4RTs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBMk54QixZQUNvRCxRQUFhLEVBQ2xDLGFBQXFDLEVBQzFELE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUEzTjlCOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUc7WUFDTDs7Ozs7O2VBTUc7WUFDSCxXQUFXLEVBQUUsQ0FDWCxXQUEwRCxFQUMxRCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFHcEMsRUFBRTtnQkFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxFQUFFLGtEQUFrRDtvQkFDeEQsV0FBVztvQkFDWCxlQUFlO29CQUNmLFlBQVksRUFBRSwwQkFBMEIsQ0FBQyxrQkFBa0I7b0JBQzNELGFBQWEsRUFBRSwwQkFBMEIsQ0FBQyxtQkFBbUI7aUJBQzlELENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRDs7Ozs7O2VBTUc7WUFDSCxTQUFTLEVBQUUsQ0FDVCxXQUF3RCxFQUN4RCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFDaUMsRUFBRTtnQkFDdkUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxnREFBZ0Q7b0JBQ3RELFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsMEJBQTBCLENBQUMsZ0JBQWdCO29CQUN6RCxhQUFhLEVBQUUsMEJBQTBCLENBQUMsaUJBQWlCO2lCQUM1RCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0Q7Ozs7OztlQU1HO1lBQ0gsY0FBYyxFQUFFLENBQ2QsV0FBNkQsRUFDN0QsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxxREFBcUQ7b0JBQzNELFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsMEJBQTBCLENBQUMscUJBQXFCO29CQUM5RCxhQUFhLEVBQUUsMEJBQTBCLENBQUMsc0JBQXNCO2lCQUNqRSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0Q7Ozs7OztlQU1HO1lBQ0gscUJBQXFCLEVBQUUsQ0FDckIsV0FBb0UsRUFDcEUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSw0REFBNEQ7b0JBQ2xFLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsMEJBQTBCLENBQUMsNEJBQTRCO29CQUNyRSxhQUFhLEVBQUUsMEJBQTBCLENBQUMsNkJBQTZCO2lCQUN4RSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0Q7Ozs7OztlQU1HO1lBQ0gsYUFBYSxFQUFFLENBQ2IsV0FBNEQsRUFDNUQsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxvREFBb0Q7b0JBQzFELFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsMEJBQTBCLENBQUMsb0JBQW9CO29CQUM3RCxhQUFhLEVBQUUsMEJBQTBCLENBQUMscUJBQXFCO2lCQUNoRSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0Q7Ozs7OztlQU1HO1lBQ0gsZ0JBQWdCLEVBQUUsQ0FDaEIsV0FFQyxFQUNELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxFQUdwQyxFQUFFO2dCQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtvQkFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixJQUFJLEVBQUUsdURBQXVEO29CQUM3RCxXQUFXO29CQUNYLGVBQWU7b0JBQ2YsWUFBWSxFQUFFLDBCQUEwQixDQUFDLHVCQUF1QjtvQkFDaEUsYUFBYSxFQUFFLDBCQUEwQixDQUFDLHdCQUF3QjtpQkFDbkUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILGtCQUFrQixFQUFFLENBQ2xCLFdBQWlFLEVBQ2pFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxFQUdwQyxFQUFFO2dCQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtvQkFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixJQUFJLEVBQUUseURBQXlEO29CQUMvRCxXQUFXO29CQUNYLGVBQWU7b0JBQ2YsWUFBWSxFQUFFLDBCQUEwQixDQUFDLHlCQUF5QjtvQkFDbEUsYUFBYSxFQUFFLDBCQUEwQixDQUFDLDBCQUEwQjtpQkFDckUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILGlCQUFpQixFQUFFLENBQ2pCLFdBQWdFLEVBQ2hFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxFQUdwQyxFQUFFO2dCQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSztvQkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixJQUFJLEVBQUUsd0RBQXdEO29CQUM5RCxXQUFXO29CQUNYLGVBQWU7b0JBQ2YsWUFBWSxFQUFFLDBCQUEwQixDQUFDLHdCQUF3QjtvQkFDakUsYUFBYSxFQUFFLDBCQUEwQixDQUFDLHlCQUF5QjtpQkFDcEUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILHVCQUF1QixFQUFFLENBQ3ZCLFdBQXNDLEVBQ3RDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxFQUdwQyxFQUFFO2dCQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSztvQkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixJQUFJLEVBQUUsOERBQThEO29CQUNwRSxXQUFXO29CQUNYLGVBQWU7b0JBQ2YsWUFBWSxFQUFFLG1CQUFtQixDQUFDLEtBQUs7b0JBQ3ZDLGFBQWEsRUFDWCwwQkFBMEIsQ0FBQyxtQ0FBbUM7aUJBQ2pFLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRixDQUFDO1FBT0EsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsWUFBWSxDQUN0QyxxQ0FBcUMsRUFDckMsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUNULFdBQTBELEVBQzFELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsV0FBVyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDekMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUNQLFdBQXdELEVBQ3hELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsU0FBUyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUNaLFdBQTZELEVBQzdELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsY0FBYyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDNUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gscUJBQXFCLENBQ25CLFdBQW9FLEVBQ3BFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IscUJBQXFCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUNuRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQ1gsV0FBNEQsRUFDNUQsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFO1FBRXBDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixhQUFhLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUMzQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FDZCxXQUEyRSxFQUMzRSxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFFcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDOUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsa0JBQWtCLENBQ2hCLFdBQWlFLEVBQ2pFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2Isa0JBQWtCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUNoRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsQ0FDZixXQUFnRSxFQUNoRSxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUU7UUFFcEMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDL0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUJBQXVCLENBQ3JCLFdBQXNDLEVBQ3RDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUlwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsdUJBQXVCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUNyRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBdFhVLGFBQWEsa0JBNE5GLDRCQUE0Qiw2QkFDeEMsbUJBQW1CO2tIQTdObEIsYUFBYSxjQURBLEtBQUs7OzJGQUNsQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTs7MEJBNk41QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBQy9DLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR3JwY0NhbGxUeXBlLFxuICBHcnBjQ2xpZW50LFxuICBHcnBjQ2xpZW50RmFjdG9yeSxcbiAgR3JwY0V2ZW50LFxuICBHcnBjTWV0YWRhdGFcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQge1xuICBHUlBDX0NMSUVOVF9GQUNUT1JZLFxuICBHcnBjSGFuZGxlcixcbiAgdGFrZU1lc3NhZ2VzLFxuICB0aHJvd1N0YXR1c0Vycm9yc1xufSBmcm9tICdAbmd4LWdycGMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB0aGlzUHJvdG8gZnJvbSAnLi9yZXN1bHRzLXNlcnZpY2UucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDAgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVRhc2tfc3RhdHVzMDAxIGZyb20gJy4vdGFzay1zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDIgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdF9zdGF0dXMwMDMgZnJvbSAnLi9yZXN1bHQtc3RhdHVzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFTb3J0X2RpcmVjdGlvbjAwNCBmcm9tICcuL3NvcnQtZGlyZWN0aW9uLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjEwMDUgZnJvbSAnLi9vYmplY3RzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2IGZyb20gJy4vcmVzdWx0cy1jb21tb24ucGInO1xuaW1wb3J0IHsgR1JQQ19SRVNVTFRTX0NMSUVOVF9TRVRUSU5HUyB9IGZyb20gJy4vcmVzdWx0cy1zZXJ2aWNlLnBiY29uZic7XG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBhcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0c1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdhbnknIH0pXG5leHBvcnQgY2xhc3MgUmVzdWx0c0NsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBHcnBjQ2xpZW50PGFueT47XG5cbiAgLyoqXG4gICAqIFJhdyBSUEMgaW1wbGVtZW50YXRpb24gZm9yIGVhY2ggc2VydmljZSBjbGllbnQgbWV0aG9kLlxuICAgKiBUaGUgcmF3IG1ldGhvZHMgcHJvdmlkZSBtb3JlIGNvbnRyb2wgb24gdGhlIGluY29taW5nIGRhdGEgYW5kIGV2ZW50cy4gRS5nLiB0aGV5IGNhbiBiZSB1c2VmdWwgdG8gcmVhZCBzdGF0dXMgYE9LYCBtZXRhZGF0YS5cbiAgICogQXR0ZW50aW9uOiB0aGVzZSBtZXRob2RzIGRvIG5vdCB0aHJvdyBlcnJvcnMgd2hlbiBub24temVybyBzdGF0dXMgY29kZXMgYXJlIHJlY2VpdmVkLlxuICAgKi9cbiAgJHJhdyA9IHtcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvTGlzdFJlc3VsdHNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5MaXN0UmVzdWx0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0UmVzdWx0czogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuTGlzdFJlc3VsdHNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0xpc3RSZXN1bHRzJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5MaXN0UmVzdWx0c1JlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFJlc3VsdFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBnZXRSZXN1bHQ6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRSZXN1bHRSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0UmVzdWx0UmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRSZXN1bHQnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRPd25lclRhc2tJZFxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldE93bmVyVGFza0lkUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGdldE93bmVyVGFza0lkOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRPd25lclRhc2tJZFJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0T3duZXJUYXNrSWQnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldE93bmVyVGFza0lkUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c01ldGFEYXRhXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGNyZWF0ZVJlc3VsdHNNZXRhRGF0YTogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c01ldGFEYXRhJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT4+XG4gICAgICovXG4gICAgY3JlYXRlUmVzdWx0czogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIENsaWVudCBzdHJlYW1pbmc6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9VcGxvYWRSZXN1bHREYXRhXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICB1cGxvYWRSZXN1bHREYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTxcbiAgICAgICAgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlcXVlc3RcbiAgICAgID4sXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LlVwbG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLmNsaWVudFN0cmVhbSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9VcGxvYWRSZXN1bHREYXRhJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFNlcnZlciBzdHJlYW1pbmc6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT4+XG4gICAgICovXG4gICAgZG93bmxvYWRSZXN1bHREYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRG93bmxvYWRSZXN1bHREYXRhUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRG93bmxvYWRSZXN1bHREYXRhUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS5zZXJ2ZXJTdHJlYW0sXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRG93bmxvYWRSZXN1bHREYXRhJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBkZWxldGVSZXN1bHRzRGF0YTogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0RlbGV0ZVJlc3VsdHNEYXRhJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRlbGV0ZVJlc3VsdHNEYXRhUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGdldFNlcnZpY2VDb25maWd1cmF0aW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMTAwNS5FbXB0eSxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRTZXJ2aWNlQ29uZmlndXJhdGlvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMTAwNS5FbXB0eSxcbiAgICAgICAgcmVzcG9uc2VDbGFzczpcbiAgICAgICAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoR1JQQ19SRVNVTFRTX0NMSUVOVF9TRVRUSU5HUykgc2V0dGluZ3M6IGFueSxcbiAgICBASW5qZWN0KEdSUENfQ0xJRU5UX0ZBQ1RPUlkpIGNsaWVudEZhY3Rvcnk6IEdycGNDbGllbnRGYWN0b3J5PGFueT4sXG4gICAgcHJpdmF0ZSBoYW5kbGVyOiBHcnBjSGFuZGxlclxuICApIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudEZhY3RvcnkuY3JlYXRlQ2xpZW50KFxuICAgICAgJ2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzJyxcbiAgICAgIHNldHRpbmdzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvTGlzdFJlc3VsdHNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5MaXN0UmVzdWx0c1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFJlc3VsdHMoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2Lkxpc3RSZXN1bHRzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5MaXN0UmVzdWx0c1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmxpc3RSZXN1bHRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFJlc3VsdFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlc3BvbnNlPlxuICAgKi9cbiAgZ2V0UmVzdWx0KFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5HZXRSZXN1bHRSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldFJlc3VsdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmdldFJlc3VsdChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRPd25lclRhc2tJZFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldE93bmVyVGFza0lkUmVzcG9uc2U+XG4gICAqL1xuICBnZXRPd25lclRhc2tJZChcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuR2V0T3duZXJUYXNrSWRSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkdldE93bmVyVGFza0lkUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0T3duZXJUYXNrSWQocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c01ldGFEYXRhXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+XG4gICAqL1xuICBjcmVhdGVSZXN1bHRzTWV0YURhdGEoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuY3JlYXRlUmVzdWx0c01ldGFEYXRhKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0NyZWF0ZVJlc3VsdHNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVzcG9uc2U+XG4gICAqL1xuICBjcmVhdGVSZXN1bHRzKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5DcmVhdGVSZXN1bHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuY3JlYXRlUmVzdWx0cyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWVudCBzdHJlYW1pbmcgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9VcGxvYWRSZXN1bHREYXRhXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPlxuICAgKi9cbiAgdXBsb2FkUmVzdWx0RGF0YShcbiAgICByZXF1ZXN0RGF0YTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5VcGxvYWRSZXN1bHREYXRhUmVxdWVzdD4sXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnVwbG9hZFJlc3VsdERhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJ2ZXIgc3RyZWFtaW5nIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRG93bmxvYWRSZXN1bHREYXRhXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRG93bmxvYWRSZXN1bHREYXRhUmVzcG9uc2U+XG4gICAqL1xuICBkb3dubG9hZFJlc3VsdERhdGEoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LkRvd25sb2FkUmVzdWx0RGF0YVJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRG93bmxvYWRSZXN1bHREYXRhUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZG93bmxvYWRSZXN1bHREYXRhKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0RlbGV0ZVJlc3VsdHNEYXRhXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZT5cbiAgICovXG4gIGRlbGV0ZVJlc3VsdHNEYXRhKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwNi5EZWxldGVSZXN1bHRzRGF0YVJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVSZXN1bHRzRGF0YShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRTZXJ2aWNlQ29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA2LlJlc3VsdHNTZXJ2aWNlQ29uZmlndXJhdGlvblJlc3BvbnNlPlxuICAgKi9cbiAgZ2V0U2VydmljZUNvbmZpZ3VyYXRpb24oXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjEwMDUuRW1wdHksXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8XG4gICAgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDYuUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2VcbiAgPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmdldFNlcnZpY2VDb25maWd1cmF0aW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy1zZXJ2aWNlLnBic2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvcmVzdWx0cy1zZXJ2aWNlLnBic2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixjQUFjO0FBQ2QsRUFBRTtBQUNGLDJCQUEyQjtBQUMzQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFDTCxZQUFZLEVBSVosWUFBWSxFQUNiLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG1CQUFtQixFQUVuQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFVeEIsT0FBTyxLQUFLLG1CQUFtQixNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEtBQUssMEJBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQUN4RTs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBMk54QixZQUNvRCxRQUFhLEVBQ2xDLGFBQXFDLEVBQzFELE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUEzTjlCOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUc7WUFDTDs7Ozs7O2VBTUc7WUFDSCxXQUFXLEVBQUUsQ0FDWCxXQUEwRCxFQUMxRCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFHcEMsRUFBRTtnQkFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFB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Q3JCLFdBQXNDLEVBQ3RDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUlwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsdUJBQXVCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUNyRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBdFhVLGFBQWEsa0JBNE5GLDRCQUE0Qiw2QkFDeEMsbUJBQW1CO2tIQTdObEIsYUFBYSxjQURBLEtBQUs7OzJGQUNsQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTs7MEJBNk41QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0Qjs7MEJBQy9DLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR3JwY0NhbGxUeXBlLFxuICBHcnBjQ2xpZW50LFxuICBHcnBjQ2xpZW50RmFjdG9yeSxcbiAgR3JwY0V2ZW50LFxuICBHcnBjTWV0YWRhdGFcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQge1xuICBHUlBDX0NMSUVOVF9GQUNUT1JZLFxuICBHcnBjSGFuZGxlcixcbiAgdGFrZU1lc3NhZ2VzLFxuICB0aHJvd1N0YXR1c0Vycm9yc1xufSBmcm9tICdAbmd4LWdycGMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB0aGlzUHJvdG8gZnJvbSAnLi9yZXN1bHRzLXNlcnZpY2UucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDAgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVRhc2tfc3RhdHVzMDAxIGZyb20gJy4vdGFzay1zdGF0dXMucGInO1xuaW1wb3J0ICogYXMgZ29vZ2xlUHJvdG9idWYwMDIgZnJvbSAnQG5neC1ncnBjL3dlbGwta25vd24tdHlwZXMnO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdF9zdGF0dXMwMDMgZnJvbSAnLi9yZXN1bHQtc3RhdHVzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA0IGZyb20gJy4vcmVzdWx0cy1maWVsZHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDUgZnJvbSAnLi9yZXN1bHRzLWZpbHRlcnMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVNvcnRfZGlyZWN0aW9uMDA2IGZyb20gJy4vc29ydC1kaXJlY3Rpb24ucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMTAwNyBmcm9tICcuL29iamVjdHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDggZnJvbSAnLi9yZXN1bHRzLWNvbW1vbi5wYic7XG5pbXBvcnQgeyBHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9yZXN1bHRzLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4Lkxpc3RSZXN1bHRzUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5MaXN0UmVzdWx0c1Jlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvTGlzdFJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4Lkxpc3RSZXN1bHRzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguTGlzdFJlc3VsdHNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0UmVzdWx0UmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGdldFJlc3VsdDogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5HZXRSZXN1bHRSZXNwb25zZT4+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFJlc3VsdCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0UmVzdWx0UmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0UmVzdWx0UmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0T3duZXJUYXNrSWRSZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0T3duZXJUYXNrSWQ6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkdldE93bmVyVGFza0lkUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9HZXRPd25lclRhc2tJZCcsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0T3duZXJUYXNrSWRSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5HZXRPd25lclRhc2tJZFJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4+XG4gICAgICovXG4gICAgY3JlYXRlUmVzdWx0c01ldGFEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNNZXRhRGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguQ3JlYXRlUmVzdWx0c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXN1bHRzOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguQ3JlYXRlUmVzdWx0c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0NyZWF0ZVJlc3VsdHMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5DcmVhdGVSZXN1bHRzUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ2xpZW50IHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIHVwbG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPFxuICAgICAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5VcGxvYWRSZXN1bHREYXRhUmVxdWVzdFxuICAgICAgPixcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguVXBsb2FkUmVzdWx0RGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUuY2xpZW50U3RyZWFtLFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogU2VydmVyIHN0cmVhbWluZzogL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0Rvd25sb2FkUmVzdWx0RGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBkb3dubG9hZFJlc3VsdERhdGE6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5Eb3dubG9hZFJlc3VsdERhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnNlcnZlclN0cmVhbSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRvd25sb2FkUmVzdWx0RGF0YVJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRvd25sb2FkUmVzdWx0RGF0YVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9EZWxldGVSZXN1bHRzRGF0YVxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRlbGV0ZVJlc3VsdHNEYXRhUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRlbGV0ZVJlc3VsdHNEYXRhOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguRGVsZXRlUmVzdWx0c0RhdGFSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGEnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguRGVsZXRlUmVzdWx0c0RhdGFSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0U2VydmljZUNvbmZpZ3VyYXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT4+XG4gICAgICovXG4gICAgZ2V0U2VydmljZUNvbmZpZ3VyYXRpb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxMDA3LkVtcHR5LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxMDA3LkVtcHR5LFxuICAgICAgICByZXNwb25zZUNsYXNzOlxuICAgICAgICAgIGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LlJlc3VsdHNTZXJ2aWNlQ29uZmlndXJhdGlvblJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChHUlBDX1JFU1VMVFNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMnLFxuICAgICAgc2V0dGluZ3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9MaXN0UmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4Lkxpc3RSZXN1bHRzUmVzcG9uc2U+XG4gICAqL1xuICBsaXN0UmVzdWx0cyhcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguTGlzdFJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4Lkxpc3RSZXN1bHRzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFJlc3VsdHMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvR2V0UmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0UmVzdWx0UmVzcG9uc2U+XG4gICAqL1xuICBnZXRSZXN1bHQoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkdldFJlc3VsdFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0UmVzdWx0UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0UmVzdWx0KHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldE93bmVyVGFza0lkXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0T3duZXJUYXNrSWRSZXNwb25zZT5cbiAgICovXG4gIGdldE93bmVyVGFza0lkKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5HZXRPd25lclRhc2tJZFJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguR2V0T3duZXJUYXNrSWRSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRPd25lclRhc2tJZChyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9DcmVhdGVSZXN1bHRzTWV0YURhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHNNZXRhRGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguQ3JlYXRlUmVzdWx0c01ldGFEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5DcmVhdGVSZXN1bHRzTWV0YURhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzTWV0YURhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvQ3JlYXRlUmVzdWx0c1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT5cbiAgICovXG4gIGNyZWF0ZVJlc3VsdHMoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNSZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkNyZWF0ZVJlc3VsdHNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVSZXN1bHRzKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpZW50IHN0cmVhbWluZyBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL1VwbG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+XG4gICAqL1xuICB1cGxvYWRSZXN1bHREYXRhKFxuICAgIHJlcXVlc3REYXRhOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LlVwbG9hZFJlc3VsdERhdGFSZXF1ZXN0PixcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5VcGxvYWRSZXN1bHREYXRhUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAudXBsb2FkUmVzdWx0RGF0YShyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcnZlciBzdHJlYW1pbmcgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLnJlc3VsdHMuUmVzdWx0cy9Eb3dubG9hZFJlc3VsdERhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT5cbiAgICovXG4gIGRvd25sb2FkUmVzdWx0RGF0YShcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguRG93bmxvYWRSZXN1bHREYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5Eb3dubG9hZFJlc3VsdERhdGFSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kb3dubG9hZFJlc3VsdERhdGEocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5yZXN1bHRzLlJlc3VsdHMvRGVsZXRlUmVzdWx0c0RhdGFcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPlxuICAgKi9cbiAgZGVsZXRlUmVzdWx0c0RhdGEoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFSZXN1bHRzMDA4LkRlbGV0ZVJlc3VsdHNEYXRhUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5EZWxldGVSZXN1bHRzRGF0YVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLmRlbGV0ZVJlc3VsdHNEYXRhKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEucmVzdWx0cy5SZXN1bHRzL0dldFNlcnZpY2VDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVJlc3VsdHMwMDguUmVzdWx0c1NlcnZpY2VDb25maWd1cmF0aW9uUmVzcG9uc2U+XG4gICAqL1xuICBnZXRTZXJ2aWNlQ29uZmlndXJhdGlvbihcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMTAwNy5FbXB0eSxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxcbiAgICBhcm1vbmlrQXBpR3JwY1YxUmVzdWx0czAwOC5SZXN1bHRzU2VydmljZUNvbmZpZ3VyYXRpb25SZXNwb25zZVxuICA+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuZ2V0U2VydmljZUNvbmZpZ3VyYXRpb24ocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxufVxuIl19
|