@effect-aws/client-sns 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,196 +1,246 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { AddPermissionCommandInput, AddPermissionCommandOutput, CheckIfPhoneNumberIsOptedOutCommandInput, CheckIfPhoneNumberIsOptedOutCommandOutput, ConfirmSubscriptionCommandInput, ConfirmSubscriptionCommandOutput, CreatePlatformApplicationCommandInput, CreatePlatformApplicationCommandOutput, CreatePlatformEndpointCommandInput, CreatePlatformEndpointCommandOutput, CreateSMSSandboxPhoneNumberCommandInput, CreateSMSSandboxPhoneNumberCommandOutput, CreateTopicCommandInput, CreateTopicCommandOutput, DeleteEndpointCommandInput, DeleteEndpointCommandOutput, DeletePlatformApplicationCommandInput, DeletePlatformApplicationCommandOutput, DeleteSMSSandboxPhoneNumberCommandInput, DeleteSMSSandboxPhoneNumberCommandOutput, DeleteTopicCommandInput, DeleteTopicCommandOutput, GetDataProtectionPolicyCommandInput, GetDataProtectionPolicyCommandOutput, GetEndpointAttributesCommandInput, GetEndpointAttributesCommandOutput, GetPlatformApplicationAttributesCommandInput, GetPlatformApplicationAttributesCommandOutput, GetSMSAttributesCommandInput, GetSMSAttributesCommandOutput, GetSMSSandboxAccountStatusCommandInput, GetSMSSandboxAccountStatusCommandOutput, GetSubscriptionAttributesCommandInput, GetSubscriptionAttributesCommandOutput, GetTopicAttributesCommandInput, GetTopicAttributesCommandOutput, ListEndpointsByPlatformApplicationCommandInput, ListEndpointsByPlatformApplicationCommandOutput, ListOriginationNumbersCommandInput, ListOriginationNumbersCommandOutput, ListPhoneNumbersOptedOutCommandInput, ListPhoneNumbersOptedOutCommandOutput, ListPlatformApplicationsCommandInput, ListPlatformApplicationsCommandOutput, ListSMSSandboxPhoneNumbersCommandInput, ListSMSSandboxPhoneNumbersCommandOutput, ListSubscriptionsByTopicCommandInput, ListSubscriptionsByTopicCommandOutput, ListSubscriptionsCommandInput, ListSubscriptionsCommandOutput, ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput, ListTopicsCommandInput, ListTopicsCommandOutput, OptInPhoneNumberCommandInput, OptInPhoneNumberCommandOutput, PublishBatchCommandInput, PublishBatchCommandOutput, PublishCommandInput, PublishCommandOutput, PutDataProtectionPolicyCommandInput, PutDataProtectionPolicyCommandOutput, RemovePermissionCommandInput, RemovePermissionCommandOutput, SetEndpointAttributesCommandInput, SetEndpointAttributesCommandOutput, SetPlatformApplicationAttributesCommandInput, SetPlatformApplicationAttributesCommandOutput, SetSMSAttributesCommandInput, SetSMSAttributesCommandOutput, SetSubscriptionAttributesCommandInput, SetSubscriptionAttributesCommandOutput, SetTopicAttributesCommandInput, SetTopicAttributesCommandOutput, SubscribeCommandInput, SubscribeCommandOutput, TagResourceCommandInput, TagResourceCommandOutput, UnsubscribeCommandInput, UnsubscribeCommandOutput, UntagResourceCommandInput, UntagResourceCommandOutput, VerifySMSSandboxPhoneNumberCommandInput, VerifySMSSandboxPhoneNumberCommandOutput } from "@aws-sdk/client-sns";
5
- import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types";
6
- import { Context, Effect, Layer } from "effect";
7
- import { AuthorizationError, BatchEntryIdsNotDistinctError, BatchRequestTooLongError, ConcurrentAccessError, EmptyBatchRequestError, EndpointDisabledError, FilterPolicyLimitExceededError, InternalError, InvalidBatchEntryIdError, InvalidParameterError, InvalidParameterValueError, InvalidSecurityError, KMSAccessDeniedError, KMSDisabledError, KMSInvalidStateError, KMSNotFoundError, KMSOptInRequiredError, KMSThrottlingError, NotFoundError, OptedOutError, PlatformApplicationDisabledError, ResourceNotFoundError, SdkError, StaleTagError, SubscriptionLimitExceededError, TagLimitExceededError, TagPolicyError, ThrottledError, TooManyEntriesInBatchRequestError, TopicLimitExceededError, UserError, ValidationError, VerificationError } from "./Errors";
4
+ import { type AddPermissionCommandInput, type AddPermissionCommandOutput, type CheckIfPhoneNumberIsOptedOutCommandInput, type CheckIfPhoneNumberIsOptedOutCommandOutput, type ConfirmSubscriptionCommandInput, type ConfirmSubscriptionCommandOutput, type CreatePlatformApplicationCommandInput, type CreatePlatformApplicationCommandOutput, type CreatePlatformEndpointCommandInput, type CreatePlatformEndpointCommandOutput, type CreateSMSSandboxPhoneNumberCommandInput, type CreateSMSSandboxPhoneNumberCommandOutput, type CreateTopicCommandInput, type CreateTopicCommandOutput, type DeleteEndpointCommandInput, type DeleteEndpointCommandOutput, type DeletePlatformApplicationCommandInput, type DeletePlatformApplicationCommandOutput, type DeleteSMSSandboxPhoneNumberCommandInput, type DeleteSMSSandboxPhoneNumberCommandOutput, type DeleteTopicCommandInput, type DeleteTopicCommandOutput, type GetDataProtectionPolicyCommandInput, type GetDataProtectionPolicyCommandOutput, type GetEndpointAttributesCommandInput, type GetEndpointAttributesCommandOutput, type GetPlatformApplicationAttributesCommandInput, type GetPlatformApplicationAttributesCommandOutput, type GetSMSAttributesCommandInput, type GetSMSAttributesCommandOutput, type GetSMSSandboxAccountStatusCommandInput, type GetSMSSandboxAccountStatusCommandOutput, type GetSubscriptionAttributesCommandInput, type GetSubscriptionAttributesCommandOutput, type GetTopicAttributesCommandInput, type GetTopicAttributesCommandOutput, type ListEndpointsByPlatformApplicationCommandInput, type ListEndpointsByPlatformApplicationCommandOutput, type ListOriginationNumbersCommandInput, type ListOriginationNumbersCommandOutput, type ListPhoneNumbersOptedOutCommandInput, type ListPhoneNumbersOptedOutCommandOutput, type ListPlatformApplicationsCommandInput, type ListPlatformApplicationsCommandOutput, type ListSMSSandboxPhoneNumbersCommandInput, type ListSMSSandboxPhoneNumbersCommandOutput, type ListSubscriptionsCommandInput, type ListSubscriptionsCommandOutput, type ListSubscriptionsByTopicCommandInput, type ListSubscriptionsByTopicCommandOutput, type ListTagsForResourceCommandInput, type ListTagsForResourceCommandOutput, type ListTopicsCommandInput, type ListTopicsCommandOutput, type OptInPhoneNumberCommandInput, type OptInPhoneNumberCommandOutput, type PublishCommandInput, type PublishCommandOutput, type PublishBatchCommandInput, type PublishBatchCommandOutput, type PutDataProtectionPolicyCommandInput, type PutDataProtectionPolicyCommandOutput, type RemovePermissionCommandInput, type RemovePermissionCommandOutput, type SetEndpointAttributesCommandInput, type SetEndpointAttributesCommandOutput, type SetPlatformApplicationAttributesCommandInput, type SetPlatformApplicationAttributesCommandOutput, type SetSMSAttributesCommandInput, type SetSMSAttributesCommandOutput, type SetSubscriptionAttributesCommandInput, type SetSubscriptionAttributesCommandOutput, type SetTopicAttributesCommandInput, type SetTopicAttributesCommandOutput, type SubscribeCommandInput, type SubscribeCommandOutput, type TagResourceCommandInput, type TagResourceCommandOutput, type UnsubscribeCommandInput, type UnsubscribeCommandOutput, type UntagResourceCommandInput, type UntagResourceCommandOutput, type VerifySMSSandboxPhoneNumberCommandInput, type VerifySMSSandboxPhoneNumberCommandOutput } from "@aws-sdk/client-sns";
5
+ import { Effect, Layer } from "effect";
6
+ import { AuthorizationError, BatchEntryIdsNotDistinctError, BatchRequestTooLongError, ConcurrentAccessError, EmptyBatchRequestError, EndpointDisabledError, FilterPolicyLimitExceededError, InternalError, InvalidBatchEntryIdError, InvalidParameterError, InvalidParameterValueError, InvalidSecurityError, InvalidStateError, KMSAccessDeniedError, KMSDisabledError, KMSInvalidStateError, KMSNotFoundError, KMSOptInRequiredError, KMSThrottlingError, NotFoundError, OptedOutError, PlatformApplicationDisabledError, ReplayLimitExceededError, ResourceNotFoundError, StaleTagError, SubscriptionLimitExceededError, TagLimitExceededError, TagPolicyError, ThrottledError, TooManyEntriesInBatchRequestError, TopicLimitExceededError, UserError, ValidationError, VerificationError, SdkError } from "./Errors";
8
7
  import { SNSClientInstance } from "./SNSClientInstance";
9
- /**
10
- * @since 1.0.0
11
- * @category models
12
- */
13
- export interface SNSService {
8
+ interface HttpHandlerOptions {
9
+ /**
10
+ * The maximum time in milliseconds that the connection phase of a request
11
+ * may take before the connection attempt is abandoned.
12
+ */
13
+ requestTimeout?: number;
14
+ }
15
+ interface SNSService$ {
14
16
  readonly _: unique symbol;
15
17
  /**
16
18
  * @see {@link AddPermissionCommand}
17
19
  */
18
- addPermission(args: AddPermissionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<AddPermissionCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
20
+ addPermission(args: AddPermissionCommandInput, options?: HttpHandlerOptions): Effect.Effect<AddPermissionCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
19
21
  /**
20
22
  * @see {@link CheckIfPhoneNumberIsOptedOutCommand}
21
23
  */
22
- checkIfPhoneNumberIsOptedOut(args: CheckIfPhoneNumberIsOptedOutCommandInput, options?: __HttpHandlerOptions): Effect.Effect<CheckIfPhoneNumberIsOptedOutCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
24
+ checkIfPhoneNumberIsOptedOut(args: CheckIfPhoneNumberIsOptedOutCommandInput, options?: HttpHandlerOptions): Effect.Effect<CheckIfPhoneNumberIsOptedOutCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
23
25
  /**
24
26
  * @see {@link ConfirmSubscriptionCommand}
25
27
  */
26
- confirmSubscription(args: ConfirmSubscriptionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ConfirmSubscriptionCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError | SubscriptionLimitExceededError>;
28
+ confirmSubscription(args: ConfirmSubscriptionCommandInput, options?: HttpHandlerOptions): Effect.Effect<ConfirmSubscriptionCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError | ReplayLimitExceededError | SubscriptionLimitExceededError>;
27
29
  /**
28
30
  * @see {@link CreatePlatformApplicationCommand}
29
31
  */
30
- createPlatformApplication(args: CreatePlatformApplicationCommandInput, options?: __HttpHandlerOptions): Effect.Effect<CreatePlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
32
+ createPlatformApplication(args: CreatePlatformApplicationCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreatePlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
31
33
  /**
32
34
  * @see {@link CreatePlatformEndpointCommand}
33
35
  */
34
- createPlatformEndpoint(args: CreatePlatformEndpointCommandInput, options?: __HttpHandlerOptions): Effect.Effect<CreatePlatformEndpointCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
36
+ createPlatformEndpoint(args: CreatePlatformEndpointCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreatePlatformEndpointCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
35
37
  /**
36
38
  * @see {@link CreateSMSSandboxPhoneNumberCommand}
37
39
  */
38
- createSMSSandboxPhoneNumber(args: CreateSMSSandboxPhoneNumberCommandInput, options?: __HttpHandlerOptions): Effect.Effect<CreateSMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | OptedOutError | ThrottledError | UserError>;
40
+ createSMSSandboxPhoneNumber(args: CreateSMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateSMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | OptedOutError | ThrottledError | UserError>;
39
41
  /**
40
42
  * @see {@link CreateTopicCommand}
41
43
  */
42
- createTopic(args: CreateTopicCommandInput, options?: __HttpHandlerOptions): Effect.Effect<CreateTopicCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | InvalidSecurityError | StaleTagError | TagLimitExceededError | TagPolicyError | TopicLimitExceededError>;
44
+ createTopic(args: CreateTopicCommandInput, options?: HttpHandlerOptions): Effect.Effect<CreateTopicCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | InvalidSecurityError | StaleTagError | TagLimitExceededError | TagPolicyError | TopicLimitExceededError>;
43
45
  /**
44
46
  * @see {@link DeleteEndpointCommand}
45
47
  */
46
- deleteEndpoint(args: DeleteEndpointCommandInput, options?: __HttpHandlerOptions): Effect.Effect<DeleteEndpointCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
48
+ deleteEndpoint(args: DeleteEndpointCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteEndpointCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
47
49
  /**
48
50
  * @see {@link DeletePlatformApplicationCommand}
49
51
  */
50
- deletePlatformApplication(args: DeletePlatformApplicationCommandInput, options?: __HttpHandlerOptions): Effect.Effect<DeletePlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
52
+ deletePlatformApplication(args: DeletePlatformApplicationCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeletePlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
51
53
  /**
52
54
  * @see {@link DeleteSMSSandboxPhoneNumberCommand}
53
55
  */
54
- deleteSMSSandboxPhoneNumber(args: DeleteSMSSandboxPhoneNumberCommandInput, options?: __HttpHandlerOptions): Effect.Effect<DeleteSMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | UserError>;
56
+ deleteSMSSandboxPhoneNumber(args: DeleteSMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteSMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | UserError>;
55
57
  /**
56
58
  * @see {@link DeleteTopicCommand}
57
59
  */
58
- deleteTopic(args: DeleteTopicCommandInput, options?: __HttpHandlerOptions): Effect.Effect<DeleteTopicCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | NotFoundError | StaleTagError | TagPolicyError>;
60
+ deleteTopic(args: DeleteTopicCommandInput, options?: HttpHandlerOptions): Effect.Effect<DeleteTopicCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | InvalidStateError | NotFoundError | StaleTagError | TagPolicyError>;
59
61
  /**
60
62
  * @see {@link GetDataProtectionPolicyCommand}
61
63
  */
62
- getDataProtectionPolicy(args: GetDataProtectionPolicyCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetDataProtectionPolicyCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
64
+ getDataProtectionPolicy(args: GetDataProtectionPolicyCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetDataProtectionPolicyCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
63
65
  /**
64
66
  * @see {@link GetEndpointAttributesCommand}
65
67
  */
66
- getEndpointAttributes(args: GetEndpointAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetEndpointAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
68
+ getEndpointAttributes(args: GetEndpointAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetEndpointAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
67
69
  /**
68
70
  * @see {@link GetPlatformApplicationAttributesCommand}
69
71
  */
70
- getPlatformApplicationAttributes(args: GetPlatformApplicationAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetPlatformApplicationAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
72
+ getPlatformApplicationAttributes(args: GetPlatformApplicationAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetPlatformApplicationAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
71
73
  /**
72
74
  * @see {@link GetSMSAttributesCommand}
73
75
  */
74
- getSMSAttributes(args: GetSMSAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetSMSAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
76
+ getSMSAttributes(args: GetSMSAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetSMSAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
75
77
  /**
76
78
  * @see {@link GetSMSSandboxAccountStatusCommand}
77
79
  */
78
- getSMSSandboxAccountStatus(args: GetSMSSandboxAccountStatusCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetSMSSandboxAccountStatusCommandOutput, SdkError | AuthorizationError | InternalError | ThrottledError>;
80
+ getSMSSandboxAccountStatus(args: GetSMSSandboxAccountStatusCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetSMSSandboxAccountStatusCommandOutput, SdkError | AuthorizationError | InternalError | ThrottledError>;
79
81
  /**
80
82
  * @see {@link GetSubscriptionAttributesCommand}
81
83
  */
82
- getSubscriptionAttributes(args: GetSubscriptionAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetSubscriptionAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
84
+ getSubscriptionAttributes(args: GetSubscriptionAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetSubscriptionAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
83
85
  /**
84
86
  * @see {@link GetTopicAttributesCommand}
85
87
  */
86
- getTopicAttributes(args: GetTopicAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<GetTopicAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
88
+ getTopicAttributes(args: GetTopicAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<GetTopicAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
87
89
  /**
88
90
  * @see {@link ListEndpointsByPlatformApplicationCommand}
89
91
  */
90
- listEndpointsByPlatformApplication(args: ListEndpointsByPlatformApplicationCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListEndpointsByPlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
92
+ listEndpointsByPlatformApplication(args: ListEndpointsByPlatformApplicationCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListEndpointsByPlatformApplicationCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
91
93
  /**
92
94
  * @see {@link ListOriginationNumbersCommand}
93
95
  */
94
- listOriginationNumbers(args: ListOriginationNumbersCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListOriginationNumbersCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError | ValidationError>;
96
+ listOriginationNumbers(args: ListOriginationNumbersCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListOriginationNumbersCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError | ValidationError>;
95
97
  /**
96
98
  * @see {@link ListPhoneNumbersOptedOutCommand}
97
99
  */
98
- listPhoneNumbersOptedOut(args: ListPhoneNumbersOptedOutCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListPhoneNumbersOptedOutCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
100
+ listPhoneNumbersOptedOut(args: ListPhoneNumbersOptedOutCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListPhoneNumbersOptedOutCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
99
101
  /**
100
102
  * @see {@link ListPlatformApplicationsCommand}
101
103
  */
102
- listPlatformApplications(args: ListPlatformApplicationsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListPlatformApplicationsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
104
+ listPlatformApplications(args: ListPlatformApplicationsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListPlatformApplicationsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
103
105
  /**
104
106
  * @see {@link ListSMSSandboxPhoneNumbersCommand}
105
107
  */
106
- listSMSSandboxPhoneNumbers(args: ListSMSSandboxPhoneNumbersCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListSMSSandboxPhoneNumbersCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError>;
108
+ listSMSSandboxPhoneNumbers(args: ListSMSSandboxPhoneNumbersCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListSMSSandboxPhoneNumbersCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError>;
107
109
  /**
108
110
  * @see {@link ListSubscriptionsCommand}
109
111
  */
110
- listSubscriptions(args: ListSubscriptionsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListSubscriptionsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
112
+ listSubscriptions(args: ListSubscriptionsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListSubscriptionsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
111
113
  /**
112
114
  * @see {@link ListSubscriptionsByTopicCommand}
113
115
  */
114
- listSubscriptionsByTopic(args: ListSubscriptionsByTopicCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListSubscriptionsByTopicCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
116
+ listSubscriptionsByTopic(args: ListSubscriptionsByTopicCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListSubscriptionsByTopicCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
115
117
  /**
116
118
  * @see {@link ListTagsForResourceCommand}
117
119
  */
118
- listTagsForResource(args: ListTagsForResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListTagsForResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | TagPolicyError>;
120
+ listTagsForResource(args: ListTagsForResourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListTagsForResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | TagPolicyError>;
119
121
  /**
120
122
  * @see {@link ListTopicsCommand}
121
123
  */
122
- listTopics(args: ListTopicsCommandInput, options?: __HttpHandlerOptions): Effect.Effect<ListTopicsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
124
+ listTopics(args: ListTopicsCommandInput, options?: HttpHandlerOptions): Effect.Effect<ListTopicsCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError>;
123
125
  /**
124
126
  * @see {@link OptInPhoneNumberCommand}
125
127
  */
126
- optInPhoneNumber(args: OptInPhoneNumberCommandInput, options?: __HttpHandlerOptions): Effect.Effect<OptInPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
128
+ optInPhoneNumber(args: OptInPhoneNumberCommandInput, options?: HttpHandlerOptions): Effect.Effect<OptInPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
127
129
  /**
128
130
  * @see {@link PublishCommand}
129
131
  */
130
- publish(args: PublishCommandInput, options?: __HttpHandlerOptions): Effect.Effect<PublishCommandOutput, SdkError | AuthorizationError | EndpointDisabledError | InternalError | InvalidParameterError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | InvalidParameterValueError | PlatformApplicationDisabledError | ValidationError>;
132
+ publish(args: PublishCommandInput, options?: HttpHandlerOptions): Effect.Effect<PublishCommandOutput, SdkError | AuthorizationError | EndpointDisabledError | InternalError | InvalidParameterError | InvalidParameterValueError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | PlatformApplicationDisabledError | ValidationError>;
131
133
  /**
132
134
  * @see {@link PublishBatchCommand}
133
135
  */
134
- publishBatch(args: PublishBatchCommandInput, options?: __HttpHandlerOptions): Effect.Effect<PublishBatchCommandOutput, SdkError | AuthorizationError | BatchEntryIdsNotDistinctError | BatchRequestTooLongError | EmptyBatchRequestError | EndpointDisabledError | InternalError | InvalidBatchEntryIdError | InvalidParameterError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | InvalidParameterValueError | PlatformApplicationDisabledError | TooManyEntriesInBatchRequestError | ValidationError>;
136
+ publishBatch(args: PublishBatchCommandInput, options?: HttpHandlerOptions): Effect.Effect<PublishBatchCommandOutput, SdkError | AuthorizationError | BatchEntryIdsNotDistinctError | BatchRequestTooLongError | EmptyBatchRequestError | EndpointDisabledError | InternalError | InvalidBatchEntryIdError | InvalidParameterError | InvalidParameterValueError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | PlatformApplicationDisabledError | TooManyEntriesInBatchRequestError | ValidationError>;
135
137
  /**
136
138
  * @see {@link PutDataProtectionPolicyCommand}
137
139
  */
138
- putDataProtectionPolicy(args: PutDataProtectionPolicyCommandInput, options?: __HttpHandlerOptions): Effect.Effect<PutDataProtectionPolicyCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
140
+ putDataProtectionPolicy(args: PutDataProtectionPolicyCommandInput, options?: HttpHandlerOptions): Effect.Effect<PutDataProtectionPolicyCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
139
141
  /**
140
142
  * @see {@link RemovePermissionCommand}
141
143
  */
142
- removePermission(args: RemovePermissionCommandInput, options?: __HttpHandlerOptions): Effect.Effect<RemovePermissionCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
144
+ removePermission(args: RemovePermissionCommandInput, options?: HttpHandlerOptions): Effect.Effect<RemovePermissionCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
143
145
  /**
144
146
  * @see {@link SetEndpointAttributesCommand}
145
147
  */
146
- setEndpointAttributes(args: SetEndpointAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SetEndpointAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
148
+ setEndpointAttributes(args: SetEndpointAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<SetEndpointAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
147
149
  /**
148
150
  * @see {@link SetPlatformApplicationAttributesCommand}
149
151
  */
150
- setPlatformApplicationAttributes(args: SetPlatformApplicationAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SetPlatformApplicationAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
152
+ setPlatformApplicationAttributes(args: SetPlatformApplicationAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<SetPlatformApplicationAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | NotFoundError>;
151
153
  /**
152
154
  * @see {@link SetSMSAttributesCommand}
153
155
  */
154
- setSMSAttributes(args: SetSMSAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SetSMSAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
156
+ setSMSAttributes(args: SetSMSAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<SetSMSAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ThrottledError>;
155
157
  /**
156
158
  * @see {@link SetSubscriptionAttributesCommand}
157
159
  */
158
- setSubscriptionAttributes(args: SetSubscriptionAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SetSubscriptionAttributesCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError>;
160
+ setSubscriptionAttributes(args: SetSubscriptionAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<SetSubscriptionAttributesCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError | ReplayLimitExceededError>;
159
161
  /**
160
162
  * @see {@link SetTopicAttributesCommand}
161
163
  */
162
- setTopicAttributes(args: SetTopicAttributesCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SetTopicAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
164
+ setTopicAttributes(args: SetTopicAttributesCommandInput, options?: HttpHandlerOptions): Effect.Effect<SetTopicAttributesCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
163
165
  /**
164
166
  * @see {@link SubscribeCommand}
165
167
  */
166
- subscribe(args: SubscribeCommandInput, options?: __HttpHandlerOptions): Effect.Effect<SubscribeCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SubscriptionLimitExceededError>;
168
+ subscribe(args: SubscribeCommandInput, options?: HttpHandlerOptions): Effect.Effect<SubscribeCommandOutput, SdkError | AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | ReplayLimitExceededError | SubscriptionLimitExceededError>;
167
169
  /**
168
170
  * @see {@link TagResourceCommand}
169
171
  */
170
- tagResource(args: TagResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<TagResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError>;
172
+ tagResource(args: TagResourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<TagResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError>;
171
173
  /**
172
174
  * @see {@link UnsubscribeCommand}
173
175
  */
174
- unsubscribe(args: UnsubscribeCommandInput, options?: __HttpHandlerOptions): Effect.Effect<UnsubscribeCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
176
+ unsubscribe(args: UnsubscribeCommandInput, options?: HttpHandlerOptions): Effect.Effect<UnsubscribeCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError>;
175
177
  /**
176
178
  * @see {@link UntagResourceCommand}
177
179
  */
178
- untagResource(args: UntagResourceCommandInput, options?: __HttpHandlerOptions): Effect.Effect<UntagResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError>;
180
+ untagResource(args: UntagResourceCommandInput, options?: HttpHandlerOptions): Effect.Effect<UntagResourceCommandOutput, SdkError | AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError>;
179
181
  /**
180
182
  * @see {@link VerifySMSSandboxPhoneNumberCommand}
181
183
  */
182
- verifySMSSandboxPhoneNumber(args: VerifySMSSandboxPhoneNumberCommandInput, options?: __HttpHandlerOptions): Effect.Effect<VerifySMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | VerificationError>;
184
+ verifySMSSandboxPhoneNumber(args: VerifySMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions): Effect.Effect<VerifySMSSandboxPhoneNumberCommandOutput, SdkError | AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | VerificationError>;
183
185
  }
186
+ declare const SNSService_base: import("effect/Context").TagClass<SNSService, "@effect-aws/client-sns/SNSService", SNSService$> & {
187
+ readonly _: Effect.Effect<SNSService$["_"], never, SNSService>;
188
+ addPermission: (args: AddPermissionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<AddPermissionCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
189
+ checkIfPhoneNumberIsOptedOut: (args: CheckIfPhoneNumberIsOptedOutCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CheckIfPhoneNumberIsOptedOutCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | SdkError, SNSService>;
190
+ confirmSubscription: (args: ConfirmSubscriptionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ConfirmSubscriptionCommandOutput, AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError | ReplayLimitExceededError | SubscriptionLimitExceededError | SdkError, SNSService>;
191
+ createPlatformApplication: (args: CreatePlatformApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreatePlatformApplicationCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
192
+ createPlatformEndpoint: (args: CreatePlatformEndpointCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreatePlatformEndpointCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
193
+ createSMSSandboxPhoneNumber: (args: CreateSMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateSMSSandboxPhoneNumberCommandOutput, AuthorizationError | InternalError | InvalidParameterError | OptedOutError | ThrottledError | UserError | SdkError, SNSService>;
194
+ createTopic: (args: CreateTopicCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<CreateTopicCommandOutput, AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | InvalidSecurityError | StaleTagError | TagLimitExceededError | TagPolicyError | TopicLimitExceededError | SdkError, SNSService>;
195
+ deleteEndpoint: (args: DeleteEndpointCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteEndpointCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
196
+ deletePlatformApplication: (args: DeletePlatformApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeletePlatformApplicationCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
197
+ deleteSMSSandboxPhoneNumber: (args: DeleteSMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteSMSSandboxPhoneNumberCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | UserError | SdkError, SNSService>;
198
+ deleteTopic: (args: DeleteTopicCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<DeleteTopicCommandOutput, AuthorizationError | ConcurrentAccessError | InternalError | InvalidParameterError | InvalidStateError | NotFoundError | StaleTagError | TagPolicyError | SdkError, SNSService>;
199
+ getDataProtectionPolicy: (args: GetDataProtectionPolicyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetDataProtectionPolicyCommandOutput, AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SdkError, SNSService>;
200
+ getEndpointAttributes: (args: GetEndpointAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetEndpointAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
201
+ getPlatformApplicationAttributes: (args: GetPlatformApplicationAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetPlatformApplicationAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
202
+ getSMSAttributes: (args: GetSMSAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetSMSAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | SdkError, SNSService>;
203
+ getSMSSandboxAccountStatus: (args: GetSMSSandboxAccountStatusCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetSMSSandboxAccountStatusCommandOutput, AuthorizationError | InternalError | ThrottledError | SdkError, SNSService>;
204
+ getSubscriptionAttributes: (args: GetSubscriptionAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetSubscriptionAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
205
+ getTopicAttributes: (args: GetTopicAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<GetTopicAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SdkError, SNSService>;
206
+ listEndpointsByPlatformApplication: (args: ListEndpointsByPlatformApplicationCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListEndpointsByPlatformApplicationCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
207
+ listOriginationNumbers: (args: ListOriginationNumbersCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListOriginationNumbersCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | ValidationError | SdkError, SNSService>;
208
+ listPhoneNumbersOptedOut: (args: ListPhoneNumbersOptedOutCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListPhoneNumbersOptedOutCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | SdkError, SNSService>;
209
+ listPlatformApplications: (args: ListPlatformApplicationsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListPlatformApplicationsCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
210
+ listSMSSandboxPhoneNumbers: (args: ListSMSSandboxPhoneNumbersCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListSMSSandboxPhoneNumbersCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | SdkError, SNSService>;
211
+ listSubscriptions: (args: ListSubscriptionsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListSubscriptionsCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
212
+ listSubscriptionsByTopic: (args: ListSubscriptionsByTopicCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListSubscriptionsByTopicCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
213
+ listTagsForResource: (args: ListTagsForResourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListTagsForResourceCommandOutput, AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | TagPolicyError | SdkError, SNSService>;
214
+ listTopics: (args: ListTopicsCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<ListTopicsCommandOutput, AuthorizationError | InternalError | InvalidParameterError | SdkError, SNSService>;
215
+ optInPhoneNumber: (args: OptInPhoneNumberCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<OptInPhoneNumberCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | SdkError, SNSService>;
216
+ publish: (args: PublishCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<PublishCommandOutput, AuthorizationError | EndpointDisabledError | InternalError | InvalidParameterError | InvalidParameterValueError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | PlatformApplicationDisabledError | ValidationError | SdkError, SNSService>;
217
+ publishBatch: (args: PublishBatchCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<PublishBatchCommandOutput, AuthorizationError | BatchEntryIdsNotDistinctError | BatchRequestTooLongError | EmptyBatchRequestError | EndpointDisabledError | InternalError | InvalidBatchEntryIdError | InvalidParameterError | InvalidParameterValueError | InvalidSecurityError | KMSAccessDeniedError | KMSDisabledError | KMSInvalidStateError | KMSNotFoundError | KMSOptInRequiredError | KMSThrottlingError | NotFoundError | PlatformApplicationDisabledError | TooManyEntriesInBatchRequestError | ValidationError | SdkError, SNSService>;
218
+ putDataProtectionPolicy: (args: PutDataProtectionPolicyCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<PutDataProtectionPolicyCommandOutput, AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SdkError, SNSService>;
219
+ removePermission: (args: RemovePermissionCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<RemovePermissionCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
220
+ setEndpointAttributes: (args: SetEndpointAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SetEndpointAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
221
+ setPlatformApplicationAttributes: (args: SetPlatformApplicationAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SetPlatformApplicationAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | NotFoundError | SdkError, SNSService>;
222
+ setSMSAttributes: (args: SetSMSAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SetSMSAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ThrottledError | SdkError, SNSService>;
223
+ setSubscriptionAttributes: (args: SetSubscriptionAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SetSubscriptionAttributesCommandOutput, AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | NotFoundError | ReplayLimitExceededError | SdkError, SNSService>;
224
+ setTopicAttributes: (args: SetTopicAttributesCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SetTopicAttributesCommandOutput, AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SdkError, SNSService>;
225
+ subscribe: (args: SubscribeCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<SubscribeCommandOutput, AuthorizationError | FilterPolicyLimitExceededError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | ReplayLimitExceededError | SubscriptionLimitExceededError | SdkError, SNSService>;
226
+ tagResource: (args: TagResourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<TagResourceCommandOutput, AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError | SdkError, SNSService>;
227
+ unsubscribe: (args: UnsubscribeCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UnsubscribeCommandOutput, AuthorizationError | InternalError | InvalidParameterError | InvalidSecurityError | NotFoundError | SdkError, SNSService>;
228
+ untagResource: (args: UntagResourceCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<UntagResourceCommandOutput, AuthorizationError | ConcurrentAccessError | InvalidParameterError | ResourceNotFoundError | StaleTagError | TagLimitExceededError | TagPolicyError | SdkError, SNSService>;
229
+ verifySMSSandboxPhoneNumber: (args: VerifySMSSandboxPhoneNumberCommandInput, options?: HttpHandlerOptions | undefined) => Effect.Effect<VerifySMSSandboxPhoneNumberCommandOutput, AuthorizationError | InternalError | InvalidParameterError | ResourceNotFoundError | ThrottledError | VerificationError | SdkError, SNSService>;
230
+ } & {
231
+ use: <X>(body: (_: SNSService$) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | SNSService> : Effect.Effect<X, never, SNSService>;
232
+ };
184
233
  /**
185
234
  * @since 1.0.0
186
- * @category tags
235
+ * @category models
187
236
  */
188
- export declare const SNSService: Context.Tag<SNSService, SNSService>;
237
+ export declare class SNSService extends SNSService_base {
238
+ }
189
239
  /**
190
240
  * @since 1.0.0
191
241
  * @category constructors
192
242
  */
193
- export declare const makeSNSService: Effect.Effect<SNSService, never, SNSClientInstance>;
243
+ export declare const makeSNSService: Effect.Effect<SNSService$, never, SNSClientInstance>;
194
244
  /**
195
245
  * @since 1.0.0
196
246
  * @category layers
@@ -206,3 +256,4 @@ export declare const SNSServiceLayer: Layer.Layer<SNSService, never, import("./S
206
256
  * @category layers
207
257
  */
208
258
  export declare const DefaultSNSServiceLayer: Layer.Layer<SNSService, never, never>;
259
+ export {};
package/lib/SNSService.js CHANGED
@@ -55,9 +55,11 @@ const commands = {
55
55
  };
56
56
  /**
57
57
  * @since 1.0.0
58
- * @category tags
58
+ * @category models
59
59
  */
60
- exports.SNSService = effect_1.Context.GenericTag("@effect-aws/client-sns/SNSService");
60
+ class SNSService extends effect_1.Effect.Tag("@effect-aws/client-sns/SNSService")() {
61
+ }
62
+ exports.SNSService = SNSService;
61
63
  /**
62
64
  * @since 1.0.0
63
65
  * @category constructors
@@ -67,9 +69,13 @@ exports.makeSNSService = effect_1.Effect.gen(function* (_) {
67
69
  return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
68
70
  const CommandCtor = commands[command];
69
71
  const methodImpl = (args, options) => effect_1.Effect.tryPromise({
70
- try: () => client.send(new CommandCtor(args), options !== null && options !== void 0 ? options : {}),
72
+ try: (abortSignal) => client.send(new CommandCtor(args), {
73
+ ...(options !== null && options !== void 0 ? options : {}),
74
+ abortSignal,
75
+ }),
71
76
  catch: (e) => {
72
- if (e instanceof client_sns_1.SNSServiceException) {
77
+ if (e instanceof client_sns_1.SNSServiceException &&
78
+ Errors_1.AllServiceErrors.includes(e.name)) {
73
79
  const ServiceException = effect_1.Data.tagged(e.name);
74
80
  return ServiceException({
75
81
  ...e,
@@ -96,7 +102,7 @@ exports.makeSNSService = effect_1.Effect.gen(function* (_) {
96
102
  * @since 1.0.0
97
103
  * @category layers
98
104
  */
99
- exports.BaseSNSServiceLayer = effect_1.Layer.effect(exports.SNSService, exports.makeSNSService);
105
+ exports.BaseSNSServiceLayer = effect_1.Layer.effect(SNSService, exports.makeSNSService);
100
106
  /**
101
107
  * @since 1.0.0
102
108
  * @category layers
@@ -107,4 +113,4 @@ exports.SNSServiceLayer = exports.BaseSNSServiceLayer.pipe(effect_1.Layer.provid
107
113
  * @category layers
108
114
  */
109
115
  exports.DefaultSNSServiceLayer = exports.SNSServiceLayer.pipe(effect_1.Layer.provide(SNSClientInstanceConfig_1.DefaultSNSClientConfigLayer));
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU05TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TTlNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsb0RBZ0k2QjtBQUU3QixtQ0FBOEQ7QUFDOUQscUNBbUNrQjtBQUNsQiwyREFBZ0Y7QUFDaEYsdUVBQXdFO0FBRXhFLE1BQU0sUUFBUSxHQUFHO0lBQ2Ysb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixtQ0FBbUMsRUFBbkMsZ0RBQW1DO0lBQ25DLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsZ0NBQWdDLEVBQWhDLDZDQUFnQztJQUNoQyw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMsa0NBQWtDLEVBQWxDLCtDQUFrQztJQUNsQyxrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1Qix1Q0FBdUMsRUFBdkMsb0RBQXVDO0lBQ3ZDLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsaUNBQWlDLEVBQWpDLDhDQUFpQztJQUNqQyxnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIseUNBQXlDLEVBQXpDLHNEQUF5QztJQUN6Qyw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQixpQ0FBaUMsRUFBakMsOENBQWlDO0lBQ2pDLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLGlCQUFpQixFQUFqQiw4QkFBaUI7SUFDakIsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixjQUFjLEVBQWQsMkJBQWM7SUFDZCxtQkFBbUIsRUFBbkIsZ0NBQW1CO0lBQ25CLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2Qiw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLHVDQUF1QyxFQUF2QyxvREFBdUM7SUFDdkMsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsZ0JBQWdCLEVBQWhCLDZCQUFnQjtJQUNoQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixrQ0FBa0MsRUFBbEMsK0NBQWtDO0NBQ25DLENBQUM7QUFpcUJGOzs7R0FHRztBQUNVLFFBQUEsVUFBVSxHQUFHLGdCQUFPLENBQUMsVUFBVSxDQUMxQyxtQ0FBbUMsQ0FDcEMsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsY0FBYyxHQUFHLGVBQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQWlCLENBQUMsQ0FBQztJQUUzQyxPQUFPLGVBQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRTtRQUMxRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFRLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFTLEVBQUUsT0FBWSxFQUFFLEVBQUUsQ0FDN0MsZUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNoQixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxFQUFFLENBQUM7WUFDNUQsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksZ0NBQW1CLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFJLENBQUMsTUFBTSxDQUVsQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBRVYsT0FBTyxnQkFBZ0IsQ0FBQzt3QkFDdEIsR0FBRyxDQUFDO3dCQUNKLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUN2QixPQUFPLElBQUEsaUJBQVEsRUFBQzt3QkFDZCxHQUFHLENBQUM7d0JBQ0osSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTzt3QkFDbEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUNMLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3RFLFVBQVUsRUFDVixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzlDLENBQUMsRUFBRSxFQUFFLENBQWUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsY0FBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBVSxFQUFFLHNCQUFjLENBQUMsQ0FBQztBQUU1RTs7O0dBR0c7QUFDVSxRQUFBLGVBQWUsR0FBRywyQkFBbUIsQ0FBQyxJQUFJLENBQ3JELGNBQUssQ0FBQyxPQUFPLENBQUMsMENBQXNCLENBQUMsQ0FDdEMsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsdUJBQWUsQ0FBQyxJQUFJLENBQ3hELGNBQUssQ0FBQyxPQUFPLENBQUMscURBQTJCLENBQUMsQ0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7XG4gIEFkZFBlcm1pc3Npb25Db21tYW5kLFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmQsXG4gIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kSW5wdXQsXG4gIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kT3V0cHV0LFxuICBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZCxcbiAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmQsXG4gIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxuICBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZVRvcGljQ29tbWFuZCxcbiAgQ3JlYXRlVG9waWNDb21tYW5kSW5wdXQsXG4gIENyZWF0ZVRvcGljQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kLFxuICBEZWxldGVFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVG9waWNDb21tYW5kLFxuICBEZWxldGVUb3BpY0NvbW1hbmRJbnB1dCxcbiAgRGVsZXRlVG9waWNDb21tYW5kT3V0cHV0LFxuICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZCxcbiAgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kSW5wdXQsXG4gIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmQsXG4gIExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kSW5wdXQsXG4gIExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kLFxuICBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kSW5wdXQsXG4gIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmRPdXRwdXQsXG4gIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmQsXG4gIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kLFxuICBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kT3V0cHV0LFxuICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kLFxuICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kSW5wdXQsXG4gIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmRPdXRwdXQsXG4gIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBMaXN0VG9waWNzQ29tbWFuZCxcbiAgTGlzdFRvcGljc0NvbW1hbmRJbnB1dCxcbiAgTGlzdFRvcGljc0NvbW1hbmRPdXRwdXQsXG4gIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kLFxuICBPcHRJblBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICBPcHRJblBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaEJhdGNoQ29tbWFuZCxcbiAgUHVibGlzaEJhdGNoQ29tbWFuZElucHV0LFxuICBQdWJsaXNoQmF0Y2hDb21tYW5kT3V0cHV0LFxuICBQdWJsaXNoQ29tbWFuZCxcbiAgUHVibGlzaENvbW1hbmRJbnB1dCxcbiAgUHVibGlzaENvbW1hbmRPdXRwdXQsXG4gIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZCxcbiAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICBTTlNTZXJ2aWNlRXhjZXB0aW9uLFxuICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU3Vic2NyaWJlQ29tbWFuZCxcbiAgU3Vic2NyaWJlQ29tbWFuZElucHV0LFxuICBTdWJzY3JpYmVDb21tYW5kT3V0cHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmQsXG4gIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICBUYWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gIFVuc3Vic2NyaWJlQ29tbWFuZCxcbiAgVW5zdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gIFVuc3Vic2NyaWJlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxuICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc25zXCI7XG5pbXBvcnQgeyBIdHRwSGFuZGxlck9wdGlvbnMgYXMgX19IdHRwSGFuZGxlck9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IENvbnRleHQsIERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEF1dGhvcml6YXRpb25FcnJvcixcbiAgQmF0Y2hFbnRyeUlkc05vdERpc3RpbmN0RXJyb3IsXG4gIEJhdGNoUmVxdWVzdFRvb0xvbmdFcnJvcixcbiAgQ29uY3VycmVudEFjY2Vzc0Vycm9yLFxuICBFbXB0eUJhdGNoUmVxdWVzdEVycm9yLFxuICBFbmRwb2ludERpc2FibGVkRXJyb3IsXG4gIEZpbHRlclBvbGljeUxpbWl0RXhjZWVkZWRFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgSW52YWxpZEJhdGNoRW50cnlJZEVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkU2VjdXJpdHlFcnJvcixcbiAgS01TQWNjZXNzRGVuaWVkRXJyb3IsXG4gIEtNU0Rpc2FibGVkRXJyb3IsXG4gIEtNU0ludmFsaWRTdGF0ZUVycm9yLFxuICBLTVNOb3RGb3VuZEVycm9yLFxuICBLTVNPcHRJblJlcXVpcmVkRXJyb3IsXG4gIEtNU1Rocm90dGxpbmdFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3B0ZWRPdXRFcnJvcixcbiAgUGxhdGZvcm1BcHBsaWNhdGlvbkRpc2FibGVkRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFN0YWxlVGFnRXJyb3IsXG4gIFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvcixcbiAgVGFnTGltaXRFeGNlZWRlZEVycm9yLFxuICBUYWdQb2xpY3lFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxuICBUaHJvdHRsZWRFcnJvcixcbiAgVG9vTWFueUVudHJpZXNJbkJhdGNoUmVxdWVzdEVycm9yLFxuICBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvcixcbiAgVXNlckVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIFZlcmlmaWNhdGlvbkVycm9yLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IFNOU0NsaWVudEluc3RhbmNlLCBTTlNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vU05TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRTTlNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL1NOU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmQsXG4gIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kLFxuICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmQsXG4gIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIENyZWF0ZVRvcGljQ29tbWFuZCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kLFxuICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgRGVsZXRlVG9waWNDb21tYW5kLFxuICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmQsXG4gIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kLFxuICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmQsXG4gIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VG9waWNzQ29tbWFuZCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmQsXG4gIFB1Ymxpc2hDb21tYW5kLFxuICBQdWJsaXNoQmF0Y2hDb21tYW5kLFxuICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU3Vic2NyaWJlQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnN1YnNjcmliZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxufTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTTlNTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZFBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kfVxuICAgKi9cbiAgY2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dChcbiAgICBhcmdzOiBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjb25maXJtU3Vic2NyaXB0aW9uKFxuICAgIGFyZ3M6IENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb24oXG4gICAgYXJnczogQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlUGxhdGZvcm1FbmRwb2ludChcbiAgICBhcmdzOiBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyKFxuICAgIGFyZ3M6IENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgT3B0ZWRPdXRFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgICB8IFVzZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVUb3BpY0NvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVUb3BpYyhcbiAgICBhcmdzOiBDcmVhdGVUb3BpY0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVG9waWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gICAgfCBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFbmRwb2ludChcbiAgICBhcmdzOiBEZWxldGVFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb24oXG4gICAgYXJnczogRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXIoXG4gICAgYXJnczogRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBVc2VyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVG9waWNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVG9waWMoXG4gICAgYXJnczogRGVsZXRlVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZVRvcGljQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IENvbmN1cnJlbnRBY2Nlc3NFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBnZXREYXRhUHJvdGVjdGlvblBvbGljeShcbiAgICBhcmdzOiBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0RW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0U01TQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0U01TU2FuZGJveEFjY291bnRTdGF0dXMoXG4gICAgYXJnczogR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBUaHJvdHRsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGdldFRvcGljQXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgbGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbihcbiAgICBhcmdzOiBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RPcmlnaW5hdGlvbk51bWJlcnMoXG4gICAgYXJnczogTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZH1cbiAgICovXG4gIGxpc3RQaG9uZU51bWJlcnNPcHRlZE91dChcbiAgICBhcmdzOiBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnMoXG4gICAgYXJnczogTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQXV0aG9yaXphdGlvbkVycm9yIHwgSW50ZXJuYWxFcnJvciB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U01TU2FuZGJveFBob25lTnVtYmVycyhcbiAgICBhcmdzOiBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RTdWJzY3JpcHRpb25zKFxuICAgIGFyZ3M6IExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3Vic2NyaXB0aW9uc0J5VG9waWMoXG4gICAgYXJnczogTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRhZ3NGb3JSZXNvdXJjZShcbiAgICBhcmdzOiBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IENvbmN1cnJlbnRBY2Nlc3NFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RUb3BpY3NDb21tYW5kfVxuICAgKi9cbiAgbGlzdFRvcGljcyhcbiAgICBhcmdzOiBMaXN0VG9waWNzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VG9waWNzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgT3B0SW5QaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICBvcHRJblBob25lTnVtYmVyKFxuICAgIGFyZ3M6IE9wdEluUGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE9wdEluUGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdWJsaXNoQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2goXG4gICAgYXJnczogUHVibGlzaENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVibGlzaENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBFbmRwb2ludERpc2FibGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgS01TT3B0SW5SZXF1aXJlZEVycm9yXG4gICAgfCBLTVNUaHJvdHRsaW5nRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQbGF0Zm9ybUFwcGxpY2F0aW9uRGlzYWJsZWRFcnJvclxuICAgIHwgVmFsaWRhdGlvbkVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1Ymxpc2hCYXRjaENvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoQmF0Y2goXG4gICAgYXJnczogUHVibGlzaEJhdGNoQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoQmF0Y2hDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQmF0Y2hFbnRyeUlkc05vdERpc3RpbmN0RXJyb3JcbiAgICB8IEJhdGNoUmVxdWVzdFRvb0xvbmdFcnJvclxuICAgIHwgRW1wdHlCYXRjaFJlcXVlc3RFcnJvclxuICAgIHwgRW5kcG9pbnREaXNhYmxlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkQmF0Y2hFbnRyeUlkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgS01TT3B0SW5SZXF1aXJlZEVycm9yXG4gICAgfCBLTVNUaHJvdHRsaW5nRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yXG4gICAgfCBQbGF0Zm9ybUFwcGxpY2F0aW9uRGlzYWJsZWRFcnJvclxuICAgIHwgVG9vTWFueUVudHJpZXNJbkJhdGNoUmVxdWVzdEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0RGF0YVByb3RlY3Rpb25Qb2xpY3koXG4gICAgYXJnczogUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IFJlbW92ZVBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRFbmRwb2ludEF0dHJpYnV0ZXMoXG4gICAgYXJnczogU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0U01TQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRTTVNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBGaWx0ZXJQb2xpY3lMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0VG9waWNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3Vic2NyaWJlQ29tbWFuZH1cbiAgICovXG4gIHN1YnNjcmliZShcbiAgICBhcmdzOiBTdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN1YnNjcmliZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBGaWx0ZXJQb2xpY3lMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVGFnUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgU3RhbGVUYWdFcnJvclxuICAgIHwgVGFnTGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBUYWdQb2xpY3lFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnN1YnNjcmliZUNvbW1hbmR9XG4gICAqL1xuICB1bnN1YnNjcmliZShcbiAgICBhcmdzOiBVbnN1YnNjcmliZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW5zdWJzY3JpYmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVbnRhZ1Jlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIHVudGFnUmVzb3VyY2UoXG4gICAgYXJnczogVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXIoXG4gICAgYXJnczogVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBWZXJpZmljYXRpb25FcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IFNOU1NlcnZpY2UgPSBDb250ZXh0LkdlbmVyaWNUYWc8U05TU2VydmljZT4oXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXNucy9TTlNTZXJ2aWNlXCIsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVNOU1NlcnZpY2UgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBjbGllbnQgPSB5aWVsZCogXyhTTlNDbGllbnRJbnN0YW5jZSk7XG5cbiAgcmV0dXJuIFJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6ICgpID0+IGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwgb3B0aW9ucyA/PyB7fSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU05TU2VydmljZUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFxuICAgICAgICAgICAgICBUYWdnZWRFeGNlcHRpb248U05TU2VydmljZUV4Y2VwdGlvbj5cbiAgICAgICAgICAgID4oZS5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgU05TU2VydmljZTtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQmFzZVNOU1NlcnZpY2VMYXllciA9IExheWVyLmVmZmVjdChTTlNTZXJ2aWNlLCBtYWtlU05TU2VydmljZSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBTTlNTZXJ2aWNlTGF5ZXIgPSBCYXNlU05TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoU05TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNOU1NlcnZpY2VMYXllciA9IFNOU1NlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRTTlNDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU05TU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TTlNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsb0RBZ0k2QjtBQUM3QixtQ0FBcUQ7QUFDckQscUNBc0NrQjtBQUNsQiwyREFBZ0Y7QUFDaEYsdUVBQXdFO0FBVXhFLE1BQU0sUUFBUSxHQUFHO0lBQ2Ysb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixtQ0FBbUMsRUFBbkMsZ0RBQW1DO0lBQ25DLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsZ0NBQWdDLEVBQWhDLDZDQUFnQztJQUNoQyw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsa0JBQWtCLEVBQWxCLCtCQUFrQjtJQUNsQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMsa0NBQWtDLEVBQWxDLCtDQUFrQztJQUNsQyxrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1Qix1Q0FBdUMsRUFBdkMsb0RBQXVDO0lBQ3ZDLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsaUNBQWlDLEVBQWpDLDhDQUFpQztJQUNqQyxnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIseUNBQXlDLEVBQXpDLHNEQUF5QztJQUN6Qyw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQixpQ0FBaUMsRUFBakMsOENBQWlDO0lBQ2pDLHdCQUF3QixFQUF4QixxQ0FBd0I7SUFDeEIsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLGlCQUFpQixFQUFqQiw4QkFBaUI7SUFDakIsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixjQUFjLEVBQWQsMkJBQWM7SUFDZCxtQkFBbUIsRUFBbkIsZ0NBQW1CO0lBQ25CLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2Qiw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLHVDQUF1QyxFQUF2QyxvREFBdUM7SUFDdkMsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsZ0JBQWdCLEVBQWhCLDZCQUFnQjtJQUNoQixrQkFBa0IsRUFBbEIsK0JBQWtCO0lBQ2xCLGtCQUFrQixFQUFsQiwrQkFBa0I7SUFDbEIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixrQ0FBa0MsRUFBbEMsK0NBQWtDO0NBQ25DLENBQUM7QUFpcUJGOzs7R0FHRztBQUNILE1BQWEsVUFBVyxTQUFRLGVBQU0sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsRUFHNUU7Q0FBRztBQUhOLGdDQUdNO0FBRU47OztHQUdHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsZUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBaUIsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sZUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQzFELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVMsRUFBRSxPQUE0QixFQUFFLEVBQUUsQ0FDN0QsZUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNoQixHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxHQUFHLENBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDO2dCQUNsQixXQUFXO2FBQ1osQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQ0UsQ0FBQyxZQUFZLGdDQUFtQjtvQkFDaEMseUJBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFDakMsQ0FBQztvQkFDRCxNQUFNLGdCQUFnQixHQUFHLGFBQUksQ0FBQyxNQUFNLENBRWxDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFVixPQUFPLGdCQUFnQixDQUFDO3dCQUN0QixHQUFHLENBQUM7d0JBQ0osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sSUFBQSxpQkFBUSxFQUFDO3dCQUNkLEdBQUcsQ0FBQzt3QkFDSixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO3dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0wsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZ0IsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsY0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsc0JBQWMsQ0FBQyxDQUFDO0FBRTVFOzs7R0FHRztBQUNVLFFBQUEsZUFBZSxHQUFHLDJCQUFtQixDQUFDLElBQUksQ0FDckQsY0FBSyxDQUFDLE9BQU8sQ0FBQywwQ0FBc0IsQ0FBQyxDQUN0QyxDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyx1QkFBZSxDQUFDLElBQUksQ0FDeEQsY0FBSyxDQUFDLE9BQU8sQ0FBQyxxREFBMkIsQ0FBQyxDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgU05TU2VydmljZUV4Y2VwdGlvbixcbiAgQWRkUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQWRkUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmQsXG4gIHR5cGUgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZE91dHB1dCxcbiAgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlVG9waWNDb21tYW5kLFxuICB0eXBlIENyZWF0ZVRvcGljQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZVRvcGljQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIERlbGV0ZUVuZHBvaW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlVG9waWNDb21tYW5kLFxuICB0eXBlIERlbGV0ZVRvcGljQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVRvcGljQ29tbWFuZE91dHB1dCxcbiAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICB0eXBlIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgR2V0U01TQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kLFxuICB0eXBlIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmQsXG4gIHR5cGUgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZCxcbiAgdHlwZSBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZE91dHB1dCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kLFxuICB0eXBlIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RTTVNTYW5kYm94UGhvbmVOdW1iZXJzQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kLFxuICB0eXBlIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RTdWJzY3JpcHRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZCxcbiAgdHlwZSBMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgTGlzdFRvcGljc0NvbW1hbmQsXG4gIHR5cGUgTGlzdFRvcGljc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0VG9waWNzQ29tbWFuZE91dHB1dCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmQsXG4gIHR5cGUgT3B0SW5QaG9uZU51bWJlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBPcHRJblBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaENvbW1hbmQsXG4gIHR5cGUgUHVibGlzaENvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdWJsaXNoQ29tbWFuZE91dHB1dCxcbiAgUHVibGlzaEJhdGNoQ29tbWFuZCxcbiAgdHlwZSBQdWJsaXNoQmF0Y2hDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHVibGlzaEJhdGNoQ29tbWFuZE91dHB1dCxcbiAgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kLFxuICB0eXBlIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZE91dHB1dCxcbiAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kLFxuICB0eXBlIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgU2V0U01TQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBTZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgU3Vic2NyaWJlQ29tbWFuZCxcbiAgdHlwZSBTdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3Vic2NyaWJlQ29tbWFuZE91dHB1dCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVW5zdWJzY3JpYmVDb21tYW5kLFxuICB0eXBlIFVuc3Vic2NyaWJlQ29tbWFuZElucHV0LFxuICB0eXBlIFVuc3Vic2NyaWJlQ29tbWFuZE91dHB1dCxcbiAgVW50YWdSZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgVW50YWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBVbnRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgdHlwZSBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbn0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zbnNcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEFsbFNlcnZpY2VFcnJvcnMsXG4gIEF1dGhvcml6YXRpb25FcnJvcixcbiAgQmF0Y2hFbnRyeUlkc05vdERpc3RpbmN0RXJyb3IsXG4gIEJhdGNoUmVxdWVzdFRvb0xvbmdFcnJvcixcbiAgQ29uY3VycmVudEFjY2Vzc0Vycm9yLFxuICBFbXB0eUJhdGNoUmVxdWVzdEVycm9yLFxuICBFbmRwb2ludERpc2FibGVkRXJyb3IsXG4gIEZpbHRlclBvbGljeUxpbWl0RXhjZWVkZWRFcnJvcixcbiAgSW50ZXJuYWxFcnJvcixcbiAgSW52YWxpZEJhdGNoRW50cnlJZEVycm9yLFxuICBJbnZhbGlkUGFyYW1ldGVyRXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkU2VjdXJpdHlFcnJvcixcbiAgSW52YWxpZFN0YXRlRXJyb3IsXG4gIEtNU0FjY2Vzc0RlbmllZEVycm9yLFxuICBLTVNEaXNhYmxlZEVycm9yLFxuICBLTVNJbnZhbGlkU3RhdGVFcnJvcixcbiAgS01TTm90Rm91bmRFcnJvcixcbiAgS01TT3B0SW5SZXF1aXJlZEVycm9yLFxuICBLTVNUaHJvdHRsaW5nRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE9wdGVkT3V0RXJyb3IsXG4gIFBsYXRmb3JtQXBwbGljYXRpb25EaXNhYmxlZEVycm9yLFxuICBSZXBsYXlMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRFcnJvcixcbiAgU3RhbGVUYWdFcnJvcixcbiAgU3Vic2NyaXB0aW9uTGltaXRFeGNlZWRlZEVycm9yLFxuICBUYWdMaW1pdEV4Y2VlZGVkRXJyb3IsXG4gIFRhZ1BvbGljeUVycm9yLFxuICBUaHJvdHRsZWRFcnJvcixcbiAgVG9vTWFueUVudHJpZXNJbkJhdGNoUmVxdWVzdEVycm9yLFxuICBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvcixcbiAgVXNlckVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG4gIFZlcmlmaWNhdGlvbkVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxufSBmcm9tIFwiLi9FcnJvcnNcIjtcbmltcG9ydCB7IFNOU0NsaWVudEluc3RhbmNlLCBTTlNDbGllbnRJbnN0YW5jZUxheWVyIH0gZnJvbSBcIi4vU05TQ2xpZW50SW5zdGFuY2VcIjtcbmltcG9ydCB7IERlZmF1bHRTTlNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL1NOU0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbmludGVyZmFjZSBIdHRwSGFuZGxlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB0aGUgY29ubmVjdGlvbiBwaGFzZSBvZiBhIHJlcXVlc3RcbiAgICogbWF5IHRha2UgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgaXMgYWJhbmRvbmVkLlxuICAgKi9cbiAgcmVxdWVzdFRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNvbW1hbmRzID0ge1xuICBBZGRQZXJtaXNzaW9uQ29tbWFuZCxcbiAgQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmQsXG4gIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kLFxuICBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmQsXG4gIENyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmQsXG4gIENyZWF0ZVRvcGljQ29tbWFuZCxcbiAgRGVsZXRlRW5kcG9pbnRDb21tYW5kLFxuICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZCxcbiAgRGVsZXRlVG9waWNDb21tYW5kLFxuICBHZXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgR2V0U01TQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFNNU1NhbmRib3hBY2NvdW50U3RhdHVzQ29tbWFuZCxcbiAgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmQsXG4gIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kLFxuICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZCxcbiAgTGlzdFBob25lTnVtYmVyc09wdGVkT3V0Q29tbWFuZCxcbiAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZCxcbiAgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kLFxuICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmQsXG4gIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmQsXG4gIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kLFxuICBMaXN0VG9waWNzQ29tbWFuZCxcbiAgT3B0SW5QaG9uZU51bWJlckNvbW1hbmQsXG4gIFB1Ymxpc2hDb21tYW5kLFxuICBQdWJsaXNoQmF0Y2hDb21tYW5kLFxuICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmQsXG4gIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kLFxuICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmQsXG4gIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kLFxuICBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgU3Vic2NyaWJlQ29tbWFuZCxcbiAgVGFnUmVzb3VyY2VDb21tYW5kLFxuICBVbnN1YnNjcmliZUNvbW1hbmQsXG4gIFVudGFnUmVzb3VyY2VDb21tYW5kLFxuICBWZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kLFxufTtcblxuaW50ZXJmYWNlIFNOU1NlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUGVybWlzc2lvbkNvbW1hbmR9XG4gICAqL1xuICBhZGRQZXJtaXNzaW9uKFxuICAgIGFyZ3M6IEFkZFBlcm1pc3Npb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRQZXJtaXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDaGVja0lmUGhvbmVOdW1iZXJJc09wdGVkT3V0Q29tbWFuZH1cbiAgICovXG4gIGNoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXQoXG4gICAgYXJnczogQ2hlY2tJZlBob25lTnVtYmVySXNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENoZWNrSWZQaG9uZU51bWJlcklzT3B0ZWRPdXRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb25maXJtU3Vic2NyaXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIGNvbmZpcm1TdWJzY3JpcHRpb24oXG4gICAgYXJnczogQ29uZmlybVN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvbmZpcm1TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFJlcGxheUxpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgU3Vic2NyaXB0aW9uTGltaXRFeGNlZWRlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbihcbiAgICBhcmdzOiBDcmVhdGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVBsYXRmb3JtRW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlUGxhdGZvcm1FbmRwb2ludChcbiAgICBhcmdzOiBDcmVhdGVQbGF0Zm9ybUVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlUGxhdGZvcm1FbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVNNU1NhbmRib3hQaG9uZU51bWJlcihcbiAgICBhcmdzOiBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBPcHRlZE91dEVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVXNlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVRvcGljQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZVRvcGljKFxuICAgIGFyZ3M6IENyZWF0ZVRvcGljQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlVG9waWNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gICAgfCBUb3BpY0xpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFbmRwb2ludChcbiAgICBhcmdzOiBEZWxldGVFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlUGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlU01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVNNU1NhbmRib3hQaG9uZU51bWJlcihcbiAgICBhcmdzOiBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVTTVNTYW5kYm94UGhvbmVOdW1iZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gICAgfCBVc2VyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVG9waWNDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVG9waWMoXG4gICAgYXJnczogRGVsZXRlVG9waWNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVUb3BpY0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFN0YWxlVGFnRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZH1cbiAgICovXG4gIGdldERhdGFQcm90ZWN0aW9uUG9saWN5KFxuICAgIGFyZ3M6IEdldERhdGFQcm90ZWN0aW9uUG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkU2VjdXJpdHlFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0RW5kcG9pbnRBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEVuZHBvaW50QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXMoXG4gICAgYXJnczogR2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQbGF0Zm9ybUFwcGxpY2F0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U01TQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRTTVNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldFNNU0F0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0U01TU2FuZGJveEFjY291bnRTdGF0dXMoXG4gICAgYXJnczogR2V0U01TU2FuZGJveEFjY291bnRTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTTVNTYW5kYm94QWNjb3VudFN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBnZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRUb3BpY0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0VG9waWNBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldFRvcGljQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RFbmRwb2ludHNCeVBsYXRmb3JtQXBwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgbGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbihcbiAgICBhcmdzOiBMaXN0RW5kcG9pbnRzQnlQbGF0Zm9ybUFwcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdEVuZHBvaW50c0J5UGxhdGZvcm1BcHBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9yaWdpbmF0aW9uTnVtYmVyc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0T3JpZ2luYXRpb25OdW1iZXJzKFxuICAgIGFyZ3M6IExpc3RPcmlnaW5hdGlvbk51bWJlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0T3JpZ2luYXRpb25OdW1iZXJzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgICB8IFZhbGlkYXRpb25FcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UGhvbmVOdW1iZXJzT3B0ZWRPdXRDb21tYW5kfVxuICAgKi9cbiAgbGlzdFBob25lTnVtYmVyc09wdGVkT3V0KFxuICAgIGFyZ3M6IExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RQaG9uZU51bWJlcnNPcHRlZE91dENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RQbGF0Zm9ybUFwcGxpY2F0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0UGxhdGZvcm1BcHBsaWNhdGlvbnMoXG4gICAgYXJnczogTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFBsYXRmb3JtQXBwbGljYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnMoXG4gICAgYXJnczogTGlzdFNNU1NhbmRib3hQaG9uZU51bWJlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0U01TU2FuZGJveFBob25lTnVtYmVyc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdFN1YnNjcmlwdGlvbnMoXG4gICAgYXJnczogTGlzdFN1YnNjcmlwdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0U3Vic2NyaXB0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBBdXRob3JpemF0aW9uRXJyb3IgfCBJbnRlcm5hbEVycm9yIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTdWJzY3JpcHRpb25zQnlUb3BpY0NvbW1hbmR9XG4gICAqL1xuICBsaXN0U3Vic2NyaXB0aW9uc0J5VG9waWMoXG4gICAgYXJnczogTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQ29uY3VycmVudEFjY2Vzc0Vycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFJlc291cmNlTm90Rm91bmRFcnJvclxuICAgIHwgVGFnUG9saWN5RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFRvcGljc0NvbW1hbmR9XG4gICAqL1xuICBsaXN0VG9waWNzKFxuICAgIGFyZ3M6IExpc3RUb3BpY3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBMaXN0VG9waWNzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEF1dGhvcml6YXRpb25FcnJvciB8IEludGVybmFsRXJyb3IgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgT3B0SW5QaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICBvcHRJblBob25lTnVtYmVyKFxuICAgIGFyZ3M6IE9wdEluUGhvbmVOdW1iZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBPcHRJblBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgVGhyb3R0bGVkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaENvbW1hbmR9XG4gICAqL1xuICBwdWJsaXNoKFxuICAgIGFyZ3M6IFB1Ymxpc2hDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEVuZHBvaW50RGlzYWJsZWRFcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IEtNU0FjY2Vzc0RlbmllZEVycm9yXG4gICAgfCBLTVNEaXNhYmxlZEVycm9yXG4gICAgfCBLTVNJbnZhbGlkU3RhdGVFcnJvclxuICAgIHwgS01TTm90Rm91bmRFcnJvclxuICAgIHwgS01TT3B0SW5SZXF1aXJlZEVycm9yXG4gICAgfCBLTVNUaHJvdHRsaW5nRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgICB8IFBsYXRmb3JtQXBwbGljYXRpb25EaXNhYmxlZEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHVibGlzaEJhdGNoQ29tbWFuZH1cbiAgICovXG4gIHB1Ymxpc2hCYXRjaChcbiAgICBhcmdzOiBQdWJsaXNoQmF0Y2hDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdWJsaXNoQmF0Y2hDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgQmF0Y2hFbnRyeUlkc05vdERpc3RpbmN0RXJyb3JcbiAgICB8IEJhdGNoUmVxdWVzdFRvb0xvbmdFcnJvclxuICAgIHwgRW1wdHlCYXRjaFJlcXVlc3RFcnJvclxuICAgIHwgRW5kcG9pbnREaXNhYmxlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkQmF0Y2hFbnRyeUlkRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBLTVNBY2Nlc3NEZW5pZWRFcnJvclxuICAgIHwgS01TRGlzYWJsZWRFcnJvclxuICAgIHwgS01TSW52YWxpZFN0YXRlRXJyb3JcbiAgICB8IEtNU05vdEZvdW5kRXJyb3JcbiAgICB8IEtNU09wdEluUmVxdWlyZWRFcnJvclxuICAgIHwgS01TVGhyb3R0bGluZ0Vycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBQbGF0Zm9ybUFwcGxpY2F0aW9uRGlzYWJsZWRFcnJvclxuICAgIHwgVG9vTWFueUVudHJpZXNJbkJhdGNoUmVxdWVzdEVycm9yXG4gICAgfCBWYWxpZGF0aW9uRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0RGF0YVByb3RlY3Rpb25Qb2xpY3koXG4gICAgYXJnczogUHV0RGF0YVByb3RlY3Rpb25Qb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXREYXRhUHJvdGVjdGlvblBvbGljeUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVBlcm1pc3Npb25Db21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlUGVybWlzc2lvbihcbiAgICBhcmdzOiBSZW1vdmVQZXJtaXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlUGVybWlzc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2V0RW5kcG9pbnRBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldEVuZHBvaW50QXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTZXRFbmRwb2ludEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIHNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IFNldFBsYXRmb3JtQXBwbGljYXRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0UGxhdGZvcm1BcHBsaWNhdGlvbkF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgSW50ZXJuYWxFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFNNU0F0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0U01TQXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRTTVNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0U01TQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IFRocm90dGxlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFN1YnNjcmlwdGlvbkF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgc2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlcyhcbiAgICBhcmdzOiBTZXRTdWJzY3JpcHRpb25BdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0U3Vic2NyaXB0aW9uQXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBGaWx0ZXJQb2xpY3lMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgTm90Rm91bmRFcnJvclxuICAgIHwgUmVwbGF5TGltaXRFeGNlZWRlZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNldFRvcGljQXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBzZXRUb3BpY0F0dHJpYnV0ZXMoXG4gICAgYXJnczogU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU2V0VG9waWNBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgSW52YWxpZFNlY3VyaXR5RXJyb3JcbiAgICB8IE5vdEZvdW5kRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3Vic2NyaWJlQ29tbWFuZH1cbiAgICovXG4gIHN1YnNjcmliZShcbiAgICBhcmdzOiBTdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdWJzY3JpYmVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25FcnJvclxuICAgIHwgRmlsdGVyUG9saWN5TGltaXRFeGNlZWRlZEVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gICAgfCBSZXBsYXlMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbkxpbWl0RXhjZWVkZWRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBUYWdSZXNvdXJjZUNvbW1hbmR9XG4gICAqL1xuICB0YWdSZXNvdXJjZShcbiAgICBhcmdzOiBUYWdSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFRhZ1Jlc291cmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IENvbmN1cnJlbnRBY2Nlc3NFcnJvclxuICAgIHwgSW52YWxpZFBhcmFtZXRlckVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRXJyb3JcbiAgICB8IFN0YWxlVGFnRXJyb3JcbiAgICB8IFRhZ0xpbWl0RXhjZWVkZWRFcnJvclxuICAgIHwgVGFnUG9saWN5RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgVW5zdWJzY3JpYmVDb21tYW5kfVxuICAgKi9cbiAgdW5zdWJzY3JpYmUoXG4gICAgYXJnczogVW5zdWJzY3JpYmVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBVbnN1YnNjcmliZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBJbnRlcm5hbEVycm9yXG4gICAgfCBJbnZhbGlkUGFyYW1ldGVyRXJyb3JcbiAgICB8IEludmFsaWRTZWN1cml0eUVycm9yXG4gICAgfCBOb3RGb3VuZEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVudGFnUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgdW50YWdSZXNvdXJjZShcbiAgICBhcmdzOiBVbnRhZ1Jlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVW50YWdSZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvbkVycm9yXG4gICAgfCBDb25jdXJyZW50QWNjZXNzRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBTdGFsZVRhZ0Vycm9yXG4gICAgfCBUYWdMaW1pdEV4Y2VlZGVkRXJyb3JcbiAgICB8IFRhZ1BvbGljeUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFZlcmlmeVNNU1NhbmRib3hQaG9uZU51bWJlckNvbW1hbmR9XG4gICAqL1xuICB2ZXJpZnlTTVNTYW5kYm94UGhvbmVOdW1iZXIoXG4gICAgYXJnczogVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgVmVyaWZ5U01TU2FuZGJveFBob25lTnVtYmVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uRXJyb3JcbiAgICB8IEludGVybmFsRXJyb3JcbiAgICB8IEludmFsaWRQYXJhbWV0ZXJFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEVycm9yXG4gICAgfCBUaHJvdHRsZWRFcnJvclxuICAgIHwgVmVyaWZpY2F0aW9uRXJyb3JcbiAgPjtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFNOU1NlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuVGFnKFwiQGVmZmVjdC1hd3MvY2xpZW50LXNucy9TTlNTZXJ2aWNlXCIpPFxuICBTTlNTZXJ2aWNlLFxuICBTTlNTZXJ2aWNlJFxuPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlU05TU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKFNOU0NsaWVudEluc3RhbmNlKTtcblxuICByZXR1cm4gUmVjb3JkLnRvRW50cmllcyhjb21tYW5kcykucmVkdWNlKChhY2MsIFtjb21tYW5kXSkgPT4ge1xuICAgIGNvbnN0IENvbW1hbmRDdG9yID0gY29tbWFuZHNbY29tbWFuZF0gYXMgYW55O1xuICAgIGNvbnN0IG1ldGhvZEltcGwgPSAoYXJnczogYW55LCBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zKSA9PlxuICAgICAgRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICB0cnk6IChhYm9ydFNpZ25hbCkgPT5cbiAgICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIHtcbiAgICAgICAgICAgIC4uLihvcHRpb25zID8/IHt9KSxcbiAgICAgICAgICAgIGFib3J0U2lnbmFsLFxuICAgICAgICAgIH0pLFxuICAgICAgICBjYXRjaDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlIGluc3RhbmNlb2YgU05TU2VydmljZUV4Y2VwdGlvbiAmJlxuICAgICAgICAgICAgQWxsU2VydmljZUVycm9ycy5pbmNsdWRlcyhlLm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBTZXJ2aWNlRXhjZXB0aW9uID0gRGF0YS50YWdnZWQ8XG4gICAgICAgICAgICAgIFRhZ2dlZEV4Y2VwdGlvbjxTTlNTZXJ2aWNlRXhjZXB0aW9uPlxuICAgICAgICAgICAgPihlLm5hbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gU2VydmljZUV4Y2VwdGlvbih7XG4gICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFNka0Vycm9yKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbmFtZTogXCJTZGtFcnJvclwiLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gKGNvbW1hbmRbMF0udG9Mb3dlckNhc2UoKSArIGNvbW1hbmQuc2xpY2UoMSkpLnJlcGxhY2UoXG4gICAgICAvQ29tbWFuZCQvLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHJldHVybiB7IC4uLmFjYywgW21ldGhvZE5hbWVdOiBtZXRob2RJbXBsIH07XG4gIH0sIHt9KSBhcyBTTlNTZXJ2aWNlJDtcbn0pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgQmFzZVNOU1NlcnZpY2VMYXllciA9IExheWVyLmVmZmVjdChTTlNTZXJ2aWNlLCBtYWtlU05TU2VydmljZSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBTTlNTZXJ2aWNlTGF5ZXIgPSBCYXNlU05TU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoU05TQ2xpZW50SW5zdGFuY2VMYXllciksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNOU1NlcnZpY2VMYXllciA9IFNOU1NlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRTTlNDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19