@effect-aws/client-lambda 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
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, 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, PutProvisionedConcurrencyConfigCommand, PutRuntimeManagementConfigCommand, RemoveLayerVersionPermissionCommand, RemovePermissionCommand, TagResourceCommand, UntagResourceCommand, UpdateAliasCommand, UpdateCodeSigningConfigCommand, UpdateEventSourceMappingCommand, UpdateFunctionCodeCommand, UpdateFunctionConfigurationCommand, UpdateFunctionEventInvokeConfigCommand, UpdateFunctionUrlConfigCommand, } from "@aws-sdk/client-lambda";
5
- import { Context, Data, Effect, Layer, ReadonlyRecord } from "effect";
6
- import { SdkError, } from "./Errors";
7
- import { DefaultLambdaClientInstanceLayer, LambdaClientInstance, LambdaClientInstanceLayer, } from "./LambdaClientInstance";
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";
5
+ import { Data, Effect, Layer, Record } from "effect";
6
+ import { AllServiceErrors, SdkError, } from "./Errors";
7
+ import { LambdaClientInstance, LambdaClientInstanceLayer, } from "./LambdaClientInstance";
8
8
  import { DefaultLambdaClientConfigLayer } from "./LambdaClientInstanceConfig";
9
9
  const commands = {
10
10
  AddLayerVersionPermissionCommand,
@@ -33,6 +33,7 @@ const commands = {
33
33
  GetFunctionConcurrencyCommand,
34
34
  GetFunctionConfigurationCommand,
35
35
  GetFunctionEventInvokeConfigCommand,
36
+ GetFunctionRecursionConfigCommand,
36
37
  GetFunctionUrlConfigCommand,
37
38
  GetLayerVersionCommand,
38
39
  GetLayerVersionByArnCommand,
@@ -60,6 +61,7 @@ const commands = {
60
61
  PutFunctionCodeSigningConfigCommand,
61
62
  PutFunctionConcurrencyCommand,
62
63
  PutFunctionEventInvokeConfigCommand,
64
+ PutFunctionRecursionConfigCommand,
63
65
  PutProvisionedConcurrencyConfigCommand,
64
66
  PutRuntimeManagementConfigCommand,
65
67
  RemoveLayerVersionPermissionCommand,
@@ -76,21 +78,23 @@ const commands = {
76
78
  };
77
79
  /**
78
80
  * @since 1.0.0
79
- * @category tags
81
+ * @category models
80
82
  */
81
- export const LambdaService = Context.GenericTag("@effect-aws/client-lambda/LambdaService");
83
+ export class LambdaService extends Effect.Tag("@effect-aws/client-lambda/LambdaService")() {
84
+ }
82
85
  /**
83
86
  * @since 1.0.0
84
87
  * @category constructors
85
88
  */
86
89
  export const makeLambdaService = Effect.gen(function* (_) {
87
90
  const client = yield* _(LambdaClientInstance);
88
- return ReadonlyRecord.toEntries(commands).reduce((acc, [command]) => {
91
+ return Record.toEntries(commands).reduce((acc, [command]) => {
89
92
  const CommandCtor = commands[command];
90
93
  const methodImpl = (args, options) => Effect.tryPromise({
91
94
  try: () => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}),
92
95
  catch: (e) => {
93
- if (e instanceof LambdaServiceException) {
96
+ if (e instanceof LambdaServiceException &&
97
+ AllServiceErrors.includes(e.name)) {
94
98
  const ServiceException = Data.tagged(e.name);
95
99
  return ServiceException({
96
100
  ...e,
@@ -128,20 +132,4 @@ export const LambdaServiceLayer = BaseLambdaServiceLayer.pipe(Layer.provide(Lamb
128
132
  * @category layers
129
133
  */
130
134
  export const DefaultLambdaServiceLayer = LambdaServiceLayer.pipe(Layer.provide(DefaultLambdaClientConfigLayer));
131
- // -------------------- Danger Zone --------------------
132
- /**
133
- * @since 0.1.0
134
- * @deprecated
135
- */
136
- export const BaseLambdaServiceEffect = makeLambdaService;
137
- /**
138
- * @since 0.1.0
139
- * @deprecated
140
- */
141
- export const LambdaServiceEffect = BaseLambdaServiceEffect.pipe(Effect.provide(LambdaClientInstanceLayer));
142
- /**
143
- * @since 0.1.0
144
- * @deprecated
145
- */
146
- export const DefaultLambdaServiceEffect = BaseLambdaServiceEffect.pipe(Effect.provide(DefaultLambdaClientInstanceLayer));
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFHaEMsb0JBQW9CLEVBR3BCLGtCQUFrQixFQUdsQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLHFCQUFxQixFQUdyQiw4QkFBOEIsRUFHOUIsa0JBQWtCLEVBR2xCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IscUJBQXFCLEVBR3JCLHNDQUFzQyxFQUd0QyxnQ0FBZ0MsRUFHaEMsc0NBQXNDLEVBR3RDLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIseUNBQXlDLEVBR3pDLHlCQUF5QixFQUd6QixlQUFlLEVBR2YsMkJBQTJCLEVBRzNCLDRCQUE0QixFQUc1QixrQkFBa0IsRUFHbEIsbUNBQW1DLEVBR25DLDZCQUE2QixFQUc3QiwrQkFBK0IsRUFHL0IsbUNBQW1DLEVBR25DLDJCQUEyQixFQUczQixzQkFBc0IsRUFHdEIsMkJBQTJCLEVBRzNCLDRCQUE0QixFQUc1QixnQkFBZ0IsRUFHaEIsc0NBQXNDLEVBR3RDLGlDQUFpQyxFQUdqQyxhQUFhLEVBR2Isa0JBQWtCLEVBR2xCLCtCQUErQixFQUcvQixrQkFBa0IsRUFHbEIsNkJBQTZCLEVBRzdCLDhCQUE4QixFQUc5QixxQ0FBcUMsRUFHckMsb0JBQW9CLEVBR3BCLHVDQUF1QyxFQUd2Qyw2QkFBNkIsRUFHN0IsaUJBQWlCLEVBR2pCLHdCQUF3QixFQUd4Qix3Q0FBd0MsRUFHeEMsZUFBZSxFQUdmLDZCQUE2QixFQUc3QiwwQkFBMEIsRUFHMUIscUJBQXFCLEVBR3JCLG1DQUFtQyxFQUduQyw2QkFBNkIsRUFHN0IsbUNBQW1DLEVBR25DLHNDQUFzQyxFQUd0QyxpQ0FBaUMsRUFHakMsbUNBQW1DLEVBR25DLHVCQUF1QixFQUd2QixrQkFBa0IsRUFH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c0IsQ0FBQyxJQUFJLENBQzNELEtBQUssQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FDekMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FDOUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUM5QyxDQUFDO0FBRUYsd0RBQXdEO0FBRXhEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLGlCQUFpQixDQUFDO0FBRXpEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FDN0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUMxQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUNwRSxNQUFNLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQ2pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uLFxuICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBHZXRBbGlhc0NvbW1hbmQsXG4gIHR5cGUgR2V0QWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWxpYXNDb21tYW5kT3V0cHV0LFxuICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICBJbnZva2VDb21tYW5kLFxuICB0eXBlIEludm9rZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VDb21tYW5kT3V0cHV0LFxuICBJbnZva2VBc3luY0NvbW1hbmQsXG4gIHR5cGUgSW52b2tlQXN5bmNDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlQXN5bmNDb21tYW5kT3V0cHV0LFxuICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kLFxuICB0eXBlIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0TGF5ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0TGF5ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RMYXllcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWxhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBIdHRwSGFuZGxlck9wdGlvbnMgYXMgX19IdHRwSGFuZGxlck9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQsIERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlYWRvbmx5UmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yLFxuICBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3IsXG4gIENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvcixcbiAgRUMyQWNjZXNzRGVuaWVkRXJyb3IsXG4gIEVDMlRocm90dGxlZEVycm9yLFxuICBFQzJVbmV4cGVjdGVkRXJyb3IsXG4gIEVGU0lPRXJyb3IsXG4gIEVGU01vdW50Q29ubmVjdGl2aXR5RXJyb3IsXG4gIEVGU01vdW50RmFpbHVyZUVycm9yLFxuICBFRlNNb3VudFRpbWVvdXRFcnJvcixcbiAgRU5JTGltaXRSZWFjaGVkRXJyb3IsXG4gIEludmFsaWRDb2RlU2lnbmF0dXJlRXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvcixcbiAgSW52YWxpZFJ1bnRpbWVFcnJvcixcbiAgSW52YWxpZFNlY3VyaXR5R3JvdXBJREVycm9yLFxuICBJbnZhbGlkU3VibmV0SURFcnJvcixcbiAgSW52YWxpZFppcEZpbGVFcnJvcixcbiAgS01TQWNjZXNzRGVuaWVkRXJyb3IsXG4gIEtNU0Rpc2FibGVkRXJyb3IsXG4gIEtNU0ludmFsaWRTdGF0ZUVycm9yLFxuICBLTVNOb3RGb3VuZEVycm9yLFxuICBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yLFxuICBQcmVjb25kaXRpb25GYWlsZWRFcnJvcixcbiAgUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ05vdEZvdW5kRXJyb3IsXG4gIFJlY3Vyc2l2ZUludm9jYXRpb25FcnJvcixcbiAgUmVxdWVzdFRvb0xhcmdlRXJyb3IsXG4gIFJlc291cmNlQ29uZmxpY3RFcnJvcixcbiAgUmVzb3VyY2VJblVzZUVycm9yLFxuICBSZXNvdXJjZU5vdEZvdW5kRXJyb3IsXG4gIFJlc291cmNlTm90UmVhZHlFcnJvcixcbiAgU2VydmljZUVycm9yLFxuICBTbmFwU3RhcnRFcnJvcixcbiAgU25hcFN0YXJ0Tm90UmVhZHlFcnJvcixcbiAgU25hcFN0YXJ0VGltZW91dEVycm9yLFxuICBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvcixcbiAgVG9vTWFueVJlcXVlc3RzRXJyb3IsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3IsXG4gIFNka0Vycm9yLFxuICBUYWdnZWRFeGNlcHRpb24sXG59IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdExhbWJkYUNsaWVudEluc3RhbmNlTGF5ZXIsXG4gIExhbWJkYUNsaWVudEluc3RhbmNlLFxuICBMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9MYW1iZGFDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQsXG4gIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICBHZXRBbGlhc0NvbW1hbmQsXG4gIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db21tYW5kLFxuICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkNvbW1hbmQsXG4gIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZCxcbiAgR2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgSW52b2tlQ29tbWFuZCxcbiAgSW52b2tlQXN5bmNDb21tYW5kLFxuICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kLFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kLFxuICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbnNDb21tYW5kLFxuICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kLFxuICBMaXN0TGF5ZXJzQ29tbWFuZCxcbiAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kLFxuICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kLFxuICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgUHVibGlzaFZlcnNpb25Db21tYW5kLFxuICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVwZGF0ZUFsaWFzQ29tbWFuZCxcbiAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxufTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRMYXllclZlcnNpb25QZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQb2xpY3lMZW5ndGhFeGNlZWRlZEVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQWxpYXMoXG4gICAgYXJnczogQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIHwgU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgYXJnczogQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVGdW5jdGlvbihcbiAgICBhcmdzOiBDcmVhdGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3JcbiAgICB8IEludmFsaWRDb2RlU2lnbmF0dXJlRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVBbGlhc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVBbGlhcyhcbiAgICBhcmdzOiBEZWxldGVBbGlhc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZUluVXNlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbihcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUxheWVyVmVyc2lvbihcbiAgICBhcmdzOiBEZWxldGVMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmR9XG4gICAqL1xuICBnZXRBY2NvdW50U2V0dGluZ3MoXG4gICAgYXJnczogR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU2VydmljZUVycm9yIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWxpYXMoXG4gICAgYXJnczogR2V0QWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldENvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25Db25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZH1cbiAgICovXG4gIGdldExheWVyVmVyc2lvbkJ5QXJuKFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uUG9saWN5KFxuICAgIGFyZ3M6IEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRQb2xpY3koXG4gICAgYXJnczogR2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnKFxuICAgIGFyZ3M6IEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbnZva2VDb21tYW5kfVxuICAgKi9cbiAgaW52b2tlKFxuICAgIGFyZ3M6IEludm9rZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW52b2tlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFQzJBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgRUMyVGhyb3R0bGVkRXJyb3JcbiAgICB8IEVDMlVuZXhwZWN0ZWRFcnJvclxuICAgIHwgRUZTSU9FcnJvclxuICAgIHwgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvclxuICAgIHwgRUZTTW91bnRGYWlsdXJlRXJyb3JcbiAgICB8IEVGU01vdW50VGltZW91dEVycm9yXG4gICAgfCBFTklMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yXG4gICAgfCBJbnZhbGlkUnVudGltZUVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRJREVycm9yXG4gICAgfCBJbnZhbGlkWmlwRmlsZUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IFJlY3Vyc2l2ZUludm9jYXRpb25FcnJvclxuICAgIHwgUmVxdWVzdFRvb0xhcmdlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdFJlYWR5RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgU25hcFN0YXJ0RXJyb3JcbiAgICB8IFNuYXBTdGFydE5vdFJlYWR5RXJyb3JcbiAgICB8IFNuYXBTdGFydFRpbWVvdXRFcnJvclxuICAgIHwgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEludm9rZUFzeW5jQ29tbWFuZH1cbiAgICovXG4gIGludm9rZUFzeW5jKFxuICAgIGFyZ3M6IEludm9rZUFzeW5jQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VBc3luY0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZH1cbiAgICovXG4gIGludm9rZVdpdGhSZXNwb25zZVN0cmVhbShcbiAgICBhcmdzOiBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgRUMyQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEVDMlRocm90dGxlZEVycm9yXG4gICAgfCBFQzJVbmV4cGVjdGVkRXJyb3JcbiAgICB8IEVGU0lPRXJyb3JcbiAgICB8IEVGU01vdW50Q29ubmVjdGl2aXR5RXJyb3JcbiAgICB8IEVGU01vdW50RmFpbHVyZUVycm9yXG4gICAgfCBFRlNNb3VudFRpbWVvdXRFcnJvclxuICAgIHwgRU5JTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvclxuICAgIHwgSW52YWxpZFJ1bnRpbWVFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5R3JvdXBJREVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0SURFcnJvclxuICAgIHwgSW52YWxpZFppcEZpbGVFcnJvclxuICAgIHwgS01TQWNjZXNzRGVuaWVkRXJyb3JcbiAgICB8IEtNU0Rpc2FibGVkRXJyb3JcbiAgICB8IEtNU0ludmFsaWRTdGF0ZUVycm9yXG4gICAgfCBLTVNOb3RGb3VuZEVycm9yXG4gICAgfCBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3JcbiAgICB8IFJlcXVlc3RUb29MYXJnZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RSZWFkeUVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFNuYXBTdGFydEVycm9yXG4gICAgfCBTbmFwU3RhcnROb3RSZWFkeUVycm9yXG4gICAgfCBTbmFwU3RhcnRUaW1lb3V0RXJyb3JcbiAgICB8IFN1Ym5ldElQQWRkcmVzc0xpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWRNZWRpYVR5cGVFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QWxpYXNlc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0QWxpYXNlcyhcbiAgICBhcmdzOiBMaXN0QWxpYXNlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0Q29kZVNpZ25pbmdDb25maWdzKFxuICAgIGFyZ3M6IExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdEV2ZW50U291cmNlTWFwcGluZ3MoXG4gICAgYXJnczogTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3MoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25zKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RnVuY3Rpb25VcmxDb25maWdzKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdExheWVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0TGF5ZXJzKFxuICAgIGFyZ3M6IExpc3RMYXllcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RMYXllcnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBTZXJ2aWNlRXJyb3IgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0TGF5ZXJWZXJzaW9ucyhcbiAgICBhcmdzOiBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlncyhcbiAgICBhcmdzOiBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VGFncyhcbiAgICBhcmdzOiBMaXN0VGFnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBsaXN0VmVyc2lvbnNCeUZ1bmN0aW9uKFxuICAgIGFyZ3M6IExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoTGF5ZXJWZXJzaW9uKFxuICAgIGFyZ3M6IFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoVmVyc2lvbihcbiAgICBhcmdzOiBQdWJsaXNoVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBwdXRGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZyhcbiAgICBhcmdzOiBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0UnVudGltZU1hbmFnZW1lbnRDb25maWcoXG4gICAgYXJnczogUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlUGVybWlzc2lvbihcbiAgICBhcmdzOiBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUFsaWFzKFxuICAgIGFyZ3M6IFVwZGF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VJblVzZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uQ29kZShcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVNpZ25pbmdDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBDb2RlU3RvcmFnZUV4Y2VlZGVkRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVWZXJpZmljYXRpb25GYWlsZWRFcnJvclxuICAgIHwgSW52YWxpZENvZGVTaWduYXR1cmVFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgdGFnc1xuICovXG5leHBvcnQgY29uc3QgTGFtYmRhU2VydmljZSA9IENvbnRleHQuR2VuZXJpY1RhZzxMYW1iZGFTZXJ2aWNlPihcbiAgXCJAZWZmZWN0LWF3cy9jbGllbnQtbGFtYmRhL0xhbWJkYVNlcnZpY2VcIixcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlTGFtYmRhU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKExhbWJkYUNsaWVudEluc3RhbmNlKTtcblxuICByZXR1cm4gUmVhZG9ubHlSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM6IGFueSkgPT5cbiAgICAgIEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgdHJ5OiAoKSA9PiBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIG9wdGlvbnMgPz8ge30pLFxuICAgICAgICBjYXRjaDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIExhbWJkYVNlcnZpY2VFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPExhbWJkYVNlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIExhbWJkYVNlcnZpY2U7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIExhbWJkYVNlcnZpY2UsXG4gIG1ha2VMYW1iZGFTZXJ2aWNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IExhbWJkYVNlcnZpY2VMYXllciA9IEJhc2VMYW1iZGFTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0TGFtYmRhU2VydmljZUxheWVyID0gTGFtYmRhU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyKSxcbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIERhbmdlciBab25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQHNpbmNlIDAuMS4wXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgQmFzZUxhbWJkYVNlcnZpY2VFZmZlY3QgPSBtYWtlTGFtYmRhU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBMYW1iZGFTZXJ2aWNlRWZmZWN0ID0gQmFzZUxhbWJkYVNlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoTGFtYmRhQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAwLjEuMFxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRMYW1iZGFTZXJ2aWNlRWZmZWN0ID0gQmFzZUxhbWJkYVNlcnZpY2VFZmZlY3QucGlwZShcbiAgRWZmZWN0LnByb3ZpZGUoRGVmYXVsdExhbWJkYUNsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MYW1iZGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFHaEMsb0JBQW9CLEVBR3BCLGtCQUFrQixFQUdsQiw4QkFBOEIsRUFHOUIsK0JBQStCLEVBRy9CLHFCQUFxQixFQUdyQiw4QkFBOEIsRUFHOUIsa0JBQWtCLEVBR2xCLDhCQUE4QixFQUc5QiwrQkFBK0IsRUFHL0IscUJBQXFCLEVBR3JCLHNDQUFzQyxFQUd0QyxnQ0FBZ0MsRUFHaEMsc0NBQXNDLEVBR3RDLDhCQUE4QixFQUc5Qix5QkFBeUIsRUFHekIseUNBQXlDLEVBR3pDLHlCQUF5QixFQUd6QixlQUFlLEVBR2YsMkJBQTJCLEVBRzNCLDRCQUE0QixFQUc1QixrQkFBa0IsRUFHbEIsbUNBQW1DLEVBR25DLDZCQUE2QixFQUc3QiwrQkFBK0IsRUFHL0IsbUNBQW1DLEVBR25DLGlDQUFpQyxFQUdqQywyQkFBMkIsRUFHM0Isc0JBQXNCLEVBR3RCLDJCQUEyQixFQUczQiw0QkFBNEIsRUFHNUIsZ0JBQWdCLEVBR2hCLHNDQUFzQyxFQUd0QyxpQ0FBaUMsRUFHakMsYUFBYSxFQUdiLGtCQUFrQixFQUdsQiwrQkFBK0IsRUFHL0Isa0JBQWtCLEVBR2xCLDZCQUE2QixFQUc3Qiw4QkFBOEIsRUFHOUIscUNBQXFDLEVBR3JDLG9CQUFvQixFQUdwQix1Q0FBdUMsRUFHdkMsNkJBQTZCLEVBRzdCLGlCQUFpQixFQUdqQix3QkFBd0IsRUFHeEIsd0NBQXdDLEVBR3hDLGVBQWUsRUFHZiw2QkFBNkIsRUFHN0IsMEJBQTBCLEVBRzFCLHFCQUFxQixFQUdyQixtQ0FBbUMsRUFHbkMsNkJBQTZCLEVBRzdCLG1DQUFtQyxFQUduQyxpQ0FBaUMsRUFHakMsc0NBQXNDLEVBR3RDLGlDQUFpQyxFQUdqQyxtQ0FBbUMsRUFH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QUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2hELGFBQWEsRUFDYixpQkFBaUIsQ0FDbEIsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUN6QyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUM5RCxLQUFLLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uLFxuICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICB0eXBlIEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kT3V0cHV0LFxuICBHZXRBbGlhc0NvbW1hbmQsXG4gIHR5cGUgR2V0QWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QWxpYXNDb21tYW5kT3V0cHV0LFxuICBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25Db21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25CeUFybkNvbW1hbmQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kT3V0cHV0LFxuICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBHZXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICBJbnZva2VDb21tYW5kLFxuICB0eXBlIEludm9rZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VDb21tYW5kT3V0cHV0LFxuICBJbnZva2VBc3luY0NvbW1hbmQsXG4gIHR5cGUgSW52b2tlQXN5bmNDb21tYW5kSW5wdXQsXG4gIHR5cGUgSW52b2tlQXN5bmNDb21tYW5kT3V0cHV0LFxuICBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kLFxuICB0eXBlIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kT3V0cHV0LFxuICBMaXN0QWxpYXNlc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEFsaWFzZXNDb21tYW5kT3V0cHV0LFxuICBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RDb2RlU2lnbmluZ0NvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEZ1bmN0aW9uc0J5Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZCxcbiAgdHlwZSBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RGdW5jdGlvblVybENvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0TGF5ZXJzQ29tbWFuZCxcbiAgdHlwZSBMaXN0TGF5ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RMYXllcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdExheWVyVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kLFxuICB0eXBlIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFRhZ3NDb21tYW5kT3V0cHV0LFxuICBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZCxcbiAgdHlwZSBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RWZXJzaW9uc0J5RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaFZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgdHlwZSBQdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVbnRhZ1Jlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQWxpYXNDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZCxcbiAgdHlwZSBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICB0eXBlIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICBVcGRhdGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWxhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBIdHRwSGFuZGxlck9wdGlvbnMgYXMgX19IdHRwSGFuZGxlck9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvcixcbiAgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yLFxuICBDb2RlVmVyaWZpY2F0aW9uRmFpbGVkRXJyb3IsXG4gIEVDMkFjY2Vzc0RlbmllZEVycm9yLFxuICBFQzJUaHJvdHRsZWRFcnJvcixcbiAgRUMyVW5leHBlY3RlZEVycm9yLFxuICBFRlNJT0Vycm9yLFxuICBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yLFxuICBFRlNNb3VudEZhaWx1cmVFcnJvcixcbiAgRUZTTW91bnRUaW1lb3V0RXJyb3IsXG4gIEVOSUxpbWl0UmVhY2hlZEVycm9yLFxuICBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcixcbiAgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3IsXG4gIEludmFsaWRSdW50aW1lRXJyb3IsXG4gIEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvcixcbiAgSW52YWxpZFN1Ym5ldElERXJyb3IsXG4gIEludmFsaWRaaXBGaWxlRXJyb3IsXG4gIEtNU0FjY2Vzc0RlbmllZEVycm9yLFxuICBLTVNEaXNhYmxlZEVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS01TTm90Rm91bmRFcnJvcixcbiAgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvcixcbiAgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3IsXG4gIFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEVycm9yLFxuICBSZWN1cnNpdmVJbnZvY2F0aW9uRXJyb3IsXG4gIFJlcXVlc3RUb29MYXJnZUVycm9yLFxuICBSZXNvdXJjZUNvbmZsaWN0RXJyb3IsXG4gIFJlc291cmNlSW5Vc2VFcnJvcixcbiAgUmVzb3VyY2VOb3RGb3VuZEVycm9yLFxuICBSZXNvdXJjZU5vdFJlYWR5RXJyb3IsXG4gIFNlcnZpY2VFcnJvcixcbiAgU25hcFN0YXJ0RXJyb3IsXG4gIFNuYXBTdGFydE5vdFJlYWR5RXJyb3IsXG4gIFNuYXBTdGFydFRpbWVvdXRFcnJvcixcbiAgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3IsXG4gIFRvb01hbnlSZXF1ZXN0c0Vycm9yLFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7XG4gIExhbWJkYUNsaWVudEluc3RhbmNlLFxuICBMYW1iZGFDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9MYW1iZGFDbGllbnRJbnN0YW5jZVwiO1xuaW1wb3J0IHsgRGVmYXVsdExhbWJkYUNsaWVudENvbmZpZ0xheWVyIH0gZnJvbSBcIi4vTGFtYmRhQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kLFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQ3JlYXRlQWxpYXNDb21tYW5kLFxuICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmQsXG4gIENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmQsXG4gIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kLFxuICBEZWxldGVBbGlhc0NvbW1hbmQsXG4gIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db21tYW5kLFxuICBEZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgRGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmQsXG4gIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmQsXG4gIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kLFxuICBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kLFxuICBHZXRBbGlhc0NvbW1hbmQsXG4gIEdldENvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db21tYW5kLFxuICBHZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kLFxuICBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmQsXG4gIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZCxcbiAgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kLFxuICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kLFxuICBHZXRQb2xpY3lDb21tYW5kLFxuICBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZCxcbiAgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kLFxuICBJbnZva2VDb21tYW5kLFxuICBJbnZva2VBc3luY0NvbW1hbmQsXG4gIEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmQsXG4gIExpc3RBbGlhc2VzQ29tbWFuZCxcbiAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RFdmVudFNvdXJjZU1hcHBpbmdzQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uc0NvbW1hbmQsXG4gIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmQsXG4gIExpc3RMYXllcnNDb21tYW5kLFxuICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmQsXG4gIExpc3RUYWdzQ29tbWFuZCxcbiAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmQsXG4gIFB1Ymxpc2hMYXllclZlcnNpb25Db21tYW5kLFxuICBQdWJsaXNoVmVyc2lvbkNvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kLFxuICBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZCxcbiAgUHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZCxcbiAgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmQsXG4gIFB1dFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZCxcbiAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBVcGRhdGVBbGlhc0NvbW1hbmQsXG4gIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZCxcbiAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgVXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmQsXG4gIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZCxcbn07XG5cbmludGVyZmFjZSBMYW1iZGFTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZExheWVyVmVyc2lvblBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgYWRkTGF5ZXJWZXJzaW9uUGVybWlzc2lvbihcbiAgICBhcmdzOiBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFkZFBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgYWRkUGVybWlzc2lvbihcbiAgICBhcmdzOiBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUG9saWN5TGVuZ3RoRXhjZWVkZWRFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUFsaWFzKFxuICAgIGFyZ3M6IENyZWF0ZUFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IENyZWF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IENyZWF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb24oXG4gICAgYXJnczogQ3JlYXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlRnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogQ3JlYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQWxpYXMoXG4gICAgYXJnczogRGVsZXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBEZWxldGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VJblVzZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb24oXG4gICAgYXJnczogRGVsZXRlRnVuY3Rpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlRnVuY3Rpb25Db25jdXJyZW5jeShcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVGdW5jdGlvblVybENvbmZpZyhcbiAgICBhcmdzOiBEZWxldGVGdW5jdGlvblVybENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUxheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVMYXllclZlcnNpb24oXG4gICAgYXJnczogRGVsZXRlTGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU2VydmljZUVycm9yIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRBY2NvdW50U2V0dGluZ3NDb21tYW5kfVxuICAgKi9cbiAgZ2V0QWNjb3VudFNldHRpbmdzKFxuICAgIGFyZ3M6IEdldEFjY291bnRTZXR0aW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QWNjb3VudFNldHRpbmdzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEFsaWFzQ29tbWFuZH1cbiAgICovXG4gIGdldEFsaWFzKFxuICAgIGFyZ3M6IEdldEFsaWFzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRBbGlhc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRDb2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBHZXRDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0Q29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfCBTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZH1cbiAgICovXG4gIGdldEV2ZW50U291cmNlTWFwcGluZyhcbiAgICBhcmdzOiBHZXRFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbihcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvbkNvbmN1cnJlbmN5KFxuICAgIGFyZ3M6IEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29uY3VycmVuY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBnZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZyhcbiAgICBhcmdzOiBHZXRGdW5jdGlvblJlY3Vyc2lvbkNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0RnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogR2V0RnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRMYXllclZlcnNpb24oXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kfVxuICAgKi9cbiAgZ2V0TGF5ZXJWZXJzaW9uQnlBcm4oXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uQnlBcm5Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldExheWVyVmVyc2lvbkJ5QXJuQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldExheWVyVmVyc2lvblBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXRMYXllclZlcnNpb25Qb2xpY3koXG4gICAgYXJnczogR2V0TGF5ZXJWZXJzaW9uUG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRMYXllclZlcnNpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIGdldFBvbGljeShcbiAgICBhcmdzOiBHZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGdldFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWcoXG4gICAgYXJnczogR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kfVxuICAgKi9cbiAgZ2V0UnVudGltZU1hbmFnZW1lbnRDb25maWcoXG4gICAgYXJnczogR2V0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFJ1bnRpbWVNYW5hZ2VtZW50Q29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEludm9rZUNvbW1hbmR9XG4gICAqL1xuICBpbnZva2UoXG4gICAgYXJnczogSW52b2tlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBJbnZva2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVDMkFjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBFQzJUaHJvdHRsZWRFcnJvclxuICAgIHwgRUMyVW5leHBlY3RlZEVycm9yXG4gICAgfCBFRlNJT0Vycm9yXG4gICAgfCBFRlNNb3VudENvbm5lY3Rpdml0eUVycm9yXG4gICAgfCBFRlNNb3VudEZhaWx1cmVFcnJvclxuICAgIHwgRUZTTW91bnRUaW1lb3V0RXJyb3JcbiAgICB8IEVOSUxpbWl0UmVhY2hlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RDb250ZW50RXJyb3JcbiAgICB8IEludmFsaWRSdW50aW1lRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUdyb3VwSURFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldElERXJyb3JcbiAgICB8IEludmFsaWRaaXBGaWxlRXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgUmVjdXJzaXZlSW52b2NhdGlvbkVycm9yXG4gICAgfCBSZXF1ZXN0VG9vTGFyZ2VFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFJlc291cmNlTm90UmVhZHlFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBTbmFwU3RhcnRFcnJvclxuICAgIHwgU25hcFN0YXJ0Tm90UmVhZHlFcnJvclxuICAgIHwgU25hcFN0YXJ0VGltZW91dEVycm9yXG4gICAgfCBTdWJuZXRJUEFkZHJlc3NMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgICB8IFVuc3VwcG9ydGVkTWVkaWFUeXBlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgSW52b2tlQXN5bmNDb21tYW5kfVxuICAgKi9cbiAgaW52b2tlQXN5bmMoXG4gICAgYXJnczogSW52b2tlQXN5bmNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEludm9rZUFzeW5jQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUmVxdWVzdENvbnRlbnRFcnJvclxuICAgIHwgSW52YWxpZFJ1bnRpbWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBJbnZva2VXaXRoUmVzcG9uc2VTdHJlYW1Db21tYW5kfVxuICAgKi9cbiAgaW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtKFxuICAgIGFyZ3M6IEludm9rZVdpdGhSZXNwb25zZVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgSW52b2tlV2l0aFJlc3BvbnNlU3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFQzJBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgRUMyVGhyb3R0bGVkRXJyb3JcbiAgICB8IEVDMlVuZXhwZWN0ZWRFcnJvclxuICAgIHwgRUZTSU9FcnJvclxuICAgIHwgRUZTTW91bnRDb25uZWN0aXZpdHlFcnJvclxuICAgIHwgRUZTTW91bnRGYWlsdXJlRXJyb3JcbiAgICB8IEVGU01vdW50VGltZW91dEVycm9yXG4gICAgfCBFTklMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IEludmFsaWRSZXF1ZXN0Q29udGVudEVycm9yXG4gICAgfCBJbnZhbGlkUnVudGltZUVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlHcm91cElERXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRJREVycm9yXG4gICAgfCBJbnZhbGlkWmlwRmlsZUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IFJlY3Vyc2l2ZUludm9jYXRpb25FcnJvclxuICAgIHwgUmVxdWVzdFRvb0xhcmdlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdFJlYWR5RXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgU25hcFN0YXJ0RXJyb3JcbiAgICB8IFNuYXBTdGFydE5vdFJlYWR5RXJyb3JcbiAgICB8IFNuYXBTdGFydFRpbWVvdXRFcnJvclxuICAgIHwgU3VibmV0SVBBZGRyZXNzTGltaXRSZWFjaGVkRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gICAgfCBVbnN1cHBvcnRlZE1lZGlhVHlwZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RBbGlhc2VzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RBbGlhc2VzKFxuICAgIGFyZ3M6IExpc3RBbGlhc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0QWxpYXNlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0Q29kZVNpZ25pbmdDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RDb2RlU2lnbmluZ0NvbmZpZ3MoXG4gICAgYXJnczogTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdENvZGVTaWduaW5nQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RXZlbnRTb3VyY2VNYXBwaW5ncyhcbiAgICBhcmdzOiBMaXN0RXZlbnRTb3VyY2VNYXBwaW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEV2ZW50U291cmNlTWFwcGluZ3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlncyhcbiAgICBhcmdzOiBMaXN0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZ3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbnMoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IExpc3RGdW5jdGlvbnNCeUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RnVuY3Rpb25zQnlDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RnVuY3Rpb25VcmxDb25maWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RGdW5jdGlvblVybENvbmZpZ3MoXG4gICAgYXJnczogTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEZ1bmN0aW9uVXJsQ29uZmlnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0TGF5ZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RMYXllcnMoXG4gICAgYXJnczogTGlzdExheWVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdExheWVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFNlcnZpY2VFcnJvciB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RMYXllclZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RMYXllclZlcnNpb25zKFxuICAgIGFyZ3M6IExpc3RMYXllclZlcnNpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0TGF5ZXJWZXJzaW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzKFxuICAgIGFyZ3M6IExpc3RQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzKFxuICAgIGFyZ3M6IExpc3RUYWdzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VmVyc2lvbnNCeUZ1bmN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGxpc3RWZXJzaW9uc0J5RnVuY3Rpb24oXG4gICAgYXJnczogTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFZlcnNpb25zQnlGdW5jdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoTGF5ZXJWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hMYXllclZlcnNpb24oXG4gICAgYXJnczogUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaExheWVyVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hWZXJzaW9uKFxuICAgIGFyZ3M6IFB1Ymxpc2hWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ29kZVN0b3JhZ2VFeGNlZWRlZEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uQ29kZVNpZ25pbmdDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25Db2RlU2lnbmluZ0NvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvbkNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRGdW5jdGlvbkNvbmN1cnJlbmN5Q29tbWFuZH1cbiAgICovXG4gIHB1dEZ1bmN0aW9uQ29uY3VycmVuY3koXG4gICAgYXJnczogUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0RnVuY3Rpb25Db25jdXJyZW5jeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kfVxuICAgKi9cbiAgcHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWcoXG4gICAgYXJnczogUHV0RnVuY3Rpb25SZWN1cnNpb25Db25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEZ1bmN0aW9uUmVjdXJzaW9uQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRQcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlnKFxuICAgIGFyZ3M6IFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZyhcbiAgICBhcmdzOiBQdXRSdW50aW1lTWFuYWdlbWVudENvbmZpZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0UnVudGltZU1hbmFnZW1lbnRDb25maWdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBSZXNvdXJjZUNvbmZsaWN0RXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVMYXllclZlcnNpb25QZXJtaXNzaW9uQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZUxheWVyVmVyc2lvblBlcm1pc3Npb24oXG4gICAgYXJnczogUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlTGF5ZXJWZXJzaW9uUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFByZWNvbmRpdGlvbkZhaWxlZEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQcmVjb25kaXRpb25GYWlsZWRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHRhZ1Jlc291cmNlKFxuICAgIGFyZ3M6IFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlQWxpYXNDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlQWxpYXMoXG4gICAgYXJnczogVXBkYXRlQWxpYXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUFsaWFzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZH1cbiAgICovXG4gIHVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnKFxuICAgIGFyZ3M6IFVwZGF0ZUNvZGVTaWduaW5nQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVDb2RlU2lnbmluZ0NvbmZpZ0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB8IFJlc291cmNlTm90Rm91bmRFcnJvciB8IFNlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVFdmVudFNvdXJjZU1hcHBpbmdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgIGFyZ3M6IFVwZGF0ZUV2ZW50U291cmNlTWFwcGluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRXZlbnRTb3VyY2VNYXBwaW5nQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZUluVXNlRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU2VydmljZUVycm9yXG4gICAgfCBUb29NYW55UmVxdWVzdHNFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGRhdGVGdW5jdGlvbkNvZGVDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25Db2RlKFxuICAgIGFyZ3M6IFVwZGF0ZUZ1bmN0aW9uQ29kZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVXBkYXRlRnVuY3Rpb25Db2RlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDb2RlU2lnbmluZ0NvbmZpZ05vdEZvdW5kRXJyb3JcbiAgICB8IENvZGVTdG9yYWdlRXhjZWVkZWRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICB1cGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENvZGVTaWduaW5nQ29uZmlnTm90Rm91bmRFcnJvclxuICAgIHwgQ29kZVZlcmlmaWNhdGlvbkZhaWxlZEVycm9yXG4gICAgfCBJbnZhbGlkQ29kZVNpZ25hdHVyZUVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUHJlY29uZGl0aW9uRmFpbGVkRXJyb3JcbiAgICB8IFJlc291cmNlQ29uZmxpY3RFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTZXJ2aWNlRXJyb3JcbiAgICB8IFRvb01hbnlSZXF1ZXN0c0Vycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwZGF0ZUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZyhcbiAgICBhcmdzOiBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVcGRhdGVGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kfVxuICAgKi9cbiAgdXBkYXRlRnVuY3Rpb25VcmxDb25maWcoXG4gICAgYXJnczogVXBkYXRlRnVuY3Rpb25VcmxDb25maWdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFVwZGF0ZUZ1bmN0aW9uVXJsQ29uZmlnQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgUmVzb3VyY2VDb25mbGljdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFNlcnZpY2VFcnJvclxuICAgIHwgVG9vTWFueVJlcXVlc3RzRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1sYW1iZGEvTGFtYmRhU2VydmljZVwiLFxuKTxMYW1iZGFTZXJ2aWNlLCBMYW1iZGFTZXJ2aWNlJD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUxhbWJkYVNlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhMYW1iZGFDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6ICgpID0+IGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwgb3B0aW9ucyA/PyB7fSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBMYW1iZGFTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPExhbWJkYVNlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIExhbWJkYVNlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlTGFtYmRhU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBMYW1iZGFTZXJ2aWNlLFxuICBtYWtlTGFtYmRhU2VydmljZSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBMYW1iZGFTZXJ2aWNlTGF5ZXIgPSBCYXNlTGFtYmRhU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoTGFtYmRhQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdExhbWJkYVNlcnZpY2VMYXllciA9IExhbWJkYVNlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRMYW1iZGFDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
package/package.json CHANGED
@@ -7,23 +7,21 @@
7
7
  },
8
8
  "devDependencies": {
9
9
  "@types/node": "^18",
10
- "@typescript-eslint/eslint-plugin": "^6",
11
- "@typescript-eslint/parser": "^6",
10
+ "@typescript-eslint/eslint-plugin": "^7",
11
+ "@typescript-eslint/parser": "^7",
12
12
  "aws-sdk-client-mock": "^3.0.0",
13
13
  "aws-sdk-client-mock-jest": "^3.0.0",
14
- "constructs": "^10.0.0",
15
- "effect": "2.3.1",
14
+ "effect": "3.0.0",
16
15
  "eslint": "^8",
17
- "eslint-config-prettier": "^9.0.0",
16
+ "eslint-config-prettier": "^9.1.0",
18
17
  "eslint-import-resolver-typescript": "^3.6.1",
19
- "eslint-plugin-import": "^2.28.1",
20
- "eslint-plugin-prettier": "^5.0.0",
21
- "prettier": "^3.0.3",
22
- "projen": "^0.79.6",
23
- "typescript": "^5.2.2"
18
+ "eslint-plugin-import": "^2.29.1",
19
+ "eslint-plugin-prettier": "^5.2.1",
20
+ "prettier": "^3.2.5",
21
+ "typescript": "^5.4.2"
24
22
  },
25
23
  "peerDependencies": {
26
- "effect": ">=2.3.1 <2.5.0"
24
+ "effect": ">=3.0.0 <4.0.0"
27
25
  },
28
26
  "dependencies": {
29
27
  "@aws-sdk/client-lambda": "^3",
@@ -35,7 +33,7 @@
35
33
  "publishConfig": {
36
34
  "access": "public"
37
35
  },
38
- "version": "1.2.0",
36
+ "version": "1.4.0",
39
37
  "types": "lib/index.d.ts",
40
38
  "module": "lib/esm/index.js",
41
39
  "sideEffects": [],