@effect-aws/client-lambda 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-aws/client-lambda
2
2
 
3
+ ## 1.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#75](https://github.com/floydspace/effect-aws/pull/75) [`9dc170d`](https://github.com/floydspace/effect-aws/commit/9dc170d975c04888bbc7ca7b241b4b5265668fb5) Thanks [@godu](https://github.com/godu)! - export the HttpHandlerOptions type
8
+
3
9
  ## 1.5.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # @effect-aws/client-lambda
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/%40effect-aws%2Fclient-lambda?color=brightgreen&label=npm%20package)](https://www.npmjs.com/package/@effect-aws/client-lambda)
4
+ [![npm downloads](https://img.shields.io/npm/dm/%40effect-aws%2Fclient-lambda)](https://www.npmjs.com/package/@effect-aws/client-lambda)
5
+
3
6
  ## Installation
4
7
 
5
8
  ```bash
@@ -11,7 +14,10 @@ npm install --save @effect-aws/client-lambda
11
14
  With default LambdaClient instance:
12
15
 
13
16
  ```typescript
14
- import { LambdaService, DefaultLambdaServiceLayer } from "@effect-aws/client-lambda";
17
+ import {
18
+ LambdaService,
19
+ DefaultLambdaServiceLayer,
20
+ } from "@effect-aws/client-lambda";
15
21
 
16
22
  const program = LambdaService.invoke(args);
17
23
 
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { type AddLayerVersionPermissionCommandInput, type AddLayerVersionPermissionCommandOutput, type AddPermissionCommandInput, type AddPermissionCommandOutput, type CreateAliasCommandInput, type CreateAliasCommandOutput, type CreateCodeSigningConfigCommandInput, type CreateCodeSigningConfigCommandOutput, type CreateEventSourceMappingCommandInput, type CreateEventSourceMappingCommandOutput, type CreateFunctionCommandInput, type CreateFunctionCommandOutput, type CreateFunctionUrlConfigCommandInput, type CreateFunctionUrlConfigCommandOutput, type DeleteAliasCommandInput, type DeleteAliasCommandOutput, type DeleteCodeSigningConfigCommandInput, type DeleteCodeSigningConfigCommandOutput, type DeleteEventSourceMappingCommandInput, type DeleteEventSourceMappingCommandOutput, type DeleteFunctionCommandInput, type DeleteFunctionCommandOutput, type DeleteFunctionCodeSigningConfigCommandInput, type DeleteFunctionCodeSigningConfigCommandOutput, type DeleteFunctionConcurrencyCommandInput, type DeleteFunctionConcurrencyCommandOutput, type DeleteFunctionEventInvokeConfigCommandInput, type DeleteFunctionEventInvokeConfigCommandOutput, type DeleteFunctionUrlConfigCommandInput, type DeleteFunctionUrlConfigCommandOutput, type DeleteLayerVersionCommandInput, type DeleteLayerVersionCommandOutput, type DeleteProvisionedConcurrencyConfigCommandInput, type DeleteProvisionedConcurrencyConfigCommandOutput, type GetAccountSettingsCommandInput, type GetAccountSettingsCommandOutput, type GetAliasCommandInput, type GetAliasCommandOutput, type GetCodeSigningConfigCommandInput, type GetCodeSigningConfigCommandOutput, type GetEventSourceMappingCommandInput, type GetEventSourceMappingCommandOutput, type GetFunctionCommandInput, type GetFunctionCommandOutput, type GetFunctionCodeSigningConfigCommandInput, type GetFunctionCodeSigningConfigCommandOutput, type GetFunctionConcurrencyCommandInput, type GetFunctionConcurrencyCommandOutput, type GetFunctionConfigurationCommandInput, type GetFunctionConfigurationCommandOutput, type GetFunctionEventInvokeConfigCommandInput, type GetFunctionEventInvokeConfigCommandOutput, type GetFunctionRecursionConfigCommandInput, type GetFunctionRecursionConfigCommandOutput, type GetFunctionUrlConfigCommandInput, type GetFunctionUrlConfigCommandOutput, type GetLayerVersionCommandInput, type GetLayerVersionCommandOutput, type GetLayerVersionByArnCommandInput, type GetLayerVersionByArnCommandOutput, type GetLayerVersionPolicyCommandInput, type GetLayerVersionPolicyCommandOutput, type GetPolicyCommandInput, type GetPolicyCommandOutput, type GetProvisionedConcurrencyConfigCommandInput, type GetProvisionedConcurrencyConfigCommandOutput, type GetRuntimeManagementConfigCommandInput, type GetRuntimeManagementConfigCommandOutput, type InvokeCommandInput, type InvokeCommandOutput, type InvokeAsyncCommandInput, type InvokeAsyncCommandOutput, type InvokeWithResponseStreamCommandInput, type InvokeWithResponseStreamCommandOutput, type ListAliasesCommandInput, type ListAliasesCommandOutput, type ListCodeSigningConfigsCommandInput, type ListCodeSigningConfigsCommandOutput, type ListEventSourceMappingsCommandInput, type ListEventSourceMappingsCommandOutput, type ListFunctionEventInvokeConfigsCommandInput, type ListFunctionEventInvokeConfigsCommandOutput, type ListFunctionsCommandInput, type ListFunctionsCommandOutput, type ListFunctionsByCodeSigningConfigCommandInput, type ListFunctionsByCodeSigningConfigCommandOutput, type ListFunctionUrlConfigsCommandInput, type ListFunctionUrlConfigsCommandOutput, type ListLayersCommandInput, type ListLayersCommandOutput, type ListLayerVersionsCommandInput, type ListLayerVersionsCommandOutput, type ListProvisionedConcurrencyConfigsCommandInput, type ListProvisionedConcurrencyConfigsCommandOutput, type ListTagsCommandInput, type ListTagsCommandOutput, type ListVersionsByFunctionCommandInput, type ListVersionsByFunctionCommandOutput, type PublishLayerVersionCommandInput, type PublishLayerVersionCommandOutput, type PublishVersionCommandInput, type PublishVersionCommandOutput, type PutFunctionCodeSigningConfigCommandInput, type PutFunctionCodeSigningConfigCommandOutput, type PutFunctionConcurrencyCommandInput, type PutFunctionConcurrencyCommandOutput, type PutFunctionEventInvokeConfigCommandInput, type PutFunctionEventInvokeConfigCommandOutput, type PutFunctionRecursionConfigCommandInput, type PutFunctionRecursionConfigCommandOutput, type PutProvisionedConcurrencyConfigCommandInput, type PutProvisionedConcurrencyConfigCommandOutput, type PutRuntimeManagementConfigCommandInput, type PutRuntimeManagementConfigCommandOutput, type RemoveLayerVersionPermissionCommandInput, type RemoveLayerVersionPermissionCommandOutput, type RemovePermissionCommandInput, type RemovePermissionCommandOutput, type TagResourceCommandInput, type TagResourceCommandOutput, type UntagResourceCommandInput, type UntagResourceCommandOutput, type UpdateAliasCommandInput, type UpdateAliasCommandOutput, type UpdateCodeSigningConfigCommandInput, type UpdateCodeSigningConfigCommandOutput, type UpdateEventSourceMappingCommandInput, type UpdateEventSourceMappingCommandOutput, type UpdateFunctionCodeCommandInput, type UpdateFunctionCodeCommandOutput, type UpdateFunctionConfigurationCommandInput, type UpdateFunctionConfigurationCommandOutput, type UpdateFunctionEventInvokeConfigCommandInput, type UpdateFunctionEventInvokeConfigCommandOutput, type UpdateFunctionUrlConfigCommandInput, type UpdateFunctionUrlConfigCommandOutput } from "@aws-sdk/client-lambda";
4
+ import { type AddLayerVersionPermissionCommandInput, type AddLayerVersionPermissionCommandOutput, type AddPermissionCommandInput, type AddPermissionCommandOutput, type CreateAliasCommandInput, type CreateAliasCommandOutput, type CreateCodeSigningConfigCommandInput, type CreateCodeSigningConfigCommandOutput, type CreateEventSourceMappingCommandInput, type CreateEventSourceMappingCommandOutput, type CreateFunctionCommandInput, type CreateFunctionCommandOutput, type CreateFunctionUrlConfigCommandInput, type CreateFunctionUrlConfigCommandOutput, type DeleteAliasCommandInput, type DeleteAliasCommandOutput, type DeleteCodeSigningConfigCommandInput, type DeleteCodeSigningConfigCommandOutput, type DeleteEventSourceMappingCommandInput, type DeleteEventSourceMappingCommandOutput, type DeleteFunctionCommandInput, type DeleteFunctionCommandOutput, type DeleteFunctionCodeSigningConfigCommandInput, type DeleteFunctionCodeSigningConfigCommandOutput, type DeleteFunctionConcurrencyCommandInput, type DeleteFunctionConcurrencyCommandOutput, type DeleteFunctionEventInvokeConfigCommandInput, type DeleteFunctionEventInvokeConfigCommandOutput, type DeleteFunctionUrlConfigCommandInput, type DeleteFunctionUrlConfigCommandOutput, type DeleteLayerVersionCommandInput, type DeleteLayerVersionCommandOutput, type DeleteProvisionedConcurrencyConfigCommandInput, type DeleteProvisionedConcurrencyConfigCommandOutput, type GetAccountSettingsCommandInput, type GetAccountSettingsCommandOutput, type GetAliasCommandInput, type GetAliasCommandOutput, type GetCodeSigningConfigCommandInput, type GetCodeSigningConfigCommandOutput, type GetEventSourceMappingCommandInput, type GetEventSourceMappingCommandOutput, type GetFunctionCommandInput, type GetFunctionCommandOutput, type GetFunctionCodeSigningConfigCommandInput, type GetFunctionCodeSigningConfigCommandOutput, type GetFunctionConcurrencyCommandInput, type GetFunctionConcurrencyCommandOutput, type GetFunctionConfigurationCommandInput, type GetFunctionConfigurationCommandOutput, type GetFunctionEventInvokeConfigCommandInput, type GetFunctionEventInvokeConfigCommandOutput, type GetFunctionRecursionConfigCommandInput, type GetFunctionRecursionConfigCommandOutput, type GetFunctionUrlConfigCommandInput, type GetFunctionUrlConfigCommandOutput, type GetLayerVersionCommandInput, type GetLayerVersionCommandOutput, type GetLayerVersionByArnCommandInput, type GetLayerVersionByArnCommandOutput, type GetLayerVersionPolicyCommandInput, type GetLayerVersionPolicyCommandOutput, type GetPolicyCommandInput, type GetPolicyCommandOutput, type GetProvisionedConcurrencyConfigCommandInput, type GetProvisionedConcurrencyConfigCommandOutput, type GetRuntimeManagementConfigCommandInput, type GetRuntimeManagementConfigCommandOutput, type InvokeCommandInput, type InvokeCommandOutput, type InvokeAsyncCommandInput, type InvokeAsyncCommandOutput, type InvokeWithResponseStreamCommandInput, type InvokeWithResponseStreamCommandOutput, type ListAliasesCommandInput, type ListAliasesCommandOutput, type ListCodeSigningConfigsCommandInput, type ListCodeSigningConfigsCommandOutput, type ListEventSourceMappingsCommandInput, type ListEventSourceMappingsCommandOutput, type ListFunctionEventInvokeConfigsCommandInput, type ListFunctionEventInvokeConfigsCommandOutput, type ListFunctionUrlConfigsCommandInput, type ListFunctionUrlConfigsCommandOutput, type ListFunctionsCommandInput, type ListFunctionsCommandOutput, type ListFunctionsByCodeSigningConfigCommandInput, type ListFunctionsByCodeSigningConfigCommandOutput, type ListLayerVersionsCommandInput, type ListLayerVersionsCommandOutput, type ListLayersCommandInput, type ListLayersCommandOutput, type ListProvisionedConcurrencyConfigsCommandInput, type ListProvisionedConcurrencyConfigsCommandOutput, type ListTagsCommandInput, type ListTagsCommandOutput, type ListVersionsByFunctionCommandInput, type ListVersionsByFunctionCommandOutput, type PublishLayerVersionCommandInput, type PublishLayerVersionCommandOutput, type PublishVersionCommandInput, type PublishVersionCommandOutput, type PutFunctionCodeSigningConfigCommandInput, type PutFunctionCodeSigningConfigCommandOutput, type PutFunctionConcurrencyCommandInput, type PutFunctionConcurrencyCommandOutput, type PutFunctionEventInvokeConfigCommandInput, type PutFunctionEventInvokeConfigCommandOutput, type PutFunctionRecursionConfigCommandInput, type PutFunctionRecursionConfigCommandOutput, type PutProvisionedConcurrencyConfigCommandInput, type PutProvisionedConcurrencyConfigCommandOutput, type PutRuntimeManagementConfigCommandInput, type PutRuntimeManagementConfigCommandOutput, type RemoveLayerVersionPermissionCommandInput, type RemoveLayerVersionPermissionCommandOutput, type RemovePermissionCommandInput, type RemovePermissionCommandOutput, type TagResourceCommandInput, type TagResourceCommandOutput, type UntagResourceCommandInput, type UntagResourceCommandOutput, type UpdateAliasCommandInput, type UpdateAliasCommandOutput, type UpdateCodeSigningConfigCommandInput, type UpdateCodeSigningConfigCommandOutput, type UpdateEventSourceMappingCommandInput, type UpdateEventSourceMappingCommandOutput, type UpdateFunctionCodeCommandInput, type UpdateFunctionCodeCommandOutput, type UpdateFunctionConfigurationCommandInput, type UpdateFunctionConfigurationCommandOutput, type UpdateFunctionEventInvokeConfigCommandInput, type UpdateFunctionEventInvokeConfigCommandOutput, type UpdateFunctionUrlConfigCommandInput, type UpdateFunctionUrlConfigCommandOutput } from "@aws-sdk/client-lambda";
5
5
  import { Effect, Layer } from "effect";
6
6
  import { CodeSigningConfigNotFoundError, CodeStorageExceededError, CodeVerificationFailedError, EC2AccessDeniedError, EC2ThrottledError, EC2UnexpectedError, EFSIOError, EFSMountConnectivityError, EFSMountFailureError, EFSMountTimeoutError, ENILimitReachedError, InvalidCodeSignatureError, InvalidParameterValueError, InvalidRequestContentError, InvalidRuntimeError, InvalidSecurityGroupIDError, InvalidSubnetIDError, InvalidZipFileError, KMSAccessDeniedError, KMSDisabledError, KMSInvalidStateError, KMSNotFoundError, PolicyLengthExceededError, PreconditionFailedError, ProvisionedConcurrencyConfigNotFoundError, RecursiveInvocationError, RequestTooLargeError, ResourceConflictError, ResourceInUseError, ResourceNotFoundError, ResourceNotReadyError, ServiceError, SnapStartError, SnapStartNotReadyError, SnapStartTimeoutError, SubnetIPAddressLimitReachedError, TooManyRequestsError, UnsupportedMediaTypeError, SdkError } from "./Errors";
7
7
  import { LambdaClientInstance } from "./LambdaClientInstance";
8
- interface HttpHandlerOptions {
8
+ /**
9
+ * @since 1.5.1
10
+ */
11
+ export interface HttpHandlerOptions {
9
12
  /**
10
13
  * The maximum time in milliseconds that the connection phase of a request
11
14
  * may take before the connection attempt is abandoned.
@@ -178,6 +181,10 @@ interface LambdaService$ {
178
181
  * @see {@link ListFunctionEventInvokeConfigsCommand}
179
182
  */
180
183
  listFunctionEventInvokeConfigs(args: ListFunctionEventInvokeConfigsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListFunctionEventInvokeConfigsCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError>;
184
+ /**
185
+ * @see {@link ListFunctionUrlConfigsCommand}
186
+ */
187
+ listFunctionUrlConfigs(args: ListFunctionUrlConfigsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListFunctionUrlConfigsCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError>;
181
188
  /**
182
189
  * @see {@link ListFunctionsCommand}
183
190
  */
@@ -187,17 +194,13 @@ interface LambdaService$ {
187
194
  */
188
195
  listFunctionsByCodeSigningConfig(args: ListFunctionsByCodeSigningConfigCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListFunctionsByCodeSigningConfigCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError>;
189
196
  /**
190
- * @see {@link ListFunctionUrlConfigsCommand}
197
+ * @see {@link ListLayerVersionsCommand}
191
198
  */
192
- listFunctionUrlConfigs(args: ListFunctionUrlConfigsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListFunctionUrlConfigsCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError>;
199
+ listLayerVersions(args: ListLayerVersionsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListLayerVersionsCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError>;
193
200
  /**
194
201
  * @see {@link ListLayersCommand}
195
202
  */
196
203
  listLayers(args: ListLayersCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListLayersCommandOutput, SdkError | InvalidParameterValueError | ServiceError | TooManyRequestsError>;
197
- /**
198
- * @see {@link ListLayerVersionsCommand}
199
- */
200
- listLayerVersions(args: ListLayerVersionsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListLayerVersionsCommandOutput, SdkError | InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError>;
201
204
  /**
202
205
  * @see {@link ListProvisionedConcurrencyConfigsCommand}
203
206
  */
@@ -330,11 +333,11 @@ declare const LambdaService_base: import("effect/Context").TagClass<LambdaServic
330
333
  listCodeSigningConfigs: (args: ListCodeSigningConfigsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListCodeSigningConfigsCommandOutput, InvalidParameterValueError | ServiceError | SdkError, LambdaService>;
331
334
  listEventSourceMappings: (args: ListEventSourceMappingsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListEventSourceMappingsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
332
335
  listFunctionEventInvokeConfigs: (args: ListFunctionEventInvokeConfigsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListFunctionEventInvokeConfigsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
336
+ listFunctionUrlConfigs: (args: ListFunctionUrlConfigsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListFunctionUrlConfigsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
333
337
  listFunctions: (args: ListFunctionsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListFunctionsCommandOutput, InvalidParameterValueError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
334
338
  listFunctionsByCodeSigningConfig: (args: ListFunctionsByCodeSigningConfigCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListFunctionsByCodeSigningConfigCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | SdkError, LambdaService>;
335
- listFunctionUrlConfigs: (args: ListFunctionUrlConfigsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListFunctionUrlConfigsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
336
- listLayers: (args: ListLayersCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListLayersCommandOutput, InvalidParameterValueError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
337
339
  listLayerVersions: (args: ListLayerVersionsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListLayerVersionsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
340
+ listLayers: (args: ListLayersCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListLayersCommandOutput, InvalidParameterValueError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
338
341
  listProvisionedConcurrencyConfigs: (args: ListProvisionedConcurrencyConfigsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListProvisionedConcurrencyConfigsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
339
342
  listTags: (args: ListTagsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListTagsCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
340
343
  listVersionsByFunction: (args: ListVersionsByFunctionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListVersionsByFunctionCommandOutput, InvalidParameterValueError | ResourceNotFoundError | ServiceError | TooManyRequestsError | SdkError, LambdaService>;
@@ -51,11 +51,11 @@ const commands = {
51
51
  ListCodeSigningConfigsCommand: client_lambda_1.ListCodeSigningConfigsCommand,
52
52
  ListEventSourceMappingsCommand: client_lambda_1.ListEventSourceMappingsCommand,
53
53
  ListFunctionEventInvokeConfigsCommand: client_lambda_1.ListFunctionEventInvokeConfigsCommand,
54
+ ListFunctionUrlConfigsCommand: client_lambda_1.ListFunctionUrlConfigsCommand,
54
55
  ListFunctionsCommand: client_lambda_1.ListFunctionsCommand,
55
56
  ListFunctionsByCodeSigningConfigCommand: client_lambda_1.ListFunctionsByCodeSigningConfigCommand,
56
- ListFunctionUrlConfigsCommand: client_lambda_1.ListFunctionUrlConfigsCommand,
57
- ListLayersCommand: client_lambda_1.ListLayersCommand,
58
57
  ListLayerVersionsCommand: client_lambda_1.ListLayerVersionsCommand,
58
+ ListLayersCommand: client_lambda_1.ListLayersCommand,
59
59
  ListProvisionedConcurrencyConfigsCommand: client_lambda_1.ListProvisionedConcurrencyConfigsCommand,
60
60
  ListTagsCommand: client_lambda_1.ListTagsCommand,
61
61
  ListVersionsByFunctionCommand: client_lambda_1.ListVersionsByFunctionCommand,
@@ -139,4 +139,4 @@ exports.LambdaServiceLayer = exports.BaseLambdaServiceLayer.pipe(effect_1.Layer.
139
139
  * @category layers
140
140
  */
141
141
  exports.DefaultLambdaServiceLayer = exports.LambdaServiceLayer.pipe(effect_1.Layer.provide(LambdaClientInstanceConfig_1.DefaultLambdaClientConfigLayer));
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsMERBOE1nQztBQUNoQyxtQ0FBcUQ7QUFDckQscUNBMENrQjtBQUNsQixpRUFHZ0M7QUFDaEMsNkVBQThFO0FBVTlFLE1BQU0sUUFBUSxHQUFHO0lBQ2YsZ0NBQWdDLEVBQWhDLGdEQUFnQztJQUNoQyxvQkFBb0IsRUFBcEIsb0NBQW9CO0lBQ3BCLGtCQUFrQixFQUFsQixrQ0FBa0I7SUFDbEIsOEJBQThCLEVBQTlCLDhDQUE4QjtJQUM5QiwrQkFBK0IsRUFBL0IsK0NBQStCO0lBQy9CLHFCQUFxQixFQUFyQixxQ0FBcUI7SUFDckIsOEJBQThCLEVBQTlCLDhDQUE4QjtJQUM5QixrQkFBa0IsRUFBbEIsa0NBQWtCO0lBQ2xCLDhCQUE4QixFQUE5Qiw4Q0FBOEI7SUFDOUIsK0JBQStCLEVBQS9CLCtDQUErQjtJQUMvQixxQkFBcUIsRUFBckIscUNBQXFCO0lBQ3JCLHNDQUFzQyxFQUF0QyxzREFBc0M7SUFDdEMsZ0NBQWdDLEVBQWhDLGdEQUFnQztJQUNoQyxzQ0FBc0MsRUFBdEMsc0RBQXNDO0lBQ3RDLDhCQUE4QixFQUE5Qiw4Q0FBOEI7SUFDOUIseUJBQXlCLEVBQXpCLHlDQUF5QjtJQUN6Qix5Q0FBeUMsRUFBekMseURBQXlDO0lBQ3pDLHlCQUF5QixFQUF6Qix5Q0FBeUI7SUFDekIsZUFBZSxFQUFmLCtCQUFlO0lBQ2YsMkJBQTJCLEVBQTNCLDJDQUEyQjtJQUMzQiw0QkFBNEIsRUFBNUIsNENBQTRCO0lBQzVCLGtCQUFrQixFQUFsQixrQ0FBa0I7SUFDbEIsbUNBQW1DLEVBQW5DLG1EQUFtQztJQUNuQyw2QkFBNkIsRUFBN0IsNkNBQTZCO0lBQzdCLCtCQUErQixFQUEvQiwrQ0FBK0I7SUFDL0IsbUNBQW1DLEVBQW5DLG1EQUFtQztJQUNuQyxpQ0FBaUMs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QUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHlCQUF5QixHQUFHLDBCQUFrQixDQUFDLElBQUksQ0FDOUQsY0FBSyxDQUFDLE9BQU8sQ0FBQywyREFBOEIsQ0FBQyxDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgTGFtYmRhU2VydmljZUV4Y2VwdGlvbixcbiAgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQWRkUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIERlbGV0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCxcbiAgdHlwZSBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgR2V0QWxpYXNDb21tYW5kLFxuICB0eXBlIEdldEFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEFsaWFzQ29tbWFuZE91dHB1dCxcbiAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlQXN5bmNDb21tYW5kLFxuICB0eXBlIEludm9rZUFzeW5jQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUFzeW5jQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgTGlzdEFsaWFzZXNDb21tYW5kLFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kLFxuICB0eXBlIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdExheWVyc0NvbW1hbmQsXG4gIHR5cGUgTGlzdExheWVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0TGF5ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIExpc3RMYXllclZlcnNpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RMYXllclZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NDb21tYW5kLFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1sYW1iZGFcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvcixcbiAgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yLFxuICBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3IsXG4gIEVDMkFjY2Vzc0RlbmllZEVycm9yLFxuICBFQzJUaHJvdHRsZWRFcnJvcixcbiAgRUMyVW5leHBlY3RlZEVycm9yLFxuICBFRlNJT0Vycm9yLFxuICBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yLFxuICBFRlNNb3VudEZhaWx1cmVFcnJvcixcbiAgRUZTTW91bnRUaW1lb3V0RXJyb3IsXG4gIEVOSUxpbWl0UmVhY2hlZEVycm9yLFxuICBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3IsXG4gIEludmFsaWRSdW50aW1lRXJyb3IsXG4gIEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvcixcbiAgSW52YWxpZFN1Ym5ldElERXJyb3IsXG4gIEludmFsaWRaaXBGaWxlRXJyb3IsXG4gIEtNU0FjY2Vzc0RlbmllZEVycm9yLFxuICBLTVNEaXNhYmxlZEVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS01TTm90Rm91bmRFcnJvcixcbiAgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvcixcbiAgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3IsXG4gIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEVycm9yLFxuICBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3IsXG4gIFJlcXVlc3RUb29MYXJnZUVycm9yLFxuICBSZXNvdXJjZUNvbmZsaWN0RXJyb3IsXG4gIFJlc291cmNlSW5Vc2VFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBSZXNvdXJjZU5vdFJlYWR5RXJyb3IsXG4gIFNlcnZpY2VFcnJvcixcbiAgU25hcFN0YXJ0RXJyb3IsXG4gIFNuYXBTdGFydE5vdFJlYWR5RXJyb3IsXG4gIFNuYXBTdGFydFRpbWVvdXRFcnJvcixcbiAgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3IsXG4gIFRvb01hbnlSZXF1ZXN0c0Vycm9yLFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7XG4gIExhbWJkYUNsaWVudEluc3RhbmNlLFxuICBMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9MYW1iZGFDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuaW50ZXJmYWNlIEh0dHBIYW5kbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBjb25uZWN0aW9uIHBoYXNlIG9mIGEgcmVxdWVzdFxuICAgKiBtYXkgdGFrZSBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBpcyBhYmFuZG9uZWQuXG4gICAqL1xuICByZXF1ZXN0VGltZW91dD86IG51bWJlcjtcbn1cblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQsXG4gIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICBHZXRBbGlhc0NvbW1hbmQsXG4gIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db21tYW5kLFxuICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kLFxuICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kLFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICBJbnZva2VDb21tYW5kLFxuICBJbnZva2VBc3luY0NvbW1hbmQsXG4gIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RMYXllcnNDb21tYW5kLFxuICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQsXG4gIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kLFxuICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBMYW1iZGFTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgYWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbihcbiAgICBhcmdzOiBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFBvbGljeUxlbmd0aEV4Y2VlZGVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRQZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIGFkZFBlcm1pc3Npb24oXG4gICAgYXJnczogQWRkUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVGdW5jdGlvbihcbiAgICBhcmdzOiBDcmVhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUFsaWFzKFxuICAgIGFyZ3M6IERlbGV0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlSW5Vc2VFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeShcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVMYXllclZlcnNpb24oXG4gICAgYXJnczogRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmR9XG4gICAqL1xuICBnZXRBY2NvdW50U2V0dGluZ3MoXG4gICAgYXJnczogR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGdldEFsaWFzKFxuICAgIGFyZ3M6IEdldEFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0Q29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbihcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmR9XG4gICAqL1xuICBnZXRMYXllclZlcnNpb25CeUFybihcbiAgICBhcmdzOiBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRMYXllclZlcnNpb25Qb2xpY3koXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRQb2xpY3koXG4gICAgYXJnczogR2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZyhcbiAgICBhcmdzOiBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0UnVudGltZU1hbmFnZW1lbnRDb25maWcoXG4gICAgYXJnczogR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbnZva2VDb21tYW5kfVxuICAgKi9cbiAgaW52b2tlKFxuICAgIGFyZ3M6IEludm9rZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEludm9rZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRUMyQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEVDMlRocm90dGxlZEVycm9yXG4gICAgfCBFQzJVbmV4cGVjdGVkRXJyb3JcbiAgICB8IEVGU0lPRXJyb3JcbiAgICB8IEVGU01vdW50Q29ubmVjdGl2aXR5RXJyb3JcbiAgICB8IEVGU01vdW50RmFpbHVyZUVycm9yXG4gICAgfCBFRlNNb3VudFRpbWVvdXRFcnJvclxuICAgIHwgRU5JTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvclxuICAgIHwgSW52YWxpZFJ1bnRpbWVFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5R3JvdXBJREVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0SURFcnJvclxuICAgIHwgSW52YWxpZFppcEZpbGVFcnJvclxuICAgIHwgS01TQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEtNU0Rpc2FibGVkRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBLTVNOb3RGb3VuZEVycm9yXG4gICAgfCBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3JcbiAgICB8IFJlcXVlc3RUb29MYXJnZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RSZWFkeUVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFNuYXBTdGFydEVycm9yXG4gICAgfCBTbmFwU3RhcnROb3RSZWFkeUVycm9yXG4gICAgfCBTbmFwU3RhcnRUaW1lb3V0RXJyb3JcbiAgICB8IFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbnZva2VBc3luY0NvbW1hbmR9XG4gICAqL1xuICBpbnZva2VBc3luYyhcbiAgICBhcmdzOiBJbnZva2VBc3luY0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEludm9rZUFzeW5jQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvclxuICAgIHwgSW52YWxpZFJ1bnRpbWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kfVxuICAgKi9cbiAgaW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtKFxuICAgIGFyZ3M6IEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRUMyQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEVDMlRocm90dGxlZEVycm9yXG4gICAgfCBFQzJVbmV4cGVjdGVkRXJyb3JcbiAgICB8IEVGU0lPRXJyb3JcbiAgICB8IEVGU01vdW50Q29ubmVjdGl2aXR5RXJyb3JcbiAgICB8IEVGU01vdW50RmFpbHVyZUVycm9yXG4gICAgfCBFRlNNb3VudFRpbWVvdXRFcnJvclxuICAgIHwgRU5JTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvclxuICAgIHwgSW52YWxpZFJ1bnRpbWVFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5R3JvdXBJREVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0SURFcnJvclxuICAgIHwgSW52YWxpZFppcEZpbGVFcnJvclxuICAgIHwgS01TQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEtNU0Rpc2FibGVkRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBLTVNOb3RGb3VuZEVycm9yXG4gICAgfCBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3JcbiAgICB8IFJlcXVlc3RUb29MYXJnZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RSZWFkeUVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFNuYXBTdGFydEVycm9yXG4gICAgfCBTbmFwU3RhcnROb3RSZWFkeUVycm9yXG4gICAgfCBTbmFwU3RhcnRUaW1lb3V0RXJyb3JcbiAgICB8IFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QWxpYXNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0QWxpYXNlcyhcbiAgICBhcmdzOiBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdENvZGVTaWduaW5nQ29uZmlncyhcbiAgICBhcmdzOiBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RXZlbnRTb3VyY2VNYXBwaW5ncyhcbiAgICBhcmdzOiBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3MoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9ucyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25VcmxDb25maWdzKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RMYXllcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdExheWVycyhcbiAgICBhcmdzOiBMaXN0TGF5ZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdExheWVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RMYXllclZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RMYXllclZlcnNpb25zKFxuICAgIGFyZ3M6IExpc3RMYXllclZlcnNpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlncyhcbiAgICBhcmdzOiBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFRhZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3MoXG4gICAgYXJnczogTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWZXJzaW9uc0J5RnVuY3Rpb24oXG4gICAgYXJnczogTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoTGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaFZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgcHVibGlzaFZlcnNpb24oXG4gICAgYXJnczogUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBwdXRGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZyhcbiAgICBhcmdzOiBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKFxuICAgIGFyZ3M6IFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb24oXG4gICAgYXJnczogUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlUGVybWlzc2lvbihcbiAgICBhcmdzOiBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdGFnUmVzb3VyY2UoXG4gICAgYXJnczogVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUFsaWFzKFxuICAgIGFyZ3M6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VJblVzZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uQ29kZShcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3JcbiAgICB8IEludmFsaWRDb2RlU2lnbmF0dXJlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LWxhbWJkYS9MYW1iZGFTZXJ2aWNlXCIsXG4pPExhbWJkYVNlcnZpY2UsIExhbWJkYVNlcnZpY2UkPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlTGFtYmRhU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKExhbWJkYUNsaWVudEluc3RhbmNlKTtcblxuICByZXR1cm4gUmVjb3JkLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zKSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6IChhYm9ydFNpZ25hbCkgPT5cbiAgICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zID8/IHt9KSxcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIH0pLFxuICAgICAgICBjYXRjaDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgTGFtYmRhU2VydmljZUV4Y2VwdGlvbiAmJlxuICAgICAgICAgICAgQWxsU2VydmljZUVycm9ycy5pbmNsdWRlcyhlLm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBMYW1iZGFTZXJ2aWNlJDtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQmFzZUxhbWJkYVNlcnZpY2VMYXllciA9IExheWVyLmVmZmVjdChcbiAgTGFtYmRhU2VydmljZSxcbiAgbWFrZUxhbWJkYVNlcnZpY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgTGFtYmRhU2VydmljZUxheWVyID0gQmFzZUxhbWJkYVNlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKExhbWJkYUNsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBMYW1iZGFTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShEZWZhdWx0TGFtYmRhQ2xpZW50Q29uZmlnTGF5ZXIpLFxuKTtcbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsMERBOE1nQztBQUNoQyxtQ0FBcUQ7QUFDckQscUNBMENrQjtBQUNsQixpRUFHZ0M7QUFDaEMsNkVBQThFO0FBYTlFLE1BQU0sUUFBUSxHQUFHO0lBQ2YsZ0NBQWdDLEVBQWhDLGdEQUFnQztJQUNoQyxvQkFBb0IsRUFBcEIsb0NBQW9CO0lBQ3BCLGtCQUFrQixFQUFsQixrQ0FBa0I7SUFDbEIsOEJBQThCLEVBQTlCLDhDQUE4QjtJQUM5QiwrQkFBK0IsRUFBL0IsK0NBQStCO0lBQy9CLHFCQUFxQixFQUFyQixxQ0FBcUI7SUFDckIsOEJBQThCLEVBQTlCLDhDQUE4QjtJQUM5QixrQkFBa0IsRUFBbEIsa0NBQWtCO0lBQ2xCLDhCQUE4QixFQUE5Qiw4Q0FBOEI7SUFDOUIsK0JBQStCLEVBQS9CLCtDQUErQjtJQUMvQixxQkFBcUIsRUFBckIscUNBQXFCO0lBQ3JCLHNDQUFzQyxFQUF0QyxzREFBc0M7SUFDdEMsZ0NBQWdDLEVBQWhDLGdEQUFnQztJQUNoQyxzQ0FBc0MsRUFBdEMsc0RBQXNDO0lBQ3RDLDhCQUE4QixFQUE5Qiw4Q0FBOEI7SUFDOUIseUJBQXlCLEVBQXpCLHlDQUF5QjtJQUN6Qix5Q0FBeUMsRUFBekMseURBQXlDO0lBQ3pDLHlCQUF5QixFQUF6Qix5Q0FBeUI7SUFDekIsZUFBZSxFQUFmLCtCQUFlO0lBQ2YsMkJBQTJCLEVBQTNCLDJDQUEyQjtJQUMzQiw0QkFBNEIsRUFBNUIsNENBQTRCO0lBQzVCLGtCQUFrQixFQUFsQixrQ0FBa0I7SUFDbEIsbUNBQW1DLEVBQW5DLG1EQUFtQztJQUNuQyw2QkFBNkIsRUFBN0IsNkNBQTZCO0lBQzdCLCtCQUErQixFQUEvQiwrQ0FBK0I7SUFDL0IsbUNBQW1DLEVBQW5DLG1EQUFtQztJQUNuQyxpQ0FBaUMs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QUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHlCQUF5QixHQUFHLDBCQUFrQixDQUFDLElBQUksQ0FDOUQsY0FBSyxDQUFDLE9BQU8sQ0FBQywyREFBOEIsQ0FBQyxDQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgTGFtYmRhU2VydmljZUV4Y2VwdGlvbixcbiAgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQWRkUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIERlbGV0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCxcbiAgdHlwZSBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgR2V0QWxpYXNDb21tYW5kLFxuICB0eXBlIEdldEFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEFsaWFzQ29tbWFuZE91dHB1dCxcbiAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZE91dHB1dCxcbiAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlQXN5bmNDb21tYW5kLFxuICB0eXBlIEludm9rZUFzeW5jQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUFzeW5jQ29tbWFuZE91dHB1dCxcbiAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgTGlzdEFsaWFzZXNDb21tYW5kLFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RBbGlhc2VzQ29tbWFuZE91dHB1dCxcbiAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kLFxuICB0eXBlIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIExpc3RMYXllclZlcnNpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RMYXllclZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdExheWVyc0NvbW1hbmQsXG4gIHR5cGUgTGlzdExheWVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0TGF5ZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NDb21tYW5kLFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1sYW1iZGFcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvcixcbiAgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yLFxuICBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3IsXG4gIEVDMkFjY2Vzc0RlbmllZEVycm9yLFxuICBFQzJUaHJvdHRsZWRFcnJvcixcbiAgRUMyVW5leHBlY3RlZEVycm9yLFxuICBFRlNJT0Vycm9yLFxuICBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yLFxuICBFRlNNb3VudEZhaWx1cmVFcnJvcixcbiAgRUZTTW91bnRUaW1lb3V0RXJyb3IsXG4gIEVOSUxpbWl0UmVhY2hlZEVycm9yLFxuICBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3IsXG4gIEludmFsaWRSdW50aW1lRXJyb3IsXG4gIEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvcixcbiAgSW52YWxpZFN1Ym5ldElERXJyb3IsXG4gIEludmFsaWRaaXBGaWxlRXJyb3IsXG4gIEtNU0FjY2Vzc0RlbmllZEVycm9yLFxuICBLTVNEaXNhYmxlZEVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS01TTm90Rm91bmRFcnJvcixcbiAgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvcixcbiAgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3IsXG4gIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEVycm9yLFxuICBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3IsXG4gIFJlcXVlc3RUb29MYXJnZUVycm9yLFxuICBSZXNvdXJjZUNvbmZsaWN0RXJyb3IsXG4gIFJlc291cmNlSW5Vc2VFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBSZXNvdXJjZU5vdFJlYWR5RXJyb3IsXG4gIFNlcnZpY2VFcnJvcixcbiAgU25hcFN0YXJ0RXJyb3IsXG4gIFNuYXBTdGFydE5vdFJlYWR5RXJyb3IsXG4gIFNuYXBTdGFydFRpbWVvdXRFcnJvcixcbiAgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3IsXG4gIFRvb01hbnlSZXF1ZXN0c0Vycm9yLFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7XG4gIExhbWJkYUNsaWVudEluc3RhbmNlLFxuICBMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9MYW1iZGFDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS41LjFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBDcmVhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kLFxuICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCxcbiAgR2V0QWxpYXNDb21tYW5kLFxuICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgSW52b2tlQ29tbWFuZCxcbiAgSW52b2tlQXN5bmNDb21tYW5kLFxuICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kLFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLFxuICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICBMaXN0RnVuY3Rpb25zQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RMYXllcnNDb21tYW5kLFxuICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kLFxuICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgTGFtYmRhU2VydmljZSQge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIGFkZExheWVyVmVyc2lvblBlcm1pc3Npb24oXG4gICAgYXJnczogQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFsaWFzKFxuICAgIGFyZ3M6IENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb24oXG4gICAgYXJnczogQ3JlYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBbGlhcyhcbiAgICBhcmdzOiBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZUluVXNlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbihcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlTGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWNjb3VudFNldHRpbmdzKFxuICAgIGFyZ3M6IEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBnZXRBbGlhcyhcbiAgICBhcmdzOiBHZXRBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldENvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGdldEV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb24oXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGdldExheWVyVmVyc2lvbihcbiAgICBhcmdzOiBHZXRMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uQnlBcm4oXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uUG9saWN5KFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0UG9saWN5KFxuICAgIGFyZ3M6IEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKFxuICAgIGFyZ3M6IEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlQ29tbWFuZH1cbiAgICovXG4gIGludm9rZShcbiAgICBhcmdzOiBJbnZva2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVDMkFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBFQzJUaHJvdHRsZWRFcnJvclxuICAgIHwgRUMyVW5leHBlY3RlZEVycm9yXG4gICAgfCBFRlNJT0Vycm9yXG4gICAgfCBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXG4gICAgfCBFRlNNb3VudEZhaWx1cmVFcnJvclxuICAgIHwgRUZTTW91bnRUaW1lb3V0RXJyb3JcbiAgICB8IEVOSUxpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldElERXJyb3JcbiAgICB8IEludmFsaWRaaXBGaWxlRXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yXG4gICAgfCBSZXF1ZXN0VG9vTGFyZ2VFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90UmVhZHlFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBTbmFwU3RhcnRFcnJvclxuICAgIHwgU25hcFN0YXJ0Tm90UmVhZHlFcnJvclxuICAgIHwgU25hcFN0YXJ0VGltZW91dEVycm9yXG4gICAgfCBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlQXN5bmNDb21tYW5kfVxuICAgKi9cbiAgaW52b2tlQXN5bmMoXG4gICAgYXJnczogSW52b2tlQXN5bmNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VBc3luY0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZH1cbiAgICovXG4gIGludm9rZVdpdGhSZXNwb25zZVN0cmVhbShcbiAgICBhcmdzOiBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVDMkFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBFQzJUaHJvdHRsZWRFcnJvclxuICAgIHwgRUMyVW5leHBlY3RlZEVycm9yXG4gICAgfCBFRlNJT0Vycm9yXG4gICAgfCBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXG4gICAgfCBFRlNNb3VudEZhaWx1cmVFcnJvclxuICAgIHwgRUZTTW91bnRUaW1lb3V0RXJyb3JcbiAgICB8IEVOSUxpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldElERXJyb3JcbiAgICB8IEludmFsaWRaaXBGaWxlRXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yXG4gICAgfCBSZXF1ZXN0VG9vTGFyZ2VFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90UmVhZHlFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBTbmFwU3RhcnRFcnJvclxuICAgIHwgU25hcFN0YXJ0Tm90UmVhZHlFcnJvclxuICAgIHwgU25hcFN0YXJ0VGltZW91dEVycm9yXG4gICAgfCBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFsaWFzZXMoXG4gICAgYXJnczogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RDb2RlU2lnbmluZ0NvbmZpZ3MoXG4gICAgYXJnczogTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEV2ZW50U291cmNlTWFwcGluZ3MoXG4gICAgYXJnczogTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvblVybENvbmZpZ3MoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25zKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgU2VydmljZUVycm9yIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0TGF5ZXJWZXJzaW9ucyhcbiAgICBhcmdzOiBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RMYXllclZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RMYXllcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdExheWVycyhcbiAgICBhcmdzOiBMaXN0TGF5ZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdExheWVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3MoXG4gICAgYXJnczogTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzKFxuICAgIGFyZ3M6IExpc3RUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0VmVyc2lvbnNCeUZ1bmN0aW9uKFxuICAgIGFyZ3M6IExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgcHVibGlzaExheWVyVmVyc2lvbihcbiAgICBhcmdzOiBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hWZXJzaW9uKFxuICAgIGFyZ3M6IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25Db25jdXJyZW5jeShcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnKFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZyhcbiAgICBhcmdzOiBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZVBlcm1pc3Npb24oXG4gICAgYXJnczogUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVBbGlhcyhcbiAgICBhcmdzOiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlSW5Vc2VFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkNvZGUoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1sYW1iZGEvTGFtYmRhU2VydmljZVwiLFxuKTxMYW1iZGFTZXJ2aWNlLCBMYW1iZGFTZXJ2aWNlJD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUxhbWJkYVNlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhMYW1iZGFDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIExhbWJkYVNlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248TGFtYmRhU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgTGFtYmRhU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIExhbWJkYVNlcnZpY2UsXG4gIG1ha2VMYW1iZGFTZXJ2aWNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IExhbWJkYVNlcnZpY2VMYXllciA9IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TGFtYmRhU2VydmljZUxheWVyID0gTGFtYmRhU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { LambdaServiceException, AddLayerVersionPermissionCommand, AddPermissionCommand, CreateAliasCommand, CreateCodeSigningConfigCommand, CreateEventSourceMappingCommand, CreateFunctionCommand, CreateFunctionUrlConfigCommand, DeleteAliasCommand, DeleteCodeSigningConfigCommand, DeleteEventSourceMappingCommand, DeleteFunctionCommand, DeleteFunctionCodeSigningConfigCommand, DeleteFunctionConcurrencyCommand, DeleteFunctionEventInvokeConfigCommand, DeleteFunctionUrlConfigCommand, DeleteLayerVersionCommand, DeleteProvisionedConcurrencyConfigCommand, GetAccountSettingsCommand, GetAliasCommand, GetCodeSigningConfigCommand, GetEventSourceMappingCommand, GetFunctionCommand, GetFunctionCodeSigningConfigCommand, GetFunctionConcurrencyCommand, GetFunctionConfigurationCommand, GetFunctionEventInvokeConfigCommand, GetFunctionRecursionConfigCommand, GetFunctionUrlConfigCommand, GetLayerVersionCommand, GetLayerVersionByArnCommand, GetLayerVersionPolicyCommand, GetPolicyCommand, GetProvisionedConcurrencyConfigCommand, GetRuntimeManagementConfigCommand, InvokeCommand, InvokeAsyncCommand, InvokeWithResponseStreamCommand, ListAliasesCommand, ListCodeSigningConfigsCommand, ListEventSourceMappingsCommand, ListFunctionEventInvokeConfigsCommand, ListFunctionsCommand, ListFunctionsByCodeSigningConfigCommand, ListFunctionUrlConfigsCommand, ListLayersCommand, ListLayerVersionsCommand, ListProvisionedConcurrencyConfigsCommand, ListTagsCommand, ListVersionsByFunctionCommand, PublishLayerVersionCommand, PublishVersionCommand, PutFunctionCodeSigningConfigCommand, PutFunctionConcurrencyCommand, PutFunctionEventInvokeConfigCommand, PutFunctionRecursionConfigCommand, PutProvisionedConcurrencyConfigCommand, PutRuntimeManagementConfigCommand, RemoveLayerVersionPermissionCommand, RemovePermissionCommand, TagResourceCommand, UntagResourceCommand, UpdateAliasCommand, UpdateCodeSigningConfigCommand, UpdateEventSourceMappingCommand, UpdateFunctionCodeCommand, UpdateFunctionConfigurationCommand, UpdateFunctionEventInvokeConfigCommand, UpdateFunctionUrlConfigCommand, } from "@aws-sdk/client-lambda";
4
+ import { LambdaServiceException, AddLayerVersionPermissionCommand, AddPermissionCommand, CreateAliasCommand, CreateCodeSigningConfigCommand, CreateEventSourceMappingCommand, CreateFunctionCommand, CreateFunctionUrlConfigCommand, DeleteAliasCommand, DeleteCodeSigningConfigCommand, DeleteEventSourceMappingCommand, DeleteFunctionCommand, DeleteFunctionCodeSigningConfigCommand, DeleteFunctionConcurrencyCommand, DeleteFunctionEventInvokeConfigCommand, DeleteFunctionUrlConfigCommand, DeleteLayerVersionCommand, DeleteProvisionedConcurrencyConfigCommand, GetAccountSettingsCommand, GetAliasCommand, GetCodeSigningConfigCommand, GetEventSourceMappingCommand, GetFunctionCommand, GetFunctionCodeSigningConfigCommand, GetFunctionConcurrencyCommand, GetFunctionConfigurationCommand, GetFunctionEventInvokeConfigCommand, GetFunctionRecursionConfigCommand, GetFunctionUrlConfigCommand, GetLayerVersionCommand, GetLayerVersionByArnCommand, GetLayerVersionPolicyCommand, GetPolicyCommand, GetProvisionedConcurrencyConfigCommand, GetRuntimeManagementConfigCommand, InvokeCommand, InvokeAsyncCommand, InvokeWithResponseStreamCommand, ListAliasesCommand, ListCodeSigningConfigsCommand, ListEventSourceMappingsCommand, ListFunctionEventInvokeConfigsCommand, ListFunctionUrlConfigsCommand, ListFunctionsCommand, ListFunctionsByCodeSigningConfigCommand, ListLayerVersionsCommand, ListLayersCommand, ListProvisionedConcurrencyConfigsCommand, ListTagsCommand, ListVersionsByFunctionCommand, PublishLayerVersionCommand, PublishVersionCommand, PutFunctionCodeSigningConfigCommand, PutFunctionConcurrencyCommand, PutFunctionEventInvokeConfigCommand, PutFunctionRecursionConfigCommand, PutProvisionedConcurrencyConfigCommand, PutRuntimeManagementConfigCommand, RemoveLayerVersionPermissionCommand, RemovePermissionCommand, TagResourceCommand, UntagResourceCommand, UpdateAliasCommand, UpdateCodeSigningConfigCommand, UpdateEventSourceMappingCommand, UpdateFunctionCodeCommand, UpdateFunctionConfigurationCommand, UpdateFunctionEventInvokeConfigCommand, UpdateFunctionUrlConfigCommand, } from "@aws-sdk/client-lambda";
5
5
  import { Data, Effect, Layer, Record } from "effect";
6
6
  import { AllServiceErrors, SdkError, } from "./Errors";
7
7
  import { LambdaClientInstance, LambdaClientInstanceLayer, } from "./LambdaClientInstance";
@@ -48,11 +48,11 @@ const commands = {
48
48
  ListCodeSigningConfigsCommand,
49
49
  ListEventSourceMappingsCommand,
50
50
  ListFunctionEventInvokeConfigsCommand,
51
+ ListFunctionUrlConfigsCommand,
51
52
  ListFunctionsCommand,
52
53
  ListFunctionsByCodeSigningConfigCommand,
53
- ListFunctionUrlConfigsCommand,
54
- ListLayersCommand,
55
54
  ListLayerVersionsCommand,
55
+ ListLayersCommand,
56
56
  ListProvisionedConcurrencyConfigsCommand,
57
57
  ListTagsCommand,
58
58
  ListVersionsByFunctionCommand,
@@ -135,4 +135,4 @@ export const LambdaServiceLayer = BaseLambdaServiceLayer.pipe(Layer.provide(Lamb
135
135
  * @category layers
136
136
  */
137
137
  export const DefaultLambdaServiceLayer = LambdaServiceLayer.pipe(Layer.provide(DefaultLambdaClientConfigLayer));
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFHaEMsb0JBQW9CLEVBR3BCLGtCQUFrQixFQUdsQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLHFCQUFxQixFQUdyQiw4QkFBOEIsRUFHOUIsa0JBQWtCLEVBR2xCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IscUJBQXFCLEVBR3JCLHNDQUFzQyxFQUd0QyxnQ0FBZ0MsRUFHaEMsc0NBQXNDLEVBR3RDLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIseUNBQXlDLEVBR3pDLHlCQUF5QixFQUd6QixlQUFlLEVBR2YsMkJBQTJCLEVBRzNCLDRCQUE0QixFQUc1QixrQkFBa0IsRUFHbEIsbUNBQW1DLEVBR25DLDZCQUE2QixFQUc3QiwrQkFBK0IsRUFHL0IsbUNBQW1DLEVBR25DLGlDQUFpQyxFQUdqQywyQkFBMkIsRUFHM0Isc0JBQXNCLEVBR3RCLDJCQUEyQixFQUczQiw0QkFBNEIsRUFHNUIsZ0JBQWdCLEVBR2hCLHNDQUFzQyxFQUd0QyxpQ0FBaUMsRUFHakMsYUFBYSxFQUdiLGtCQUFrQixFQUdsQiwrQkFBK0IsRUFHL0Isa0JBQWtCLEVBR2xCLDZCQUE2QixFQUc3Qiw4QkFBOEIsRUFHOUIscUNBQXFDLEVBR3JDLG9CQUFvQixFQUdwQix1Q0FBdUMsRUFHdkMsNkJBQTZCLEVBRzdCLGlCQUFpQixFQUdqQix3QkFBd0IsRUFHeEIsd0NBQXdDLEVBR3hDLGVBQWUsRUFHZiw2QkFBNkIsRUFHN0IsMEJBQTBCLEVBRzFCLHFCQUFxQixFQUdyQixtQ0FBbUMsRUFHbkMsNkJBQTZCLEVBRzdCLG1DQUFtQyxFQUduQyxpQ0FBaUMsRUFHakMsc0NBQXNDLEVBR3RDLGlDQUFpQyxFQUdqQyxtQ0FBbUMsRUFH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O0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsYUFBYSxFQUNiLGlCQUFpQixDQUNsQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQ3pDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQzlELEtBQUssQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIExhbWJkYVNlcnZpY2VFeGNlcHRpb24sXG4gIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIEFkZFBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmQsXG4gIHR5cGUgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gIEdldEFsaWFzQ29tbWFuZCxcbiAgdHlwZSBHZXRBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEludm9rZUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUNvbW1hbmRPdXRwdXQsXG4gIEludm9rZUFzeW5jQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VBc3luY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VBc3luY0NvbW1hbmRPdXRwdXQsXG4gIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRPdXRwdXQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RMYXllcnNDb21tYW5kLFxuICB0eXBlIExpc3RMYXllcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdExheWVyc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RMYXllclZlcnNpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtbGFtYmRhXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3IsXG4gIENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvcixcbiAgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yLFxuICBFQzJBY2Nlc3NEZW5pZWRFcnJvcixcbiAgRUMyVGhyb3R0bGVkRXJyb3IsXG4gIEVDMlVuZXhwZWN0ZWRFcnJvcixcbiAgRUZTSU9FcnJvcixcbiAgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvcixcbiAgRUZTTW91bnRGYWlsdXJlRXJyb3IsXG4gIEVGU01vdW50VGltZW91dEVycm9yLFxuICBFTklMaW1pdFJlYWNoZWRFcnJvcixcbiAgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yLFxuICBJbnZhbGlkUnVudGltZUVycm9yLFxuICBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3IsXG4gIEludmFsaWRTdWJuZXRJREVycm9yLFxuICBJbnZhbGlkWmlwRmlsZUVycm9yLFxuICBLTVNBY2Nlc3NEZW5pZWRFcnJvcixcbiAgS01TRGlzYWJsZWRFcnJvcixcbiAgS01TSW52YWxpZFN0YXRlRXJyb3IsXG4gIEtNU05vdEZvdW5kRXJyb3IsXG4gIFBvbGljeUxlbmd0aEV4Y2VlZGVkRXJyb3IsXG4gIFByZWNvbmRpdGlvbkZhaWxlZEVycm9yLFxuICBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFcnJvcixcbiAgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yLFxuICBSZXF1ZXN0VG9vTGFyZ2VFcnJvcixcbiAgUmVzb3VyY2VDb25mbGljdEVycm9yLFxuICBSZXNvdXJjZUluVXNlRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgUmVzb3VyY2VOb3RSZWFkeUVycm9yLFxuICBTZXJ2aWNlRXJyb3IsXG4gIFNuYXBTdGFydEVycm9yLFxuICBTbmFwU3RhcnROb3RSZWFkeUVycm9yLFxuICBTbmFwU3RhcnRUaW1lb3V0RXJyb3IsXG4gIFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEVycm9yLFxuICBUb29NYW55UmVxdWVzdHNFcnJvcixcbiAgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQge1xuICBMYW1iZGFDbGllbnRJbnN0YW5jZSxcbiAgTGFtYmRhQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRMYW1iZGFDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL0xhbWJkYUNsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBDcmVhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlQWxpYXNDb21tYW5kLFxuICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kLFxuICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZCxcbiAgR2V0QWxpYXNDb21tYW5kLFxuICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgSW52b2tlQ29tbWFuZCxcbiAgSW52b2tlQXN5bmNDb21tYW5kLFxuICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kLFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLFxuICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbnNDb21tYW5kLFxuICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICBMaXN0TGF5ZXJzQ29tbWFuZCxcbiAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kLFxuICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kLFxuICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVXBkYXRlQWxpYXNDb21tYW5kLFxuICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgTGFtYmRhU2VydmljZSQge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIGFkZExheWVyVmVyc2lvblBlcm1pc3Npb24oXG4gICAgYXJnczogQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFsaWFzKFxuICAgIGFyZ3M6IENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb24oXG4gICAgYXJnczogQ3JlYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBbGlhcyhcbiAgICBhcmdzOiBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZUluVXNlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbihcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlTGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWNjb3VudFNldHRpbmdzKFxuICAgIGFyZ3M6IEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBnZXRBbGlhcyhcbiAgICBhcmdzOiBHZXRBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldENvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGdldEV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb24oXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGdldExheWVyVmVyc2lvbihcbiAgICBhcmdzOiBHZXRMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uQnlBcm4oXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uUG9saWN5KFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0UG9saWN5KFxuICAgIGFyZ3M6IEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKFxuICAgIGFyZ3M6IEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlQ29tbWFuZH1cbiAgICovXG4gIGludm9rZShcbiAgICBhcmdzOiBJbnZva2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVDMkFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBFQzJUaHJvdHRsZWRFcnJvclxuICAgIHwgRUMyVW5leHBlY3RlZEVycm9yXG4gICAgfCBFRlNJT0Vycm9yXG4gICAgfCBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXG4gICAgfCBFRlNNb3VudEZhaWx1cmVFcnJvclxuICAgIHwgRUZTTW91bnRUaW1lb3V0RXJyb3JcbiAgICB8IEVOSUxpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldElERXJyb3JcbiAgICB8IEludmFsaWRaaXBGaWxlRXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yXG4gICAgfCBSZXF1ZXN0VG9vTGFyZ2VFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90UmVhZHlFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBTbmFwU3RhcnRFcnJvclxuICAgIHwgU25hcFN0YXJ0Tm90UmVhZHlFcnJvclxuICAgIHwgU25hcFN0YXJ0VGltZW91dEVycm9yXG4gICAgfCBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlQXN5bmNDb21tYW5kfVxuICAgKi9cbiAgaW52b2tlQXN5bmMoXG4gICAgYXJnczogSW52b2tlQXN5bmNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VBc3luY0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZH1cbiAgICovXG4gIGludm9rZVdpdGhSZXNwb25zZVN0cmVhbShcbiAgICBhcmdzOiBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVDMkFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBFQzJUaHJvdHRsZWRFcnJvclxuICAgIHwgRUMyVW5leHBlY3RlZEVycm9yXG4gICAgfCBFRlNJT0Vycm9yXG4gICAgfCBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXG4gICAgfCBFRlNNb3VudEZhaWx1cmVFcnJvclxuICAgIHwgRUZTTW91bnRUaW1lb3V0RXJyb3JcbiAgICB8IEVOSUxpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldElERXJyb3JcbiAgICB8IEludmFsaWRaaXBGaWxlRXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yXG4gICAgfCBSZXF1ZXN0VG9vTGFyZ2VFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90UmVhZHlFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBTbmFwU3RhcnRFcnJvclxuICAgIHwgU25hcFN0YXJ0Tm90UmVhZHlFcnJvclxuICAgIHwgU25hcFN0YXJ0VGltZW91dEVycm9yXG4gICAgfCBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEFsaWFzZXNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEFsaWFzZXMoXG4gICAgYXJnczogTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RDb2RlU2lnbmluZ0NvbmZpZ3MoXG4gICAgYXJnczogTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEV2ZW50U291cmNlTWFwcGluZ3MoXG4gICAgYXJnczogTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbnMoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9uVXJsQ29uZmlncyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RMYXllcnMoXG4gICAgYXJnczogTGlzdExheWVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RMYXllcnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0TGF5ZXJWZXJzaW9ucyhcbiAgICBhcmdzOiBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RMYXllclZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3MoXG4gICAgYXJnczogTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzKFxuICAgIGFyZ3M6IExpc3RUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0VmVyc2lvbnNCeUZ1bmN0aW9uKFxuICAgIGFyZ3M6IExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgcHVibGlzaExheWVyVmVyc2lvbihcbiAgICBhcmdzOiBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hWZXJzaW9uKFxuICAgIGFyZ3M6IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25Db25jdXJyZW5jeShcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnKFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZyhcbiAgICBhcmdzOiBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZVBlcm1pc3Npb24oXG4gICAgYXJnczogUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVBbGlhcyhcbiAgICBhcmdzOiBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlSW5Vc2VFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkNvZGUoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1sYW1iZGEvTGFtYmRhU2VydmljZVwiLFxuKTxMYW1iZGFTZXJ2aWNlLCBMYW1iZGFTZXJ2aWNlJD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUxhbWJkYVNlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhMYW1iZGFDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucykgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoYWJvcnRTaWduYWwpID0+XG4gICAgICAgICAgY2xpZW50LnNlbmQobmV3IENvbW1hbmRDdG9yKGFyZ3MpLCB7XG4gICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICBhYm9ydFNpZ25hbCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2g6IChlKSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZSBpbnN0YW5jZW9mIExhbWJkYVNlcnZpY2VFeGNlcHRpb24gJiZcbiAgICAgICAgICAgIEFsbFNlcnZpY2VFcnJvcnMuaW5jbHVkZXMoZS5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248TGFtYmRhU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgTGFtYmRhU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIExhbWJkYVNlcnZpY2UsXG4gIG1ha2VMYW1iZGFTZXJ2aWNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IExhbWJkYVNlcnZpY2VMYXllciA9IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TGFtYmRhU2VydmljZUxheWVyID0gTGFtYmRhU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFHaEMsb0JBQW9CLEVBR3BCLGtCQUFrQixFQUdsQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLHFCQUFxQixFQUdyQiw4QkFBOEIsRUFHOUIsa0JBQWtCLEVBR2xCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IscUJBQXFCLEVBR3JCLHNDQUFzQyxFQUd0QyxnQ0FBZ0MsRUFHaEMsc0NBQXNDLEVBR3RDLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIseUNBQXlDLEVBR3pDLHlCQUF5QixFQUd6QixlQUFlLEVBR2YsMkJBQTJCLEVBRzNCLDRCQUE0QixFQUc1QixrQkFBa0IsRUFHbEIsbUNBQW1DLEVBR25DLDZCQUE2QixFQUc3QiwrQkFBK0IsRUFHL0IsbUNBQW1DLEVBR25DLGlDQUFpQyxFQUdqQywyQkFBMkIsRUFHM0Isc0JBQXNCLEVBR3RCLDJCQUEyQixFQUczQiw0QkFBNEIsRUFHNUIsZ0JBQWdCLEVBR2hCLHNDQUFzQyxFQUd0QyxpQ0FBaUMsRUFHakMsYUFBYSxFQUdiLGtCQUFrQixFQUdsQiwrQkFBK0IsRUFHL0Isa0JBQWtCLEVBR2xCLDZCQUE2QixFQUc3Qiw4QkFBOEIsRUFHOUIscUNBQXFDLEVBR3JDLDZCQUE2QixFQUc3QixvQkFBb0IsRUFHcEIsdUNBQXVDLEVBR3ZDLHdCQUF3QixFQUd4QixpQkFBaUIsRUFHakIsd0NBQXdDLEVBR3hDLGVBQWUsRUFHZiw2QkFBNkIsRUFHN0IsMEJBQTBCLEVBRzFCLHFCQUFxQixFQUdyQixtQ0FBbUMsRUFHbkMsNkJBQTZCLEVBRzdCLG1DQUFtQyxFQUduQyxpQ0FBaUMsRUFHakMsc0NBQXNDLEVBR3RDLGlDQUFpQyxFQUdqQyxtQ0FBbUMsRUFHbkMsdUJBQXVCLEVBR3ZCLGtCQUFrQixFQUdsQixvQkFBb0IsRUFHcEIsa0JBQWtCLEVBR2xCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IseUJBQXlCLEVBR3pCLGtDQUFrQyxFQUdsQyxzQ0FBc0MsRUFHdEMsOEJBQThCLEdBRy9CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBdUNoQixRQUFRLEdBRVQsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix5QkFBeUIsR0FDMUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWE5RSxNQUFNLFFBQVEsR0FBRztJQUNmLGdDQUFnQztJQUNoQyxvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLDhCQUE4QjtJQUM5QiwrQkFBK0I7SUFDL0IscUJBQXFCO0lBQ3JCLDhCQUE4QjtJQUM5QixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLCtCQUErQjtJQUMvQixxQkFBcUI7SUFDckIsc0NBQXNDO0lBQ3RDLGdDQUFnQztJQUNoQyxzQ0FBc0M7SUFDdEMsOEJBQThCO0lBQzlCLHlCQUF5QjtJQUN6Qix5Q0FBeUM7SUFDekMseUJBQXlCO0lBQ3pCLGVBQWU7SUFDZiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLGtCQUFrQjtJQUNsQixtQ0FBbUM7SUFDbkMsNkJBQTZCO0lBQzdCLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQixzQkFBc0I7SUFDdEIsMkJBQTJCO0lBQzNCLDRCQUE0QjtJQUM1QixnQkFBZ0I7SUFDaEIsc0NBQXNDO0lBQ3RDLGlDQUFpQztJQUNqQyxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLCtCQUErQjtJQUMvQixrQkFBa0I7SUFDbEIsNkJBQTZCO0lBQzdCLDhCQUE4QjtJQUM5QixxQ0FBcUM7SUFDckMsNkJBQTZCO0lBQzdCLG9CQUFvQjtJQUNwQix1Q0FBdUM7SUFDdkMsd0JBQXdCO0lBQ3hCLGlCQUFpQjtJQUNqQix3Q0FBd0M7SUFDeEMsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QiwwQkFBMEI7SUFDMUIscUJBQXFCO0lBQ3JCLG1DQUFtQztJQUNuQyw2QkFBNkI7SUFDN0IsbUNBQW1DO0lBQ25DLGlDQUFpQztJQUNqQyxzQ0FBc0M7SUFDdEMsaUNBQWlDO0lBQ2pDLG1DQUFtQztJQUNuQyx1QkFBdUI7SUFDdkIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLCtCQUErQjtJQUMvQix5QkFBeUI7SUFDekIsa0NBQWtDO0lBQ2xDLHNDQUFzQztJQUN0Qyw4QkFBOEI7Q0FDL0IsQ0FBQztBQTBrQ0Y7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUFNLENBQUMsR0FBRyxDQUMzQyx5Q0FBeUMsQ0FDMUMsRUFBaUM7Q0FBRztBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFOUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDMUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLE9BQTRCLEVBQUUsRUFBRSxDQUM3RCxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxFQUFFLENBQUM7Z0JBQ2xCLFdBQVc7YUFDWixDQUFDO1lBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFDRSxDQUFDLFlBQVksc0JBQXNCO29CQUNuQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNqQyxDQUFDO29CQUNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FFbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVWLE9BQU8sZ0JBQWdCLENBQUM7d0JBQ3RCLEdBQUcsQ0FBQzt3QkFDSixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxRQUFRLENBQUM7d0JBQ2QsR0FBRyxDQUFDO3dCQUNKLElBQUksRUFBRSxVQUFVO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7U0FDRixDQUFDLENBQUM7UUFDTCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN0RSxVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBRSxDQUFtQixDQUFDO0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsYUFBYSxFQUNiLGlCQUFpQixDQUNsQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQ3pDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQzlELEtBQUssQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIExhbWJkYVNlcnZpY2VFeGNlcHRpb24sXG4gIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIEFkZFBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmQsXG4gIHR5cGUgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRPdXRwdXQsXG4gIEdldEFsaWFzQ29tbWFuZCxcbiAgdHlwZSBHZXRBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRPdXRwdXQsXG4gIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFBvbGljeUNvbW1hbmQsXG4gIHR5cGUgR2V0UG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIEludm9rZUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZUNvbW1hbmRPdXRwdXQsXG4gIEludm9rZUFzeW5jQ29tbWFuZCxcbiAgdHlwZSBJbnZva2VBc3luY0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VBc3luY0NvbW1hbmRPdXRwdXQsXG4gIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmQsXG4gIHR5cGUgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZElucHV0LFxuICB0eXBlIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRPdXRwdXQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIExpc3RMYXllclZlcnNpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RMYXllcnNDb21tYW5kLFxuICB0eXBlIExpc3RMYXllcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdExheWVyc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kLFxuICB0eXBlIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICB0eXBlIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICB0eXBlIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtbGFtYmRhXCI7XG5pbXBvcnQgeyBEYXRhLCBFZmZlY3QsIExheWVyLCBSZWNvcmQgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQge1xuICBBbGxTZXJ2aWNlRXJyb3JzLFxuICBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3IsXG4gIENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvcixcbiAgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yLFxuICBFQzJBY2Nlc3NEZW5pZWRFcnJvcixcbiAgRUMyVGhyb3R0bGVkRXJyb3IsXG4gIEVDMlVuZXhwZWN0ZWRFcnJvcixcbiAgRUZTSU9FcnJvcixcbiAgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvcixcbiAgRUZTTW91bnRGYWlsdXJlRXJyb3IsXG4gIEVGU01vdW50VGltZW91dEVycm9yLFxuICBFTklMaW1pdFJlYWNoZWRFcnJvcixcbiAgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yLFxuICBJbnZhbGlkUnVudGltZUVycm9yLFxuICBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3IsXG4gIEludmFsaWRTdWJuZXRJREVycm9yLFxuICBJbnZhbGlkWmlwRmlsZUVycm9yLFxuICBLTVNBY2Nlc3NEZW5pZWRFcnJvcixcbiAgS01TRGlzYWJsZWRFcnJvcixcbiAgS01TSW52YWxpZFN0YXRlRXJyb3IsXG4gIEtNU05vdEZvdW5kRXJyb3IsXG4gIFBvbGljeUxlbmd0aEV4Y2VlZGVkRXJyb3IsXG4gIFByZWNvbmRpdGlvbkZhaWxlZEVycm9yLFxuICBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFcnJvcixcbiAgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yLFxuICBSZXF1ZXN0VG9vTGFyZ2VFcnJvcixcbiAgUmVzb3VyY2VDb25mbGljdEVycm9yLFxuICBSZXNvdXJjZUluVXNlRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgUmVzb3VyY2VOb3RSZWFkeUVycm9yLFxuICBTZXJ2aWNlRXJyb3IsXG4gIFNuYXBTdGFydEVycm9yLFxuICBTbmFwU3RhcnROb3RSZWFkeUVycm9yLFxuICBTbmFwU3RhcnRUaW1lb3V0RXJyb3IsXG4gIFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEVycm9yLFxuICBUb29NYW55UmVxdWVzdHNFcnJvcixcbiAgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQge1xuICBMYW1iZGFDbGllbnRJbnN0YW5jZSxcbiAgTGFtYmRhQ2xpZW50SW5zdGFuY2VMYXllcixcbn0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRMYW1iZGFDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL0xhbWJkYUNsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuNS4xXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIEFkZFBlcm1pc3Npb25Db21tYW5kLFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgQ3JlYXRlRnVuY3Rpb25Db21tYW5kLFxuICBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUFsaWFzQ29tbWFuZCxcbiAgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmQsXG4gIEdldEFsaWFzQ29tbWFuZCxcbiAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBHZXRGdW5jdGlvbkNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBHZXRMYXllclZlcnNpb25Db21tYW5kLFxuICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmQsXG4gIEdldFBvbGljeUNvbW1hbmQsXG4gIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIEludm9rZUNvbW1hbmQsXG4gIEludm9rZUFzeW5jQ29tbWFuZCxcbiAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZCxcbiAgTGlzdEFsaWFzZXNDb21tYW5kLFxuICBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZCxcbiAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kLFxuICBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kLFxuICBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kLFxuICBMaXN0TGF5ZXJzQ29tbWFuZCxcbiAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZCxcbiAgTGlzdFRhZ3NDb21tYW5kLFxuICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZCxcbiAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZCxcbiAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kLFxuICBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kLFxuICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxufTtcblxuaW50ZXJmYWNlIExhbWJkYVNlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRMYXllclZlcnNpb25QZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZFBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgYWRkUGVybWlzc2lvbihcbiAgICBhcmdzOiBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWRkUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFBvbGljeUxlbmd0aEV4Y2VlZGVkRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVBbGlhcyhcbiAgICBhcmdzOiBDcmVhdGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUZ1bmN0aW9uKFxuICAgIGFyZ3M6IENyZWF0ZUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3JcbiAgICB8IEludmFsaWRDb2RlU2lnbmF0dXJlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWxpYXMoXG4gICAgYXJnczogRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VJblVzZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb24oXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUxheWVyVmVyc2lvbihcbiAgICBhcmdzOiBEZWxldGVMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU2VydmljZUVycm9yIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZH1cbiAgICovXG4gIGdldEFjY291bnRTZXR0aW5ncyhcbiAgICBhcmdzOiBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU2VydmljZUVycm9yIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWxpYXMoXG4gICAgYXJnczogR2V0QWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25Db25jdXJyZW5jeShcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25Db25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRMYXllclZlcnNpb24oXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZH1cbiAgICovXG4gIGdldExheWVyVmVyc2lvbkJ5QXJuKFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZH1cbiAgICovXG4gIGdldExheWVyVmVyc2lvblBvbGljeShcbiAgICBhcmdzOiBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIGdldFBvbGljeShcbiAgICBhcmdzOiBHZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZyhcbiAgICBhcmdzOiBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEludm9rZUNvbW1hbmR9XG4gICAqL1xuICBpbnZva2UoXG4gICAgYXJnczogSW52b2tlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW52b2tlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFQzJBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgRUMyVGhyb3R0bGVkRXJyb3JcbiAgICB8IEVDMlVuZXhwZWN0ZWRFcnJvclxuICAgIHwgRUZTSU9FcnJvclxuICAgIHwgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvclxuICAgIHwgRUZTTW91bnRGYWlsdXJlRXJyb3JcbiAgICB8IEVGU01vdW50VGltZW91dEVycm9yXG4gICAgfCBFTklMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yXG4gICAgfCBJbnZhbGlkUnVudGltZUVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRJREVycm9yXG4gICAgfCBJbnZhbGlkWmlwRmlsZUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IFJlY3Vyc2l2ZUludm9jYXRpb25FcnJvclxuICAgIHwgUmVxdWVzdFRvb0xhcmdlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdFJlYWR5RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgU25hcFN0YXJ0RXJyb3JcbiAgICB8IFNuYXBTdGFydE5vdFJlYWR5RXJyb3JcbiAgICB8IFNuYXBTdGFydFRpbWVvdXRFcnJvclxuICAgIHwgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEludm9rZUFzeW5jQ29tbWFuZH1cbiAgICovXG4gIGludm9rZUFzeW5jKFxuICAgIGFyZ3M6IEludm9rZUFzeW5jQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW52b2tlQXN5bmNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yXG4gICAgfCBJbnZhbGlkUnVudGltZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmR9XG4gICAqL1xuICBpbnZva2VXaXRoUmVzcG9uc2VTdHJlYW0oXG4gICAgYXJnczogSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFQzJBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgRUMyVGhyb3R0bGVkRXJyb3JcbiAgICB8IEVDMlVuZXhwZWN0ZWRFcnJvclxuICAgIHwgRUZTSU9FcnJvclxuICAgIHwgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvclxuICAgIHwgRUZTTW91bnRGYWlsdXJlRXJyb3JcbiAgICB8IEVGU01vdW50VGltZW91dEVycm9yXG4gICAgfCBFTklMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yXG4gICAgfCBJbnZhbGlkUnVudGltZUVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRJREVycm9yXG4gICAgfCBJbnZhbGlkWmlwRmlsZUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IFJlY3Vyc2l2ZUludm9jYXRpb25FcnJvclxuICAgIHwgUmVxdWVzdFRvb0xhcmdlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdFJlYWR5RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgU25hcFN0YXJ0RXJyb3JcbiAgICB8IFNuYXBTdGFydE5vdFJlYWR5RXJyb3JcbiAgICB8IFNuYXBTdGFydFRpbWVvdXRFcnJvclxuICAgIHwgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBbGlhc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RBbGlhc2VzKFxuICAgIGFyZ3M6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0Q29kZVNpZ25pbmdDb25maWdzKFxuICAgIGFyZ3M6IExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RFdmVudFNvdXJjZU1hcHBpbmdzKFxuICAgIGFyZ3M6IExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlncyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25VcmxDb25maWdzKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEZ1bmN0aW9ucyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdExheWVyVmVyc2lvbnMoXG4gICAgYXJnczogTGlzdExheWVyVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RMYXllcnMoXG4gICAgYXJnczogTGlzdExheWVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RMYXllcnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzKFxuICAgIGFyZ3M6IExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VGFncyhcbiAgICBhcmdzOiBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgbGlzdFZlcnNpb25zQnlGdW5jdGlvbihcbiAgICBhcmdzOiBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hMYXllclZlcnNpb24oXG4gICAgYXJnczogUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoVmVyc2lvbihcbiAgICBhcmdzOiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0UnVudGltZU1hbmFnZW1lbnRDb25maWcoXG4gICAgYXJnczogUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbihcbiAgICBhcmdzOiBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW50YWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB1bnRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWxpYXMoXG4gICAgYXJnczogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZUluVXNlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25Db2RlKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3JcbiAgICB8IEludmFsaWRDb2RlU2lnbmF0dXJlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlRhZyhcbiAgXCJAZWZmZWN0LWF3cy9jbGllbnQtbGFtYmRhL0xhbWJkYVNlcnZpY2VcIixcbik8TGFtYmRhU2VydmljZSwgTGFtYmRhU2VydmljZSQ+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VMYW1iZGFTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oTGFtYmRhQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPExhbWJkYVNlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIExhbWJkYVNlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlTGFtYmRhU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBMYW1iZGFTZXJ2aWNlLFxuICBtYWtlTGFtYmRhU2VydmljZSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBCYXNlTGFtYmRhU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoTGFtYmRhQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdExhbWJkYVNlcnZpY2VMYXllciA9IExhbWJkYVNlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRMYW1iZGFDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
package/package.json CHANGED
@@ -33,7 +33,7 @@
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
- "version": "1.5.0",
36
+ "version": "1.5.1",
37
37
  "types": "lib/index.d.ts",
38
38
  "module": "lib/esm/index.js",
39
39
  "sideEffects": [],