@effect-aws/client-opensearch 1.1.0 → 1.2.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/CHANGELOG.md +6 -0
- package/lib/OpenSearchService.d.ts +41 -1
- package/lib/OpenSearchService.js +9 -1
- package/lib/esm/OpenSearchService.js +10 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @effect-aws/client-opensearch
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`b24f980`](https://github.com/floydspace/effect-aws/commit/b24f98045ee3383c54d1152054e5b77f01d5f5e3) Thanks [@floydspace](https://github.com/floydspace)! - update services
|
|
8
|
+
|
|
3
9
|
## 1.1.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import { type OpenSearchClient, type OpenSearchClientConfig, type AcceptInboundConnectionCommandInput, type AcceptInboundConnectionCommandOutput, type AddDataSourceCommandInput, type AddDataSourceCommandOutput, type AddTagsCommandInput, type AddTagsCommandOutput, type AssociatePackageCommandInput, type AssociatePackageCommandOutput, type AuthorizeVpcEndpointAccessCommandInput, type AuthorizeVpcEndpointAccessCommandOutput, type CancelDomainConfigChangeCommandInput, type CancelDomainConfigChangeCommandOutput, type CancelServiceSoftwareUpdateCommandInput, type CancelServiceSoftwareUpdateCommandOutput, type CreateApplicationCommandInput, type CreateApplicationCommandOutput, type CreateDomainCommandInput, type CreateDomainCommandOutput, type CreateOutboundConnectionCommandInput, type CreateOutboundConnectionCommandOutput, type CreatePackageCommandInput, type CreatePackageCommandOutput, type CreateVpcEndpointCommandInput, type CreateVpcEndpointCommandOutput, type DeleteApplicationCommandInput, type DeleteApplicationCommandOutput, type DeleteDataSourceCommandInput, type DeleteDataSourceCommandOutput, type DeleteDomainCommandInput, type DeleteDomainCommandOutput, type DeleteInboundConnectionCommandInput, type DeleteInboundConnectionCommandOutput, type DeleteOutboundConnectionCommandInput, type DeleteOutboundConnectionCommandOutput, type DeletePackageCommandInput, type DeletePackageCommandOutput, type DeleteVpcEndpointCommandInput, type DeleteVpcEndpointCommandOutput, type DescribeDomainCommandInput, type DescribeDomainCommandOutput, type DescribeDomainAutoTunesCommandInput, type DescribeDomainAutoTunesCommandOutput, type DescribeDomainChangeProgressCommandInput, type DescribeDomainChangeProgressCommandOutput, type DescribeDomainConfigCommandInput, type DescribeDomainConfigCommandOutput, type DescribeDomainHealthCommandInput, type DescribeDomainHealthCommandOutput, type DescribeDomainNodesCommandInput, type DescribeDomainNodesCommandOutput, type DescribeDomainsCommandInput, type DescribeDomainsCommandOutput, type DescribeDryRunProgressCommandInput, type DescribeDryRunProgressCommandOutput, type DescribeInboundConnectionsCommandInput, type DescribeInboundConnectionsCommandOutput, type DescribeInstanceTypeLimitsCommandInput, type DescribeInstanceTypeLimitsCommandOutput, type DescribeOutboundConnectionsCommandInput, type DescribeOutboundConnectionsCommandOutput, type DescribePackagesCommandInput, type DescribePackagesCommandOutput, type DescribeReservedInstanceOfferingsCommandInput, type DescribeReservedInstanceOfferingsCommandOutput, type DescribeReservedInstancesCommandInput, type DescribeReservedInstancesCommandOutput, type DescribeVpcEndpointsCommandInput, type DescribeVpcEndpointsCommandOutput, type DissociatePackageCommandInput, type DissociatePackageCommandOutput, type GetApplicationCommandInput, type GetApplicationCommandOutput, type GetCompatibleVersionsCommandInput, type GetCompatibleVersionsCommandOutput, type GetDataSourceCommandInput, type GetDataSourceCommandOutput, type GetDomainMaintenanceStatusCommandInput, type GetDomainMaintenanceStatusCommandOutput, type GetPackageVersionHistoryCommandInput, type GetPackageVersionHistoryCommandOutput, type GetUpgradeHistoryCommandInput, type GetUpgradeHistoryCommandOutput, type GetUpgradeStatusCommandInput, type GetUpgradeStatusCommandOutput, type ListApplicationsCommandInput, type ListApplicationsCommandOutput, type ListDataSourcesCommandInput, type ListDataSourcesCommandOutput, type ListDomainMaintenancesCommandInput, type ListDomainMaintenancesCommandOutput, type ListDomainNamesCommandInput, type ListDomainNamesCommandOutput, type ListDomainsForPackageCommandInput, type ListDomainsForPackageCommandOutput, type ListInstanceTypeDetailsCommandInput, type ListInstanceTypeDetailsCommandOutput, type ListPackagesForDomainCommandInput, type ListPackagesForDomainCommandOutput, type ListScheduledActionsCommandInput, type ListScheduledActionsCommandOutput, type ListTagsCommandInput, type ListTagsCommandOutput, type ListVersionsCommandInput, type ListVersionsCommandOutput, type ListVpcEndpointAccessCommandInput, type ListVpcEndpointAccessCommandOutput, type ListVpcEndpointsCommandInput, type ListVpcEndpointsCommandOutput, type ListVpcEndpointsForDomainCommandInput, type ListVpcEndpointsForDomainCommandOutput, type PurchaseReservedInstanceOfferingCommandInput, type PurchaseReservedInstanceOfferingCommandOutput, type RejectInboundConnectionCommandInput, type RejectInboundConnectionCommandOutput, type RemoveTagsCommandInput, type RemoveTagsCommandOutput, type RevokeVpcEndpointAccessCommandInput, type RevokeVpcEndpointAccessCommandOutput, type StartDomainMaintenanceCommandInput, type StartDomainMaintenanceCommandOutput, type StartServiceSoftwareUpdateCommandInput, type StartServiceSoftwareUpdateCommandOutput, type UpdateApplicationCommandInput, type UpdateApplicationCommandOutput, type UpdateDataSourceCommandInput, type UpdateDataSourceCommandOutput, type UpdateDomainConfigCommandInput, type UpdateDomainConfigCommandOutput, type UpdatePackageCommandInput, type UpdatePackageCommandOutput, type UpdateScheduledActionCommandInput, type UpdateScheduledActionCommandOutput, type UpdateVpcEndpointCommandInput, type UpdateVpcEndpointCommandOutput, type UpgradeDomainCommandInput, type UpgradeDomainCommandOutput } from "@aws-sdk/client-opensearch";
|
|
4
|
+
import { type OpenSearchClient, type OpenSearchClientConfig, type AcceptInboundConnectionCommandInput, type AcceptInboundConnectionCommandOutput, type AddDataSourceCommandInput, type AddDataSourceCommandOutput, type AddDirectQueryDataSourceCommandInput, type AddDirectQueryDataSourceCommandOutput, type AddTagsCommandInput, type AddTagsCommandOutput, type AssociatePackageCommandInput, type AssociatePackageCommandOutput, type AssociatePackagesCommandInput, type AssociatePackagesCommandOutput, type AuthorizeVpcEndpointAccessCommandInput, type AuthorizeVpcEndpointAccessCommandOutput, type CancelDomainConfigChangeCommandInput, type CancelDomainConfigChangeCommandOutput, type CancelServiceSoftwareUpdateCommandInput, type CancelServiceSoftwareUpdateCommandOutput, type CreateApplicationCommandInput, type CreateApplicationCommandOutput, type CreateDomainCommandInput, type CreateDomainCommandOutput, type CreateOutboundConnectionCommandInput, type CreateOutboundConnectionCommandOutput, type CreatePackageCommandInput, type CreatePackageCommandOutput, type CreateVpcEndpointCommandInput, type CreateVpcEndpointCommandOutput, type DeleteApplicationCommandInput, type DeleteApplicationCommandOutput, type DeleteDataSourceCommandInput, type DeleteDataSourceCommandOutput, type DeleteDirectQueryDataSourceCommandInput, type DeleteDirectQueryDataSourceCommandOutput, type DeleteDomainCommandInput, type DeleteDomainCommandOutput, type DeleteInboundConnectionCommandInput, type DeleteInboundConnectionCommandOutput, type DeleteOutboundConnectionCommandInput, type DeleteOutboundConnectionCommandOutput, type DeletePackageCommandInput, type DeletePackageCommandOutput, type DeleteVpcEndpointCommandInput, type DeleteVpcEndpointCommandOutput, type DescribeDomainCommandInput, type DescribeDomainCommandOutput, type DescribeDomainAutoTunesCommandInput, type DescribeDomainAutoTunesCommandOutput, type DescribeDomainChangeProgressCommandInput, type DescribeDomainChangeProgressCommandOutput, type DescribeDomainConfigCommandInput, type DescribeDomainConfigCommandOutput, type DescribeDomainHealthCommandInput, type DescribeDomainHealthCommandOutput, type DescribeDomainNodesCommandInput, type DescribeDomainNodesCommandOutput, type DescribeDomainsCommandInput, type DescribeDomainsCommandOutput, type DescribeDryRunProgressCommandInput, type DescribeDryRunProgressCommandOutput, type DescribeInboundConnectionsCommandInput, type DescribeInboundConnectionsCommandOutput, type DescribeInstanceTypeLimitsCommandInput, type DescribeInstanceTypeLimitsCommandOutput, type DescribeOutboundConnectionsCommandInput, type DescribeOutboundConnectionsCommandOutput, type DescribePackagesCommandInput, type DescribePackagesCommandOutput, type DescribeReservedInstanceOfferingsCommandInput, type DescribeReservedInstanceOfferingsCommandOutput, type DescribeReservedInstancesCommandInput, type DescribeReservedInstancesCommandOutput, type DescribeVpcEndpointsCommandInput, type DescribeVpcEndpointsCommandOutput, type DissociatePackageCommandInput, type DissociatePackageCommandOutput, type DissociatePackagesCommandInput, type DissociatePackagesCommandOutput, type GetApplicationCommandInput, type GetApplicationCommandOutput, type GetCompatibleVersionsCommandInput, type GetCompatibleVersionsCommandOutput, type GetDataSourceCommandInput, type GetDataSourceCommandOutput, type GetDirectQueryDataSourceCommandInput, type GetDirectQueryDataSourceCommandOutput, type GetDomainMaintenanceStatusCommandInput, type GetDomainMaintenanceStatusCommandOutput, type GetPackageVersionHistoryCommandInput, type GetPackageVersionHistoryCommandOutput, type GetUpgradeHistoryCommandInput, type GetUpgradeHistoryCommandOutput, type GetUpgradeStatusCommandInput, type GetUpgradeStatusCommandOutput, type ListApplicationsCommandInput, type ListApplicationsCommandOutput, type ListDataSourcesCommandInput, type ListDataSourcesCommandOutput, type ListDirectQueryDataSourcesCommandInput, type ListDirectQueryDataSourcesCommandOutput, type ListDomainMaintenancesCommandInput, type ListDomainMaintenancesCommandOutput, type ListDomainNamesCommandInput, type ListDomainNamesCommandOutput, type ListDomainsForPackageCommandInput, type ListDomainsForPackageCommandOutput, type ListInstanceTypeDetailsCommandInput, type ListInstanceTypeDetailsCommandOutput, type ListPackagesForDomainCommandInput, type ListPackagesForDomainCommandOutput, type ListScheduledActionsCommandInput, type ListScheduledActionsCommandOutput, type ListTagsCommandInput, type ListTagsCommandOutput, type ListVersionsCommandInput, type ListVersionsCommandOutput, type ListVpcEndpointAccessCommandInput, type ListVpcEndpointAccessCommandOutput, type ListVpcEndpointsCommandInput, type ListVpcEndpointsCommandOutput, type ListVpcEndpointsForDomainCommandInput, type ListVpcEndpointsForDomainCommandOutput, type PurchaseReservedInstanceOfferingCommandInput, type PurchaseReservedInstanceOfferingCommandOutput, type RejectInboundConnectionCommandInput, type RejectInboundConnectionCommandOutput, type RemoveTagsCommandInput, type RemoveTagsCommandOutput, type RevokeVpcEndpointAccessCommandInput, type RevokeVpcEndpointAccessCommandOutput, type StartDomainMaintenanceCommandInput, type StartDomainMaintenanceCommandOutput, type StartServiceSoftwareUpdateCommandInput, type StartServiceSoftwareUpdateCommandOutput, type UpdateApplicationCommandInput, type UpdateApplicationCommandOutput, type UpdateDataSourceCommandInput, type UpdateDataSourceCommandOutput, type UpdateDirectQueryDataSourceCommandInput, type UpdateDirectQueryDataSourceCommandOutput, type UpdateDomainConfigCommandInput, type UpdateDomainConfigCommandOutput, type UpdatePackageCommandInput, type UpdatePackageCommandOutput, type UpdatePackageScopeCommandInput, type UpdatePackageScopeCommandOutput, type UpdateScheduledActionCommandInput, type UpdateScheduledActionCommandOutput, type UpdateVpcEndpointCommandInput, type UpdateVpcEndpointCommandOutput, type UpgradeDomainCommandInput, type UpgradeDomainCommandOutput } from "@aws-sdk/client-opensearch";
|
|
5
5
|
import { Effect, Layer } from "effect";
|
|
6
6
|
import { AccessDeniedError, BaseError, ConflictError, DependencyFailureError, DisabledOperationError, InternalError, InvalidPaginationTokenError, InvalidTypeError, LimitExceededError, ResourceAlreadyExistsError, ResourceNotFoundError, SlotNotAvailableError, ValidationError, SdkError } from "./Errors";
|
|
7
7
|
import { OpenSearchClientInstance } from "./OpenSearchClientInstance";
|
|
@@ -26,6 +26,10 @@ interface OpenSearchService$ {
|
|
|
26
26
|
* @see {@link AddDataSourceCommand}
|
|
27
27
|
*/
|
|
28
28
|
addDataSource(args: AddDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<AddDataSourceCommandOutput, SdkError | BaseError | DependencyFailureError | DisabledOperationError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError>;
|
|
29
|
+
/**
|
|
30
|
+
* @see {@link AddDirectQueryDataSourceCommand}
|
|
31
|
+
*/
|
|
32
|
+
addDirectQueryDataSource(args: AddDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<AddDirectQueryDataSourceCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError>;
|
|
29
33
|
/**
|
|
30
34
|
* @see {@link AddTagsCommand}
|
|
31
35
|
*/
|
|
@@ -34,6 +38,10 @@ interface OpenSearchService$ {
|
|
|
34
38
|
* @see {@link AssociatePackageCommand}
|
|
35
39
|
*/
|
|
36
40
|
associatePackage(args: AssociatePackageCommandInput, options?: HttpHandlerOptions): Effect.Effect<AssociatePackageCommandOutput, SdkError | AccessDeniedError | BaseError | ConflictError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
41
|
+
/**
|
|
42
|
+
* @see {@link AssociatePackagesCommand}
|
|
43
|
+
*/
|
|
44
|
+
associatePackages(args: AssociatePackagesCommandInput, options?: HttpHandlerOptions): Effect.Effect<AssociatePackagesCommandOutput, SdkError | BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
37
45
|
/**
|
|
38
46
|
* @see {@link AuthorizeVpcEndpointAccessCommand}
|
|
39
47
|
*/
|
|
@@ -74,6 +82,10 @@ interface OpenSearchService$ {
|
|
|
74
82
|
* @see {@link DeleteDataSourceCommand}
|
|
75
83
|
*/
|
|
76
84
|
deleteDataSource(args: DeleteDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteDataSourceCommandOutput, SdkError | BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
85
|
+
/**
|
|
86
|
+
* @see {@link DeleteDirectQueryDataSourceCommand}
|
|
87
|
+
*/
|
|
88
|
+
deleteDirectQueryDataSource(args: DeleteDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteDirectQueryDataSourceCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
77
89
|
/**
|
|
78
90
|
* @see {@link DeleteDomainCommand}
|
|
79
91
|
*/
|
|
@@ -158,6 +170,10 @@ interface OpenSearchService$ {
|
|
|
158
170
|
* @see {@link DissociatePackageCommand}
|
|
159
171
|
*/
|
|
160
172
|
dissociatePackage(args: DissociatePackageCommandInput, options?: HttpHandlerOptions): Effect.Effect<DissociatePackageCommandOutput, SdkError | AccessDeniedError | BaseError | ConflictError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
173
|
+
/**
|
|
174
|
+
* @see {@link DissociatePackagesCommand}
|
|
175
|
+
*/
|
|
176
|
+
dissociatePackages(args: DissociatePackagesCommandInput, options?: HttpHandlerOptions): Effect.Effect<DissociatePackagesCommandOutput, SdkError | BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
161
177
|
/**
|
|
162
178
|
* @see {@link GetApplicationCommand}
|
|
163
179
|
*/
|
|
@@ -170,6 +186,10 @@ interface OpenSearchService$ {
|
|
|
170
186
|
* @see {@link GetDataSourceCommand}
|
|
171
187
|
*/
|
|
172
188
|
getDataSource(args: GetDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetDataSourceCommandOutput, SdkError | BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
189
|
+
/**
|
|
190
|
+
* @see {@link GetDirectQueryDataSourceCommand}
|
|
191
|
+
*/
|
|
192
|
+
getDirectQueryDataSource(args: GetDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetDirectQueryDataSourceCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
173
193
|
/**
|
|
174
194
|
* @see {@link GetDomainMaintenanceStatusCommand}
|
|
175
195
|
*/
|
|
@@ -194,6 +214,10 @@ interface OpenSearchService$ {
|
|
|
194
214
|
* @see {@link ListDataSourcesCommand}
|
|
195
215
|
*/
|
|
196
216
|
listDataSources(args: ListDataSourcesCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListDataSourcesCommandOutput, SdkError | BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
217
|
+
/**
|
|
218
|
+
* @see {@link ListDirectQueryDataSourcesCommand}
|
|
219
|
+
*/
|
|
220
|
+
listDirectQueryDataSources(args: ListDirectQueryDataSourcesCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListDirectQueryDataSourcesCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
197
221
|
/**
|
|
198
222
|
* @see {@link ListDomainMaintenancesCommand}
|
|
199
223
|
*/
|
|
@@ -270,6 +294,10 @@ interface OpenSearchService$ {
|
|
|
270
294
|
* @see {@link UpdateDataSourceCommand}
|
|
271
295
|
*/
|
|
272
296
|
updateDataSource(args: UpdateDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdateDataSourceCommandOutput, SdkError | BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
297
|
+
/**
|
|
298
|
+
* @see {@link UpdateDirectQueryDataSourceCommand}
|
|
299
|
+
*/
|
|
300
|
+
updateDirectQueryDataSource(args: UpdateDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdateDirectQueryDataSourceCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
273
301
|
/**
|
|
274
302
|
* @see {@link UpdateDomainConfigCommand}
|
|
275
303
|
*/
|
|
@@ -278,6 +306,10 @@ interface OpenSearchService$ {
|
|
|
278
306
|
* @see {@link UpdatePackageCommand}
|
|
279
307
|
*/
|
|
280
308
|
updatePackage(args: UpdatePackageCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdatePackageCommandOutput, SdkError | AccessDeniedError | BaseError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError>;
|
|
309
|
+
/**
|
|
310
|
+
* @see {@link UpdatePackageScopeCommand}
|
|
311
|
+
*/
|
|
312
|
+
updatePackageScope(args: UpdatePackageScopeCommandInput, options?: HttpHandlerOptions): Effect.Effect<UpdatePackageScopeCommandOutput, SdkError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError>;
|
|
281
313
|
/**
|
|
282
314
|
* @see {@link UpdateScheduledActionCommand}
|
|
283
315
|
*/
|
|
@@ -300,8 +332,10 @@ declare const OpenSearchService_base: import("effect/Context").TagClass<OpenSear
|
|
|
300
332
|
readonly _: Effect.Effect<OpenSearchService$["_"], never, OpenSearchService>;
|
|
301
333
|
acceptInboundConnection: (args: AcceptInboundConnectionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AcceptInboundConnectionCommandOutput, DisabledOperationError | LimitExceededError | ResourceNotFoundError | SdkError, OpenSearchService>;
|
|
302
334
|
addDataSource: (args: AddDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AddDataSourceCommandOutput, BaseError | DependencyFailureError | DisabledOperationError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
335
|
+
addDirectQueryDataSource: (args: AddDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AddDirectQueryDataSourceCommandOutput, BaseError | DisabledOperationError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
303
336
|
addTags: (args: AddTagsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AddTagsCommandOutput, BaseError | InternalError | LimitExceededError | ValidationError | SdkError, OpenSearchService>;
|
|
304
337
|
associatePackage: (args: AssociatePackageCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AssociatePackageCommandOutput, AccessDeniedError | BaseError | ConflictError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
338
|
+
associatePackages: (args: AssociatePackagesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AssociatePackagesCommandOutput, BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
305
339
|
authorizeVpcEndpointAccess: (args: AuthorizeVpcEndpointAccessCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AuthorizeVpcEndpointAccessCommandOutput, BaseError | DisabledOperationError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
306
340
|
cancelDomainConfigChange: (args: CancelDomainConfigChangeCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CancelDomainConfigChangeCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
307
341
|
cancelServiceSoftwareUpdate: (args: CancelServiceSoftwareUpdateCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CancelServiceSoftwareUpdateCommandOutput, BaseError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
@@ -312,6 +346,7 @@ declare const OpenSearchService_base: import("effect/Context").TagClass<OpenSear
|
|
|
312
346
|
createVpcEndpoint: (args: CreateVpcEndpointCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateVpcEndpointCommandOutput, BaseError | ConflictError | DisabledOperationError | InternalError | LimitExceededError | ValidationError | SdkError, OpenSearchService>;
|
|
313
347
|
deleteApplication: (args: DeleteApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteApplicationCommandOutput, AccessDeniedError | BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
314
348
|
deleteDataSource: (args: DeleteDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteDataSourceCommandOutput, BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
349
|
+
deleteDirectQueryDataSource: (args: DeleteDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteDirectQueryDataSourceCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
315
350
|
deleteDomain: (args: DeleteDomainCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteDomainCommandOutput, BaseError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
316
351
|
deleteInboundConnection: (args: DeleteInboundConnectionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteInboundConnectionCommandOutput, DisabledOperationError | ResourceNotFoundError | SdkError, OpenSearchService>;
|
|
317
352
|
deleteOutboundConnection: (args: DeleteOutboundConnectionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteOutboundConnectionCommandOutput, DisabledOperationError | ResourceNotFoundError | SdkError, OpenSearchService>;
|
|
@@ -333,15 +368,18 @@ declare const OpenSearchService_base: import("effect/Context").TagClass<OpenSear
|
|
|
333
368
|
describeReservedInstances: (args: DescribeReservedInstancesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DescribeReservedInstancesCommandOutput, DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
334
369
|
describeVpcEndpoints: (args: DescribeVpcEndpointsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DescribeVpcEndpointsCommandOutput, BaseError | DisabledOperationError | InternalError | ValidationError | SdkError, OpenSearchService>;
|
|
335
370
|
dissociatePackage: (args: DissociatePackageCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DissociatePackageCommandOutput, AccessDeniedError | BaseError | ConflictError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
371
|
+
dissociatePackages: (args: DissociatePackagesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DissociatePackagesCommandOutput, BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
336
372
|
getApplication: (args: GetApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetApplicationCommandOutput, AccessDeniedError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
337
373
|
getCompatibleVersions: (args: GetCompatibleVersionsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetCompatibleVersionsCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
338
374
|
getDataSource: (args: GetDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetDataSourceCommandOutput, BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
375
|
+
getDirectQueryDataSource: (args: GetDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetDirectQueryDataSourceCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
339
376
|
getDomainMaintenanceStatus: (args: GetDomainMaintenanceStatusCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetDomainMaintenanceStatusCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
340
377
|
getPackageVersionHistory: (args: GetPackageVersionHistoryCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetPackageVersionHistoryCommandOutput, AccessDeniedError | BaseError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
341
378
|
getUpgradeHistory: (args: GetUpgradeHistoryCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetUpgradeHistoryCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
342
379
|
getUpgradeStatus: (args: GetUpgradeStatusCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetUpgradeStatusCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
343
380
|
listApplications: (args: ListApplicationsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListApplicationsCommandOutput, AccessDeniedError | BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
344
381
|
listDataSources: (args: ListDataSourcesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListDataSourcesCommandOutput, BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
382
|
+
listDirectQueryDataSources: (args: ListDirectQueryDataSourcesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListDirectQueryDataSourcesCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
345
383
|
listDomainMaintenances: (args: ListDomainMaintenancesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListDomainMaintenancesCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
346
384
|
listDomainNames: (args: ListDomainNamesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListDomainNamesCommandOutput, BaseError | ValidationError | SdkError, OpenSearchService>;
|
|
347
385
|
listDomainsForPackage: (args: ListDomainsForPackageCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListDomainsForPackageCommandOutput, AccessDeniedError | BaseError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
@@ -361,8 +399,10 @@ declare const OpenSearchService_base: import("effect/Context").TagClass<OpenSear
|
|
|
361
399
|
startServiceSoftwareUpdate: (args: StartServiceSoftwareUpdateCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<StartServiceSoftwareUpdateCommandOutput, BaseError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
362
400
|
updateApplication: (args: UpdateApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateApplicationCommandOutput, AccessDeniedError | BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
363
401
|
updateDataSource: (args: UpdateDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateDataSourceCommandOutput, BaseError | DependencyFailureError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
402
|
+
updateDirectQueryDataSource: (args: UpdateDirectQueryDataSourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateDirectQueryDataSourceCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
364
403
|
updateDomainConfig: (args: UpdateDomainConfigCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateDomainConfigCommandOutput, BaseError | InternalError | InvalidTypeError | LimitExceededError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
365
404
|
updatePackage: (args: UpdatePackageCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdatePackageCommandOutput, AccessDeniedError | BaseError | InternalError | LimitExceededError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
405
|
+
updatePackageScope: (args: UpdatePackageScopeCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdatePackageScopeCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
366
406
|
updateScheduledAction: (args: UpdateScheduledActionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateScheduledActionCommandOutput, BaseError | ConflictError | InternalError | LimitExceededError | ResourceNotFoundError | SlotNotAvailableError | ValidationError | SdkError, OpenSearchService>;
|
|
367
407
|
updateVpcEndpoint: (args: UpdateVpcEndpointCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpdateVpcEndpointCommandOutput, BaseError | ConflictError | DisabledOperationError | InternalError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
|
368
408
|
upgradeDomain: (args: UpgradeDomainCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UpgradeDomainCommandOutput, BaseError | DisabledOperationError | InternalError | ResourceAlreadyExistsError | ResourceNotFoundError | ValidationError | SdkError, OpenSearchService>;
|
package/lib/OpenSearchService.js
CHANGED
|
@@ -13,8 +13,10 @@ const OpenSearchClientInstanceConfig_1 = require("./OpenSearchClientInstanceConf
|
|
|
13
13
|
const commands = {
|
|
14
14
|
AcceptInboundConnectionCommand: client_opensearch_1.AcceptInboundConnectionCommand,
|
|
15
15
|
AddDataSourceCommand: client_opensearch_1.AddDataSourceCommand,
|
|
16
|
+
AddDirectQueryDataSourceCommand: client_opensearch_1.AddDirectQueryDataSourceCommand,
|
|
16
17
|
AddTagsCommand: client_opensearch_1.AddTagsCommand,
|
|
17
18
|
AssociatePackageCommand: client_opensearch_1.AssociatePackageCommand,
|
|
19
|
+
AssociatePackagesCommand: client_opensearch_1.AssociatePackagesCommand,
|
|
18
20
|
AuthorizeVpcEndpointAccessCommand: client_opensearch_1.AuthorizeVpcEndpointAccessCommand,
|
|
19
21
|
CancelDomainConfigChangeCommand: client_opensearch_1.CancelDomainConfigChangeCommand,
|
|
20
22
|
CancelServiceSoftwareUpdateCommand: client_opensearch_1.CancelServiceSoftwareUpdateCommand,
|
|
@@ -25,6 +27,7 @@ const commands = {
|
|
|
25
27
|
CreateVpcEndpointCommand: client_opensearch_1.CreateVpcEndpointCommand,
|
|
26
28
|
DeleteApplicationCommand: client_opensearch_1.DeleteApplicationCommand,
|
|
27
29
|
DeleteDataSourceCommand: client_opensearch_1.DeleteDataSourceCommand,
|
|
30
|
+
DeleteDirectQueryDataSourceCommand: client_opensearch_1.DeleteDirectQueryDataSourceCommand,
|
|
28
31
|
DeleteDomainCommand: client_opensearch_1.DeleteDomainCommand,
|
|
29
32
|
DeleteInboundConnectionCommand: client_opensearch_1.DeleteInboundConnectionCommand,
|
|
30
33
|
DeleteOutboundConnectionCommand: client_opensearch_1.DeleteOutboundConnectionCommand,
|
|
@@ -46,15 +49,18 @@ const commands = {
|
|
|
46
49
|
DescribeReservedInstancesCommand: client_opensearch_1.DescribeReservedInstancesCommand,
|
|
47
50
|
DescribeVpcEndpointsCommand: client_opensearch_1.DescribeVpcEndpointsCommand,
|
|
48
51
|
DissociatePackageCommand: client_opensearch_1.DissociatePackageCommand,
|
|
52
|
+
DissociatePackagesCommand: client_opensearch_1.DissociatePackagesCommand,
|
|
49
53
|
GetApplicationCommand: client_opensearch_1.GetApplicationCommand,
|
|
50
54
|
GetCompatibleVersionsCommand: client_opensearch_1.GetCompatibleVersionsCommand,
|
|
51
55
|
GetDataSourceCommand: client_opensearch_1.GetDataSourceCommand,
|
|
56
|
+
GetDirectQueryDataSourceCommand: client_opensearch_1.GetDirectQueryDataSourceCommand,
|
|
52
57
|
GetDomainMaintenanceStatusCommand: client_opensearch_1.GetDomainMaintenanceStatusCommand,
|
|
53
58
|
GetPackageVersionHistoryCommand: client_opensearch_1.GetPackageVersionHistoryCommand,
|
|
54
59
|
GetUpgradeHistoryCommand: client_opensearch_1.GetUpgradeHistoryCommand,
|
|
55
60
|
GetUpgradeStatusCommand: client_opensearch_1.GetUpgradeStatusCommand,
|
|
56
61
|
ListApplicationsCommand: client_opensearch_1.ListApplicationsCommand,
|
|
57
62
|
ListDataSourcesCommand: client_opensearch_1.ListDataSourcesCommand,
|
|
63
|
+
ListDirectQueryDataSourcesCommand: client_opensearch_1.ListDirectQueryDataSourcesCommand,
|
|
58
64
|
ListDomainMaintenancesCommand: client_opensearch_1.ListDomainMaintenancesCommand,
|
|
59
65
|
ListDomainNamesCommand: client_opensearch_1.ListDomainNamesCommand,
|
|
60
66
|
ListDomainsForPackageCommand: client_opensearch_1.ListDomainsForPackageCommand,
|
|
@@ -74,8 +80,10 @@ const commands = {
|
|
|
74
80
|
StartServiceSoftwareUpdateCommand: client_opensearch_1.StartServiceSoftwareUpdateCommand,
|
|
75
81
|
UpdateApplicationCommand: client_opensearch_1.UpdateApplicationCommand,
|
|
76
82
|
UpdateDataSourceCommand: client_opensearch_1.UpdateDataSourceCommand,
|
|
83
|
+
UpdateDirectQueryDataSourceCommand: client_opensearch_1.UpdateDirectQueryDataSourceCommand,
|
|
77
84
|
UpdateDomainConfigCommand: client_opensearch_1.UpdateDomainConfigCommand,
|
|
78
85
|
UpdatePackageCommand: client_opensearch_1.UpdatePackageCommand,
|
|
86
|
+
UpdatePackageScopeCommand: client_opensearch_1.UpdatePackageScopeCommand,
|
|
79
87
|
UpdateScheduledActionCommand: client_opensearch_1.UpdateScheduledActionCommand,
|
|
80
88
|
UpdateVpcEndpointCommand: client_opensearch_1.UpdateVpcEndpointCommand,
|
|
81
89
|
UpgradeDomainCommand: client_opensearch_1.UpgradeDomainCommand,
|
|
@@ -153,4 +161,4 @@ exports.OpenSearchServiceLayer = exports.BaseOpenSearchServiceLayer.pipe(effect_
|
|
|
153
161
|
* @deprecated use OpenSearch.defaultLayer instead
|
|
154
162
|
*/
|
|
155
163
|
exports.DefaultOpenSearchServiceLayer = OpenSearchService.defaultLayer;
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT3BlblNlYXJjaFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztHQUVHO0FBQ0gsa0VBZ05vQztBQUNwQyxtQ0FBcUQ7QUFDckQscUNBaUJrQjtBQUNsQix5RUFHb0M7QUFDcEMscUZBSTBDO0FBYTFDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsOEJBQThCLEVBQTlCLGtEQUE4QjtJQUM5QixvQkFBb0IsRUFBcEIsd0NBQW9CO0lBQ3BCLGNBQWMsRUFBZCxrQ0FBYztJQUNkLHVCQUF1QixFQUF2QiwyQ0FBdUI7SUFDdkIsaUNBQWlDLEVBQWpDLHFEQUFpQztJQUNqQywrQkFBK0IsRUFBL0IsbURBQStCO0lBQy9CLGtDQUFrQyxFQUFsQyxzREFBa0M7SUFDbEMsd0JBQXdCLEVBQXhCLDRDQUF3QjtJQUN4QixtQkFBbUIsRUFBbkIsdUNBQW1CO0lBQ25CLCtCQUErQixFQUEvQixtREFBK0I7SUFDL0Isb0JBQW9CLEVBQXBCLHdDQUFvQjtJQUNwQix3QkFBd0IsRUFBeEIsNENBQXdCO0lBQ3hCLHdCQUF3QixFQUF4Qiw0Q0FBd0I7SUFDeEIsdUJBQXVCLEVBQXZCLDJDQUF1QjtJQUN2QixtQkFBbUIsRUFBbkIsdUNBQW1CO0lBQ25CLDhCQUE4QixFQUE5QixrREFBOEI7SUFDOUIsK0JBQStCLEVBQS9CLG1EQUErQjtJQUMvQixvQkFBb0IsRUFBcEIsd0NBQW9CO0lBQ3BCLHdCQUF3QixFQUF4Qiw0Q0FBd0I7SUFDeEIscUJBQXFCLEVBQXJCLHlDQUFxQjtJQUNyQiw4QkFBOEIsRUFBOUIsa0RBQThCO0lBQzlCLG1DQUFtQyxFQUFuQyx1REFBbUM7SUFDbkMsMkJBQTJCLEVBQTNCLCtDQUEyQjtJQUMzQiwyQkFBMkIsRUFBM0IsK0NBQTJCO0lBQzNCLDBCQUEwQixFQUExQiw4Q0FBMEI7SUFDMUIsc0JBQXNCLEVBQXRCLDBDQUFzQjtJQUN0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XG5pbXBvcnQge1xuICBPcGVuU2VhcmNoU2VydmljZUV4Y2VwdGlvbixcbiAgdHlwZSBPcGVuU2VhcmNoQ2xpZW50LFxuICB0eXBlIE9wZW5TZWFyY2hDbGllbnRDb25maWcsXG4gIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEFkZERhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIEFkZERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIEFkZFRhZ3NDb21tYW5kLFxuICB0eXBlIEFkZFRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkVGFnc0NvbW1hbmRPdXRwdXQsXG4gIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kLFxuICB0eXBlIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIEF1dGhvcml6ZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgdHlwZSBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZElucHV0LFxuICB0eXBlIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmRPdXRwdXQsXG4gIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIHR5cGUgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVBhY2thZ2VDb21tYW5kLFxuICB0eXBlIENyZWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVBhY2thZ2VDb21tYW5kLFxuICB0eXBlIERlbGV0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRG9tYWluc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5zQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUGFja2FnZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIEdldEFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgR2V0Q29tcGF0aWJsZVZlcnNpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gIEdldERhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIEdldERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmQsXG4gIHR5cGUgR2V0UGFja2FnZVZlcnNpb25IaXN0b3J5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZCxcbiAgdHlwZSBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kLFxuICB0eXBlIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3REYXRhU291cmNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERhdGFTb3VyY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REYXRhU291cmNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kLFxuICB0eXBlIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3REb21haW5OYW1lc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERvbWFpbk5hbWVzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REb21haW5OYW1lc0NvbW1hbmRPdXRwdXQsXG4gIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZCxcbiAgdHlwZSBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmQsXG4gIHR5cGUgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmRPdXRwdXQsXG4gIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWcGNFbmRwb2ludHNDb21tYW5kLFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kLFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmRPdXRwdXQsXG4gIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZCxcbiAgdHlwZSBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmRPdXRwdXQsXG4gIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZVRhZ3NDb21tYW5kLFxuICB0eXBlIFJlbW92ZVRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlVGFnc0NvbW1hbmRPdXRwdXQsXG4gIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgdHlwZSBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kLFxuICB0eXBlIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmRPdXRwdXQsXG4gIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZCxcbiAgdHlwZSBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVBhY2thZ2VDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgdHlwZSBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gIFVwZ3JhZGVEb21haW5Db21tYW5kLFxuICB0eXBlIFVwZ3JhZGVEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBncmFkZURvbWFpbkNvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtb3BlbnNlYXJjaFwiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQWNjZXNzRGVuaWVkRXJyb3IsXG4gIEJhc2VFcnJvcixcbiAgQ29uZmxpY3RFcnJvcixcbiAgRGVwZW5kZW5jeUZhaWx1cmVFcnJvcixcbiAgRGlzYWJsZWRPcGVyYXRpb25FcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yLFxuICBJbnZhbGlkVHlwZUVycm9yLFxuICBMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yLFxuICBSZXNvdXJjZU5vdEZvdW5kRXJyb3IsXG4gIFNsb3ROb3RBdmFpbGFibGVFcnJvcixcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7XG4gIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZSxcbiAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlTGF5ZXIsXG59IGZyb20gXCIuL09wZW5TZWFyY2hDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRDb25maWdMYXllcixcbiAgbWFrZURlZmF1bHRPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vT3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBBZGREYXRhU291cmNlQ29tbWFuZCxcbiAgQWRkVGFnc0NvbW1hbmQsXG4gIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kLFxuICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmQsXG4gIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlRG9tYWluQ29tbWFuZCxcbiAgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGFja2FnZUNvbW1hbmQsXG4gIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVEYXRhU291cmNlQ29tbWFuZCxcbiAgRGVsZXRlRG9tYWluQ29tbWFuZCxcbiAgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBEZWxldGVQYWNrYWdlQ29tbWFuZCxcbiAgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbkNvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5zQ29tbWFuZCxcbiAgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmQsXG4gIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kLFxuICBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kLFxuICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kLFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmQsXG4gIEdldERhdGFTb3VyY2VDb21tYW5kLFxuICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmQsXG4gIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmQsXG4gIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZCxcbiAgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmQsXG4gIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kLFxuICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kLFxuICBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZCxcbiAgTGlzdERvbWFpbk5hbWVzQ29tbWFuZCxcbiAgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZCxcbiAgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kLFxuICBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kLFxuICBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgTGlzdFZlcnNpb25zQ29tbWFuZCxcbiAgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kLFxuICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmQsXG4gIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgUmVtb3ZlVGFnc0NvbW1hbmQsXG4gIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmQsXG4gIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZCxcbiAgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZCxcbiAgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlUGFja2FnZUNvbW1hbmQsXG4gIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgVXBncmFkZURvbWFpbkNvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgT3BlblNlYXJjaFNlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgYWNjZXB0SW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkRGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBhZGREYXRhU291cmNlKFxuICAgIGFyZ3M6IEFkZERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkVGFnc0NvbW1hbmR9XG4gICAqL1xuICBhZGRUYWdzKFxuICAgIGFyZ3M6IEFkZFRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRUYWdzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJhc2VFcnJvciB8IEludGVybmFsRXJyb3IgfCBMaW1pdEV4Y2VlZGVkRXJyb3IgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBhc3NvY2lhdGVQYWNrYWdlKFxuICAgIGFyZ3M6IEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmR9XG4gICAqL1xuICBhdXRob3JpemVWcGNFbmRwb2ludEFjY2VzcyhcbiAgICBhcmdzOiBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEF1dGhvcml6ZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZShcbiAgICBhcmdzOiBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZShcbiAgICBhcmdzOiBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQXBwbGljYXRpb24oXG4gICAgYXJnczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVEb21haW4oXG4gICAgYXJnczogQ3JlYXRlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVBhY2thZ2UoXG4gICAgYXJnczogQ3JlYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRGF0YVNvdXJjZShcbiAgICBhcmdzOiBEZWxldGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRG9tYWluKFxuICAgIGFyZ3M6IERlbGV0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJbmJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVBhY2thZ2UoXG4gICAgYXJnczogRGVsZXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVZwY0VuZHBvaW50KFxuICAgIGFyZ3M6IERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5BdXRvVHVuZXMoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3MoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5Db25maWcoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbkhlYWx0aChcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5Ob2RlcyhcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5zKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEcnlSdW5Qcm9ncmVzcyhcbiAgICBhcmdzOiBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUluYm91bmRDb25uZWN0aW9ucyhcbiAgICBhcmdzOiBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHMoXG4gICAgYXJnczogRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVBhY2thZ2VzKFxuICAgIGFyZ3M6IERlc2NyaWJlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVZwY0VuZHBvaW50cyhcbiAgICBhcmdzOiBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBkaXNzb2NpYXRlUGFja2FnZShcbiAgICBhcmdzOiBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRBcHBsaWNhdGlvbihcbiAgICBhcmdzOiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgZ2V0Q29tcGF0aWJsZVZlcnNpb25zKFxuICAgIGFyZ3M6IEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXREYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGdldERhdGFTb3VyY2UoXG4gICAgYXJnczogR2V0RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXMoXG4gICAgYXJnczogR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kfVxuICAgKi9cbiAgZ2V0UGFja2FnZVZlcnNpb25IaXN0b3J5KFxuICAgIGFyZ3M6IEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kfVxuICAgKi9cbiAgZ2V0VXBncmFkZUhpc3RvcnkoXG4gICAgYXJnczogR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldFVwZ3JhZGVTdGF0dXMoXG4gICAgYXJnczogR2V0VXBncmFkZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0QXBwbGljYXRpb25zKFxuICAgIGFyZ3M6IExpc3RBcHBsaWNhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGF0YVNvdXJjZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERhdGFTb3VyY2VzKFxuICAgIGFyZ3M6IExpc3REYXRhU291cmNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REYXRhU291cmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REb21haW5NYWludGVuYW5jZXMoXG4gICAgYXJnczogTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERvbWFpbk5hbWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REb21haW5OYW1lcyhcbiAgICBhcmdzOiBMaXN0RG9tYWluTmFtZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RG9tYWluTmFtZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBsaXN0RG9tYWluc0ZvclBhY2thZ2UoXG4gICAgYXJnczogTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SW5zdGFuY2VUeXBlRGV0YWlscyhcbiAgICBhcmdzOiBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0UGFja2FnZXNGb3JEb21haW4oXG4gICAgYXJnczogTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U2NoZWR1bGVkQWN0aW9ucyhcbiAgICBhcmdzOiBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYWdpbmF0aW9uVG9rZW5FcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFRhZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3MoXG4gICAgYXJnczogTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFZlcnNpb25zKFxuICAgIGFyZ3M6IExpc3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFZwY0VuZHBvaW50QWNjZXNzKFxuICAgIGFyZ3M6IExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VnBjRW5kcG9pbnRzKFxuICAgIGFyZ3M6IExpc3RWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJhc2VFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kfVxuICAgKi9cbiAgbGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbihcbiAgICBhcmdzOiBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kfVxuICAgKi9cbiAgcHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmcoXG4gICAgYXJnczogUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgcmVqZWN0SW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVRhZ3NDb21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlVGFncyhcbiAgICBhcmdzOiBSZW1vdmVUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlVGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZH1cbiAgICovXG4gIHJldm9rZVZwY0VuZHBvaW50QWNjZXNzKFxuICAgIGFyZ3M6IFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmR9XG4gICAqL1xuICBzdGFydERvbWFpbk1haW50ZW5hbmNlKFxuICAgIGFyZ3M6IFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlKFxuICAgIGFyZ3M6IFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQXBwbGljYXRpb24oXG4gICAgYXJnczogVXBkYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEYXRhU291cmNlKFxuICAgIGFyZ3M6IFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEb21haW5Db25maWcoXG4gICAgYXJnczogVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQYWNrYWdlKFxuICAgIGFyZ3M6IFVwZGF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVTY2hlZHVsZWRBY3Rpb24oXG4gICAgYXJnczogVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTbG90Tm90QXZhaWxhYmxlRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZ3JhZGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgdXBncmFkZURvbWFpbihcbiAgICBhcmdzOiBVcGdyYWRlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBncmFkZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VPcGVuU2VhcmNoU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIE9wZW5TZWFyY2hTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPE9wZW5TZWFyY2hTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBPcGVuU2VhcmNoU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5TZWFyY2hTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlRhZyhcbiAgXCJAZWZmZWN0LWF3cy9jbGllbnQtb3BlbnNlYXJjaC9PcGVuU2VhcmNoU2VydmljZVwiLFxuKTxPcGVuU2VhcmNoU2VydmljZSwgT3BlblNlYXJjaFNlcnZpY2UkPigpIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXllciA9IExheWVyLmVmZmVjdCh0aGlzLCBtYWtlT3BlblNlYXJjaFNlcnZpY2UpLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgTGF5ZXIucHJvdmlkZShEZWZhdWx0T3BlblNlYXJjaENsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGxheWVyID0gKGNvbmZpZzogT3BlblNlYXJjaENsaWVudENvbmZpZykgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlKS5waXBlKFxuICAgICAgTGF5ZXIucHJvdmlkZShPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLFxuICAgICAgICAgIG1ha2VEZWZhdWx0T3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLnBpcGUoXG4gICAgICAgICAgICBFZmZlY3QubWFwKChkZWZhdWx0Q29uZmlnKSA9PiAoeyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIHN0YXRpYyByZWFkb25seSBiYXNlTGF5ZXIgPSAoXG4gICAgZXZhbHVhdGU6IChkZWZhdWx0Q29uZmlnOiBPcGVuU2VhcmNoQ2xpZW50Q29uZmlnKSA9PiBPcGVuU2VhcmNoQ2xpZW50LFxuICApID0+XG4gICAgTGF5ZXIuZWZmZWN0KHRoaXMsIG1ha2VPcGVuU2VhcmNoU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoXG4gICAgICAgIExheWVyLmVmZmVjdChcbiAgICAgICAgICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2UsXG4gICAgICAgICAgRWZmZWN0Lm1hcChtYWtlRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZywgZXZhbHVhdGUpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICogQGFsaWFzIE9wZW5TZWFyY2hTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjb25zdCBPcGVuU2VhcmNoID0gT3BlblNlYXJjaFNlcnZpY2U7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgT3BlblNlYXJjaC5iYXNlTGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgQmFzZU9wZW5TZWFyY2hTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIE9wZW5TZWFyY2hTZXJ2aWNlLFxuICBtYWtlT3BlblNlYXJjaFNlcnZpY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIE9wZW5TZWFyY2gubGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgT3BlblNlYXJjaFNlcnZpY2VMYXllciA9IEJhc2VPcGVuU2VhcmNoU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoT3BlblNlYXJjaENsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBPcGVuU2VhcmNoLmRlZmF1bHRMYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0T3BlblNlYXJjaFNlcnZpY2VMYXllciA9IE9wZW5TZWFyY2hTZXJ2aWNlLmRlZmF1bHRMYXllcjtcbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvT3BlblNlYXJjaFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztHQUVHO0FBQ0gsa0VBd09vQztBQUNwQyxtQ0FBcUQ7QUFDckQscUNBaUJrQjtBQUNsQix5RUFHb0M7QUFDcEMscUZBSTBDO0FBYTFDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsOEJBQThCLEVBQTlCLGtEQUE4QjtJQUM5QixvQkFBb0IsRUFBcEIsd0NBQW9CO0lBQ3BCLCtCQUErQixFQUEvQixtREFBK0I7SUFDL0IsY0FBYyxFQUFkLGtDQUFjO0lBQ2QsdUJBQXVCLEVBQXZCLDJDQUF1QjtJQUN2Qix3QkFBd0IsRUFBeEIsNENBQXdCO0lBQ3hCLGlDQUFpQyxFQUFqQyxxREFBaUM7SUFDakMsK0JBQStCLEVBQS9CLG1EQUErQjtJQUMvQixrQ0FBa0MsRUFBbEMsc0RBQWtDO0lBQ2xDLHdCQUF3QixFQUF4Qiw0Q0FBd0I7SUFDeEIsbUJBQW1CLEVBQW5CLHVDQUFtQjtJQUNuQiwrQkFBK0IsRUFBL0IsbURBQStCO0lBQy9CLG9CQUFvQixFQUFwQix3Q0FBb0I7SUFDcEIsd0JBQXdCLEVBQXhCLDRDQUF3QjtJQUN4Qix3QkFBd0IsRUFBeEIsNENBQXdCO0lBQ3hCLHVCQUF1QixFQUF2QiwyQ0FBdUI7SUFDdkIsa0NBQWtDLEVBQWxDLHNEQUFrQztJQUNsQyxtQkFBbUIsRUFBbkIsdUNBQW1CO0lBQ25CLDhCQUE4QixFQUE5QixrREFBOEI7SUFDOUIsK0JBQStCLEVBQS9CLG1EQUErQjtJQUMvQixvQkFBb0IsRUFBcEIsd0NBQW9CO0lBQ3BCLHdCQUF3QixFQUF4Qiw0Q0FBd0I7SUFDeEIscUJBQXFCLEVBQXJCLHlDQUFxQjtJQUNyQiw4QkFBOEIsRUFBOUIsa0RBQThCO0lBQzlCLG1DQUFtQyxFQUFuQyx1REFBbUM7SUFDbkMsMkJBQTJCLEVBQTNCLCtDQUEyQjtJQUMz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Q0FBQztBQUVGOzs7O0dBSUc7QUFDVSxRQUFBLHNCQUFzQixHQUFHLGtDQUEwQixDQUFDLElBQUksQ0FDbkUsY0FBSyxDQUFDLE9BQU8sQ0FBQyx3REFBNkIsQ0FBQyxDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNVLFFBQUEsNkJBQTZCLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgT3BlblNlYXJjaFNlcnZpY2VFeGNlcHRpb24sXG4gIHR5cGUgT3BlblNlYXJjaENsaWVudCxcbiAgdHlwZSBPcGVuU2VhcmNoQ2xpZW50Q29uZmlnLFxuICBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBBZGREYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBBZGREYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIEFkZERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBBZGRUYWdzQ29tbWFuZCxcbiAgdHlwZSBBZGRUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZFRhZ3NDb21tYW5kT3V0cHV0LFxuICBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBBc3NvY2lhdGVQYWNrYWdlc0NvbW1hbmQsXG4gIHR5cGUgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIHR5cGUgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kLFxuICB0eXBlIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kT3V0cHV0LFxuICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICB0eXBlIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVEb21haW5Db21tYW5kLFxuICB0eXBlIENyZWF0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEb21haW5Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIERlbGV0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEb21haW5Db21tYW5kLFxuICB0eXBlIERlbGV0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kLFxuICB0eXBlIERpc3NvY2lhdGVQYWNrYWdlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBHZXREYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBHZXREYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIEdldERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kLFxuICB0eXBlIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmQsXG4gIHR5cGUgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0QXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kLFxuICB0eXBlIExpc3REYXRhU291cmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RGF0YVNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluTmFtZXNDb21tYW5kLFxuICB0eXBlIExpc3REb21haW5OYW1lc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RG9tYWluTmFtZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kLFxuICB0eXBlIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kT3V0cHV0LFxuICBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kLFxuICB0eXBlIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIExpc3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICB0eXBlIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kT3V0cHV0LFxuICBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBSZW1vdmVUYWdzQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIHR5cGUgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZCxcbiAgdHlwZSBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kT3V0cHV0LFxuICBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIHR5cGUgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVEb21haW5Db25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVQYWNrYWdlU2NvcGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVBhY2thZ2VTY29wZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVQYWNrYWdlU2NvcGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBVcGdyYWRlRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBVcGdyYWRlRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZ3JhZGVEb21haW5Db21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LW9wZW5zZWFyY2hcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIEFjY2Vzc0RlbmllZEVycm9yLFxuICBCYXNlRXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIERlcGVuZGVuY3lGYWlsdXJlRXJyb3IsXG4gIERpc2FibGVkT3BlcmF0aW9uRXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIEludmFsaWRQYWdpbmF0aW9uVG9rZW5FcnJvcixcbiAgSW52YWxpZFR5cGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBTbG90Tm90QXZhaWxhYmxlRXJyb3IsXG4gIFZhbGlkYXRpb25FcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQge1xuICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2UsXG4gIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9PcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRPcGVuU2VhcmNoQ2xpZW50Q29uZmlnTGF5ZXIsXG4gIG1ha2VEZWZhdWx0T3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLFxuICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcsXG59IGZyb20gXCIuL09wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBIYW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBjb25uZWN0aW9uIHBoYXNlIG9mIGEgcmVxdWVzdFxuICAgKiBtYXkgdGFrZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBpcyBhYmFuZG9uZWQuXG4gICAqL1xuICByZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbn1cblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgQWRkRGF0YVNvdXJjZUNvbW1hbmQsXG4gIEFkZERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmQsXG4gIEFkZFRhZ3NDb21tYW5kLFxuICBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kLFxuICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmQsXG4gIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlRG9tYWluQ29tbWFuZCxcbiAgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGFja2FnZUNvbW1hbmQsXG4gIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVEYXRhU291cmNlQ29tbWFuZCxcbiAgRGVsZXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgRGVsZXRlRG9tYWluQ29tbWFuZCxcbiAgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBEZWxldGVQYWNrYWdlQ29tbWFuZCxcbiAgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbkNvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5zQ29tbWFuZCxcbiAgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmQsXG4gIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kLFxuICBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kLFxuICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmQsXG4gIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kLFxuICBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kLFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmQsXG4gIEdldERhdGFTb3VyY2VDb21tYW5kLFxuICBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmQsXG4gIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmQsXG4gIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZCxcbiAgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmQsXG4gIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kLFxuICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kLFxuICBMaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlc0NvbW1hbmQsXG4gIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kLFxuICBMaXN0RG9tYWluTmFtZXNDb21tYW5kLFxuICBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kLFxuICBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmQsXG4gIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmQsXG4gIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZCxcbiAgTGlzdFRhZ3NDb21tYW5kLFxuICBMaXN0VmVyc2lvbnNDb21tYW5kLFxuICBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmQsXG4gIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZCxcbiAgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICBSZW1vdmVUYWdzQ29tbWFuZCxcbiAgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZCxcbiAgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kLFxuICBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICBVcGRhdGVEb21haW5Db25maWdDb21tYW5kLFxuICBVcGRhdGVQYWNrYWdlQ29tbWFuZCxcbiAgVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZCxcbiAgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZCxcbiAgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICBVcGdyYWRlRG9tYWluQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBPcGVuU2VhcmNoU2VydmljZSQge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICBhY2NlcHRJbmJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGREYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGFkZERhdGFTb3VyY2UoXG4gICAgYXJnczogQWRkRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgYWRkRGlyZWN0UXVlcnlEYXRhU291cmNlKFxuICAgIGFyZ3M6IEFkZERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZFRhZ3NDb21tYW5kfVxuICAgKi9cbiAgYWRkVGFncyhcbiAgICBhcmdzOiBBZGRUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkVGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgTGltaXRFeGNlZWRlZEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgYXNzb2NpYXRlUGFja2FnZShcbiAgICBhcmdzOiBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kfVxuICAgKi9cbiAgYXNzb2NpYXRlUGFja2FnZXMoXG4gICAgYXJnczogQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBc3NvY2lhdGVQYWNrYWdlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmR9XG4gICAqL1xuICBhdXRob3JpemVWcGNFbmRwb2ludEFjY2VzcyhcbiAgICBhcmdzOiBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEF1dGhvcml6ZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZShcbiAgICBhcmdzOiBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZShcbiAgICBhcmdzOiBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQXBwbGljYXRpb24oXG4gICAgYXJnczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVEb21haW4oXG4gICAgYXJnczogQ3JlYXRlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVBhY2thZ2UoXG4gICAgYXJnczogQ3JlYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRGF0YVNvdXJjZShcbiAgICBhcmdzOiBEZWxldGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRGlyZWN0UXVlcnlEYXRhU291cmNlKFxuICAgIGFyZ3M6IERlbGV0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRG9tYWluKFxuICAgIGFyZ3M6IERlbGV0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVJbmJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVBhY2thZ2UoXG4gICAgYXJnczogRGVsZXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVZwY0VuZHBvaW50KFxuICAgIGFyZ3M6IERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5BdXRvVHVuZXMoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3MoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5Db25maWcoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbkhlYWx0aChcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5Ob2RlcyhcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5zKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEcnlSdW5Qcm9ncmVzcyhcbiAgICBhcmdzOiBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUluYm91bmRDb25uZWN0aW9ucyhcbiAgICBhcmdzOiBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHMoXG4gICAgYXJnczogRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVBhY2thZ2VzKFxuICAgIGFyZ3M6IERlc2NyaWJlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVZwY0VuZHBvaW50cyhcbiAgICBhcmdzOiBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBkaXNzb2NpYXRlUGFja2FnZShcbiAgICBhcmdzOiBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kfVxuICAgKi9cbiAgZGlzc29jaWF0ZVBhY2thZ2VzKFxuICAgIGFyZ3M6IERpc3NvY2lhdGVQYWNrYWdlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERpc3NvY2lhdGVQYWNrYWdlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRBcHBsaWNhdGlvbihcbiAgICBhcmdzOiBHZXRBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgZ2V0Q29tcGF0aWJsZVZlcnNpb25zKFxuICAgIGFyZ3M6IEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXREYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGdldERhdGFTb3VyY2UoXG4gICAgYXJnczogR2V0RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGdldERpcmVjdFF1ZXJ5RGF0YVNvdXJjZShcbiAgICBhcmdzOiBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXMoXG4gICAgYXJnczogR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kfVxuICAgKi9cbiAgZ2V0UGFja2FnZVZlcnNpb25IaXN0b3J5KFxuICAgIGFyZ3M6IEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kfVxuICAgKi9cbiAgZ2V0VXBncmFkZUhpc3RvcnkoXG4gICAgYXJnczogR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldFVwZ3JhZGVTdGF0dXMoXG4gICAgYXJnczogR2V0VXBncmFkZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0QXBwbGljYXRpb25zKFxuICAgIGFyZ3M6IExpc3RBcHBsaWNhdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGF0YVNvdXJjZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERhdGFTb3VyY2VzKFxuICAgIGFyZ3M6IExpc3REYXRhU291cmNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REYXRhU291cmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlcyhcbiAgICBhcmdzOiBMaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REaXJlY3RRdWVyeURhdGFTb3VyY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERvbWFpbk1haW50ZW5hbmNlcyhcbiAgICBhcmdzOiBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RG9tYWluTmFtZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERvbWFpbk5hbWVzKFxuICAgIGFyZ3M6IExpc3REb21haW5OYW1lc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REb21haW5OYW1lc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGxpc3REb21haW5zRm9yUGFja2FnZShcbiAgICBhcmdzOiBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RJbnN0YW5jZVR5cGVEZXRhaWxzKFxuICAgIGFyZ3M6IExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGxpc3RQYWNrYWdlc0ZvckRvbWFpbihcbiAgICBhcmdzOiBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RTY2hlZHVsZWRBY3Rpb25zKFxuICAgIGFyZ3M6IExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VGFncyhcbiAgICBhcmdzOiBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWZXJzaW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VmVyc2lvbnMoXG4gICAgYXJnczogTGlzdFZlcnNpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VnBjRW5kcG9pbnRBY2Nlc3MoXG4gICAgYXJnczogTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWcGNFbmRwb2ludHMoXG4gICAgYXJnczogTGlzdFZwY0VuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWcGNFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvciB8IEludGVybmFsRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluKFxuICAgIGFyZ3M6IExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmR9XG4gICAqL1xuICBwdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZyhcbiAgICBhcmdzOiBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWplY3RJbmJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlVGFnc0NvbW1hbmR9XG4gICAqL1xuICByZW1vdmVUYWdzKFxuICAgIGFyZ3M6IFJlbW92ZVRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW1vdmVUYWdzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJhc2VFcnJvciB8IEludGVybmFsRXJyb3IgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgcmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3MoXG4gICAgYXJnczogUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0RG9tYWluTWFpbnRlbmFuY2UoXG4gICAgYXJnczogU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kfVxuICAgKi9cbiAgc3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGUoXG4gICAgYXJnczogU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVBcHBsaWNhdGlvbihcbiAgICBhcmdzOiBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZURhdGFTb3VyY2UoXG4gICAgYXJnczogVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZShcbiAgICBhcmdzOiBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZURvbWFpbkNvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFR5cGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVBhY2thZ2UoXG4gICAgYXJnczogVXBkYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVBhY2thZ2VTY29wZShcbiAgICBhcmdzOiBVcGRhdGVQYWNrYWdlU2NvcGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQYWNrYWdlU2NvcGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVNjaGVkdWxlZEFjdGlvbihcbiAgICBhcmdzOiBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNsb3ROb3RBdmFpbGFibGVFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZVZwY0VuZHBvaW50KFxuICAgIGFyZ3M6IFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBncmFkZURvbWFpbkNvbW1hbmR9XG4gICAqL1xuICB1cGdyYWRlRG9tYWluKFxuICAgIGFyZ3M6IFVwZ3JhZGVEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGdyYWRlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oT3BlblNlYXJjaENsaWVudEluc3RhbmNlKTtcblxuICByZXR1cm4gUmVjb3JkLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zKSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6IChhYm9ydFNpZ25hbCkgPT5cbiAgICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zID8/IHt9KSxcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIH0pLFxuICAgICAgICBjYXRjaDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgT3BlblNlYXJjaFNlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248T3BlblNlYXJjaFNlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIE9wZW5TZWFyY2hTZXJ2aWNlJDtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgT3BlblNlYXJjaFNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1vcGVuc2VhcmNoL09wZW5TZWFyY2hTZXJ2aWNlXCIsXG4pPE9wZW5TZWFyY2hTZXJ2aWNlLCBPcGVuU2VhcmNoU2VydmljZSQ+KCkge1xuICBzdGF0aWMgcmVhZG9ubHkgZGVmYXVsdExheWVyID0gTGF5ZXIuZWZmZWN0KHRoaXMsIG1ha2VPcGVuU2VhcmNoU2VydmljZSkucGlwZShcbiAgICBMYXllci5wcm92aWRlKE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUxheWVyKSxcbiAgICBMYXllci5wcm92aWRlKERlZmF1bHRPcGVuU2VhcmNoQ2xpZW50Q29uZmlnTGF5ZXIpLFxuICApO1xuICBzdGF0aWMgcmVhZG9ubHkgbGF5ZXIgPSAoY29uZmlnOiBPcGVuU2VhcmNoQ2xpZW50Q29uZmlnKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlT3BlblNlYXJjaFNlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUxheWVyKSxcbiAgICAgIExheWVyLnByb3ZpZGUoXG4gICAgICAgIExheWVyLmVmZmVjdChcbiAgICAgICAgICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gICAgICAgICAgbWFrZURlZmF1bHRPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcucGlwZShcbiAgICAgICAgICAgIEVmZmVjdC5tYXAoKGRlZmF1bHRDb25maWcpID0+ICh7IC4uLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9KSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGJhc2VMYXllciA9IChcbiAgICBldmFsdWF0ZTogKGRlZmF1bHRDb25maWc6IE9wZW5TZWFyY2hDbGllbnRDb25maWcpID0+IE9wZW5TZWFyY2hDbGllbnQsXG4gICkgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlKS5waXBlKFxuICAgICAgTGF5ZXIucHJvdmlkZShcbiAgICAgICAgTGF5ZXIuZWZmZWN0KFxuICAgICAgICAgIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZSxcbiAgICAgICAgICBFZmZlY3QubWFwKG1ha2VEZWZhdWx0T3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLCBldmFsdWF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKiBAYWxpYXMgT3BlblNlYXJjaFNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IE9wZW5TZWFyY2ggPSBPcGVuU2VhcmNoU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBPcGVuU2VhcmNoLmJhc2VMYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlT3BlblNlYXJjaFNlcnZpY2VMYXllciA9IExheWVyLmVmZmVjdChcbiAgT3BlblNlYXJjaFNlcnZpY2UsXG4gIG1ha2VPcGVuU2VhcmNoU2VydmljZSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgT3BlblNlYXJjaC5sYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBPcGVuU2VhcmNoU2VydmljZUxheWVyID0gQmFzZU9wZW5TZWFyY2hTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIE9wZW5TZWFyY2guZGVmYXVsdExheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRPcGVuU2VhcmNoU2VydmljZUxheWVyID0gT3BlblNlYXJjaFNlcnZpY2UuZGVmYXVsdExheWVyO1xuIl19
|
|
@@ -2,7 +2,7 @@ var _a;
|
|
|
2
2
|
/**
|
|
3
3
|
* @since 1.0.0
|
|
4
4
|
*/
|
|
5
|
-
import { OpenSearchServiceException, AcceptInboundConnectionCommand, AddDataSourceCommand, AddTagsCommand, AssociatePackageCommand, AuthorizeVpcEndpointAccessCommand, CancelDomainConfigChangeCommand, CancelServiceSoftwareUpdateCommand, CreateApplicationCommand, CreateDomainCommand, CreateOutboundConnectionCommand, CreatePackageCommand, CreateVpcEndpointCommand, DeleteApplicationCommand, DeleteDataSourceCommand, DeleteDomainCommand, DeleteInboundConnectionCommand, DeleteOutboundConnectionCommand, DeletePackageCommand, DeleteVpcEndpointCommand, DescribeDomainCommand, DescribeDomainAutoTunesCommand, DescribeDomainChangeProgressCommand, DescribeDomainConfigCommand, DescribeDomainHealthCommand, DescribeDomainNodesCommand, DescribeDomainsCommand, DescribeDryRunProgressCommand, DescribeInboundConnectionsCommand, DescribeInstanceTypeLimitsCommand, DescribeOutboundConnectionsCommand, DescribePackagesCommand, DescribeReservedInstanceOfferingsCommand, DescribeReservedInstancesCommand, DescribeVpcEndpointsCommand, DissociatePackageCommand, GetApplicationCommand, GetCompatibleVersionsCommand, GetDataSourceCommand, GetDomainMaintenanceStatusCommand, GetPackageVersionHistoryCommand, GetUpgradeHistoryCommand, GetUpgradeStatusCommand, ListApplicationsCommand, ListDataSourcesCommand, ListDomainMaintenancesCommand, ListDomainNamesCommand, ListDomainsForPackageCommand, ListInstanceTypeDetailsCommand, ListPackagesForDomainCommand, ListScheduledActionsCommand, ListTagsCommand, ListVersionsCommand, ListVpcEndpointAccessCommand, ListVpcEndpointsCommand, ListVpcEndpointsForDomainCommand, PurchaseReservedInstanceOfferingCommand, RejectInboundConnectionCommand, RemoveTagsCommand, RevokeVpcEndpointAccessCommand, StartDomainMaintenanceCommand, StartServiceSoftwareUpdateCommand, UpdateApplicationCommand, UpdateDataSourceCommand, UpdateDomainConfigCommand, UpdatePackageCommand, UpdateScheduledActionCommand, UpdateVpcEndpointCommand, UpgradeDomainCommand, } from "@aws-sdk/client-opensearch";
|
|
5
|
+
import { OpenSearchServiceException, AcceptInboundConnectionCommand, AddDataSourceCommand, AddDirectQueryDataSourceCommand, AddTagsCommand, AssociatePackageCommand, AssociatePackagesCommand, AuthorizeVpcEndpointAccessCommand, CancelDomainConfigChangeCommand, CancelServiceSoftwareUpdateCommand, CreateApplicationCommand, CreateDomainCommand, CreateOutboundConnectionCommand, CreatePackageCommand, CreateVpcEndpointCommand, DeleteApplicationCommand, DeleteDataSourceCommand, DeleteDirectQueryDataSourceCommand, DeleteDomainCommand, DeleteInboundConnectionCommand, DeleteOutboundConnectionCommand, DeletePackageCommand, DeleteVpcEndpointCommand, DescribeDomainCommand, DescribeDomainAutoTunesCommand, DescribeDomainChangeProgressCommand, DescribeDomainConfigCommand, DescribeDomainHealthCommand, DescribeDomainNodesCommand, DescribeDomainsCommand, DescribeDryRunProgressCommand, DescribeInboundConnectionsCommand, DescribeInstanceTypeLimitsCommand, DescribeOutboundConnectionsCommand, DescribePackagesCommand, DescribeReservedInstanceOfferingsCommand, DescribeReservedInstancesCommand, DescribeVpcEndpointsCommand, DissociatePackageCommand, DissociatePackagesCommand, GetApplicationCommand, GetCompatibleVersionsCommand, GetDataSourceCommand, GetDirectQueryDataSourceCommand, GetDomainMaintenanceStatusCommand, GetPackageVersionHistoryCommand, GetUpgradeHistoryCommand, GetUpgradeStatusCommand, ListApplicationsCommand, ListDataSourcesCommand, ListDirectQueryDataSourcesCommand, ListDomainMaintenancesCommand, ListDomainNamesCommand, ListDomainsForPackageCommand, ListInstanceTypeDetailsCommand, ListPackagesForDomainCommand, ListScheduledActionsCommand, ListTagsCommand, ListVersionsCommand, ListVpcEndpointAccessCommand, ListVpcEndpointsCommand, ListVpcEndpointsForDomainCommand, PurchaseReservedInstanceOfferingCommand, RejectInboundConnectionCommand, RemoveTagsCommand, RevokeVpcEndpointAccessCommand, StartDomainMaintenanceCommand, StartServiceSoftwareUpdateCommand, UpdateApplicationCommand, UpdateDataSourceCommand, UpdateDirectQueryDataSourceCommand, UpdateDomainConfigCommand, UpdatePackageCommand, UpdatePackageScopeCommand, UpdateScheduledActionCommand, UpdateVpcEndpointCommand, UpgradeDomainCommand, } from "@aws-sdk/client-opensearch";
|
|
6
6
|
import { Data, Effect, Layer, Record } from "effect";
|
|
7
7
|
import { AllServiceErrors, SdkError, } from "./Errors";
|
|
8
8
|
import { OpenSearchClientInstance, OpenSearchClientInstanceLayer, } from "./OpenSearchClientInstance";
|
|
@@ -10,8 +10,10 @@ import { DefaultOpenSearchClientConfigLayer, makeDefaultOpenSearchClientInstance
|
|
|
10
10
|
const commands = {
|
|
11
11
|
AcceptInboundConnectionCommand,
|
|
12
12
|
AddDataSourceCommand,
|
|
13
|
+
AddDirectQueryDataSourceCommand,
|
|
13
14
|
AddTagsCommand,
|
|
14
15
|
AssociatePackageCommand,
|
|
16
|
+
AssociatePackagesCommand,
|
|
15
17
|
AuthorizeVpcEndpointAccessCommand,
|
|
16
18
|
CancelDomainConfigChangeCommand,
|
|
17
19
|
CancelServiceSoftwareUpdateCommand,
|
|
@@ -22,6 +24,7 @@ const commands = {
|
|
|
22
24
|
CreateVpcEndpointCommand,
|
|
23
25
|
DeleteApplicationCommand,
|
|
24
26
|
DeleteDataSourceCommand,
|
|
27
|
+
DeleteDirectQueryDataSourceCommand,
|
|
25
28
|
DeleteDomainCommand,
|
|
26
29
|
DeleteInboundConnectionCommand,
|
|
27
30
|
DeleteOutboundConnectionCommand,
|
|
@@ -43,15 +46,18 @@ const commands = {
|
|
|
43
46
|
DescribeReservedInstancesCommand,
|
|
44
47
|
DescribeVpcEndpointsCommand,
|
|
45
48
|
DissociatePackageCommand,
|
|
49
|
+
DissociatePackagesCommand,
|
|
46
50
|
GetApplicationCommand,
|
|
47
51
|
GetCompatibleVersionsCommand,
|
|
48
52
|
GetDataSourceCommand,
|
|
53
|
+
GetDirectQueryDataSourceCommand,
|
|
49
54
|
GetDomainMaintenanceStatusCommand,
|
|
50
55
|
GetPackageVersionHistoryCommand,
|
|
51
56
|
GetUpgradeHistoryCommand,
|
|
52
57
|
GetUpgradeStatusCommand,
|
|
53
58
|
ListApplicationsCommand,
|
|
54
59
|
ListDataSourcesCommand,
|
|
60
|
+
ListDirectQueryDataSourcesCommand,
|
|
55
61
|
ListDomainMaintenancesCommand,
|
|
56
62
|
ListDomainNamesCommand,
|
|
57
63
|
ListDomainsForPackageCommand,
|
|
@@ -71,8 +77,10 @@ const commands = {
|
|
|
71
77
|
StartServiceSoftwareUpdateCommand,
|
|
72
78
|
UpdateApplicationCommand,
|
|
73
79
|
UpdateDataSourceCommand,
|
|
80
|
+
UpdateDirectQueryDataSourceCommand,
|
|
74
81
|
UpdateDomainConfigCommand,
|
|
75
82
|
UpdatePackageCommand,
|
|
83
|
+
UpdatePackageScopeCommand,
|
|
76
84
|
UpdateScheduledActionCommand,
|
|
77
85
|
UpdateVpcEndpointCommand,
|
|
78
86
|
UpgradeDomainCommand,
|
|
@@ -149,4 +157,4 @@ export const OpenSearchServiceLayer = BaseOpenSearchServiceLayer.pipe(Layer.prov
|
|
|
149
157
|
* @deprecated use OpenSearch.defaultLayer instead
|
|
150
158
|
*/
|
|
151
159
|
export const DefaultOpenSearchServiceLayer = OpenSearchService.defaultLayer;
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvT3BlblNlYXJjaFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLDBCQUEwQixFQUcxQiw4QkFBOEIsRUFHOUIsb0JBQW9CLEVBR3BCLGNBQWMsRUFHZCx1QkFBdUIsRUFHdkIsaUNBQWlDLEVBR2pDLCtCQUErQixFQUcvQixrQ0FBa0MsRUFHbEMsd0JBQXdCLEVBR3hCLG1CQUFtQixFQUduQiwrQkFBK0IsRUFHL0Isb0JBQW9CLEVBR3BCLHdCQUF3QixFQUd4Qix3QkFBd0IsRUFHeEIsdUJBQXVCLEVBR3ZCLG1CQUFtQixFQUduQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLG9CQUFvQixFQUdwQix3QkFBd0IsRUFHeEIscUJBQXFCLEVBR3JCLDhCQUE4QixFQUc5QixtQ0FBbUMsRUFHbkMsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIsc0JBQXNCLEVBR3RCLDZCQUE2QixFQUc3QixpQ0FBaUMsRUFHakMsaUNBQWlDLEVBR2pDLGtDQUFrQyxFQUdsQyx1QkFBdUIsRUFHdkIsd0NBQXdDLEVBR3hDLGdDQUFnQyxFQUdoQywyQkFBMkIsRUFHM0Isd0JBQXdCLEVBR3hCLHFCQUFxQixFQUdyQiw0QkFBNEIsRUFHNUIsb0JBQW9CLEVBR3BCLGlDQUFpQyxFQUdqQywrQkFBK0IsRUFHL0Isd0JBQXdCLEVBR3hCLHVCQUF1QixFQUd2Qix1QkFBdUIsRUFHdkIsc0JBQXNCLEVBR3RCLDZCQUE2QixFQUc3QixzQkFBc0IsRUFHdEIsNEJBQTRCLEVBRzVCLDhCQUE4QixFQUc5Qiw0QkFBNEIsRUFHNUIsMkJBQTJCLEVBRzNCLGVBQWUsRUFHZixtQkFBbUIsRUFHbkIsNEJBQTRCLEVBRzVCLHVCQUF1QixFQUd2QixnQ0FBZ0MsRUFHaEMsdUNBQXVDLEVBR3ZDLDhCQUE4QixFQUc5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QUMsTUFBTSxDQUNwRCxpQkFBaUIsRUFDakIscUJBQXFCLENBQ3RCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQzdDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgT3BlblNlYXJjaFNlcnZpY2VFeGNlcHRpb24sXG4gIHR5cGUgT3BlblNlYXJjaENsaWVudCxcbiAgdHlwZSBPcGVuU2VhcmNoQ2xpZW50Q29uZmlnLFxuICBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBBZGREYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBBZGREYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBBZGRUYWdzQ29tbWFuZCxcbiAgdHlwZSBBZGRUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZFRhZ3NDb21tYW5kT3V0cHV0LFxuICBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIHR5cGUgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kLFxuICB0eXBlIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kT3V0cHV0LFxuICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICB0eXBlIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVEb21haW5Db21tYW5kLFxuICB0eXBlIENyZWF0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEb21haW5Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEb21haW5Db21tYW5kLFxuICB0eXBlIERlbGV0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURvbWFpbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUluc3RhbmNlVHlwZUxpbWl0c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIEdldENvbXBhdGlibGVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBHZXREYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBHZXREYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEdldERhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBHZXREb21haW5NYWludGVuYW5jZVN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kLFxuICB0eXBlIEdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmQsXG4gIHR5cGUgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kT3V0cHV0LFxuICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0QXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kLFxuICB0eXBlIExpc3REYXRhU291cmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RGF0YVNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluTmFtZXNDb21tYW5kLFxuICB0eXBlIExpc3REb21haW5OYW1lc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RG9tYWluTmFtZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kLFxuICB0eXBlIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kT3V0cHV0LFxuICBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kLFxuICB0eXBlIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIExpc3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICB0eXBlIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kT3V0cHV0LFxuICBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIHR5cGUgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICBSZW1vdmVUYWdzQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZVRhZ3NDb21tYW5kT3V0cHV0LFxuICBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIHR5cGUgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZCxcbiAgdHlwZSBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kT3V0cHV0LFxuICBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIHR5cGUgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVEb21haW5Db25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBVcGdyYWRlRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBVcGdyYWRlRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZ3JhZGVEb21haW5Db21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LW9wZW5zZWFyY2hcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIEFjY2Vzc0RlbmllZEVycm9yLFxuICBCYXNlRXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIERlcGVuZGVuY3lGYWlsdXJlRXJyb3IsXG4gIERpc2FibGVkT3BlcmF0aW9uRXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIEludmFsaWRQYWdpbmF0aW9uVG9rZW5FcnJvcixcbiAgSW52YWxpZFR5cGVFcnJvcixcbiAgTGltaXRFeGNlZWRlZEVycm9yLFxuICBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBTbG90Tm90QXZhaWxhYmxlRXJyb3IsXG4gIFZhbGlkYXRpb25FcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQge1xuICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2UsXG4gIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9PcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRPcGVuU2VhcmNoQ2xpZW50Q29uZmlnTGF5ZXIsXG4gIG1ha2VEZWZhdWx0T3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLFxuICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcsXG59IGZyb20gXCIuL09wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBIYW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBjb25uZWN0aW9uIHBoYXNlIG9mIGEgcmVxdWVzdFxuICAgKiBtYXkgdGFrZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBpcyBhYmFuZG9uZWQuXG4gICAqL1xuICByZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbn1cblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgQWRkRGF0YVNvdXJjZUNvbW1hbmQsXG4gIEFkZFRhZ3NDb21tYW5kLFxuICBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kLFxuICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZURvbWFpbkNvbW1hbmQsXG4gIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIENyZWF0ZVBhY2thZ2VDb21tYW5kLFxuICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmQsXG4gIERlbGV0ZURvbWFpbkNvbW1hbmQsXG4gIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlUGFja2FnZUNvbW1hbmQsXG4gIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5Db21tYW5kLFxuICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluc0NvbW1hbmQsXG4gIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kLFxuICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmQsXG4gIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZCxcbiAgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kLFxuICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgR2V0QXBwbGljYXRpb25Db21tYW5kLFxuICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kLFxuICBHZXREYXRhU291cmNlQ29tbWFuZCxcbiAgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kLFxuICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kLFxuICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmQsXG4gIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kLFxuICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZCxcbiAgTGlzdERhdGFTb3VyY2VzQ29tbWFuZCxcbiAgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmQsXG4gIExpc3REb21haW5OYW1lc0NvbW1hbmQsXG4gIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmQsXG4gIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZCxcbiAgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZCxcbiAgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kLFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIExpc3RWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIExpc3RWcGNFbmRwb2ludHNDb21tYW5kLFxuICBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZCxcbiAgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kLFxuICBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIFJlbW92ZVRhZ3NDb21tYW5kLFxuICBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmQsXG4gIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kLFxuICBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmQsXG4gIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmQsXG4gIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIFVwZGF0ZVBhY2thZ2VDb21tYW5kLFxuICBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kLFxuICBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIFVwZ3JhZGVEb21haW5Db21tYW5kLFxufTtcblxuaW50ZXJmYWNlIE9wZW5TZWFyY2hTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGFjY2VwdEluYm91bmRDb25uZWN0aW9uKFxuICAgIGFyZ3M6IEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZERhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgYWRkRGF0YVNvdXJjZShcbiAgICBhcmdzOiBBZGREYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZFRhZ3NDb21tYW5kfVxuICAgKi9cbiAgYWRkVGFncyhcbiAgICBhcmdzOiBBZGRUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkVGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgTGltaXRFeGNlZWRlZEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgYXNzb2NpYXRlUGFja2FnZShcbiAgICBhcmdzOiBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgYXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3MoXG4gICAgYXJnczogQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmR9XG4gICAqL1xuICBjYW5jZWxEb21haW5Db25maWdDaGFuZ2UoXG4gICAgYXJnczogQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmR9XG4gICAqL1xuICBjYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGUoXG4gICAgYXJnczogQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRG9tYWluKFxuICAgIGFyZ3M6IENyZWF0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVQYWNrYWdlKFxuICAgIGFyZ3M6IENyZWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVnBjRW5kcG9pbnQoXG4gICAgYXJnczogQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBcHBsaWNhdGlvbihcbiAgICBhcmdzOiBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURhdGFTb3VyY2UoXG4gICAgYXJnczogRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURvbWFpbihcbiAgICBhcmdzOiBEZWxldGVEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlSW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVPdXRib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQYWNrYWdlKFxuICAgIGFyZ3M6IERlbGV0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBEZWxldGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbihcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQXV0b1R1bmVzKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQ29uZmlnKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5IZWFsdGgoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluTm9kZXMoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWlucyhcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgSW50ZXJuYWxFcnJvciB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3MoXG4gICAgYXJnczogRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzKFxuICAgIGFyZ3M6IERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFR5cGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zKFxuICAgIGFyZ3M6IERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUGFja2FnZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVQYWNrYWdlcyhcbiAgICBhcmdzOiBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5ncyhcbiAgICBhcmdzOiBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlcyhcbiAgICBhcmdzOiBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVWcGNFbmRwb2ludHMoXG4gICAgYXJnczogRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgZGlzc29jaWF0ZVBhY2thZ2UoXG4gICAgYXJnczogRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb24oXG4gICAgYXJnczogR2V0QXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0Q29tcGF0aWJsZVZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGdldENvbXBhdGlibGVWZXJzaW9ucyhcbiAgICBhcmdzOiBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBnZXREYXRhU291cmNlKFxuICAgIGFyZ3M6IEdldERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzKFxuICAgIGFyZ3M6IEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGFja2FnZVZlcnNpb25IaXN0b3J5Q29tbWFuZH1cbiAgICovXG4gIGdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeShcbiAgICBhcmdzOiBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZH1cbiAgICovXG4gIGdldFVwZ3JhZGVIaXN0b3J5KFxuICAgIGFyZ3M6IEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICBnZXRVcGdyYWRlU3RhdHVzKFxuICAgIGFyZ3M6IEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFwcGxpY2F0aW9ucyhcbiAgICBhcmdzOiBMaXN0QXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERhdGFTb3VyY2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REYXRhU291cmNlcyhcbiAgICBhcmdzOiBMaXN0RGF0YVNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RG9tYWluTWFpbnRlbmFuY2VzKFxuICAgIGFyZ3M6IExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3REb21haW5OYW1lc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RG9tYWluTmFtZXMoXG4gICAgYXJnczogTGlzdERvbWFpbk5hbWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdERvbWFpbk5hbWVzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJhc2VFcnJvciB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgbGlzdERvbWFpbnNGb3JQYWNrYWdlKFxuICAgIGFyZ3M6IExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEluc3RhbmNlVHlwZURldGFpbHMoXG4gICAgYXJnczogTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kfVxuICAgKi9cbiAgbGlzdFBhY2thZ2VzRm9yRG9tYWluKFxuICAgIGFyZ3M6IExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFNjaGVkdWxlZEFjdGlvbnMoXG4gICAgYXJnczogTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzKFxuICAgIGFyZ3M6IExpc3RUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWZXJzaW9ucyhcbiAgICBhcmdzOiBMaXN0VmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWcGNFbmRwb2ludEFjY2VzcyhcbiAgICBhcmdzOiBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWcGNFbmRwb2ludHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFZwY0VuZHBvaW50cyhcbiAgICBhcmdzOiBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWcGNFbmRwb2ludHNGb3JEb21haW4oXG4gICAgYXJnczogTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZH1cbiAgICovXG4gIHB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nKFxuICAgIGFyZ3M6IFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlamVjdEluYm91bmRDb25uZWN0aW9uKFxuICAgIGFyZ3M6IFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVUYWdzQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZVRhZ3MoXG4gICAgYXJnczogUmVtb3ZlVGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgSW50ZXJuYWxFcnJvciB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmR9XG4gICAqL1xuICByZXZva2VWcGNFbmRwb2ludEFjY2VzcyhcbiAgICBhcmdzOiBSZXZva2VWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kfVxuICAgKi9cbiAgc3RhcnREb21haW5NYWludGVuYW5jZShcbiAgICBhcmdzOiBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmR9XG4gICAqL1xuICBzdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZShcbiAgICBhcmdzOiBTdGFydFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRGF0YVNvdXJjZShcbiAgICBhcmdzOiBVcGRhdGVEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEZXBlbmRlbmN5RmFpbHVyZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVEb21haW5Db25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRG9tYWluQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlUGFja2FnZShcbiAgICBhcmdzOiBVcGRhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlU2NoZWR1bGVkQWN0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2xvdE5vdEF2YWlsYWJsZUVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlVnBjRW5kcG9pbnQoXG4gICAgYXJnczogVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGdyYWRlRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIHVwZ3JhZGVEb21haW4oXG4gICAgYXJnczogVXBncmFkZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZ3JhZGVEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlT3BlblNlYXJjaFNlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBPcGVuU2VhcmNoU2VydmljZUV4Y2VwdGlvbiAmJlxuICAgICAgICAgICAgQWxsU2VydmljZUVycm9ycy5pbmNsdWRlcyhlLm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxPcGVuU2VhcmNoU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgT3BlblNlYXJjaFNlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVuU2VhcmNoU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LW9wZW5zZWFyY2gvT3BlblNlYXJjaFNlcnZpY2VcIixcbik8T3BlblNlYXJjaFNlcnZpY2UsIE9wZW5TZWFyY2hTZXJ2aWNlJD4oKSB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0TGF5ZXIgPSBMYXllci5lZmZlY3QodGhpcywgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlKS5waXBlKFxuICAgIExheWVyLnByb3ZpZGUoT3BlblNlYXJjaENsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgIExheWVyLnByb3ZpZGUoRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRDb25maWdMYXllciksXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBsYXllciA9IChjb25maWc6IE9wZW5TZWFyY2hDbGllbnRDb25maWcpID0+XG4gICAgTGF5ZXIuZWZmZWN0KHRoaXMsIG1ha2VPcGVuU2VhcmNoU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoT3BlblNlYXJjaENsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgICAgTGF5ZXIucHJvdmlkZShcbiAgICAgICAgTGF5ZXIuZWZmZWN0KFxuICAgICAgICAgIE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgICAgICAgICBtYWtlRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZy5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcCgoZGVmYXVsdENvbmZpZykgPT4gKHsgLi4uZGVmYXVsdENvbmZpZywgLi4uY29uZmlnIH0pKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuICBzdGF0aWMgcmVhZG9ubHkgYmFzZUxheWVyID0gKFxuICAgIGV2YWx1YXRlOiAoZGVmYXVsdENvbmZpZzogT3BlblNlYXJjaENsaWVudENvbmZpZykgPT4gT3BlblNlYXJjaENsaWVudCxcbiAgKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlT3BlblNlYXJjaFNlcnZpY2UpLnBpcGUoXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlLFxuICAgICAgICAgIEVmZmVjdC5tYXAobWFrZURlZmF1bHRPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWcsIGV2YWx1YXRlKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKTtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqIEBhbGlhcyBPcGVuU2VhcmNoU2VydmljZVxuICovXG5leHBvcnQgY29uc3QgT3BlblNlYXJjaCA9IE9wZW5TZWFyY2hTZXJ2aWNlO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIE9wZW5TZWFyY2guYmFzZUxheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VPcGVuU2VhcmNoU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBPcGVuU2VhcmNoU2VydmljZSxcbiAgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBPcGVuU2VhcmNoLmxheWVyIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IE9wZW5TZWFyY2hTZXJ2aWNlTGF5ZXIgPSBCYXNlT3BlblNlYXJjaFNlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgT3BlblNlYXJjaC5kZWZhdWx0TGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdE9wZW5TZWFyY2hTZXJ2aWNlTGF5ZXIgPSBPcGVuU2VhcmNoU2VydmljZS5kZWZhdWx0TGF5ZXI7XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvT3BlblNlYXJjaFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLDBCQUEwQixFQUcxQiw4QkFBOEIsRUFHOUIsb0JBQW9CLEVBR3BCLCtCQUErQixFQUcvQixjQUFjLEVBR2QsdUJBQXVCLEVBR3ZCLHdCQUF3QixFQUd4QixpQ0FBaUMsRUFHakMsK0JBQStCLEVBRy9CLGtDQUFrQyxFQUdsQyx3QkFBd0IsRUFHeEIsbUJBQW1CLEVBR25CLCtCQUErQixFQUcvQixvQkFBb0IsRUFHcEIsd0JBQXdCLEVBR3hCLHdCQUF3QixFQUd4Qix1QkFBdUIsRUFHdkIsa0NBQWtDLEVBR2xDLG1CQUFtQixFQUduQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLG9CQUFvQixFQUdwQix3QkFBd0IsRUFHeEIscUJBQXFCLEVBR3JCLDhCQUE4QixFQUc5QixtQ0FBbUMsRUFHbkMsMkJBQTJCLEVBRzNCLDJCQUEyQixFQUczQiwwQkFBMEIsRUFHMUIsc0JBQXNCLEVBR3RCLDZCQUE2QixFQUc3QixpQ0FBaUMsRUFHakMsaUNBQWlDLEVBR2pDLGtDQUFrQyxFQUdsQyx1QkFBdUIsRUFHdkIsd0NBQXdDLEVBR3hDLGdDQUFnQyxFQUdoQywyQkFBMkIsRUFHM0Isd0JBQXdCLEVBR3hCLHlCQUF5QixFQUd6QixxQkFBcUIsRUFHckIsNEJBQTRCLEVBRzVCLG9CQUFvQixFQUdwQiwrQkFBK0IsRUFHL0IsaUNBQWlDLEVBR2pDLCtCQUErQixFQUcvQix3QkFBd0IsRUFHeEIsdUJBQXVCLEVBR3ZCLHVCQUF1QixFQUd2QixzQkFBc0IsRUFHdEIsaUNBQWlDLEVBR2pDLDZCQUE2QixFQUc3QixzQkFBc0IsRUFHdEIsNEJBQTRCLEVBRzVCLDhCQUE4QixFQUc5Qiw0QkFBNEIsRUFHNUIsMkJBQTJCLEVBRzNCLGVBQWUsRUFH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SyxDQUFDLE1BQU0sQ0FDVix3QkFBd0IsRUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsRUFBRSxRQUFRLENBQUMsQ0FDaEUsQ0FDRixDQUNGLEFBVnNCLENBVXJCO0FBR047Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDcEQsaUJBQWlCLEVBQ2pCLHFCQUFxQixDQUN0QixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUM3QyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIE9wZW5TZWFyY2hTZXJ2aWNlRXhjZXB0aW9uLFxuICB0eXBlIE9wZW5TZWFyY2hDbGllbnQsXG4gIHR5cGUgT3BlblNlYXJjaENsaWVudENvbmZpZyxcbiAgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEFjY2VwdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgQWRkRGF0YVNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgQWRkRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgQWRkRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgQWRkVGFnc0NvbW1hbmQsXG4gIHR5cGUgQWRkVGFnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRUYWdzQ29tbWFuZE91dHB1dCxcbiAgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kLFxuICB0eXBlIEFzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICB0eXBlIEFzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZE91dHB1dCxcbiAgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICB0eXBlIEF1dGhvcml6ZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIEF1dGhvcml6ZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZCxcbiAgdHlwZSBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZE91dHB1dCxcbiAgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZCxcbiAgdHlwZSBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQXBwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5Db21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEb21haW5zQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURvbWFpbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEb21haW5zQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlSW5ib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZE91dHB1dCxcbiAgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlVnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kLFxuICB0eXBlIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZElucHV0LFxuICB0eXBlIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgRGlzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZCxcbiAgdHlwZSBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGlzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZE91dHB1dCxcbiAgR2V0QXBwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0Q29tcGF0aWJsZVZlcnNpb25zQ29tbWFuZCxcbiAgdHlwZSBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Q29tcGF0aWJsZVZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgR2V0RGF0YVNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgR2V0RGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBHZXREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kLFxuICB0eXBlIEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgR2V0UGFja2FnZVZlcnNpb25IaXN0b3J5Q29tbWFuZCxcbiAgdHlwZSBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UGFja2FnZVZlcnNpb25IaXN0b3J5Q29tbWFuZE91dHB1dCxcbiAgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kLFxuICB0eXBlIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZE91dHB1dCxcbiAgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmQsXG4gIHR5cGUgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdERhdGFTb3VyY2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RGF0YVNvdXJjZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERhdGFTb3VyY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kLFxuICB0eXBlIExpc3REaXJlY3RRdWVyeURhdGFTb3VyY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REaXJlY3RRdWVyeURhdGFTb3VyY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdERvbWFpbk5hbWVzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RG9tYWluTmFtZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERvbWFpbk5hbWVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZCxcbiAgdHlwZSBMaXN0RG9tYWluc0ZvclBhY2thZ2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kLFxuICB0eXBlIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZCxcbiAgdHlwZSBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgTGlzdFNjaGVkdWxlZEFjdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NDb21tYW5kLFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZlcnNpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmQsXG4gIHR5cGUgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kLFxuICB0eXBlIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIFB1cmNoYXNlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nQ29tbWFuZE91dHB1dCxcbiAgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kLFxuICB0eXBlIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlVGFnc0NvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlVGFnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVUYWdzQ29tbWFuZE91dHB1dCxcbiAgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICB0eXBlIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZE91dHB1dCxcbiAgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmQsXG4gIHR5cGUgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZE91dHB1dCxcbiAgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICB0eXBlIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVEb21haW5Db25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUGFja2FnZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVQYWNrYWdlU2NvcGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVTY2hlZHVsZWRBY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlVnBjRW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgVXBncmFkZURvbWFpbkNvbW1hbmQsXG4gIHR5cGUgVXBncmFkZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGdyYWRlRG9tYWluQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1vcGVuc2VhcmNoXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBBY2Nlc3NEZW5pZWRFcnJvcixcbiAgQmFzZUVycm9yLFxuICBDb25mbGljdEVycm9yLFxuICBEZXBlbmRlbmN5RmFpbHVyZUVycm9yLFxuICBEaXNhYmxlZE9wZXJhdGlvbkVycm9yLFxuICBJbnRlcm5hbEVycm9yLFxuICBJbnZhbGlkUGFnaW5hdGlvblRva2VuRXJyb3IsXG4gIEludmFsaWRUeXBlRXJyb3IsXG4gIExpbWl0RXhjZWVkZWRFcnJvcixcbiAgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgU2xvdE5vdEF2YWlsYWJsZUVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlLFxuICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vT3BlblNlYXJjaENsaWVudEluc3RhbmNlXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0T3BlblNlYXJjaENsaWVudENvbmZpZ0xheWVyLFxuICBtYWtlRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLFxufSBmcm9tIFwiLi9PcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIEFkZERhdGFTb3VyY2VDb21tYW5kLFxuICBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kLFxuICBBZGRUYWdzQ29tbWFuZCxcbiAgQXNzb2NpYXRlUGFja2FnZUNvbW1hbmQsXG4gIEFzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZCxcbiAgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kLFxuICBDYW5jZWxEb21haW5Db25maWdDaGFuZ2VDb21tYW5kLFxuICBDYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kLFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZURvbWFpbkNvbW1hbmQsXG4gIENyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmQsXG4gIENyZWF0ZVBhY2thZ2VDb21tYW5kLFxuICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmQsXG4gIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmQsXG4gIERlbGV0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmQsXG4gIERlbGV0ZURvbWFpbkNvbW1hbmQsXG4gIERlbGV0ZUluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlUGFja2FnZUNvbW1hbmQsXG4gIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5Db21tYW5kLFxuICBEZXNjcmliZURvbWFpbkF1dG9UdW5lc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kLFxuICBEZXNjcmliZURvbWFpbkNvbmZpZ0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluSGVhbHRoQ29tbWFuZCxcbiAgRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmQsXG4gIERlc2NyaWJlRG9tYWluc0NvbW1hbmQsXG4gIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kLFxuICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmQsXG4gIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZCxcbiAgRGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5nc0NvbW1hbmQsXG4gIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kLFxuICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIERpc3NvY2lhdGVQYWNrYWdlQ29tbWFuZCxcbiAgRGlzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZCxcbiAgR2V0QXBwbGljYXRpb25Db21tYW5kLFxuICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kLFxuICBHZXREYXRhU291cmNlQ29tbWFuZCxcbiAgR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kLFxuICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kLFxuICBHZXRVcGdyYWRlSGlzdG9yeUNvbW1hbmQsXG4gIEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kLFxuICBMaXN0QXBwbGljYXRpb25zQ29tbWFuZCxcbiAgTGlzdERhdGFTb3VyY2VzQ29tbWFuZCxcbiAgTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kLFxuICBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZCxcbiAgTGlzdERvbWFpbk5hbWVzQ29tbWFuZCxcbiAgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZCxcbiAgTGlzdEluc3RhbmNlVHlwZURldGFpbHNDb21tYW5kLFxuICBMaXN0UGFja2FnZXNGb3JEb21haW5Db21tYW5kLFxuICBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgTGlzdFZlcnNpb25zQ29tbWFuZCxcbiAgTGlzdFZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmQsXG4gIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kLFxuICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmQsXG4gIFJlamVjdEluYm91bmRDb25uZWN0aW9uQ29tbWFuZCxcbiAgUmVtb3ZlVGFnc0NvbW1hbmQsXG4gIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZCxcbiAgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmQsXG4gIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZCxcbiAgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZCxcbiAgVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZCxcbiAgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlUGFja2FnZUNvbW1hbmQsXG4gIFVwZGF0ZVBhY2thZ2VTY29wZUNvbW1hbmQsXG4gIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZCxcbiAgVXBncmFkZURvbWFpbkNvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgT3BlblNlYXJjaFNlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgYWNjZXB0SW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogQWNjZXB0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBY2NlcHRJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkRGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBhZGREYXRhU291cmNlKFxuICAgIGFyZ3M6IEFkZERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGFkZERpcmVjdFF1ZXJ5RGF0YVNvdXJjZShcbiAgICBhcmdzOiBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGREaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRUYWdzQ29tbWFuZH1cbiAgICovXG4gIGFkZFRhZ3MoXG4gICAgYXJnczogQWRkVGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZFRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgSW50ZXJuYWxFcnJvciB8IExpbWl0RXhjZWVkZWRFcnJvciB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBc3NvY2lhdGVQYWNrYWdlQ29tbWFuZH1cbiAgICovXG4gIGFzc29jaWF0ZVBhY2thZ2UoXG4gICAgYXJnczogQXNzb2NpYXRlUGFja2FnZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFzc29jaWF0ZVBhY2thZ2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZH1cbiAgICovXG4gIGFzc29jaWF0ZVBhY2thZ2VzKFxuICAgIGFyZ3M6IEFzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQXNzb2NpYXRlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgYXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3MoXG4gICAgYXJnczogQXV0aG9yaXplVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBdXRob3JpemVWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbERvbWFpbkNvbmZpZ0NoYW5nZUNvbW1hbmR9XG4gICAqL1xuICBjYW5jZWxEb21haW5Db25maWdDaGFuZ2UoXG4gICAgYXJnczogQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsRG9tYWluQ29uZmlnQ2hhbmdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENhbmNlbFNlcnZpY2VTb2Z0d2FyZVVwZGF0ZUNvbW1hbmR9XG4gICAqL1xuICBjYW5jZWxTZXJ2aWNlU29mdHdhcmVVcGRhdGUoXG4gICAgYXJnczogQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ2FuY2VsU2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRG9tYWluKFxuICAgIGFyZ3M6IENyZWF0ZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZU91dGJvdW5kQ29ubmVjdGlvbihcbiAgICBhcmdzOiBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVPdXRib3VuZENvbm5lY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VBbHJlYWR5RXhpc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVQYWNrYWdlKFxuICAgIGFyZ3M6IENyZWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkVHlwZUVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlQWxyZWFkeUV4aXN0c0Vycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlVnBjRW5kcG9pbnQoXG4gICAgYXJnczogQ3JlYXRlVnBjRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVWcGNFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBcHBsaWNhdGlvbihcbiAgICBhcmdzOiBEZWxldGVBcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURhdGFTb3VyY2UoXG4gICAgYXJnczogRGVsZXRlRGF0YVNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZShcbiAgICBhcmdzOiBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEaXJlY3RRdWVyeURhdGFTb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRG9tYWluQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURvbWFpbihcbiAgICBhcmdzOiBEZWxldGVEb21haW5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEb21haW5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlSW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogRGVsZXRlSW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU91dGJvdW5kQ29ubmVjdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVPdXRib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlT3V0Ym91bmRDb25uZWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQYWNrYWdlKFxuICAgIGFyZ3M6IERlbGV0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBDb25mbGljdEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBEZWxldGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbihcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQXV0b1R1bmVzKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQXV0b1R1bmVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5BdXRvVHVuZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5DaGFuZ2VQcm9ncmVzc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ2hhbmdlUHJvZ3Jlc3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkNoYW5nZVByb2dyZXNzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluQ29uZmlnKFxuICAgIGFyZ3M6IERlc2NyaWJlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEb21haW5Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEb21haW5IZWFsdGgoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5IZWFsdGhDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbkhlYWx0aENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURvbWFpbk5vZGVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWluTm9kZXMoXG4gICAgYXJnczogRGVzY3JpYmVEb21haW5Ob2Rlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRG9tYWluTm9kZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEb21haW5zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRG9tYWlucyhcbiAgICBhcmdzOiBEZXNjcmliZURvbWFpbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURvbWFpbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgSW50ZXJuYWxFcnJvciB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURyeVJ1blByb2dyZXNzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3MoXG4gICAgYXJnczogRGVzY3JpYmVEcnlSdW5Qcm9ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRHJ5UnVuUHJvZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVJbmJvdW5kQ29ubmVjdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUluYm91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzKFxuICAgIGFyZ3M6IERlc2NyaWJlSW5zdGFuY2VUeXBlTGltaXRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVJbnN0YW5jZVR5cGVMaW1pdHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFR5cGVFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZU91dGJvdW5kQ29ubmVjdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVPdXRib3VuZENvbm5lY3Rpb25zKFxuICAgIGFyZ3M6IERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlT3V0Ym91bmRDb25uZWN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgSW52YWxpZFBhZ2luYXRpb25Ub2tlbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUGFja2FnZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVQYWNrYWdlcyhcbiAgICBhcmdzOiBEZXNjcmliZVBhY2thZ2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVQYWNrYWdlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZU9mZmVyaW5ncyhcbiAgICBhcmdzOiBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmVzZXJ2ZWRJbnN0YW5jZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlcyhcbiAgICBhcmdzOiBEZXNjcmliZVJlc2VydmVkSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSZXNlcnZlZEluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVWcGNFbmRwb2ludHMoXG4gICAgYXJnczogRGVzY3JpYmVWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZVZwY0VuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kfVxuICAgKi9cbiAgZGlzc29jaWF0ZVBhY2thZ2UoXG4gICAgYXJnczogRGlzc29jaWF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNzb2NpYXRlUGFja2FnZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzc29jaWF0ZVBhY2thZ2VzQ29tbWFuZH1cbiAgICovXG4gIGRpc3NvY2lhdGVQYWNrYWdlcyhcbiAgICBhcmdzOiBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNzb2NpYXRlUGFja2FnZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb24oXG4gICAgYXJnczogR2V0QXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0Q29tcGF0aWJsZVZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGdldENvbXBhdGlibGVWZXJzaW9ucyhcbiAgICBhcmdzOiBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDb21wYXRpYmxlVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBnZXREYXRhU291cmNlKFxuICAgIGFyZ3M6IEdldERhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXREYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICBnZXREaXJlY3RRdWVyeURhdGFTb3VyY2UoXG4gICAgYXJnczogR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzKFxuICAgIGFyZ3M6IEdldERvbWFpbk1haW50ZW5hbmNlU3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RG9tYWluTWFpbnRlbmFuY2VTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGFja2FnZVZlcnNpb25IaXN0b3J5Q29tbWFuZH1cbiAgICovXG4gIGdldFBhY2thZ2VWZXJzaW9uSGlzdG9yeShcbiAgICBhcmdzOiBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQYWNrYWdlVmVyc2lvbkhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZH1cbiAgICovXG4gIGdldFVwZ3JhZGVIaXN0b3J5KFxuICAgIGFyZ3M6IEdldFVwZ3JhZGVIaXN0b3J5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0VXBncmFkZUhpc3RvcnlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VXBncmFkZVN0YXR1c0NvbW1hbmR9XG4gICAqL1xuICBnZXRVcGdyYWRlU3RhdHVzKFxuICAgIGFyZ3M6IEdldFVwZ3JhZGVTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRVcGdyYWRlU3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBcHBsaWNhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFwcGxpY2F0aW9ucyhcbiAgICBhcmdzOiBMaXN0QXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEFwcGxpY2F0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERhdGFTb3VyY2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REYXRhU291cmNlcyhcbiAgICBhcmdzOiBMaXN0RGF0YVNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RGF0YVNvdXJjZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGVwZW5kZW5jeUZhaWx1cmVFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXMoXG4gICAgYXJnczogTGlzdERpcmVjdFF1ZXJ5RGF0YVNvdXJjZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RGlyZWN0UXVlcnlEYXRhU291cmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RG9tYWluTWFpbnRlbmFuY2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REb21haW5NYWludGVuYW5jZXMoXG4gICAgYXJnczogTGlzdERvbWFpbk1haW50ZW5hbmNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REb21haW5NYWludGVuYW5jZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdERvbWFpbk5hbWVzQ29tbWFuZH1cbiAgICovXG4gIGxpc3REb21haW5OYW1lcyhcbiAgICBhcmdzOiBMaXN0RG9tYWluTmFtZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RG9tYWluTmFtZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQmFzZUVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3REb21haW5zRm9yUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICBsaXN0RG9tYWluc0ZvclBhY2thZ2UoXG4gICAgYXJnczogTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdERvbWFpbnNGb3JQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0SW5zdGFuY2VUeXBlRGV0YWlscyhcbiAgICBhcmdzOiBMaXN0SW5zdGFuY2VUeXBlRGV0YWlsc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RJbnN0YW5jZVR5cGVEZXRhaWxzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQYWNrYWdlc0ZvckRvbWFpbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0UGFja2FnZXNGb3JEb21haW4oXG4gICAgYXJnczogTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFBhY2thZ2VzRm9yRG9tYWluQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U2NoZWR1bGVkQWN0aW9ucyhcbiAgICBhcmdzOiBMaXN0U2NoZWR1bGVkQWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RTY2hlZHVsZWRBY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYWdpbmF0aW9uVG9rZW5FcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFRhZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3MoXG4gICAgYXJnczogTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFZlcnNpb25zKFxuICAgIGFyZ3M6IExpc3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFZwY0VuZHBvaW50QWNjZXNzKFxuICAgIGFyZ3M6IExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWcGNFbmRwb2ludEFjY2Vzc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZwY0VuZHBvaW50c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VnBjRW5kcG9pbnRzKFxuICAgIGFyZ3M6IExpc3RWcGNFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VnBjRW5kcG9pbnRzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJhc2VFcnJvciB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWcGNFbmRwb2ludHNGb3JEb21haW5Db21tYW5kfVxuICAgKi9cbiAgbGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbihcbiAgICBhcmdzOiBMaXN0VnBjRW5kcG9pbnRzRm9yRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZwY0VuZHBvaW50c0ZvckRvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kfVxuICAgKi9cbiAgcHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmcoXG4gICAgYXJnczogUHVyY2hhc2VSZXNlcnZlZEluc3RhbmNlT2ZmZXJpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXJjaGFzZVJlc2VydmVkSW5zdGFuY2VPZmZlcmluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgcmVqZWN0SW5ib3VuZENvbm5lY3Rpb24oXG4gICAgYXJnczogUmVqZWN0SW5ib3VuZENvbm5lY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZWplY3RJbmJvdW5kQ29ubmVjdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVRhZ3NDb21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlVGFncyhcbiAgICBhcmdzOiBSZW1vdmVUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlVGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBCYXNlRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZH1cbiAgICovXG4gIHJldm9rZVZwY0VuZHBvaW50QWNjZXNzKFxuICAgIGFyZ3M6IFJldm9rZVZwY0VuZHBvaW50QWNjZXNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmV2b2tlVnBjRW5kcG9pbnRBY2Nlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RhcnREb21haW5NYWludGVuYW5jZUNvbW1hbmR9XG4gICAqL1xuICBzdGFydERvbWFpbk1haW50ZW5hbmNlKFxuICAgIGFyZ3M6IFN0YXJ0RG9tYWluTWFpbnRlbmFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdGFydERvbWFpbk1haW50ZW5hbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlKFxuICAgIGFyZ3M6IFN0YXJ0U2VydmljZVNvZnR3YXJlVXBkYXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnRTZXJ2aWNlU29mdHdhcmVVcGRhdGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQXBwbGljYXRpb24oXG4gICAgYXJnczogVXBkYXRlQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEJhc2VFcnJvclxuICAgIHwgQ29uZmxpY3RFcnJvclxuICAgIHwgRGlzYWJsZWRPcGVyYXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEYXRhU291cmNlKFxuICAgIGFyZ3M6IFVwZGF0ZURhdGFTb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERlcGVuZGVuY3lGYWlsdXJlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURpcmVjdFF1ZXJ5RGF0YVNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEaXJlY3RRdWVyeURhdGFTb3VyY2UoXG4gICAgYXJnczogVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRGlyZWN0UXVlcnlEYXRhU291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZURvbWFpbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVEb21haW5Db25maWcoXG4gICAgYXJnczogVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRG9tYWluQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRUeXBlRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlUGFja2FnZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQYWNrYWdlKFxuICAgIGFyZ3M6IFVwZGF0ZVBhY2thZ2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVQYWNrYWdlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVBhY2thZ2VTY29wZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVQYWNrYWdlU2NvcGUoXG4gICAgYXJnczogVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlUGFja2FnZVNjb3BlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZVNjaGVkdWxlZEFjdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVTY2hlZHVsZWRBY3Rpb24oXG4gICAgYXJnczogVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlU2NoZWR1bGVkQWN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IExpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTbG90Tm90QXZhaWxhYmxlRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVWcGNFbmRwb2ludChcbiAgICBhcmdzOiBVcGRhdGVWcGNFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZVZwY0VuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCYXNlRXJyb3JcbiAgICB8IENvbmZsaWN0RXJyb3JcbiAgICB8IERpc2FibGVkT3BlcmF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZ3JhZGVEb21haW5Db21tYW5kfVxuICAgKi9cbiAgdXBncmFkZURvbWFpbihcbiAgICBhcmdzOiBVcGdyYWRlRG9tYWluQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBncmFkZURvbWFpbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmFzZUVycm9yXG4gICAgfCBEaXNhYmxlZE9wZXJhdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBSZXNvdXJjZUFscmVhZHlFeGlzdHNFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VPcGVuU2VhcmNoU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIE9wZW5TZWFyY2hTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPE9wZW5TZWFyY2hTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBPcGVuU2VhcmNoU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5TZWFyY2hTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlRhZyhcbiAgXCJAZWZmZWN0LWF3cy9jbGllbnQtb3BlbnNlYXJjaC9PcGVuU2VhcmNoU2VydmljZVwiLFxuKTxPcGVuU2VhcmNoU2VydmljZSwgT3BlblNlYXJjaFNlcnZpY2UkPigpIHtcbiAgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRMYXllciA9IExheWVyLmVmZmVjdCh0aGlzLCBtYWtlT3BlblNlYXJjaFNlcnZpY2UpLnBpcGUoXG4gICAgTGF5ZXIucHJvdmlkZShPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgTGF5ZXIucHJvdmlkZShEZWZhdWx0T3BlblNlYXJjaENsaWVudENvbmZpZ0xheWVyKSxcbiAgKTtcbiAgc3RhdGljIHJlYWRvbmx5IGxheWVyID0gKGNvbmZpZzogT3BlblNlYXJjaENsaWVudENvbmZpZykgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZU9wZW5TZWFyY2hTZXJ2aWNlKS5waXBlKFxuICAgICAgTGF5ZXIucHJvdmlkZShPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgICBMYXllci5wcm92aWRlKFxuICAgICAgICBMYXllci5lZmZlY3QoXG4gICAgICAgICAgT3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLFxuICAgICAgICAgIG1ha2VEZWZhdWx0T3BlblNlYXJjaENsaWVudEluc3RhbmNlQ29uZmlnLnBpcGUoXG4gICAgICAgICAgICBFZmZlY3QubWFwKChkZWZhdWx0Q29uZmlnKSA9PiAoeyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIHN0YXRpYyByZWFkb25seSBiYXNlTGF5ZXIgPSAoXG4gICAgZXZhbHVhdGU6IChkZWZhdWx0Q29uZmlnOiBPcGVuU2VhcmNoQ2xpZW50Q29uZmlnKSA9PiBPcGVuU2VhcmNoQ2xpZW50LFxuICApID0+XG4gICAgTGF5ZXIuZWZmZWN0KHRoaXMsIG1ha2VPcGVuU2VhcmNoU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoXG4gICAgICAgIExheWVyLmVmZmVjdChcbiAgICAgICAgICBPcGVuU2VhcmNoQ2xpZW50SW5zdGFuY2UsXG4gICAgICAgICAgRWZmZWN0Lm1hcChtYWtlRGVmYXVsdE9wZW5TZWFyY2hDbGllbnRJbnN0YW5jZUNvbmZpZywgZXZhbHVhdGUpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICogQGFsaWFzIE9wZW5TZWFyY2hTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjb25zdCBPcGVuU2VhcmNoID0gT3BlblNlYXJjaFNlcnZpY2U7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgT3BlblNlYXJjaC5iYXNlTGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgQmFzZU9wZW5TZWFyY2hTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIE9wZW5TZWFyY2hTZXJ2aWNlLFxuICBtYWtlT3BlblNlYXJjaFNlcnZpY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICogQGRlcHJlY2F0ZWQgdXNlIE9wZW5TZWFyY2gubGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgT3BlblNlYXJjaFNlcnZpY2VMYXllciA9IEJhc2VPcGVuU2VhcmNoU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoT3BlblNlYXJjaENsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBPcGVuU2VhcmNoLmRlZmF1bHRMYXllciBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0T3BlblNlYXJjaFNlcnZpY2VMYXllciA9IE9wZW5TZWFyY2hTZXJ2aWNlLmRlZmF1bHRMYXllcjtcbiJdfQ==
|