@gomomento/sdk-core 1.99.0 → 1.99.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.
@@ -39,7 +39,7 @@ export declare class MomentoErrorTransportDetails {
39
39
  export declare abstract class SdkError extends Error {
40
40
  protected readonly _errorCode: MomentoErrorCode;
41
41
  protected readonly _messageWrapper: string;
42
- private readonly _transportDetails;
42
+ protected readonly _transportDetails: MomentoErrorTransportDetails;
43
43
  constructor(message: string, code?: number, metadata?: object | undefined, stack?: string | undefined);
44
44
  wrappedErrorMessage(): string;
45
45
  errorCode(): MomentoErrorCode;
@@ -111,12 +111,24 @@ export declare class InvalidArgumentError extends SdkError {
111
111
  _errorCode: MomentoErrorCode;
112
112
  _messageWrapper: string;
113
113
  }
114
+ declare enum LimitExceededMessageWrapper {
115
+ TOPIC_SUBSCRIPTIONS_LIMIT_EXCEEDED = "Topic subscriptions limit exceeded for this account",
116
+ OPERATIONS_RATE_LIMIT_EXCEEDED = "Request rate limit exceeded for this account",
117
+ THROUGHPUT_RATE_LIMIT_EXCEEDED = "Bandwidth limit exceeded for this account",
118
+ REQUEST_SIZE_LIMIT_EXCEEDED = "Request size limit exceeded for this account",
119
+ ITEM_SIZE_LIMIT_EXCEEDED = "Item size limit exceeded for this account",
120
+ ELEMENT_SIZE_LIMIT_EXCEEDED = "Element size limit exceeded for this account",
121
+ UNKNOWN_LIMIT_EXCEEDED = "Limit exceeded for this account"
122
+ }
114
123
  /**
115
124
  * Error when calls are throttled due to request limit rate
116
125
  */
117
126
  export declare class LimitExceededError extends SdkError {
118
127
  _errorCode: MomentoErrorCode;
119
- _messageWrapper: string;
128
+ _messageWrapper: LimitExceededMessageWrapper;
129
+ private errCause;
130
+ constructor(message: string, code?: number, metadata?: object | undefined, stack?: string | undefined, errCause?: string);
131
+ private determineMessageWrapper;
120
132
  }
121
133
  /**
122
134
  * Error that occurs when trying to get a cache that doesn't exist. To resolve, make sure that the cache you are trying
@@ -177,3 +189,4 @@ export declare class UnknownServiceError extends SdkError {
177
189
  _errorCode: MomentoErrorCode;
178
190
  _messageWrapper: string;
179
191
  }
192
+ export {};
@@ -183,14 +183,72 @@ class InvalidArgumentError extends SdkError {
183
183
  }
184
184
  }
185
185
  exports.InvalidArgumentError = InvalidArgumentError;
186
+ var LimitExceededMessageWrapper;
187
+ (function (LimitExceededMessageWrapper) {
188
+ LimitExceededMessageWrapper["TOPIC_SUBSCRIPTIONS_LIMIT_EXCEEDED"] = "Topic subscriptions limit exceeded for this account";
189
+ LimitExceededMessageWrapper["OPERATIONS_RATE_LIMIT_EXCEEDED"] = "Request rate limit exceeded for this account";
190
+ LimitExceededMessageWrapper["THROUGHPUT_RATE_LIMIT_EXCEEDED"] = "Bandwidth limit exceeded for this account";
191
+ LimitExceededMessageWrapper["REQUEST_SIZE_LIMIT_EXCEEDED"] = "Request size limit exceeded for this account";
192
+ LimitExceededMessageWrapper["ITEM_SIZE_LIMIT_EXCEEDED"] = "Item size limit exceeded for this account";
193
+ LimitExceededMessageWrapper["ELEMENT_SIZE_LIMIT_EXCEEDED"] = "Element size limit exceeded for this account";
194
+ LimitExceededMessageWrapper["UNKNOWN_LIMIT_EXCEEDED"] = "Limit exceeded for this account";
195
+ })(LimitExceededMessageWrapper || (LimitExceededMessageWrapper = {}));
186
196
  /**
187
197
  * Error when calls are throttled due to request limit rate
188
198
  */
189
199
  class LimitExceededError extends SdkError {
190
- constructor() {
191
- super(...arguments);
200
+ constructor(message, code = 0, metadata = undefined, stack = undefined, errCause) {
201
+ super(message, code, metadata, stack);
192
202
  this._errorCode = MomentoErrorCode.LIMIT_EXCEEDED_ERROR;
193
- this._messageWrapper = 'Request rate, bandwidth, or object size exceeded the limits for this account. To resolve this error, reduce your usage as appropriate or contact us at support@momentohq.com to request a limit increase';
203
+ this._messageWrapper = this.determineMessageWrapper();
204
+ this.errCause = errCause;
205
+ }
206
+ determineMessageWrapper() {
207
+ // If provided, we use the `err` metadata value to determine the most
208
+ // appropriate error message to return.
209
+ if (this.errCause !== undefined) {
210
+ switch (this.errCause) {
211
+ case 'topic_subscriptions_limit_exceeded':
212
+ return LimitExceededMessageWrapper.TOPIC_SUBSCRIPTIONS_LIMIT_EXCEEDED;
213
+ case 'operations_rate_limit_exceeded':
214
+ return LimitExceededMessageWrapper.OPERATIONS_RATE_LIMIT_EXCEEDED;
215
+ case 'throughput_rate_limit_exceeded':
216
+ return LimitExceededMessageWrapper.THROUGHPUT_RATE_LIMIT_EXCEEDED;
217
+ case 'request_size_limit_exceeded':
218
+ return LimitExceededMessageWrapper.REQUEST_SIZE_LIMIT_EXCEEDED;
219
+ case 'item_size_limit_exceeded':
220
+ return LimitExceededMessageWrapper.ITEM_SIZE_LIMIT_EXCEEDED;
221
+ case 'element_size_limit_exceeded':
222
+ return LimitExceededMessageWrapper.ELEMENT_SIZE_LIMIT_EXCEEDED;
223
+ default:
224
+ return LimitExceededMessageWrapper.UNKNOWN_LIMIT_EXCEEDED;
225
+ }
226
+ }
227
+ // If `err` metadata is unavailable, try to use the error details field
228
+ // to return the an appropriate error message.
229
+ if (this._transportDetails.grpc.details !== undefined) {
230
+ const details = this._transportDetails.grpc.details.toLowerCase();
231
+ if (details.includes('subscribers')) {
232
+ return LimitExceededMessageWrapper.TOPIC_SUBSCRIPTIONS_LIMIT_EXCEEDED;
233
+ }
234
+ else if (details.includes('operations')) {
235
+ return LimitExceededMessageWrapper.OPERATIONS_RATE_LIMIT_EXCEEDED;
236
+ }
237
+ else if (details.includes('throughput')) {
238
+ return LimitExceededMessageWrapper.THROUGHPUT_RATE_LIMIT_EXCEEDED;
239
+ }
240
+ else if (details.includes('request limit')) {
241
+ return LimitExceededMessageWrapper.REQUEST_SIZE_LIMIT_EXCEEDED;
242
+ }
243
+ else if (details.includes('item size')) {
244
+ return LimitExceededMessageWrapper.ITEM_SIZE_LIMIT_EXCEEDED;
245
+ }
246
+ else if (details.includes('element size')) {
247
+ return LimitExceededMessageWrapper.ELEMENT_SIZE_LIMIT_EXCEEDED;
248
+ }
249
+ }
250
+ // If all else fails, return a generic "limit exceeded" message
251
+ return LimitExceededMessageWrapper.UNKNOWN_LIMIT_EXCEEDED;
194
252
  }
195
253
  }
196
254
  exports.LimitExceededError = LimitExceededError;
@@ -285,4 +343,4 @@ class UnknownServiceError extends SdkError {
285
343
  }
286
344
  }
287
345
  exports.UnknownServiceError = UnknownServiceError;
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxnQkEyQ1g7QUEzQ0QsV0FBWSxnQkFBZ0I7SUFDMUIsNENBQTRDO0lBQzVDLHFFQUFpRCxDQUFBO0lBQ2pELHVDQUF1QztJQUN2QyxtRUFBK0MsQ0FBQTtJQUMvQywyQ0FBMkM7SUFDM0MsdUVBQW1ELENBQUE7SUFDbkQseURBQXlEO0lBQ3pELGlFQUE2QyxDQUFBO0lBQzdDLDJDQUEyQztJQUMzQyx1RUFBbUQsQ0FBQTtJQUNuRCwwQ0FBMEM7SUFDMUMsNkRBQXlDLENBQUE7SUFDekMsb0RBQW9EO0lBQ3BELHVEQUFtQyxDQUFBO0lBQ25DLDBDQUEwQztJQUMxQyxtRUFBK0MsQ0FBQTtJQUMvQyx3Q0FBd0M7SUFDeEMsNkVBQXlELENBQUE7SUFDekQsbUVBQW1FO0lBQ25FLG1FQUErQyxDQUFBO0lBQy9DLGdEQUFnRDtJQUNoRCx5REFBcUMsQ0FBQTtJQUNyQyxpRUFBaUU7SUFDakUsaUVBQTZDLENBQUE7SUFDN0Msc0NBQXNDO0lBQ3RDLHVEQUFtQyxDQUFBO0lBQ25DLHNDQUFzQztJQUN0Qyx5REFBcUMsQ0FBQTtJQUNyQyw4RUFBOEU7SUFDOUUsaUVBQTZDLENBQUE7SUFDN0Msc0JBQXNCO0lBQ3RCLDJEQUF1QyxDQUFBO0lBQ3ZDLDJDQUEyQztJQUMzQyxtREFBK0IsQ0FBQTtJQUMvQiwwQ0FBMEM7SUFDMUMsNkRBQXlDLENBQUE7SUFDekMsdURBQXVEO0lBQ3ZELDJFQUF1RCxDQUFBO0lBQ3ZELGtFQUFrRTtJQUNsRSwyRUFBdUQsQ0FBQTtJQUN2RCw2QkFBNkI7SUFDN0IsbURBQStCLENBQUE7QUFDakMsQ0FBQyxFQTNDVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQTJDM0I7QUFFRCxNQUFhLHVCQUF1QjtJQUlsQyxZQUFZLElBQVksRUFBRSxP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QUN0Qiw2REFBNkQsQ0FBQztJQUNsRSxDQUFDO0NBQUE7QUFKRCwwQ0FJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxRQUFRO0lBQXBEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUNqRCxvQkFBZSxHQUN0QixvSUFBb0ksQ0FBQztJQUN6SSxDQUFDO0NBQUE7QUFKRCx3REFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsUUFBUTtJQUExQzs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQzVDLG9CQUFlLEdBQ3RCLDhHQUE4RyxDQUFDO0lBQ25ILENBQUM7Q0FBQTtBQUpELG9DQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFlBQWEsU0FBUSxRQUFRO0lBQTFDOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7UUFDNUMsb0JBQWUsR0FBRyw0QkFBNEIsQ0FBQztJQUMxRCxDQUFDO0NBQUE7QUFIRCxvQ0FHQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxRQUFRO0lBQWpEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQztRQUNwRCxvQkFBZSxHQUN0QixrRkFBa0YsQ0FBQztJQUN2RixDQUFDO0NBQUE7QUFKRCxrREFJQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE1vbWVudG9FcnJvckNvZGUge1xuICAvLyBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBNb21lbnRvIGNsaWVudFxuICBJTlZBTElEX0FSR1VNRU5UX0VSUk9SID0gJ0lOVkFMSURfQVJHVU1FTlRfRVJST1InLFxuICAvLyBTZXJ2aWNlIHJldHVybmVkIGFuIHVua25vd24gcmVzcG9uc2VcbiAgVU5LTk9XTl9TRVJWSUNFX0VSUk9SID0gJ1VOS05PV05fU0VSVklDRV9FUlJPUicsXG4gIC8vIENhY2hlIHdpdGggc3BlY2lmaWVkIG5hbWUgYWxyZWFkeSBleGlzdHNcbiAgQ0FDSEVfQUxSRUFEWV9FWElTVFNfRVJST1IgPSAnQUxSRUFEWV9FWElTVFNfRVJST1InLFxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIENBQ0hFX0FMUkVBRFlfRVhJU1RTX0VSUk9SIGluc3RlYWQgKi9cbiAgQUxSRUFEWV9FWElTVFNfRVJST1IgPSAnQUxSRUFEWV9FWElTVFNfRVJST1InLFxuICAvLyBTdG9yZSB3aXRoIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzXG4gIFNUT1JFX0FMUkVBRFlfRVhJU1RTX0VSUk9SID0gJ0FMUkVBRFlfRVhJU1RTX0VSUk9SJyxcbiAgLy8gQ2FjaGUgd2l0aCBzcGVjaWZpZWQgbmFtZSBkb2Vzbid0IGV4aXN0XG4gIENBQ0hFX05PVF9GT1VORF9FUlJPUiA9ICdOT1RfRk9VTkRfRVJST1InLFxuICAvKiogQGRlcHJlY2F0ZWQgdXNlIENBQ0hFX05PVF9GT1VORF9FUlJPUiBpbnN0ZWFkICovXG4gIE5PVF9GT1VORF9FUlJPUiA9ICdOT1RfRk9VTkRfRVJST1InLFxuICAvLyBTdG9yZSB3aXRoIHNwZWNpZmllZCBuYW1lIGRvZXNuJ3QgZXhpc3RcbiAgU1RPUkVfTk9UX0ZPVU5EX0VSUk9SID0gJ1NUT1JFX05PVF9GT1VORF9FUlJPUicsXG4gIC8vIEl0ZW0gd2l0aCBzcGVjaWZpZWQga2V5IGRvZXNuJ3QgZXhpc3RcbiAgU1RPUkVfSVRFTV9OT1RfRk9VTkRfRVJST1IgPSAnU1RPUkVfSVRFTV9OT1RfRk9VTkRfRVJST1InLFxuICAvLyBBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0XG4gIElOVEVSTkFMX1NFUlZFUl9FUlJPUiA9ICdJTlRFUk5BTF9TRVJWRVJfRVJST1InLFxuICAvLyBJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBvcGVyYXRpb25cbiAgUEVSTUlTU0lPTl9FUlJPUiA9ICdQRVJNSVNTSU9OX0VSUk9SJyxcbiAgLy8gSW52YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyB0byBjb25uZWN0IHRvIGNhY2hlIHNlcnZpY2VcbiAgQVVUSEVOVElDQVRJT05fRVJST1IgPSAnQVVUSEVOVElDQVRJT05fRVJST1InLFxuICAvLyBSZXF1ZXN0IHdhcyBjYW5jZWxsZWQgYnkgdGhlIHNlcnZlclxuICBDQU5DRUxMRURfRVJST1IgPSAnQ0FOQ0VMTEVEX0VSUk9SJyxcbiAgLy8gRXJyb3IgY29ubmVjdGluZyB0byBNb21lbnRvIHNlcnZlcnNcbiAgQ09OTkVDVElPTl9FUlJPUiA9ICdDT05ORUNUSU9OX0VSUk9SJyxcbiAgLy8gUmVxdWVzdCByYXRlLCBiYW5kd2lkdGgsIG9yIG9iamVjdCBzaXplIGV4Y2VlZGVkIHRoZSBsaW1pdHMgZm9yIHRoZSBhY2NvdW50XG4gIExJTUlUX0VYQ0VFREVEX0VSUk9SID0gJ0xJTUlUX0VYQ0VFREVEX0VSUk9SJyxcbiAgLy8gUmVxdWVzdCB3YXMgaW52YWxpZFxuICBCQURfUkVRVUVTVF9FUlJPUiA9ICdCQURfUkVRVUVTVF9FUlJPUicsXG4gIC8vIENsaWVudCdzIGNvbmZpZ3VyZWQgdGltZW91dCB3YXMgZXhjZWVkZWRcbiAgVElNRU9VVF9FUlJPUiA9ICdUSU1FT1VUX0VSUk9SJyxcbiAgLy8gU2VydmVyIHdhcyB1bmFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0XG4gIFNFUlZFUl9VTkFWQUlMQUJMRSA9ICdTRVJWRVJfVU5BVkFJTEFCTEUnLFxuICAvLyBBIGNsaWVudCByZXNvdXJjZSAobW9zdCBsaWtlbHkgbWVtb3J5KSB3YXMgZXhoYXVzdGVkXG4gIENMSUVOVF9SRVNPVVJDRV9FWEhBVVNURUQgPSAnQ0xJRU5UX1JFU09VUkNFX0VYSEFVU1RFRCcsXG4gIC8vIFN5c3RlbSBpcyBub3QgaW4gYSBzdGF0ZSByZXF1aXJlZCBmb3IgdGhlIG9wZXJhdGlvbidzIGV4ZWN1dGlvblxuICBGQUlMRURfUFJFQ09ORElUSU9OX0VSUk9SID0gJ0ZBSUxFRF9QUkVDT05ESVRJT05fRVJST1InLFxuICAvLyBVbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZFxuICBVTktOT1dOX0VSUk9SID0gJ1VOS05PV05fRVJST1InLFxufVxuXG5leHBvcnQgY2xhc3MgTW9tZW50b0dycGNFcnJvckRldGFpbHMge1xuICBwdWJsaWMgcmVhZG9ubHkgY29kZTogbnVtYmVyO1xuICBwdWJsaWMgcmVhZG9ubHkgZGV0YWlsczogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE/OiBvYmplY3Q7XG4gIGNvbnN0cnVjdG9yKGNvZGU6IG51bWJlciwgZGV0YWlsczogc3RyaW5nLCBtZXRhZGF0YT86IG9iamVjdCkge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1vbWVudG9FcnJvclRyYW5zcG9ydERldGFpbHMge1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JwYzogTW9tZW50b0dycGNFcnJvckRldGFpbHM7XG4gIGNvbnN0cnVjdG9yKGdycGM6IE1vbWVudG9HcnBjRXJyb3JEZXRhaWxzKSB7XG4gICAgdGhpcy5ncnBjID0gZ3JwYztcbiAgfVxufVxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgZXJyb3JzIHRocm93biBieSB0aGUgc2RrXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZGtFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lcnJvckNvZGU6IE1vbWVudG9FcnJvckNvZGU7XG4gIHByb3RlY3RlZCByZWFkb25seSBfbWVzc2FnZVdyYXBwZXI6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNwb3J0RGV0YWlsczogTW9tZW50b0Vycm9yVHJhbnNwb3J0RGV0YWlscztcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNvZGUgPSAwLFxuICAgIG1ldGFkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgc3RhY2s6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBjb25zdCBncnBjRGV0YWlscyA9IG5ldyBNb21lbnRvR3JwY0Vycm9yRGV0YWlscyhjb2RlLCBtZXNzYWdlLCBtZXRhZGF0YSk7XG4gICAgdGhpcy5fdHJhbnNwb3J0RGV0YWlscyA9IG5ldyBNb21lbnRvRXJyb3JUcmFuc3BvcnREZXRhaWxzKGdycGNEZXRhaWxzKTtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2sgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHdyYXBwZWRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fbWVzc2FnZVdyYXBwZXJ9OiAke3RoaXMubWVzc2FnZX1gO1xuICB9XG5cbiAgcHVibGljIGVycm9yQ29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDb2RlO1xuICB9XG5cbiAgcHVibGljIHRyYW5zcG9ydERldGFpbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydERldGFpbHM7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBjYWNoZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY2FjaGUuIFRvIHJlc29sdmUgdGhpcyBlcnJvcixcbiAqIGVpdGhlciBkZWxldGUgdGhlIGV4aXN0aW5nIGNhY2hlIGFuZCBtYWtlIGEgbmV3IG9uZSwgb3IgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBjYWNoZSB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgdG9cbiAqIG9uZSB0aGF0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgQ2FjaGVBbHJlYWR5RXhpc3RzRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNBQ0hFX0FMUkVBRFlfRVhJU1RTX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIGNhY2hlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzLiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBlaXRoZXIgZGVsZXRlIHRoZSBleGlzdGluZyBjYWNoZSBhbmQgbWFrZSBhIG5ldyBvbmUsIG9yIHVzZSBhIGRpZmZlcmVudCBuYW1lJztcbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBzdG9yZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY2FjaGUuIFRvIHJlc29sdmUgdGhpcyBlcnJvcixcbiAqIGVpdGhlciBkZWxldGUgdGhlIGV4aXN0aW5nIHN0b3JlIGFuZCBtYWtlIGEgbmV3IG9uZSwgb3IgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBzdG9yZSB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgdG9cbiAqIG9uZSB0aGF0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgU3RvcmVBbHJlYWR5RXhpc3RzRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLlNUT1JFX0FMUkVBRFlfRVhJU1RTX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIHN0b3JlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzLiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBlaXRoZXIgZGVsZXRlIHRoZSBleGlzdGluZyBzdG9yZSBhbmQgbWFrZSBhIG5ldyBvbmUsIG9yIHVzZSBhIGRpZmZlcmVudCBuYW1lJztcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGF1dGhlbnRpY2F0aW9uIHdpdGggQ2FjaGUgU2VydmljZSBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25FcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuQVVUSEVOVElDQVRJT05fRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0ludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgdG8gY29ubmVjdCB0byBjYWNoZSBzZXJ2aWNlJztcbn1cblxuLyoqXG4gKiBFcnJvciByYWlzZWQgaW4gcmVzcG9uc2UgdG8gYW4gaW52YWxpZCByZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBCYWRSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkJBRF9SRVFVRVNUX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdUaGUgcmVxdWVzdCB3YXMgaW52YWxpZDsgcGxlYXNlIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBtb21lbnRvaHEuY29tJztcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiB3aXRoIENhY2hlIFNlcnZpY2Ugd2FzIGNhbmNlbGxlZFxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNBTkNFTExFRF9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID1cbiAgICAnVGhlIHJlcXVlc3Qgd2FzIGNhbmNlbGxlZCBieSB0aGUgc2VydmVyOyBwbGVhc2UgY29udGFjdCB1cyBhdCBzdXBwb3J0QG1vbWVudG9ocS5jb20nO1xufVxuXG4vKipcbiAqIEVycm9yIHdoZW4gdGhlcmUncyBhIGZhaWx1cmUgdG8gY29ubmVjdCB0byBNb21lbnRvIHNlcnZlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNPTk5FQ1RJT05fRVJST1I7XG59XG5cbi8qKlxuICogRXJyb3IgcmFpc2VkIHdoZW4gc3lzdGVtIGluIG5vdCBpbiBhIHN0YXRlIHJlcXVpcmVkIGZvciB0aGUgb3BlcmF0aW9uJ3Mgc3VjY2Vzc1xuICovXG5leHBvcnQgY2xhc3MgRmFpbGVkUHJlY29uZGl0aW9uRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkZBSUxFRF9QUkVDT05ESVRJT05fRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgXCJTeXN0ZW0gaXMgbm90IGluIGEgc3RhdGUgcmVxdWlyZWQgZm9yIHRoZSBvcGVyYXRpb24ncyBleGVjdXRpb25cIjtcbn1cblxuLyoqXG4gKiBDYWNoZSBTZXJ2aWNlIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFNlcnZlckVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3Q7IHBsZWFzZSBjb250YWN0IHVzIGF0IHN1cHBvcnRAbW9tZW50b2hxLmNvbSc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBlcnJvcnMgdGhyb3duIHdoZW4gaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlIE1vbWVudG8gQ2FjaGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5JTlZBTElEX0FSR1VNRU5UX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPSAnSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gTW9tZW50byBjbGllbnQnO1xufVxuXG4vKipcbiAqIEVycm9yIHdoZW4gY2FsbHMgYXJlIHRocm90dGxlZCBkdWUgdG8gcmVxdWVzdCBsaW1pdCByYXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW1pdEV4Y2VlZGVkRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkxJTUlUX0VYQ0VFREVEX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdSZXF1ZXN0IHJhdGUsIGJhbmR3aWR0aCwgb3Igb2JqZWN0IHNpemUgZXhjZWVkZWQgdGhlIGxpbWl0cyBmb3IgdGhpcyBhY2NvdW50LiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCByZWR1Y2UgeW91ciB1c2FnZSBhcyBhcHByb3ByaWF0ZSBvciBjb250YWN0IHVzIGF0IHN1cHBvcnRAbW9tZW50b2hxLmNvbSB0byByZXF1ZXN0IGEgbGltaXQgaW5jcmVhc2UnO1xufVxuXG4vKipcbiAqIEVycm9yIHRoYXQgb2NjdXJzIHdoZW4gdHJ5aW5nIHRvIGdldCBhIGNhY2hlIHRoYXQgZG9lc24ndCBleGlzdC4gVG8gcmVzb2x2ZSwgbWFrZSBzdXJlIHRoYXQgdGhlIGNhY2hlIHlvdSBhcmUgdHJ5aW5nXG4gKiB0byBnZXQgZXhpc3RzLiBJZiBpdCBkb2Vzbid0IGNyZWF0ZSBpdCBmaXJzdCBhbmQgdGhlbiB0cnkgYWdhaW5cbiAqL1xuZXhwb3J0IGNsYXNzIENhY2hlTm90Rm91bmRFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuQ0FDSEVfTk9UX0ZPVU5EX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIGNhY2hlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGRvZXMgbm90IGV4aXN0LiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBtYWtlIHN1cmUgeW91IGhhdmUgY3JlYXRlZCB0aGUgY2FjaGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0Jztcbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBnZXQgYSBzdG9yZSB0aGF0IGRvZXNuJ3QgZXhpc3QuIFRvIHJlc29sdmUsIG1ha2Ugc3VyZSB0aGF0IHRoZSBzdG9yZSB5b3UgYXJlIHRyeWluZ1xuICogdG8gZ2V0IGV4aXN0cy4gSWYgaXQgZG9lc24ndCBjcmVhdGUgaXQgZmlyc3QgYW5kIHRoZW4gdHJ5IGFnYWluLlxuICovXG5leHBvcnQgY2xhc3MgU3RvcmVOb3RGb3VuZEVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5TVE9SRV9OT1RfRk9VTkRfRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0Egc3RvcmUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgZG9lcyBub3QgZXhpc3QuICBUbyByZXNvbHZlIHRoaXMgZXJyb3IsIG1ha2Ugc3VyZSB5b3UgaGF2ZSBjcmVhdGVkIHRoZSBzdG9yZSBiZWZvcmUgYXR0ZW1wdGluZyB0byB1c2UgaXQnO1xufVxuXG4vKipcbiAqIEVycm9yIHRoYXQgb2NjdXJzIHdoZW4gdHJ5aW5nIHRvIGdldCBhbiBpdGVtIGZyb20gc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0LiBUbyByZXNvbHZlLCBtYWtlIHN1cmUgdGhhdCB0aGUgaXRlbSB5b3UgYXJlIHRyeWluZ1xuICogdG8gZ2V0IGV4aXN0cy4gSWYgaXQgZG9lc24ndCBjcmVhdGUgaXQgZmlyc3QgYW5kIHRoZW4gdHJ5IGFnYWluLlxuICovXG5leHBvcnQgY2xhc3MgU3RvcmVJdGVtTm90Rm91bmRFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuU1RPUkVfSVRFTV9OT1RfRk9VTkRfRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9ICdBbiBpdGVtIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZG9lcyBub3QgZXhpc3QnO1xufVxuXG4vKipcbiAqIEluc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiBDYWNoZSBTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLlBFUk1JU1NJT05fRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0luc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiBhIGNhY2hlJztcbn1cblxuLyoqXG4gKiBTZXJ2ZXIgd2FzIHVuYWJsZSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2ZXJVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5TRVJWRVJfVU5BVkFJTEFCTEU7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ1RoZSBzZXJ2ZXIgd2FzIHVuYWJsZSB0byBoYW5kbGUgdGhlIHJlcXVlc3Q7IGNvbnNpZGVyIHJldHJ5aW5nLiAgSWYgdGhlIGVycm9yIHBlcnNpc3RzLCBwbGVhc2UgY29udGFjdCB1cyBhdCBzdXBwb3J0QG1vbWVudG9ocS5jb20nO1xufVxuXG4vKipcbiAqIEVycm9yIHdoZW4gYW4gb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgaW4gdGltZVxuICovXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5USU1FT1VUX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgIFwiVGhlIGNsaWVudCdzIGNvbmZpZ3VyZWQgdGltZW91dCB3YXMgZXhjZWVkZWQ7IHlvdSBtYXkgbmVlZCB0byB1c2UgYSBDb25maWd1cmF0aW9uIHdpdGggbW9yZSBsZW5pZW50IHRpbWVvdXRzXCI7XG59XG5cbi8qKlxuICogRXJyb3IgcmFpc2VkIHdoZW4gdGhlIHVuZGVybHlpbmcgY2F1c2UgaW4gdW5rbm93blxuICovXG5leHBvcnQgY2xhc3MgVW5rbm93bkVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5VTktOT1dOX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPSAnVW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWQnO1xufVxuXG4vKipcbiAqIEVycm9yIHJhaXNlZCB3aGVuIHRoZSBzZXJ2aWNlIHJldHVybnMgYW4gdW5rbm93biByZXNwb25zZVxuICovXG5leHBvcnQgY2xhc3MgVW5rbm93blNlcnZpY2VFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuVU5LTk9XTl9TRVJWSUNFX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdTZXJ2aWNlIHJldHVybmVkIGFuIHVua25vd24gcmVzcG9uc2U7IHBsZWFzZSBjb250YWN0IHVzIGF0IHN1cHBvcnRAbW9tZW50b2hxLmNvbSc7XG59XG4iXX0=
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Vycm9ycy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxnQkEyQ1g7QUEzQ0QsV0FBWSxnQkFBZ0I7SUFDMUIsNENBQTRDO0lBQzVDLHFFQUFpRCxDQUFBO0lBQ2pELHVDQUF1QztJQUN2QyxtRUFBK0MsQ0FBQTtJQUMvQywyQ0FBMkM7SUFDM0MsdUVBQW1ELENBQUE7SUFDbkQseURBQXlEO0lBQ3pELGlFQUE2QyxDQUFBO0lBQzdDLDJDQUEyQztJQUMzQyx1RUFBbUQsQ0FBQTtJQUNuRCwwQ0FBMEM7SUFDMUMsNkRBQXlDLENBQUE7SUFDekMsb0RBQW9EO0lBQ3BELHVEQUFtQyxDQUFBO0lBQ25DLDBDQUEwQztJQUMxQyxtRUFBK0MsQ0FBQTtJQUMvQyx3Q0FBd0M7SUFDeEMsNkVBQXlELENBQUE7SUFDekQsbUVBQW1FO0lBQ25FLG1FQUErQyxDQUFBO0lBQy9DLGdEQUFnRDtJQUNoRCx5REFBcUMsQ0FBQTtJQUNyQyxpRUFBaUU7SUFDakUsaUVBQTZDLENBQUE7SUFDN0Msc0NBQXNDO0lBQ3RDLHVEQUFtQyxDQUFBO0lBQ25DLHNDQUFzQztJQUN0Qyx5REFBcUMsQ0FBQTtJQUNyQyw4RUFBOEU7SUFDOUUsaUVBQTZDLENBQUE7SUFDN0Msc0JBQXNCO0lBQ3RCLDJEQUF1QyxDQUFBO0lBQ3ZDLDJDQUEyQztJQUMzQyxtREFBK0IsQ0FBQTtJQUMvQiwwQ0FBMEM7SUFDMUMsNkRBQXlDLENBQUE7SUFDekMsdURBQXVEO0lBQ3ZELDJFQUF1RCxDQUFBO0lBQ3ZELGtFQUFrRTtJQUNsRSwyRUFBdUQsQ0FBQTtJQUN2RCw2QkFBNkI7SUFDN0IsbURBQStCLENBQUE7QUFDakMsQ0FBQyxFQTNDVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQTJDM0I7QUFFRCxNQUFhLHVCQUF1QjtJQUlsQyxZQUFZLElBQVksRUFBRSxPQUFlLEVBQUUsUUFBaUI7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBVEQsMERBU0M7QUFFRCxNQUFhLDRCQUE0QjtJQUV2QyxZQUFZLElBQTZCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQUxELG9FQUtDO0FBQ0Q7O0dBRUc7QUFDSCxNQUFzQixRQUFTLFNBQVEsS0FBSztJQUkxQyxZQUNFLE9BQWUsRUFDZixJQUFJLEdBQUcsQ0FBQyxFQUNSLFdBQStCLFNBQVMsRUFDeEMsUUFBNEIsU0FBUztRQUVyQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksNEJBQTRCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUEzQkQsNEJBMkJDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsUUFBUTtJQUFyRDs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7UUFDekQsb0JBQWUsR0FDdEIsc0pBQXNKLENBQUM7SUFDM0osQ0FBQztDQUFBO0FBSkQsMERBSUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxRQUFRO0lBQXJEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztRQUN6RCxvQkFBZSxHQUN0QixzSkFBc0osQ0FBQztJQUMzSixDQUFDO0NBQUE7QUFKRCwwREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxRQUFRO0lBQWpEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUNuRCxvQkFBZSxHQUN0QixnRUFBZ0UsQ0FBQztJQUNyRSxDQUFDO0NBQUE7QUFKRCxrREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFFBQVE7SUFBN0M7O1FBQ1csZUFBVSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ2hELG9CQUFlLEdBQ3RCLHFFQUFxRSxDQUFDO0lBQzFFLENBQUM7Q0FBQTtBQUpELDBDQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxRQUFRO0lBQTVDOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7UUFDOUMsb0JBQWUsR0FDdEIscUZBQXFGLENBQUM7SUFDMUYsQ0FBQztDQUFBO0FBSkQsd0NBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxRQUFRO0lBQTdDOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxRCxDQUFDO0NBQUE7QUFGRCwwQ0FFQztBQUVEOztHQUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxRQUFRO0lBQXJEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztRQUN4RCxvQkFBZSxHQUN0QixpRUFBaUUsQ0FBQztJQUN0RSxDQUFDO0NBQUE7QUFKRCwwREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSxRQUFRO0lBQWpEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQztRQUNwRCxvQkFBZSxHQUN0Qiw4R0FBOEcsQ0FBQztJQUNuSCxDQUFDO0NBQUE7QUFKRCxrREFJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxRQUFRO0lBQWxEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUNyRCxvQkFBZSxHQUFHLDJDQUEyQyxDQUFDO0lBQ3pFLENBQUM7Q0FBQTtBQUhELG9EQUdDO0FBRUQsSUFBSywyQkFRSjtBQVJELFdBQUssMkJBQTJCO0lBQzlCLHlIQUEwRixDQUFBO0lBQzFGLDhHQUErRSxDQUFBO0lBQy9FLDJHQUE0RSxDQUFBO0lBQzVFLDJHQUE0RSxDQUFBO0lBQzVFLHFHQUFzRSxDQUFBO0lBQ3RFLDJHQUE0RSxDQUFBO0lBQzVFLHlGQUEwRCxDQUFBO0FBQzVELENBQUMsRUFSSSwyQkFBMkIsS0FBM0IsMkJBQTJCLFFBUS9CO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLFFBQVE7SUFLOUMsWUFDRSxPQUFlLEVBQ2YsSUFBSSxHQUFHLENBQUMsRUFDUixXQUErQixTQUFTLEVBQ3hDLFFBQTRCLFNBQVMsRUFDckMsUUFBaUI7UUFFakIsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBWC9CLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBV3hELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IscUVBQXFFO1FBQ3JFLHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQy9CLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDckIsS0FBSyxvQ0FBb0M7b0JBQ3ZDLE9BQU8sMkJBQTJCLENBQUMsa0NBQWtDLENBQUM7Z0JBQ3hFLEtBQUssZ0NBQWdDO29CQUNuQyxPQUFPLDJCQUEyQixDQUFDLDhCQUE4QixDQUFDO2dCQUNwRSxLQUFLLGdDQUFnQztvQkFDbkMsT0FBTywyQkFBMkIsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDcEUsS0FBSyw2QkFBNkI7b0JBQ2hDLE9BQU8sMkJBQTJCLENBQUMsMkJBQTJCLENBQUM7Z0JBQ2pFLEtBQUssMEJBQTBCO29CQUM3QixPQUFPLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDO2dCQUM5RCxLQUFLLDZCQUE2QjtvQkFDaEMsT0FBTywyQkFBMkIsQ0FBQywyQkFBMkIsQ0FBQztnQkFDakU7b0JBQ0UsT0FBTywyQkFBMkIsQ0FBQyxzQkFBc0IsQ0FBQzthQUM3RDtTQUNGO1FBRUQsdUVBQXVFO1FBQ3ZFLDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sMkJBQTJCLENBQUMsa0NBQWtDLENBQUM7YUFDdkU7aUJBQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN6QyxPQUFPLDJCQUEyQixDQUFDLDhCQUE4QixDQUFDO2FBQ25FO2lCQUFNLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDekMsT0FBTywyQkFBMkIsQ0FBQyw4QkFBOEIsQ0FBQzthQUNuRTtpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQzVDLE9BQU8sMkJBQTJCLENBQUMsMkJBQTJCLENBQUM7YUFDaEU7aUJBQU0sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4QyxPQUFPLDJCQUEyQixDQUFDLHdCQUF3QixDQUFDO2FBQzdEO2lCQUFNLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDM0MsT0FBTywyQkFBMkIsQ0FBQywyQkFBMkIsQ0FBQzthQUNoRTtTQUNGO1FBRUQsK0RBQStEO1FBQy9ELE9BQU8sMkJBQTJCLENBQUMsc0JBQXNCLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBNURELGdEQTREQztBQUVEOzs7R0FHRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsUUFBUTtJQUFoRDs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7UUFDcEQsb0JBQWUsR0FDdEIsMElBQTBJLENBQUM7SUFDL0ksQ0FBQztDQUFBO0FBSkQsZ0RBSUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLFFBQVE7SUFBaEQ7O1FBQ1csZUFBVSxHQUFHLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDO1FBQ3BELG9CQUFlLEdBQ3RCLDBJQUEwSSxDQUFDO0lBQy9JLENBQUM7Q0FBQTtBQUpELGdEQUlDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxRQUFRO0lBQXBEOztRQUNXLGVBQVUsR0FBRyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztRQUN6RCxvQkFBZSxHQUFHLCtDQUErQyxDQUFDO0lBQzdFLENBQUM7Q0FBQTtBQUhELHdEQUdDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsUUFBUTtJQUE3Qzs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7UUFDL0Msb0JBQWUsR0FDdEIsNkRBQTZELENBQUM7SUFDbEUsQ0FBQztDQUFBO0FBSkQsMENBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsUUFBUTtJQUFwRDs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7UUFDakQsb0JBQWUsR0FDdEIsb0lBQW9JLENBQUM7SUFDekksQ0FBQztDQUFBO0FBSkQsd0RBSUM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLFFBQVE7SUFBMUM7O1FBQ1csZUFBVSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM1QyxvQkFBZSxHQUN0Qiw4R0FBOEcsQ0FBQztJQUNuSCxDQUFDO0NBQUE7QUFKRCxvQ0FJQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsUUFBUTtJQUExQzs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQzVDLG9CQUFlLEdBQUcsNEJBQTRCLENBQUM7SUFDMUQsQ0FBQztDQUFBO0FBSEQsb0NBR0M7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsUUFBUTtJQUFqRDs7UUFDVyxlQUFVLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7UUFDcEQsb0JBQWUsR0FDdEIsa0ZBQWtGLENBQUM7SUFDdkYsQ0FBQztDQUFBO0FBSkQsa0RBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBNb21lbnRvRXJyb3JDb2RlIHtcbiAgLy8gSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gTW9tZW50byBjbGllbnRcbiAgSU5WQUxJRF9BUkdVTUVOVF9FUlJPUiA9ICdJTlZBTElEX0FSR1VNRU5UX0VSUk9SJyxcbiAgLy8gU2VydmljZSByZXR1cm5lZCBhbiB1bmtub3duIHJlc3BvbnNlXG4gIFVOS05PV05fU0VSVklDRV9FUlJPUiA9ICdVTktOT1dOX1NFUlZJQ0VfRVJST1InLFxuICAvLyBDYWNoZSB3aXRoIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzXG4gIENBQ0hFX0FMUkVBRFlfRVhJU1RTX0VSUk9SID0gJ0FMUkVBRFlfRVhJU1RTX0VSUk9SJyxcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBDQUNIRV9BTFJFQURZX0VYSVNUU19FUlJPUiBpbnN0ZWFkICovXG4gIEFMUkVBRFlfRVhJU1RTX0VSUk9SID0gJ0FMUkVBRFlfRVhJU1RTX0VSUk9SJyxcbiAgLy8gU3RvcmUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbHJlYWR5IGV4aXN0c1xuICBTVE9SRV9BTFJFQURZX0VYSVNUU19FUlJPUiA9ICdBTFJFQURZX0VYSVNUU19FUlJPUicsXG4gIC8vIENhY2hlIHdpdGggc3BlY2lmaWVkIG5hbWUgZG9lc24ndCBleGlzdFxuICBDQUNIRV9OT1RfRk9VTkRfRVJST1IgPSAnTk9UX0ZPVU5EX0VSUk9SJyxcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBDQUNIRV9OT1RfRk9VTkRfRVJST1IgaW5zdGVhZCAqL1xuICBOT1RfRk9VTkRfRVJST1IgPSAnTk9UX0ZPVU5EX0VSUk9SJyxcbiAgLy8gU3RvcmUgd2l0aCBzcGVjaWZpZWQgbmFtZSBkb2Vzbid0IGV4aXN0XG4gIFNUT1JFX05PVF9GT1VORF9FUlJPUiA9ICdTVE9SRV9OT1RfRk9VTkRfRVJST1InLFxuICAvLyBJdGVtIHdpdGggc3BlY2lmaWVkIGtleSBkb2Vzbid0IGV4aXN0XG4gIFNUT1JFX0lURU1fTk9UX0ZPVU5EX0VSUk9SID0gJ1NUT1JFX0lURU1fTk9UX0ZPVU5EX0VSUk9SJyxcbiAgLy8gQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdFxuICBJTlRFUk5BTF9TRVJWRVJfRVJST1IgPSAnSU5URVJOQUxfU0VSVkVSX0VSUk9SJyxcbiAgLy8gSW5zdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHBlcmZvcm0gb3BlcmF0aW9uXG4gIFBFUk1JU1NJT05fRVJST1IgPSAnUEVSTUlTU0lPTl9FUlJPUicsXG4gIC8vIEludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgdG8gY29ubmVjdCB0byBjYWNoZSBzZXJ2aWNlXG4gIEFVVEhFTlRJQ0FUSU9OX0VSUk9SID0gJ0FVVEhFTlRJQ0FUSU9OX0VSUk9SJyxcbiAgLy8gUmVxdWVzdCB3YXMgY2FuY2VsbGVkIGJ5IHRoZSBzZXJ2ZXJcbiAgQ0FOQ0VMTEVEX0VSUk9SID0gJ0NBTkNFTExFRF9FUlJPUicsXG4gIC8vIEVycm9yIGNvbm5lY3RpbmcgdG8gTW9tZW50byBzZXJ2ZXJzXG4gIENPTk5FQ1RJT05fRVJST1IgPSAnQ09OTkVDVElPTl9FUlJPUicsXG4gIC8vIFJlcXVlc3QgcmF0ZSwgYmFuZHdpZHRoLCBvciBvYmplY3Qgc2l6ZSBleGNlZWRlZCB0aGUgbGltaXRzIGZvciB0aGUgYWNjb3VudFxuICBMSU1JVF9FWENFRURFRF9FUlJPUiA9ICdMSU1JVF9FWENFRURFRF9FUlJPUicsXG4gIC8vIFJlcXVlc3Qgd2FzIGludmFsaWRcbiAgQkFEX1JFUVVFU1RfRVJST1IgPSAnQkFEX1JFUVVFU1RfRVJST1InLFxuICAvLyBDbGllbnQncyBjb25maWd1cmVkIHRpbWVvdXQgd2FzIGV4Y2VlZGVkXG4gIFRJTUVPVVRfRVJST1IgPSAnVElNRU9VVF9FUlJPUicsXG4gIC8vIFNlcnZlciB3YXMgdW5hYmxlIHRvIGhhbmRsZSB0aGUgcmVxdWVzdFxuICBTRVJWRVJfVU5BVkFJTEFCTEUgPSAnU0VSVkVSX1VOQVZBSUxBQkxFJyxcbiAgLy8gQSBjbGllbnQgcmVzb3VyY2UgKG1vc3QgbGlrZWx5IG1lbW9yeSkgd2FzIGV4aGF1c3RlZFxuICBDTElFTlRfUkVTT1VSQ0VfRVhIQVVTVEVEID0gJ0NMSUVOVF9SRVNPVVJDRV9FWEhBVVNURUQnLFxuICAvLyBTeXN0ZW0gaXMgbm90IGluIGEgc3RhdGUgcmVxdWlyZWQgZm9yIHRoZSBvcGVyYXRpb24ncyBleGVjdXRpb25cbiAgRkFJTEVEX1BSRUNPTkRJVElPTl9FUlJPUiA9ICdGQUlMRURfUFJFQ09ORElUSU9OX0VSUk9SJyxcbiAgLy8gVW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWRcbiAgVU5LTk9XTl9FUlJPUiA9ICdVTktOT1dOX0VSUk9SJyxcbn1cblxuZXhwb3J0IGNsYXNzIE1vbWVudG9HcnBjRXJyb3JEZXRhaWxzIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvZGU6IG51bWJlcjtcbiAgcHVibGljIHJlYWRvbmx5IGRldGFpbHM6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG1ldGFkYXRhPzogb2JqZWN0O1xuICBjb25zdHJ1Y3Rvcihjb2RlOiBudW1iZXIsIGRldGFpbHM6IHN0cmluZywgbWV0YWRhdGE/OiBvYmplY3QpIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIHRoaXMuZGV0YWlscyA9IGRldGFpbHM7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb21lbnRvRXJyb3JUcmFuc3BvcnREZXRhaWxzIHtcbiAgcHVibGljIHJlYWRvbmx5IGdycGM6IE1vbWVudG9HcnBjRXJyb3JEZXRhaWxzO1xuICBjb25zdHJ1Y3RvcihncnBjOiBNb21lbnRvR3JwY0Vycm9yRGV0YWlscykge1xuICAgIHRoaXMuZ3JwYyA9IGdycGM7XG4gIH1cbn1cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIGVycm9ycyB0aHJvd24gYnkgdGhlIHNka1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2RrRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZXJyb3JDb2RlOiBNb21lbnRvRXJyb3JDb2RlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21lc3NhZ2VXcmFwcGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdHJhbnNwb3J0RGV0YWlsczogTW9tZW50b0Vycm9yVHJhbnNwb3J0RGV0YWlscztcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNvZGUgPSAwLFxuICAgIG1ldGFkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgc3RhY2s6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBjb25zdCBncnBjRGV0YWlscyA9IG5ldyBNb21lbnRvR3JwY0Vycm9yRGV0YWlscyhjb2RlLCBtZXNzYWdlLCBtZXRhZGF0YSk7XG4gICAgdGhpcy5fdHJhbnNwb3J0RGV0YWlscyA9IG5ldyBNb21lbnRvRXJyb3JUcmFuc3BvcnREZXRhaWxzKGdycGNEZXRhaWxzKTtcbiAgICB0aGlzLnN0YWNrID0gc3RhY2sgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHdyYXBwZWRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fbWVzc2FnZVdyYXBwZXJ9OiAke3RoaXMubWVzc2FnZX1gO1xuICB9XG5cbiAgcHVibGljIGVycm9yQ29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDb2RlO1xuICB9XG5cbiAgcHVibGljIHRyYW5zcG9ydERldGFpbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydERldGFpbHM7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBjYWNoZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY2FjaGUuIFRvIHJlc29sdmUgdGhpcyBlcnJvcixcbiAqIGVpdGhlciBkZWxldGUgdGhlIGV4aXN0aW5nIGNhY2hlIGFuZCBtYWtlIGEgbmV3IG9uZSwgb3IgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBjYWNoZSB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgdG9cbiAqIG9uZSB0aGF0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgQ2FjaGVBbHJlYWR5RXhpc3RzRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNBQ0hFX0FMUkVBRFlfRVhJU1RTX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIGNhY2hlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzLiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBlaXRoZXIgZGVsZXRlIHRoZSBleGlzdGluZyBjYWNoZSBhbmQgbWFrZSBhIG5ldyBvbmUsIG9yIHVzZSBhIGRpZmZlcmVudCBuYW1lJztcbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBzdG9yZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY2FjaGUuIFRvIHJlc29sdmUgdGhpcyBlcnJvcixcbiAqIGVpdGhlciBkZWxldGUgdGhlIGV4aXN0aW5nIHN0b3JlIGFuZCBtYWtlIGEgbmV3IG9uZSwgb3IgY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBzdG9yZSB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgdG9cbiAqIG9uZSB0aGF0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdFxuICovXG5leHBvcnQgY2xhc3MgU3RvcmVBbHJlYWR5RXhpc3RzRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLlNUT1JFX0FMUkVBRFlfRVhJU1RTX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIHN0b3JlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzLiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBlaXRoZXIgZGVsZXRlIHRoZSBleGlzdGluZyBzdG9yZSBhbmQgbWFrZSBhIG5ldyBvbmUsIG9yIHVzZSBhIGRpZmZlcmVudCBuYW1lJztcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGF1dGhlbnRpY2F0aW9uIHdpdGggQ2FjaGUgU2VydmljZSBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25FcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuQVVUSEVOVElDQVRJT05fRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0ludmFsaWQgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgdG8gY29ubmVjdCB0byBjYWNoZSBzZXJ2aWNlJztcbn1cblxuLyoqXG4gKiBFcnJvciByYWlzZWQgaW4gcmVzcG9uc2UgdG8gYW4gaW52YWxpZCByZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBCYWRSZXF1ZXN0RXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkJBRF9SRVFVRVNUX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdUaGUgcmVxdWVzdCB3YXMgaW52YWxpZDsgcGxlYXNlIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBtb21lbnRvaHEuY29tJztcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiB3aXRoIENhY2hlIFNlcnZpY2Ugd2FzIGNhbmNlbGxlZFxuICovXG5leHBvcnQgY2xhc3MgQ2FuY2VsbGVkRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNBTkNFTExFRF9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID1cbiAgICAnVGhlIHJlcXVlc3Qgd2FzIGNhbmNlbGxlZCBieSB0aGUgc2VydmVyOyBwbGVhc2UgY29udGFjdCB1cyBhdCBzdXBwb3J0QG1vbWVudG9ocS5jb20nO1xufVxuXG4vKipcbiAqIEVycm9yIHdoZW4gdGhlcmUncyBhIGZhaWx1cmUgdG8gY29ubmVjdCB0byBNb21lbnRvIHNlcnZlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNPTk5FQ1RJT05fRVJST1I7XG59XG5cbi8qKlxuICogRXJyb3IgcmFpc2VkIHdoZW4gc3lzdGVtIGluIG5vdCBpbiBhIHN0YXRlIHJlcXVpcmVkIGZvciB0aGUgb3BlcmF0aW9uJ3Mgc3VjY2Vzc1xuICovXG5leHBvcnQgY2xhc3MgRmFpbGVkUHJlY29uZGl0aW9uRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkZBSUxFRF9QUkVDT05ESVRJT05fRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgXCJTeXN0ZW0gaXMgbm90IGluIGEgc3RhdGUgcmVxdWlyZWQgZm9yIHRoZSBvcGVyYXRpb24ncyBleGVjdXRpb25cIjtcbn1cblxuLyoqXG4gKiBDYWNoZSBTZXJ2aWNlIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFNlcnZlckVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5JTlRFUk5BTF9TRVJWRVJfRVJST1I7XG4gIG92ZXJyaWRlIF9tZXNzYWdlV3JhcHBlciA9XG4gICAgJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3Q7IHBsZWFzZSBjb250YWN0IHVzIGF0IHN1cHBvcnRAbW9tZW50b2hxLmNvbSc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBlcnJvcnMgdGhyb3duIHdoZW4gaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlIE1vbWVudG8gQ2FjaGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5JTlZBTElEX0FSR1VNRU5UX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPSAnSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gTW9tZW50byBjbGllbnQnO1xufVxuXG5lbnVtIExpbWl0RXhjZWVkZWRNZXNzYWdlV3JhcHBlciB7XG4gIFRPUElDX1NVQlNDUklQVElPTlNfTElNSVRfRVhDRUVERUQgPSAnVG9waWMgc3Vic2NyaXB0aW9ucyBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgT1BFUkFUSU9OU19SQVRFX0xJTUlUX0VYQ0VFREVEID0gJ1JlcXVlc3QgcmF0ZSBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgVEhST1VHSFBVVF9SQVRFX0xJTUlUX0VYQ0VFREVEID0gJ0JhbmR3aWR0aCBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgUkVRVUVTVF9TSVpFX0xJTUlUX0VYQ0VFREVEID0gJ1JlcXVlc3Qgc2l6ZSBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgSVRFTV9TSVpFX0xJTUlUX0VYQ0VFREVEID0gJ0l0ZW0gc2l6ZSBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgRUxFTUVOVF9TSVpFX0xJTUlUX0VYQ0VFREVEID0gJ0VsZW1lbnQgc2l6ZSBsaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50JyxcbiAgVU5LTk9XTl9MSU1JVF9FWENFRURFRCA9ICdMaW1pdCBleGNlZWRlZCBmb3IgdGhpcyBhY2NvdW50Jyxcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGNhbGxzIGFyZSB0aHJvdHRsZWQgZHVlIHRvIHJlcXVlc3QgbGltaXQgcmF0ZVxuICovXG5leHBvcnQgY2xhc3MgTGltaXRFeGNlZWRlZEVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5MSU1JVF9FWENFRURFRF9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID0gdGhpcy5kZXRlcm1pbmVNZXNzYWdlV3JhcHBlcigpO1xuICBwcml2YXRlIGVyckNhdXNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGNvZGUgPSAwLFxuICAgIG1ldGFkYXRhOiBvYmplY3QgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgc3RhY2s6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBlcnJDYXVzZT86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjb2RlLCBtZXRhZGF0YSwgc3RhY2spO1xuICAgIHRoaXMuZXJyQ2F1c2UgPSBlcnJDYXVzZTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lTWVzc2FnZVdyYXBwZXIoKSB7XG4gICAgLy8gSWYgcHJvdmlkZWQsIHdlIHVzZSB0aGUgYGVycmAgbWV0YWRhdGEgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBtb3N0XG4gICAgLy8gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB0byByZXR1cm4uXG4gICAgaWYgKHRoaXMuZXJyQ2F1c2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoICh0aGlzLmVyckNhdXNlKSB7XG4gICAgICAgIGNhc2UgJ3RvcGljX3N1YnNjcmlwdGlvbnNfbGltaXRfZXhjZWVkZWQnOlxuICAgICAgICAgIHJldHVybiBMaW1pdEV4Y2VlZGVkTWVzc2FnZVdyYXBwZXIuVE9QSUNfU1VCU0NSSVBUSU9OU19MSU1JVF9FWENFRURFRDtcbiAgICAgICAgY2FzZSAnb3BlcmF0aW9uc19yYXRlX2xpbWl0X2V4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLk9QRVJBVElPTlNfUkFURV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgY2FzZSAndGhyb3VnaHB1dF9yYXRlX2xpbWl0X2V4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLlRIUk9VR0hQVVRfUkFURV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgY2FzZSAncmVxdWVzdF9zaXplX2xpbWl0X2V4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLlJFUVVFU1RfU0laRV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgY2FzZSAnaXRlbV9zaXplX2xpbWl0X2V4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLklURU1fU0laRV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgY2FzZSAnZWxlbWVudF9zaXplX2xpbWl0X2V4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLkVMRU1FTlRfU0laRV9MSU1JVF9FWENFRURFRDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLlVOS05PV05fTElNSVRfRVhDRUVERUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYGVycmAgbWV0YWRhdGEgaXMgdW5hdmFpbGFibGUsIHRyeSB0byB1c2UgdGhlIGVycm9yIGRldGFpbHMgZmllbGRcbiAgICAvLyB0byByZXR1cm4gdGhlIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuXG4gICAgaWYgKHRoaXMuX3RyYW5zcG9ydERldGFpbHMuZ3JwYy5kZXRhaWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLl90cmFuc3BvcnREZXRhaWxzLmdycGMuZGV0YWlscy50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGRldGFpbHMuaW5jbHVkZXMoJ3N1YnNjcmliZXJzJykpIHtcbiAgICAgICAgcmV0dXJuIExpbWl0RXhjZWVkZWRNZXNzYWdlV3JhcHBlci5UT1BJQ19TVUJTQ1JJUFRJT05TX0xJTUlUX0VYQ0VFREVEO1xuICAgICAgfSBlbHNlIGlmIChkZXRhaWxzLmluY2x1ZGVzKCdvcGVyYXRpb25zJykpIHtcbiAgICAgICAgcmV0dXJuIExpbWl0RXhjZWVkZWRNZXNzYWdlV3JhcHBlci5PUEVSQVRJT05TX1JBVEVfTElNSVRfRVhDRUVERUQ7XG4gICAgICB9IGVsc2UgaWYgKGRldGFpbHMuaW5jbHVkZXMoJ3Rocm91Z2hwdXQnKSkge1xuICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLlRIUk9VR0hQVVRfUkFURV9MSU1JVF9FWENFRURFRDtcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlscy5pbmNsdWRlcygncmVxdWVzdCBsaW1pdCcpKSB7XG4gICAgICAgIHJldHVybiBMaW1pdEV4Y2VlZGVkTWVzc2FnZVdyYXBwZXIuUkVRVUVTVF9TSVpFX0xJTUlUX0VYQ0VFREVEO1xuICAgICAgfSBlbHNlIGlmIChkZXRhaWxzLmluY2x1ZGVzKCdpdGVtIHNpemUnKSkge1xuICAgICAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLklURU1fU0laRV9MSU1JVF9FWENFRURFRDtcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlscy5pbmNsdWRlcygnZWxlbWVudCBzaXplJykpIHtcbiAgICAgICAgcmV0dXJuIExpbWl0RXhjZWVkZWRNZXNzYWdlV3JhcHBlci5FTEVNRU5UX1NJWkVfTElNSVRfRVhDRUVERUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgYWxsIGVsc2UgZmFpbHMsIHJldHVybiBhIGdlbmVyaWMgXCJsaW1pdCBleGNlZWRlZFwiIG1lc3NhZ2VcbiAgICByZXR1cm4gTGltaXRFeGNlZWRlZE1lc3NhZ2VXcmFwcGVyLlVOS05PV05fTElNSVRfRVhDRUVERUQ7XG4gIH1cbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBnZXQgYSBjYWNoZSB0aGF0IGRvZXNuJ3QgZXhpc3QuIFRvIHJlc29sdmUsIG1ha2Ugc3VyZSB0aGF0IHRoZSBjYWNoZSB5b3UgYXJlIHRyeWluZ1xuICogdG8gZ2V0IGV4aXN0cy4gSWYgaXQgZG9lc24ndCBjcmVhdGUgaXQgZmlyc3QgYW5kIHRoZW4gdHJ5IGFnYWluXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLkNBQ0hFX05PVF9GT1VORF9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID1cbiAgICAnQSBjYWNoZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBkb2VzIG5vdCBleGlzdC4gIFRvIHJlc29sdmUgdGhpcyBlcnJvciwgbWFrZSBzdXJlIHlvdSBoYXZlIGNyZWF0ZWQgdGhlIGNhY2hlIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHVzZSBpdCc7XG59XG5cbi8qKlxuICogRXJyb3IgdGhhdCBvY2N1cnMgd2hlbiB0cnlpbmcgdG8gZ2V0IGEgc3RvcmUgdGhhdCBkb2Vzbid0IGV4aXN0LiBUbyByZXNvbHZlLCBtYWtlIHN1cmUgdGhhdCB0aGUgc3RvcmUgeW91IGFyZSB0cnlpbmdcbiAqIHRvIGdldCBleGlzdHMuIElmIGl0IGRvZXNuJ3QgY3JlYXRlIGl0IGZpcnN0IGFuZCB0aGVuIHRyeSBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0b3JlTm90Rm91bmRFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuU1RPUkVfTk9UX0ZPVU5EX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdBIHN0b3JlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGRvZXMgbm90IGV4aXN0LiAgVG8gcmVzb2x2ZSB0aGlzIGVycm9yLCBtYWtlIHN1cmUgeW91IGhhdmUgY3JlYXRlZCB0aGUgc3RvcmUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0Jztcbn1cblxuLyoqXG4gKiBFcnJvciB0aGF0IG9jY3VycyB3aGVuIHRyeWluZyB0byBnZXQgYW4gaXRlbSBmcm9tIHN0b3JlIHRoYXQgZG9lc24ndCBleGlzdC4gVG8gcmVzb2x2ZSwgbWFrZSBzdXJlIHRoYXQgdGhlIGl0ZW0geW91IGFyZSB0cnlpbmdcbiAqIHRvIGdldCBleGlzdHMuIElmIGl0IGRvZXNuJ3QgY3JlYXRlIGl0IGZpcnN0IGFuZCB0aGVuIHRyeSBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0b3JlSXRlbU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLlNUT1JFX0lURU1fTk9UX0ZPVU5EX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPSAnQW4gaXRlbSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0Jztcbn1cblxuLyoqXG4gKiBJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24gb24gQ2FjaGUgU2VydmljZVxuICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkVycm9yIGV4dGVuZHMgU2RrRXJyb3Ige1xuICBvdmVycmlkZSBfZXJyb3JDb2RlID0gTW9tZW50b0Vycm9yQ29kZS5QRVJNSVNTSU9OX0VSUk9SO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24gb24gYSBjYWNoZSc7XG59XG5cbi8qKlxuICogU2VydmVyIHdhcyB1bmFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LlxuICovXG5leHBvcnQgY2xhc3MgU2VydmVyVW5hdmFpbGFibGVFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuU0VSVkVSX1VOQVZBSUxBQkxFO1xuICBvdmVycmlkZSBfbWVzc2FnZVdyYXBwZXIgPVxuICAgICdUaGUgc2VydmVyIHdhcyB1bmFibGUgdG8gaGFuZGxlIHRoZSByZXF1ZXN0OyBjb25zaWRlciByZXRyeWluZy4gIElmIHRoZSBlcnJvciBwZXJzaXN0cywgcGxlYXNlIGNvbnRhY3QgdXMgYXQgc3VwcG9ydEBtb21lbnRvaHEuY29tJztcbn1cblxuLyoqXG4gKiBFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlIGluIHRpbWVcbiAqL1xuZXhwb3J0IGNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuVElNRU9VVF9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID1cbiAgICBcIlRoZSBjbGllbnQncyBjb25maWd1cmVkIHRpbWVvdXQgd2FzIGV4Y2VlZGVkOyB5b3UgbWF5IG5lZWQgdG8gdXNlIGEgQ29uZmlndXJhdGlvbiB3aXRoIG1vcmUgbGVuaWVudCB0aW1lb3V0c1wiO1xufVxuXG4vKipcbiAqIEVycm9yIHJhaXNlZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGNhdXNlIGluIHVua25vd25cbiAqL1xuZXhwb3J0IGNsYXNzIFVua25vd25FcnJvciBleHRlbmRzIFNka0Vycm9yIHtcbiAgb3ZlcnJpZGUgX2Vycm9yQ29kZSA9IE1vbWVudG9FcnJvckNvZGUuVU5LTk9XTl9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID0gJ1Vua25vd24gZXJyb3IgaGFzIG9jY3VycmVkJztcbn1cblxuLyoqXG4gKiBFcnJvciByYWlzZWQgd2hlbiB0aGUgc2VydmljZSByZXR1cm5zIGFuIHVua25vd24gcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXJ2aWNlRXJyb3IgZXh0ZW5kcyBTZGtFcnJvciB7XG4gIG92ZXJyaWRlIF9lcnJvckNvZGUgPSBNb21lbnRvRXJyb3JDb2RlLlVOS05PV05fU0VSVklDRV9FUlJPUjtcbiAgb3ZlcnJpZGUgX21lc3NhZ2VXcmFwcGVyID1cbiAgICAnU2VydmljZSByZXR1cm5lZCBhbiB1bmtub3duIHJlc3BvbnNlOyBwbGVhc2UgY29udGFjdCB1cyBhdCBzdXBwb3J0QG1vbWVudG9ocS5jb20nO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gomomento/sdk-core",
3
- "version": "1.99.0",
3
+ "version": "1.99.1",
4
4
  "description": "Common code for Momento JS SDKs",
5
5
  "main": "dist/src/index.js",
6
6
  "files": [