@effect-aws/client-s3 0.7.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultS3ServiceEffect = exports.S3ServiceEffect = exports.BaseS3ServiceEffect = exports.DefaultS3ServiceLayer = exports.S3ServiceLayer = exports.BaseS3ServiceLayer = exports.makeS3Service = exports.S3Service = void 0;
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ const client_s3_1 = require("@aws-sdk/client-s3");
8
+ const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
9
+ const effect_1 = require("effect");
10
+ const Errors_1 = require("./Errors");
11
+ const S3ClientInstance_1 = require("./S3ClientInstance");
12
+ const S3ClientInstanceConfig_1 = require("./S3ClientInstanceConfig");
13
+ const commands = {
14
+ AbortMultipartUploadCommand: client_s3_1.AbortMultipartUploadCommand,
15
+ CompleteMultipartUploadCommand: client_s3_1.CompleteMultipartUploadCommand,
16
+ CopyObjectCommand: client_s3_1.CopyObjectCommand,
17
+ CreateBucketCommand: client_s3_1.CreateBucketCommand,
18
+ CreateMultipartUploadCommand: client_s3_1.CreateMultipartUploadCommand,
19
+ DeleteBucketCommand: client_s3_1.DeleteBucketCommand,
20
+ DeleteBucketAnalyticsConfigurationCommand: client_s3_1.DeleteBucketAnalyticsConfigurationCommand,
21
+ DeleteBucketCorsCommand: client_s3_1.DeleteBucketCorsCommand,
22
+ DeleteBucketEncryptionCommand: client_s3_1.DeleteBucketEncryptionCommand,
23
+ DeleteBucketIntelligentTieringConfigurationCommand: client_s3_1.DeleteBucketIntelligentTieringConfigurationCommand,
24
+ DeleteBucketInventoryConfigurationCommand: client_s3_1.DeleteBucketInventoryConfigurationCommand,
25
+ DeleteBucketLifecycleCommand: client_s3_1.DeleteBucketLifecycleCommand,
26
+ DeleteBucketMetricsConfigurationCommand: client_s3_1.DeleteBucketMetricsConfigurationCommand,
27
+ DeleteBucketOwnershipControlsCommand: client_s3_1.DeleteBucketOwnershipControlsCommand,
28
+ DeleteBucketPolicyCommand: client_s3_1.DeleteBucketPolicyCommand,
29
+ DeleteBucketReplicationCommand: client_s3_1.DeleteBucketReplicationCommand,
30
+ DeleteBucketTaggingCommand: client_s3_1.DeleteBucketTaggingCommand,
31
+ DeleteBucketWebsiteCommand: client_s3_1.DeleteBucketWebsiteCommand,
32
+ DeleteObjectCommand: client_s3_1.DeleteObjectCommand,
33
+ DeleteObjectsCommand: client_s3_1.DeleteObjectsCommand,
34
+ DeleteObjectTaggingCommand: client_s3_1.DeleteObjectTaggingCommand,
35
+ DeletePublicAccessBlockCommand: client_s3_1.DeletePublicAccessBlockCommand,
36
+ GetBucketAccelerateConfigurationCommand: client_s3_1.GetBucketAccelerateConfigurationCommand,
37
+ GetBucketAclCommand: client_s3_1.GetBucketAclCommand,
38
+ GetBucketAnalyticsConfigurationCommand: client_s3_1.GetBucketAnalyticsConfigurationCommand,
39
+ GetBucketCorsCommand: client_s3_1.GetBucketCorsCommand,
40
+ GetBucketEncryptionCommand: client_s3_1.GetBucketEncryptionCommand,
41
+ GetBucketIntelligentTieringConfigurationCommand: client_s3_1.GetBucketIntelligentTieringConfigurationCommand,
42
+ GetBucketInventoryConfigurationCommand: client_s3_1.GetBucketInventoryConfigurationCommand,
43
+ GetBucketLifecycleConfigurationCommand: client_s3_1.GetBucketLifecycleConfigurationCommand,
44
+ GetBucketLocationCommand: client_s3_1.GetBucketLocationCommand,
45
+ GetBucketLoggingCommand: client_s3_1.GetBucketLoggingCommand,
46
+ GetBucketMetricsConfigurationCommand: client_s3_1.GetBucketMetricsConfigurationCommand,
47
+ GetBucketNotificationConfigurationCommand: client_s3_1.GetBucketNotificationConfigurationCommand,
48
+ GetBucketOwnershipControlsCommand: client_s3_1.GetBucketOwnershipControlsCommand,
49
+ GetBucketPolicyCommand: client_s3_1.GetBucketPolicyCommand,
50
+ GetBucketPolicyStatusCommand: client_s3_1.GetBucketPolicyStatusCommand,
51
+ GetBucketReplicationCommand: client_s3_1.GetBucketReplicationCommand,
52
+ GetBucketRequestPaymentCommand: client_s3_1.GetBucketRequestPaymentCommand,
53
+ GetBucketTaggingCommand: client_s3_1.GetBucketTaggingCommand,
54
+ GetBucketVersioningCommand: client_s3_1.GetBucketVersioningCommand,
55
+ GetBucketWebsiteCommand: client_s3_1.GetBucketWebsiteCommand,
56
+ GetObjectCommand: client_s3_1.GetObjectCommand,
57
+ GetObjectAclCommand: client_s3_1.GetObjectAclCommand,
58
+ GetObjectAttributesCommand: client_s3_1.GetObjectAttributesCommand,
59
+ GetObjectLegalHoldCommand: client_s3_1.GetObjectLegalHoldCommand,
60
+ GetObjectLockConfigurationCommand: client_s3_1.GetObjectLockConfigurationCommand,
61
+ GetObjectRetentionCommand: client_s3_1.GetObjectRetentionCommand,
62
+ GetObjectTaggingCommand: client_s3_1.GetObjectTaggingCommand,
63
+ GetObjectTorrentCommand: client_s3_1.GetObjectTorrentCommand,
64
+ GetPublicAccessBlockCommand: client_s3_1.GetPublicAccessBlockCommand,
65
+ HeadBucketCommand: client_s3_1.HeadBucketCommand,
66
+ HeadObjectCommand: client_s3_1.HeadObjectCommand,
67
+ ListBucketAnalyticsConfigurationsCommand: client_s3_1.ListBucketAnalyticsConfigurationsCommand,
68
+ ListBucketIntelligentTieringConfigurationsCommand: client_s3_1.ListBucketIntelligentTieringConfigurationsCommand,
69
+ ListBucketInventoryConfigurationsCommand: client_s3_1.ListBucketInventoryConfigurationsCommand,
70
+ ListBucketMetricsConfigurationsCommand: client_s3_1.ListBucketMetricsConfigurationsCommand,
71
+ ListBucketsCommand: client_s3_1.ListBucketsCommand,
72
+ ListMultipartUploadsCommand: client_s3_1.ListMultipartUploadsCommand,
73
+ ListObjectsCommand: client_s3_1.ListObjectsCommand,
74
+ ListObjectsV2Command: client_s3_1.ListObjectsV2Command,
75
+ ListObjectVersionsCommand: client_s3_1.ListObjectVersionsCommand,
76
+ ListPartsCommand: client_s3_1.ListPartsCommand,
77
+ PutBucketAccelerateConfigurationCommand: client_s3_1.PutBucketAccelerateConfigurationCommand,
78
+ PutBucketAclCommand: client_s3_1.PutBucketAclCommand,
79
+ PutBucketAnalyticsConfigurationCommand: client_s3_1.PutBucketAnalyticsConfigurationCommand,
80
+ PutBucketCorsCommand: client_s3_1.PutBucketCorsCommand,
81
+ PutBucketEncryptionCommand: client_s3_1.PutBucketEncryptionCommand,
82
+ PutBucketIntelligentTieringConfigurationCommand: client_s3_1.PutBucketIntelligentTieringConfigurationCommand,
83
+ PutBucketInventoryConfigurationCommand: client_s3_1.PutBucketInventoryConfigurationCommand,
84
+ PutBucketLifecycleConfigurationCommand: client_s3_1.PutBucketLifecycleConfigurationCommand,
85
+ PutBucketLoggingCommand: client_s3_1.PutBucketLoggingCommand,
86
+ PutBucketMetricsConfigurationCommand: client_s3_1.PutBucketMetricsConfigurationCommand,
87
+ PutBucketNotificationConfigurationCommand: client_s3_1.PutBucketNotificationConfigurationCommand,
88
+ PutBucketOwnershipControlsCommand: client_s3_1.PutBucketOwnershipControlsCommand,
89
+ PutBucketPolicyCommand: client_s3_1.PutBucketPolicyCommand,
90
+ PutBucketReplicationCommand: client_s3_1.PutBucketReplicationCommand,
91
+ PutBucketRequestPaymentCommand: client_s3_1.PutBucketRequestPaymentCommand,
92
+ PutBucketTaggingCommand: client_s3_1.PutBucketTaggingCommand,
93
+ PutBucketVersioningCommand: client_s3_1.PutBucketVersioningCommand,
94
+ PutBucketWebsiteCommand: client_s3_1.PutBucketWebsiteCommand,
95
+ PutObjectCommand: client_s3_1.PutObjectCommand,
96
+ PutObjectAclCommand: client_s3_1.PutObjectAclCommand,
97
+ PutObjectLegalHoldCommand: client_s3_1.PutObjectLegalHoldCommand,
98
+ PutObjectLockConfigurationCommand: client_s3_1.PutObjectLockConfigurationCommand,
99
+ PutObjectRetentionCommand: client_s3_1.PutObjectRetentionCommand,
100
+ PutObjectTaggingCommand: client_s3_1.PutObjectTaggingCommand,
101
+ PutPublicAccessBlockCommand: client_s3_1.PutPublicAccessBlockCommand,
102
+ RestoreObjectCommand: client_s3_1.RestoreObjectCommand,
103
+ SelectObjectContentCommand: client_s3_1.SelectObjectContentCommand,
104
+ UploadPartCommand: client_s3_1.UploadPartCommand,
105
+ UploadPartCopyCommand: client_s3_1.UploadPartCopyCommand,
106
+ WriteGetObjectResponseCommand: client_s3_1.WriteGetObjectResponseCommand,
107
+ };
108
+ /**
109
+ * @since 1.0.0
110
+ * @category tags
111
+ */
112
+ exports.S3Service = effect_1.Context.Tag(Symbol.for("@effect-aws/client-s3/S3Service"));
113
+ /**
114
+ * @since 1.0.0
115
+ * @category constructors
116
+ */
117
+ exports.makeS3Service = effect_1.Effect.gen(function* (_) {
118
+ const client = yield* _(S3ClientInstance_1.S3ClientInstance);
119
+ const catchErrors = (e) => {
120
+ if (e instanceof client_s3_1.S3ServiceException) {
121
+ return (0, Errors_1.S3ServiceError)({
122
+ ...e,
123
+ name: "S3ServiceError",
124
+ message: e.message,
125
+ stack: e.stack,
126
+ });
127
+ }
128
+ if (e instanceof Error) {
129
+ return (0, Errors_1.SdkError)({
130
+ ...e,
131
+ name: "SdkError",
132
+ message: e.message,
133
+ stack: e.stack,
134
+ });
135
+ }
136
+ throw e;
137
+ };
138
+ return effect_1.ReadonlyRecord.toEntries(commands).reduce((acc, [command]) => {
139
+ const CommandCtor = commands[command];
140
+ const methodImpl = (args, options) => (options === null || options === void 0 ? void 0 : options.presigned)
141
+ ? effect_1.Effect.tryPromise({
142
+ try: () => (0, s3_request_presigner_1.getSignedUrl)(client, new CommandCtor(args), options),
143
+ catch: catchErrors,
144
+ })
145
+ : effect_1.Effect.tryPromise({
146
+ try: () => client.send(new CommandCtor(args), options),
147
+ catch: catchErrors,
148
+ });
149
+ const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
150
+ return { ...acc, [methodName]: methodImpl };
151
+ }, {});
152
+ });
153
+ /**
154
+ * @since 1.0.0
155
+ * @category layers
156
+ */
157
+ exports.BaseS3ServiceLayer = effect_1.Layer.effect(exports.S3Service, exports.makeS3Service);
158
+ /**
159
+ * @since 1.0.0
160
+ * @category layers
161
+ */
162
+ exports.S3ServiceLayer = exports.BaseS3ServiceLayer.pipe(effect_1.Layer.provide(S3ClientInstance_1.S3ClientInstanceLayer));
163
+ /**
164
+ * @since 1.0.0
165
+ * @category layers
166
+ */
167
+ exports.DefaultS3ServiceLayer = exports.S3ServiceLayer.pipe(effect_1.Layer.provide(S3ClientInstanceConfig_1.DefaultS3ClientConfigLayer));
168
+ // -------------------- Danger Zone --------------------
169
+ /**
170
+ * @since 0.1.0
171
+ * @deprecated
172
+ */
173
+ exports.BaseS3ServiceEffect = exports.makeS3Service;
174
+ /**
175
+ * @since 0.1.0
176
+ * @deprecated
177
+ */
178
+ exports.S3ServiceEffect = exports.BaseS3ServiceEffect.pipe(effect_1.Effect.provide(S3ClientInstance_1.S3ClientInstanceLayer));
179
+ /**
180
+ * @since 0.1.0
181
+ * @deprecated
182
+ */
183
+ exports.DefaultS3ServiceEffect = exports.BaseS3ServiceEffect.pipe(effect_1.Effect.provide(S3ClientInstance_1.DefaultS3ClientInstanceLayer));
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1MzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILGtEQXlSNEI7QUFDNUIsd0VBQTZEO0FBSzdELG1DQUFnRTtBQUNoRSxxQ0FBb0Q7QUFDcEQseURBSTRCO0FBQzVCLHFFQUFzRTtBQUV0RSxNQUFNLFFBQVEsR0FBRztJQUNmLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0IsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5QixpQkFBaUIsRUFBakIsNkJBQWlCO0lBQ2pCLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsNEJBQTRCLEVBQTVCLHdDQUE0QjtJQUM1QixtQkFBbUIsRUFBbkIsK0JBQW1CO0lBQ25CLHlDQUF5QyxFQUF6QyxxREFBeUM7SUFDekMsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2Qiw2QkFBNkIsRUFBN0IseUNBQTZCO0lBQzdCLGtEQUFrRCxFQUFsRCw4REFBa0Q7SUFDbEQseUNBQXlDLEVBQXpDLHFEQUF5QztJQUN6Qyw0QkFBNEIsRUFBNUIsd0NBQTRCO0lBQzVCLHVDQUF1QyxFQUF2QyxtREFBdUM7SUFDdkMsb0NBQW9DLEVBQXBDLGdEQUFvQztJQUNwQyx5QkFBeUIsRUFBekIscUNBQXlCO0lBQ3pCLDhCQUE4QixFQUE5QiwwQ0FBOEI7SUFDOUIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQiwwQkFBMEIsRUFBMUIsc0NBQTBCO0lBQzFCLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsb0JBQW9CLEVBQXBCLGdDQUFvQjtJQUNwQiwwQkFBMEIsRUFBMUIsc0NBQTBCO0lBQzFCLDhCQUE4QixFQUE5QiwwQ0FBOEI7SUFDOUIsdUNBQXVDLEVBQXZDLG1EQUF1QztJQUN2QyxtQkFBbUIsRUFBbkIsK0JBQW1CO0lBQ25CLHNDQUFzQyxFQUF0QyxrREFBc0M7SUFDdEMsb0JBQW9CLEVBQXBCLGdDQUFvQjtJQUNw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R0c7QUFDVSxRQUFBLGVBQWUsR0FBRywyQkFBbUIsQ0FBQyxJQUFJLENBQ3JELGVBQU0sQ0FBQyxPQUFPLENBQUMsd0NBQXFCLENBQUMsQ0FDdEMsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsc0JBQXNCLEdBQUcsMkJBQW1CLENBQUMsSUFBSSxDQUM1RCxlQUFNLENBQUMsT0FBTyxDQUFDLCtDQUE0QixDQUFDLENBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29weU9iamVjdENvbW1hbmQsXG4gIENvcHlPYmplY3RDb21tYW5kSW5wdXQsXG4gIENvcHlPYmplY3RDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVCdWNrZXRDb21tYW5kLFxuICBDcmVhdGVCdWNrZXRDb21tYW5kSW5wdXQsXG4gIENyZWF0ZUJ1Y2tldENvbW1hbmRPdXRwdXQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRJbnB1dCxcbiAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRDb21tYW5kLFxuICBEZWxldGVCdWNrZXRDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kLFxuICBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZCxcbiAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBEZWxldGVCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZUJ1Y2tldFRhZ2dpbmdDb21tYW5kLFxuICBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZElucHV0LFxuICBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kSW5wdXQsXG4gIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0LFxuICBEZWxldGVPYmplY3RDb21tYW5kLFxuICBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kLFxuICBEZWxldGVPYmplY3RzQ29tbWFuZElucHV0LFxuICBEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBEZWxldGVQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmQsXG4gIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICBEZWxldGVQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0QWNsQ29tbWFuZCxcbiAgR2V0QnVja2V0QWNsQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRBY2xDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldENvcnNDb21tYW5kLFxuICBHZXRCdWNrZXRDb3JzQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldExvZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgR2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRQb2xpY3lDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kLFxuICBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldFBvbGljeVN0YXR1c0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kT3V0cHV0LFxuICBHZXRCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIEdldEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kLFxuICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZElucHV0LFxuICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kSW5wdXQsXG4gIEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RBY2xDb21tYW5kLFxuICBHZXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdEFjbENvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZCxcbiAgR2V0T2JqZWN0Q29tbWFuZElucHV0LFxuICBHZXRPYmplY3RDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kLFxuICBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdExlZ2FsSG9sZENvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZCxcbiAgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZElucHV0LFxuICBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIEdldE9iamVjdFRvcnJlbnRDb21tYW5kLFxuICBHZXRPYmplY3RUb3JyZW50Q29tbWFuZElucHV0LFxuICBHZXRPYmplY3RUb3JyZW50Q29tbWFuZE91dHB1dCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBHZXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0LFxuICBIZWFkQnVja2V0Q29tbWFuZCxcbiAgSGVhZEJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgSGVhZEJ1Y2tldENvbW1hbmRPdXRwdXQsXG4gIEhlYWRPYmplY3RDb21tYW5kLFxuICBIZWFkT2JqZWN0Q29tbWFuZElucHV0LFxuICBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZElucHV0LFxuICBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBMaXN0QnVja2V0c0NvbW1hbmQsXG4gIExpc3RCdWNrZXRzQ29tbWFuZElucHV0LFxuICBMaXN0QnVja2V0c0NvbW1hbmRPdXRwdXQsXG4gIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZCxcbiAgTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kSW5wdXQsXG4gIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9iamVjdHNDb21tYW5kLFxuICBMaXN0T2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgTGlzdE9iamVjdHNDb21tYW5kT3V0cHV0LFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmRPdXRwdXQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdFBhcnRzQ29tbWFuZCxcbiAgTGlzdFBhcnRzQ29tbWFuZElucHV0LFxuICBMaXN0UGFydHNDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldEFjbENvbW1hbmQsXG4gIFB1dEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0QWNsQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRDb3JzQ29tbWFuZCxcbiAgUHV0QnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0Q29yc0NvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmQsXG4gIFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kLFxuICBQdXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRQb2xpY3lDb21tYW5kLFxuICBQdXRCdWNrZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldFBvbGljeUNvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0UmVwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICBQdXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kT3V0cHV0LFxuICBQdXRCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsXG4gIFB1dEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kLFxuICBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZElucHV0LFxuICBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kSW5wdXQsXG4gIFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RBY2xDb21tYW5kLFxuICBQdXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdEFjbENvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdENvbW1hbmQsXG4gIFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZElucHV0LFxuICBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmQsXG4gIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmRJbnB1dCxcbiAgUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LFxuICBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmQsXG4gIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRPdXRwdXQsXG4gIFJlc3RvcmVPYmplY3RDb21tYW5kLFxuICBSZXN0b3JlT2JqZWN0Q29tbWFuZElucHV0LFxuICBSZXN0b3JlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUzNTZXJ2aWNlRXhjZXB0aW9uLFxuICBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZCxcbiAgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmRJbnB1dCxcbiAgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmRPdXRwdXQsXG4gIFVwbG9hZFBhcnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29tbWFuZElucHV0LFxuICBVcGxvYWRQYXJ0Q29tbWFuZE91dHB1dCxcbiAgVXBsb2FkUGFydENvcHlDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29weUNvbW1hbmRJbnB1dCxcbiAgVXBsb2FkUGFydENvcHlDb21tYW5kT3V0cHV0LFxuICBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZCxcbiAgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmRJbnB1dCxcbiAgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmRPdXRwdXQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCB7IGdldFNpZ25lZFVybCB9IGZyb20gXCJAYXdzLXNkay9zMy1yZXF1ZXN0LXByZXNpZ25lclwiO1xuaW1wb3J0IHtcbiAgSHR0cEhhbmRsZXJPcHRpb25zIGFzIF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbn0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIExheWVyLCBSZWFkb25seVJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7IFMzU2VydmljZUVycm9yLCBTZGtFcnJvciB9IGZyb20gXCIuL0Vycm9yc1wiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VMYXllcixcbiAgUzNDbGllbnRJbnN0YW5jZSxcbiAgUzNDbGllbnRJbnN0YW5jZUxheWVyLFxufSBmcm9tIFwiLi9TM0NsaWVudEluc3RhbmNlXCI7XG5pbXBvcnQgeyBEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciB9IGZyb20gXCIuL1MzQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuY29uc3QgY29tbWFuZHMgPSB7XG4gIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDb3B5T2JqZWN0Q29tbWFuZCxcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZCxcbiAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbiAgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kLFxuICBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kLFxuICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZCxcbiAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kLFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEFjbENvbW1hbmQsXG4gIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRDb3JzQ29tbWFuZCxcbiAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmQsXG4gIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZCxcbiAgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmQsXG4gIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdEFjbENvbW1hbmQsXG4gIEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kLFxuICBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBHZXRPYmplY3RUb3JyZW50Q29tbWFuZCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBIZWFkQnVja2V0Q29tbWFuZCxcbiAgSGVhZE9iamVjdENvbW1hbmQsXG4gIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0c0NvbW1hbmQsXG4gIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZCxcbiAgTGlzdE9iamVjdHNDb21tYW5kLFxuICBMaXN0T2JqZWN0c1YyQ29tbWFuZCxcbiAgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZCxcbiAgTGlzdFBhcnRzQ29tbWFuZCxcbiAgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRBY2xDb21tYW5kLFxuICBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0Q29yc0NvbW1hbmQsXG4gIFB1dEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZCxcbiAgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kLFxuICBQdXRCdWNrZXRQb2xpY3lDb21tYW5kLFxuICBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZCxcbiAgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIFB1dEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kLFxuICBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZCxcbiAgUHV0T2JqZWN0Q29tbWFuZCxcbiAgUHV0T2JqZWN0QWNsQ29tbWFuZCxcbiAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kLFxuICBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBSZXN0b3JlT2JqZWN0Q29tbWFuZCxcbiAgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmQsXG4gIFVwbG9hZFBhcnRDb21tYW5kLFxuICBVcGxvYWRQYXJ0Q29weUNvbW1hbmQsXG4gIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kLFxufTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1NlcnZpY2Uge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBYm9ydE11bHRpcGFydFVwbG9hZENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBhYm9ydE11bHRpcGFydFVwbG9hZDogKFxuICAgIGFyZ3M6IEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkOiAoXG4gICAgYXJnczogQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29weU9iamVjdENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBjb3B5T2JqZWN0OiAoXG4gICAgYXJnczogQ29weU9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxuZXZlciwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvciwgQ29weU9iamVjdENvbW1hbmRPdXRwdXQ+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVCdWNrZXRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlQnVja2V0OiAoXG4gICAgYXJnczogQ3JlYXRlQnVja2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgQ3JlYXRlQnVja2V0Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlTXVsdGlwYXJ0VXBsb2FkOiAoXG4gICAgYXJnczogQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0OiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRDb3JzOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0RW5jcnlwdGlvbjogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldExpZmVjeWNsZUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRMaWZlY3ljbGU6IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0T3duZXJzaGlwQ29udHJvbHM6IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0UG9saWN5OiAoXG4gICAgYXJnczogRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVCdWNrZXRSZXBsaWNhdGlvbjogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlQnVja2V0VGFnZ2luZzogKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZUJ1Y2tldFdlYnNpdGU6IChcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlT2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9iamVjdDogKFxuICAgIGFyZ3M6IERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlT2JqZWN0c0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVPYmplY3RzOiAoXG4gICAgYXJnczogRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlT2JqZWN0VGFnZ2luZzogKFxuICAgIGFyZ3M6IERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBkZWxldGVQdWJsaWNBY2Nlc3NCbG9jazogKFxuICAgIGFyZ3M6IERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0QWNsQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldEFjbDogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldEFjbENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldENvcnNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0Q29yczogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldEVuY3J5cHRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0TG9jYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldExvZ2dpbmc6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBHZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHM6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0UG9saWN5OiAoXG4gICAgYXJnczogR2V0QnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0UG9saWN5Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0UG9saWN5U3RhdHVzOiAoXG4gICAgYXJnczogR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRSZXBsaWNhdGlvbjogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldFJlcXVlc3RQYXltZW50OiAoXG4gICAgYXJnczogR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRCdWNrZXRUYWdnaW5nOiAoXG4gICAgYXJnczogR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0QnVja2V0VmVyc2lvbmluZzogKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldEJ1Y2tldFdlYnNpdGU6IChcbiAgICBhcmdzOiBHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0T2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldE9iamVjdDoge1xuICAgIChcbiAgICAgIGFyZ3M6IEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgICAgIG9wdGlvbnM/OiB7IHJlYWRvbmx5IHByZXNpZ25lZD86IGZhbHNlIH0gJiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBHZXRPYmplY3RDb21tYW5kT3V0cHV0PjtcbiAgICAoXG4gICAgICBhcmdzOiBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgICBvcHRpb25zPzogeyByZWFkb25seSBwcmVzaWduZWQ6IHRydWUgfSAmIFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzLFxuICAgICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsIHN0cmluZz47XG4gIH07XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdEFjbENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRPYmplY3RBY2w6IChcbiAgICBhcmdzOiBHZXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRPYmplY3RBY2xDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0QXR0cmlidXRlczogKFxuICAgIGFyZ3M6IEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0TGVnYWxIb2xkOiAoXG4gICAgYXJnczogR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBnZXRPYmplY3RSZXRlbnRpb246IChcbiAgICBhcmdzOiBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0T2JqZWN0VGFnZ2luZzogKFxuICAgIGFyZ3M6IEdldE9iamVjdFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RUb3JyZW50Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGdldE9iamVjdFRvcnJlbnQ6IChcbiAgICBhcmdzOiBHZXRPYmplY3RUb3JyZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgR2V0T2JqZWN0VG9ycmVudENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgZ2V0UHVibGljQWNjZXNzQmxvY2s6IChcbiAgICBhcmdzOiBHZXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBIZWFkQnVja2V0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRCdWNrZXQ6IChcbiAgICBhcmdzOiBIZWFkQnVja2V0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBIZWFkQnVja2V0Q29tbWFuZE91dHB1dD47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEhlYWRPYmplY3RDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZE9iamVjdDogKFxuICAgIGFyZ3M6IEhlYWRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsIEhlYWRPYmplY3RDb21tYW5kT3V0cHV0PjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uczogKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uczogKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uczogKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zOiAoXG4gICAgYXJnczogTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RCdWNrZXRzQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RCdWNrZXRzOiAoXG4gICAgYXJnczogTGlzdEJ1Y2tldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0QnVja2V0c0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdE11bHRpcGFydFVwbG9hZHM6IChcbiAgICBhcmdzOiBMaXN0TXVsdGlwYXJ0VXBsb2Fkc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T2JqZWN0c0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBsaXN0T2JqZWN0czogKFxuICAgIGFyZ3M6IExpc3RPYmplY3RzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgTGlzdE9iamVjdHNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RPYmplY3RzVjJDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdE9iamVjdHNWMjogKFxuICAgIGFyZ3M6IExpc3RPYmplY3RzVjJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBMaXN0T2JqZWN0c1YyQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdE9iamVjdFZlcnNpb25zOiAoXG4gICAgYXJnczogTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0UGFydHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdFBhcnRzOiAoXG4gICAgYXJnczogTGlzdFBhcnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBMaXN0UGFydHNDb21tYW5kT3V0cHV0PjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRBY2xDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0QWNsOiAoXG4gICAgYXJnczogUHV0QnVja2V0QWNsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0QWNsQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0Q29yc0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRDb3JzOiAoXG4gICAgYXJnczogUHV0QnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldENvcnNDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0RW5jcnlwdGlvbjogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbjogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldExvZ2dpbmc6IChcbiAgICBhcmdzOiBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb246IChcbiAgICBhcmdzOiBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHM6IChcbiAgICBhcmdzOiBQdXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0UG9saWN5OiAoXG4gICAgYXJnczogUHV0QnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0UG9saWN5Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRSZXBsaWNhdGlvbjogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0UmVwbGljYXRpb25Db21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldFJlcXVlc3RQYXltZW50OiAoXG4gICAgYXJnczogUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRCdWNrZXRUYWdnaW5nOiAoXG4gICAgYXJnczogUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgcHV0QnVja2V0VmVyc2lvbmluZzogKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dEJ1Y2tldFdlYnNpdGU6IChcbiAgICBhcmdzOiBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PFxuICAgIG5ldmVyLFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsXG4gICAgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0T2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dE9iamVjdDoge1xuICAgIChcbiAgICAgIGFyZ3M6IFB1dE9iamVjdENvbW1hbmRJbnB1dCxcbiAgICAgIG9wdGlvbnM/OiB7IHJlYWRvbmx5IHByZXNpZ25lZD86IGZhbHNlIH0gJiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgICApOiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBQdXRPYmplY3RDb21tYW5kT3V0cHV0PjtcbiAgICAoXG4gICAgICBhcmdzOiBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgICBvcHRpb25zPzogeyByZWFkb25seSBwcmVzaWduZWQ6IHRydWUgfSAmIFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzLFxuICAgICk6IEVmZmVjdC5FZmZlY3Q8bmV2ZXIsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3IsIHN0cmluZz47XG4gIH07XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdEFjbENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3RBY2w6IChcbiAgICBhcmdzOiBQdXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRPYmplY3RBY2xDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3RMZWdhbEhvbGQ6IChcbiAgICBhcmdzOiBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uOiAoXG4gICAgYXJnczogUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dE9iamVjdFJldGVudGlvbjogKFxuICAgIGFyZ3M6IFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSBwdXRPYmplY3RUYWdnaW5nOiAoXG4gICAgYXJnczogUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHB1dFB1YmxpY0FjY2Vzc0Jsb2NrOiAoXG4gICAgYXJnczogUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVzdG9yZU9iamVjdENvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSByZXN0b3JlT2JqZWN0OiAoXG4gICAgYXJnczogUmVzdG9yZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFJlc3RvcmVPYmplY3RDb21tYW5kT3V0cHV0XG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kfVxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0T2JqZWN0Q29udGVudDogKFxuICAgIGFyZ3M6IFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZE91dHB1dFxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGxvYWRQYXJ0Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZFBhcnQ6IChcbiAgICBhcmdzOiBVcGxvYWRQYXJ0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBfX0h0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PG5ldmVyLCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLCBVcGxvYWRQYXJ0Q29tbWFuZE91dHB1dD47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwbG9hZFBhcnRDb3B5Q29tbWFuZH1cbiAgICovXG4gIHJlYWRvbmx5IHVwbG9hZFBhcnRDb3B5OiAoXG4gICAgYXJnczogVXBsb2FkUGFydENvcHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IF9fSHR0cEhhbmRsZXJPcHRpb25zLFxuICApID0+IEVmZmVjdC5FZmZlY3Q8XG4gICAgbmV2ZXIsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcixcbiAgICBVcGxvYWRQYXJ0Q29weUNvbW1hbmRPdXRwdXRcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmR9XG4gICAqL1xuICByZWFkb25seSB3cml0ZUdldE9iamVjdFJlc3BvbnNlOiAoXG4gICAgYXJnczogV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogX19IdHRwSGFuZGxlck9wdGlvbnMsXG4gICkgPT4gRWZmZWN0LkVmZmVjdDxcbiAgICBuZXZlcixcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yLFxuICAgIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kT3V0cHV0XG4gID47XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgdGFnc1xuICovXG5leHBvcnQgY29uc3QgUzNTZXJ2aWNlID0gQ29udGV4dC5UYWc8UzNTZXJ2aWNlPihcbiAgU3ltYm9sLmZvcihcIkBlZmZlY3QtYXdzL2NsaWVudC1zMy9TM1NlcnZpY2VcIiksXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVMzU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKFMzQ2xpZW50SW5zdGFuY2UpO1xuXG4gIGNvbnN0IGNhdGNoRXJyb3JzID0gKGU6IHVua25vd24pID0+IHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFMzU2VydmljZUV4Y2VwdGlvbikge1xuICAgICAgcmV0dXJuIFMzU2VydmljZUVycm9yKHtcbiAgICAgICAgLi4uZSxcbiAgICAgICAgbmFtZTogXCJTM1NlcnZpY2VFcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgIC4uLmUsXG4gICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9O1xuXG4gIHJldHVybiBSZWFkb25seVJlY29yZC50b0VudHJpZXMoY29tbWFuZHMpLnJlZHVjZSgoYWNjLCBbY29tbWFuZF0pID0+IHtcbiAgICBjb25zdCBDb21tYW5kQ3RvciA9IGNvbW1hbmRzW2NvbW1hbmRdIGFzIGFueTtcbiAgICBjb25zdCBtZXRob2RJbXBsID0gKFxuICAgICAgYXJnczogYW55LFxuICAgICAgb3B0aW9ucz86XG4gICAgICAgIHwgKHsgcmVhZG9ubHkgcHJlc2lnbmVkPzogZmFsc2UgfSAmIF9fSHR0cEhhbmRsZXJPcHRpb25zKVxuICAgICAgICB8ICh7IHJlYWRvbmx5IHByZXNpZ25lZDogdHJ1ZSB9ICYgUmVxdWVzdFByZXNpZ25pbmdBcmd1bWVudHMpLFxuICAgICkgPT5cbiAgICAgIG9wdGlvbnM/LnByZXNpZ25lZFxuICAgICAgICA/IEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgICAgIHRyeTogKCkgPT5cbiAgICAgICAgICAgICAgZ2V0U2lnbmVkVXJsKGNsaWVudCBhcyBhbnksIG5ldyBDb21tYW5kQ3RvcihhcmdzKSwgb3B0aW9ucyksXG4gICAgICAgICAgICBjYXRjaDogY2F0Y2hFcnJvcnMsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgICAgICB0cnk6ICgpID0+IGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwgb3B0aW9ucyksXG4gICAgICAgICAgICBjYXRjaDogY2F0Y2hFcnJvcnMsXG4gICAgICAgICAgfSk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IChjb21tYW5kWzBdLnRvTG93ZXJDYXNlKCkgKyBjb21tYW5kLnNsaWNlKDEpKS5yZXBsYWNlKFxuICAgICAgL0NvbW1hbmQkLyxcbiAgICAgIFwiXCIsXG4gICAgKTtcbiAgICByZXR1cm4geyAuLi5hY2MsIFttZXRob2ROYW1lXTogbWV0aG9kSW1wbCB9O1xuICB9LCB7fSkgYXMgUzNTZXJ2aWNlO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlUzNTZXJ2aWNlTGF5ZXIgPSBMYXllci5lZmZlY3QoUzNTZXJ2aWNlLCBtYWtlUzNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFMzU2VydmljZUxheWVyID0gQmFzZVMzU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoUzNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0UzNTZXJ2aWNlTGF5ZXIgPSBTM1NlcnZpY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRTM0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIERhbmdlciBab25lIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQHNpbmNlIDAuMS4wXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgQmFzZVMzU2VydmljZUVmZmVjdCA9IG1ha2VTM1NlcnZpY2U7XG5cbi8qKlxuICogQHNpbmNlIDAuMS4wXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgUzNTZXJ2aWNlRWZmZWN0ID0gQmFzZVMzU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShTM0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0UzNTZXJ2aWNlRWZmZWN0ID0gQmFzZVMzU2VydmljZUVmZmVjdC5waXBlKFxuICBFZmZlY3QucHJvdmlkZShEZWZhdWx0UzNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG4iXX0=
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import { S3Client } from "@aws-sdk/client-s3";
5
+ import * as Context from "effect/Context";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Layer from "effect/Layer";
8
+ import { DefaultS3ClientConfigLayer, S3ClientInstanceConfig, } from "./S3ClientInstanceConfig";
9
+ /**
10
+ * @since 1.0.0
11
+ * @category tags
12
+ */
13
+ export const S3ClientInstance = Context.Tag(Symbol.for("@effect-aws/client-s3/S3ClientInstance"));
14
+ /**
15
+ * @since 1.0.0
16
+ * @category constructors
17
+ */
18
+ export const makeS3ClientInstance = Effect.map(S3ClientInstanceConfig, (config) => new S3Client(config));
19
+ /**
20
+ * @since 1.0.0
21
+ * @category layers
22
+ */
23
+ export const S3ClientInstanceLayer = Layer.effect(S3ClientInstance, makeS3ClientInstance);
24
+ /**
25
+ * @since 1.0.0
26
+ * @category layers
27
+ */
28
+ export const DefaultS3ClientInstanceLayer = S3ClientInstanceLayer.pipe(Layer.provide(DefaultS3ClientConfigLayer));
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQVVsQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQ3JELENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUM1QyxzQkFBc0IsRUFDdEIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUNqQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDL0MsZ0JBQWdCLEVBQ2hCLG9CQUFvQixDQUNyQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUNwRSxLQUFLLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCAqIGFzIENvbnRleHQgZnJvbSBcImVmZmVjdC9Db250ZXh0XCI7XG5pbXBvcnQgKiBhcyBFZmZlY3QgZnJvbSBcImVmZmVjdC9FZmZlY3RcIjtcbmltcG9ydCAqIGFzIExheWVyIGZyb20gXCJlZmZlY3QvTGF5ZXJcIjtcbmltcG9ydCB7XG4gIERlZmF1bHRTM0NsaWVudENvbmZpZ0xheWVyLFxuICBTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxufSBmcm9tIFwiLi9TM0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgdGFnc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQ2xpZW50SW5zdGFuY2Uge1xuICByZWFkb25seSBfOiB1bmlxdWUgc3ltYm9sO1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IFMzQ2xpZW50SW5zdGFuY2UgPSBDb250ZXh0LlRhZzxTM0NsaWVudEluc3RhbmNlLCBTM0NsaWVudD4oXG4gIFN5bWJvbC5mb3IoXCJAZWZmZWN0LWF3cy9jbGllbnQtczMvUzNDbGllbnRJbnN0YW5jZVwiKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlUzNDbGllbnRJbnN0YW5jZSA9IEVmZmVjdC5tYXAoXG4gIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIChjb25maWcpID0+IG5ldyBTM0NsaWVudChjb25maWcpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFMzQ2xpZW50SW5zdGFuY2VMYXllciA9IExheWVyLmVmZmVjdChcbiAgUzNDbGllbnRJbnN0YW5jZSxcbiAgbWFrZVMzQ2xpZW50SW5zdGFuY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VMYXllciA9IFMzQ2xpZW50SW5zdGFuY2VMYXllci5waXBlKFxuICBMYXllci5wcm92aWRlKERlZmF1bHRTM0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Runtime from "effect/Runtime";
5
+ /**
6
+ * @since 1.0.0
7
+ * @category tags
8
+ */
9
+ export const S3ClientInstanceConfig = Context.Tag(Symbol.for("@effect-aws/client-s3/S3ClientInstanceConfig"));
10
+ /**
11
+ * @since 1.0.0
12
+ * @category constructors
13
+ */
14
+ export const makeDefaultS3ClientInstanceConfig = Effect.gen(function* (_) {
15
+ const runtime = yield* _(Effect.runtime());
16
+ const runSync = Runtime.runSync(runtime);
17
+ return {
18
+ logger: {
19
+ info: (m) => Effect.logInfo(m).pipe(runSync),
20
+ warn: (m) => Effect.logWarning(m).pipe(runSync),
21
+ error: (m) => Effect.logError(m).pipe(runSync),
22
+ debug: (m) => Effect.logDebug(m).pipe(runSync),
23
+ trace: (m) => Effect.logTrace(m).pipe(runSync),
24
+ },
25
+ };
26
+ });
27
+ /**
28
+ * @since 1.0.0
29
+ * @category layers
30
+ */
31
+ export const DefaultS3ClientConfigLayer = Layer.effect(S3ClientInstanceConfig, makeDefaultS3ClientInstanceConfig);
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQVUxQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUcvQyxNQUFNLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxDQUFDLENBQUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FJMUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUMvQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ3BELHNCQUFzQixFQUN0QixpQ0FBaUMsQ0FDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB0eXBlIHsgUzNDbGllbnRDb25maWcgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgKiBhcyBDb250ZXh0IGZyb20gXCJlZmZlY3QvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBMYXllciBmcm9tIFwiZWZmZWN0L0xheWVyXCI7XG5pbXBvcnQgKiBhcyBSdW50aW1lIGZyb20gXCJlZmZlY3QvUnVudGltZVwiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0NsaWVudEluc3RhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcbn1cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjb25zdCBTM0NsaWVudEluc3RhbmNlQ29uZmlnID0gQ29udGV4dC5UYWc8XG4gIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIFMzQ2xpZW50Q29uZmlnXG4+KFN5bWJvbC5mb3IoXCJAZWZmZWN0LWF3cy9jbGllbnQtczMvUzNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiKSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VDb25maWc6IEVmZmVjdC5FZmZlY3Q8XG4gIG5ldmVyLFxuICBuZXZlcixcbiAgUzNDbGllbnRDb25maWdcbj4gPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICBjb25zdCBydW50aW1lID0geWllbGQqIF8oRWZmZWN0LnJ1bnRpbWU8bmV2ZXI+KCkpO1xuICBjb25zdCBydW5TeW5jID0gUnVudGltZS5ydW5TeW5jKHJ1bnRpbWUpO1xuXG4gIHJldHVybiB7XG4gICAgbG9nZ2VyOiB7XG4gICAgICBpbmZvOiAobSkgPT4gRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKSxcbiAgICAgIHdhcm46IChtKSA9PiBFZmZlY3QubG9nV2FybmluZyhtKS5waXBlKHJ1blN5bmMpLFxuICAgICAgZXJyb3I6IChtKSA9PiBFZmZlY3QubG9nRXJyb3IobSkucGlwZShydW5TeW5jKSxcbiAgICAgIGRlYnVnOiAobSkgPT4gRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyksXG4gICAgICB0cmFjZTogKG0pID0+IEVmZmVjdC5sb2dUcmFjZShtKS5waXBlKHJ1blN5bmMpLFxuICAgIH0sXG4gIH07XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTM0NsaWVudENvbmZpZ0xheWVyID0gTGF5ZXIuZWZmZWN0KFxuICBTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxuICBtYWtlRGVmYXVsdFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4pO1xuIl19