@horietakehiro/aws-cdk-utul 0.35.6 → 0.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/assertions.js CHANGED
@@ -199,7 +199,7 @@ exports.TypedTemplate = TypedTemplate;
199
199
  /**
200
200
  * provides some syntax sugars for `Match` class at `aws-cdk-lib/assertions`
201
201
  */
202
- class ExtraMatch extends assertions_1.Match {
202
+ class ExtraMatch {
203
203
  /**
204
204
  * same function as `Match.objectEquals({ Ref: logicalId })`
205
205
  * @param logicalId
@@ -225,24 +225,6 @@ class ExtraMatch extends assertions_1.Match {
225
225
  static getAttArn(logicalId) {
226
226
  return this.getAtt(logicalId, "Arn");
227
227
  }
228
- static arrayWith(pattern) {
229
- return assertions_1.Match.arrayWith(pattern);
230
- }
231
- static arrayEquals(pattern) {
232
- return assertions_1.Match.arrayEquals(pattern);
233
- }
234
- static objectLike(pattern) {
235
- return assertions_1.Match.objectLike(pattern);
236
- }
237
- static objectEquals(pattern) {
238
- return assertions_1.Match.objectEquals(pattern);
239
- }
240
- static not(pattern) {
241
- return assertions_1.Match.not(pattern);
242
- }
243
- static exact(pattern) {
244
- return assertions_1.Match.exact(pattern);
245
- }
246
228
  /**
247
229
  * same function as below:
248
230
  *
@@ -259,55 +241,235 @@ class ExtraMatch extends assertions_1.Match {
259
241
  "Fn::Join": [props.delimiter ?? "", assertions_1.Match.arrayWith(props.arrayWith)],
260
242
  });
261
243
  }
262
- // /**
263
- // * returns Match instance that matches regional resource ARN like : `arn:aws:logs:ap-northeast-1:123456789012:log-group:/log-group-name:log-stream:log-stream-name`
264
- // * @param elems
265
- // * @returns
266
- // */
267
- // static regionalArnLike(elems: AlsoMatcher<ArnElements>): Matcher {
268
- // return Match.objectEquals({
269
- // "Fn::Join": Match.arrayWith([
270
- // "",
271
- // Match.arrayWith([
272
- // "arn:",
273
- // elems.partition ?? { Ref: "AWS::Partition" },
274
- // Match.stringLikeRegexp(`:${elems.service ?? "*"}:`),
275
- // elems.region ?? { Ref: "AWS::Region" },
276
- // elems.account ?? { Ref: "AWS::AccountId" },
277
- // ...(elems.rest instanceof Matcher
278
- // ? [elems.rest]
279
- // : (elems.rest ?? [])),
280
- // ]),
281
- // ]),
282
- // });
283
- // }
284
- // /**
285
- // * returns Match instance that matches global resource ARN like : `arn:aws:iam::123456789012:role/role-name`
286
- // * @param elems
287
- // * @returns
288
- // */
289
- // static globalArn(
290
- // elems: Omit<ArnElements, "region">,
291
- // delimiter: string = ""
292
- // ): Matcher {
293
- // return Match.objectEquals({
294
- // "Fn::Join": Match.arrayEquals([
295
- // delimiter,
296
- // Match.arrayWith([
297
- // "arn:",
298
- // elems.partition ?? { Ref: "AWS::Partition" },
299
- // Match.stringLikeRegexp(`:${elems.service ?? "*"}::`),
300
- // elems.account ?? { Ref: "AWS::AccountId" },
301
- // ...(elems.rest instanceof Matcher
302
- // ? [elems.rest]
303
- // : (elems.rest ?? [])),
304
- // ]),
305
- // ]),
306
- // });
307
- // }
244
+ /**
245
+ You can define Matcher for IAM Policy Document with type hints.
246
+ ```js
247
+ template.hasResource(
248
+ AWS_IAM_ROLE({
249
+ Properties: {
250
+ AssumeRolePolicyDocument: ExtraMatch.iamPolicyLike({
251
+ Statement: [
252
+ {
253
+ Principal: { Service: "ec2.amazonaws.com" },
254
+ },
255
+ ],
256
+ }),
257
+ },
258
+ })
259
+ );
260
+ ```
261
+ * @param doc
262
+ * @returns
263
+ */
308
264
  static iamPolicyLike(doc) {
309
265
  return assertions_1.Match.objectLike(doc);
310
266
  }
267
+ /**
268
+ Same method as `Match.arrayWith` but provides type hints and validate type match
269
+ ```js
270
+ // this is a right code
271
+ template.hasResource(
272
+ AWS_EC2_EIP({
273
+ Properties: {
274
+ Tags: ExtraMatch.arrayWith<Tag[]>([
275
+ {
276
+ Key: "key2",
277
+ Value: "val2",
278
+ },
279
+ ]),
280
+ },
281
+ })
282
+ );
283
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
284
+ template.hasResource(
285
+ AWS_EC2_EIP({
286
+ Properties: {
287
+ Tags: ExtraMatch.arrayWith<string[]>([
288
+ "hoge", "fuga"
289
+ ]),
290
+ },
291
+ })
292
+ );
293
+ ```
294
+ * @param pattern
295
+ * @returns
296
+ */
297
+ static arrayWith(pattern) {
298
+ return assertions_1.Match.arrayWith(pattern);
299
+ }
300
+ /**
301
+ * Same method as `Match.arrayEquals` but provides type hints and validate type match
302
+ ```js
303
+ // this is a right code
304
+ template.hasResource(
305
+ AWS_EC2_EIP({
306
+ Properties: {
307
+ Tags: ExtraMatch.arrayEquals<Tag[]>([
308
+ {
309
+ Key: "key1",
310
+ Value: "val1",
311
+ },
312
+ {
313
+ Key: "key2",
314
+ Value: "val2",
315
+ },
316
+ ]),
317
+ },
318
+ })
319
+ );
320
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
321
+ template.hasResource(
322
+ AWS_EC2_EIP({
323
+ Properties: {
324
+ Tags: ExtraMatch.arrayEquals<Tag[]>([
325
+ {
326
+ Key: "key1",
327
+ Value: "val1",
328
+ },
329
+ {
330
+ Key: 100,
331
+ Value: 200,
332
+ },
333
+ ]),
334
+ },
335
+ })
336
+ );
337
+ ```
338
+ * @param pattern
339
+ * @returns
340
+ */
341
+ static arrayEquals(pattern) {
342
+ return assertions_1.Match.arrayEquals(pattern);
343
+ }
344
+ /**
345
+ * Same method as `Match.objectLike` but provides type hints and validate type match
346
+ ```js
347
+ // this is a right code
348
+ template.hasResource(
349
+ AWS_EC2_INSTANCE({
350
+ Properties: {
351
+ BlockDeviceMappings: [
352
+ {
353
+ DeviceName: "test",
354
+ Ebs: ExtraMatch.objectLike<Ebs>({
355
+ VolumeSize: 10,
356
+ }),
357
+ },
358
+ ],
359
+ },
360
+ })
361
+ );
362
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
363
+ template.hasResource(
364
+ AWS_EC2_INSTANCE({
365
+ Properties: {
366
+ BlockDeviceMappings: [
367
+ {
368
+ DeviceName: "test",
369
+ Ebs: ExtraMatch.objectLike<Ebs>({
370
+ VolumeSize: "10",
371
+ }),
372
+ },
373
+ ],
374
+ },
375
+ })
376
+ );
377
+ * @param pattern
378
+ * @returns
379
+ */
380
+ static objectLike(pattern) {
381
+ return assertions_1.Match.objectLike(pattern);
382
+ }
383
+ /**
384
+ * Same method as `Match.objectEquals` but provides type hints and validate type match
385
+ ```js
386
+ // this is a right code
387
+ template.hasResource(
388
+ AWS_EC2_EIP({
389
+ Properties: {
390
+ // You can nest TypedMatcher(use TypedMatcher inside TypedMatcher)
391
+ Tags: ExtraMatch.arrayWith<Tag[]>([
392
+ ExtraMatch.objectEquals<Tag>({
393
+ Key: "key1",
394
+ Value: "val1",
395
+ }),
396
+ ]),
397
+ },
398
+ })
399
+ );
400
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
401
+ template.hasResource(
402
+ AWS_EC2_EIP({
403
+ Properties: {
404
+ Tags: ExtraMatch.arrayWith<Tag[]>([
405
+ ExtraMatch.objectEquals<Tag>({
406
+ Key: "key1",
407
+ Value: 100,
408
+ }),
409
+ ]),
410
+ },
411
+ })
412
+ );
413
+ * @param pattern
414
+ * @returns
415
+ */
416
+ static objectEquals(pattern) {
417
+ return assertions_1.Match.objectEquals(pattern);
418
+ }
419
+ /**
420
+ * Same method as `Match.not` but provides type hints and validate type match
421
+ ```js
422
+ // this is a right code
423
+ template.hasResource(
424
+ AWS_EC2_INSTANCE({
425
+ Properties: {
426
+ ImageId: ExtraMatch.not("ami-12345"),
427
+ },
428
+ })
429
+ );
430
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
431
+ template.hasResource(
432
+ AWS_EC2_INSTANCE({
433
+ Properties: {
434
+ ImageId: ExtraMatch.not(100),
435
+ },
436
+ })
437
+ );
438
+ ```
439
+ * Same method as `Match.not` but provides type hints and validate type match
440
+ * @param pattern
441
+ * @returns
442
+ */
443
+ // TODO: why this expression `T extends never ? never : T` is required but this is required
444
+ static not(pattern) {
445
+ return assertions_1.Match.not(pattern);
446
+ }
447
+ /**
448
+ * Same method as `Match.exact` but provides type hints and validate type match
449
+ ```js
450
+ // this is a right code
451
+ template.hasResource(
452
+ AWS_EC2_INSTANCE({
453
+ Properties: {
454
+ InstanceType: ExtraMatch.exact("t2.micro"),
455
+ },
456
+ })
457
+ );
458
+ // this is a wrong code(type mismatch will be detected and ts-error will be raised)
459
+ template.hasResource(
460
+ AWS_EC2_INSTANCE({
461
+ Properties: {
462
+ InstanceType: ExtraMatch.exact(false),
463
+ },
464
+ })
465
+ );
466
+ ```
467
+ * @param pattern
468
+ * @returns
469
+ */
470
+ static exact(pattern) {
471
+ return assertions_1.Match.exact(pattern);
472
+ }
311
473
  }
312
474
  exports.ExtraMatch = ExtraMatch;
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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K0dBQStHO0lBQy9HLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsTUFBTTtJQUNOLG9CQUFvQjtJQUNwQix3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLGVBQWU7SUFDZixnQ0FBZ0M7SUFDaEMsc0NBQXNDO0lBQ3RDLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLHdEQUF3RDtJQUN4RCxnRUFBZ0U7SUFDaEUsc0RBQXNEO0lBQ3RELDRDQUE0QztJQUM1QywyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLFlBQVk7SUFDWixVQUFVO0lBQ1YsUUFBUTtJQUNSLElBQUk7SUFFSixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQW1DO1FBQ3RELE9BQU8sa0JBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBeEhELGdDQXdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlLCBNYXRjaCwgTWF0Y2hlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQge1xuICBDb25kaXRpb24sXG4gIElucHV0UmVzb3VyY2UsXG4gIE1hcHBpbmcsXG4gIE91dHB1dFJlc291cmNlLFxuICBJbnB1dFBhcmFtdGVyLFxuICBPdXRwdXRQYXJhbWV0ZXIsXG4gIFJldHVyblZhbHVlLFxuICBJbnB1dE91dHB1dCxcbiAgT3V0cHV0T3V0cHV0LFxuICBJbnB1dFJlc291cmNlV2l0aG91dFR5cGUsXG4gIElBTVBvbGljeURvY3VtZW50LFxuICBBbHNvTWF0Y2hlcixcbiAgVHlwZWRNYXRjaGVyLFxufSBmcm9tIFwiLi90eXBlZC1yZXNvdXJjZVwiO1xuXG4vKipcbiAqIGFsbW9zdCBzYW1lIGNsYXNzIGFzIGBUZW1wbGF0ZWAgY2xhc3MgYXQgXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCIsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkVGVtcGxhdGUge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgY29uc3RydWN0b3IodGVtcGxhdGU6IFRlbXBsYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4odHlwZTogc3RyaW5nLCBkZWY6IGFueSwgYXJyYXk6IFRbXSk6IFQge1xuICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKGAke3R5cGV9IG5vdCBmb3VuZCB3aXRoIGRlZmluaXRpb24gOiAke0pTT04uc3RyaW5naWZ5KGRlZil9YCk7XG4gICAgfVxuICAgIGlmIChhcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYG11bHRpcGxlICR7dHlwZX0gZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RhY2tgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdGFjayhcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBUZW1wbGF0ZS5mcm9tU3RhY2s+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RhY2soLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tSlNPTmAgYnV0IHJldHVybnMgYFR5cGVkVGVtcGxhdGVgXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbUpTT04+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tSlNPTiguLi5hcmdzKSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21TdHJpbmdgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0cmluZz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdHJpbmcoLi4uYXJncykpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlQ291bnRJc2BcbiAgICpcbiAgICogdXNlIHRoaXMgbWV0aG9kIGxpa2UgYmVsb3c6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhBV1NfRUMyX1NVQk5FVCwgMylcbiAgICogYGBgXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VDb3VudElzPFQ+KFxuICAgIHR5cGU6IChyZXNvdXJjZT86IElucHV0UmVzb3VyY2VXaXRob3V0VHlwZTxUPikgPT4gSW5wdXRSZXNvdXJjZTxUPixcbiAgICBjb3VudDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VDb3VudElzKHR5cGUoKS5UeXBlLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJczxUPihyOiBJbnB1dFJlc291cmNlPFQ+LCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZWBcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1Jlc291cmNlKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUmVzb3VyY2VzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiBSZXR1cm5WYWx1ZTxPdXRwdXRSZXNvdXJjZTxUPj5bXSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKHIuVHlwZSwgcikgYXMge1xuICAgICAgW2lkIGluIHN0cmluZ106IE91dHB1dFJlc291cmNlPFQ+O1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykubWFwKChbaWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHJlc291cmNlIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXMoci5UeXBlLCByKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuYWxsUmVzb3VyY2VQcm9wZXJ0aWVzYFxuICAgKiBAcGFyYW0gclxuICAgKi9cbiAgYWxsUmVzb3VyY2VzUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXNQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUGFyYW1ldGVyYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRQYXJhbXRlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUGFyYW1ldGVyc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRQYXJhbWV0ZXJzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRQYXJhbXRlclxuICApOiBSZXR1cm5WYWx1ZTxPdXRwdXRQYXJhbWV0ZXI+W10ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLnRlbXBsYXRlLmZpbmRQYXJhbWV0ZXJzKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtpZCwgcGFyYW1ldGVyXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHBhcmFtZXRlciBhcyBPdXRwdXRQYXJhbWV0ZXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNPdXRwdXRgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNPdXRwdXQobG9naWNhbElkOiBzdHJpbmcsIHByb3BzOiBJbnB1dE91dHB1dCk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzT3V0cHV0KGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kT3V0cHV0c2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRPdXRwdXRzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRPdXRwdXRcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0T3V0cHV0PltdIHtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy50ZW1wbGF0ZS5maW5kT3V0cHV0cyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob3V0cHV0cykubWFwKChbaWQsIG91dHB1dF0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBvdXRwdXQgYXMgT3V0cHV0T3V0cHV0IH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc01hcHBpbmdgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNNYXBwaW5nKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNNYXBwaW5nKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kTWFwcGluZ3NgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTWFwcGluZ3MobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8TWFwcGluZz5bXSB7XG4gICAgY29uc3QgbWFwcGluZ3MgPSB0aGlzLnRlbXBsYXRlLmZpbmRNYXBwaW5ncyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLm1hcCgoW2lkLCBtYXBwaW5nXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IG1hcHBpbmcgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzQ29uZGl0aW9uYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNDb25kaXRpb24obG9naWNhbElkLCBwcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRDb25kaXRpb25zYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZENvbmRpdGlvbnMobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8Q29uZGl0aW9uPltdIHtcbiAgICBjb25zdCBjb25kaXRpb25zID0gdGhpcy50ZW1wbGF0ZS5maW5kQ29uZGl0aW9ucyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29uZGl0aW9ucykubWFwKChbaWQsIGNvbmRpdGlvbl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBjb25kaXRpb24gfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBzaW5nbGUgcmVzb3VyY2UgZm9yIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiAtIGlmIG5vIHJlc291cmNlIG1hdGNoZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIGRlZmluaXRpb24sIHJhaXNlIEVycm9yLlxuICAgKiAtIGlmIG11bHRpcGxlIHJlc291cmNlcyBtYXRjaGVkLCByYWlzZSBFcnJvclxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0UmVzb3VyY2U8VD4oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PlxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmZpbmRSZXNvdXJjZXM8VD4+IGV4dGVuZHMgKGluZmVyIFUpW10gPyBVIDogbmV2ZXIge1xuICAgIHJldHVybiB0aGlzLmdldChcInJlc291cmNlXCIsIGFyZ3NbMF0sIHRoaXMuZmluZFJlc291cmNlcyhhcmdzWzBdKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2luUHJvcHMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKi9cbiAgZGVsaW1pdGVyPzogc3RyaW5nO1xuICBhcnJheVdpdGg6IGFueVtdO1xufVxuLyoqXG4gKiBwcm92aWRlcyBzb21lIHN5bnRheCBzdWdhcnMgZm9yIGBNYXRjaGAgY2xhc3MgYXQgYGF3cy1jZGstbGliL2Fzc2VydGlvbnNgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRyYU1hdGNoIGV4dGVuZHMgTWF0Y2gge1xuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSlgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyByZWYobG9naWNhbElkOiBzdHJpbmcpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIGF0dHJpYnV0ZV19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gYXR0cmlidXRlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXSB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgXCJBcm5cIl19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGdldEF0dEFybihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiB0aGlzLmdldEF0dChsb2dpY2FsSWQsIFwiQXJuXCIpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBhcnJheUVxdWFsczxUIGV4dGVuZHMgYW55W10+KFxuICAgIHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+XG4gICk6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmFycmF5RXF1YWxzKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBvYmplY3RMaWtlPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RMaWtlKHBhdHRlcm4pIGFzIFR5cGVkTWF0Y2hlcjxUPjtcbiAgfVxuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIG5vdDxUPihwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VD4pOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5leGFjdChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGJlbG93OlxuICAgKiBcbiAgICogYGBganNcbiAgICogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAqICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICAgKiBgYGBcbiAgICogQHBhcmFtIHByb3BzIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN0YXRpYyBqb2luTGlrZShwcm9wczogSm9pblByb3BzKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgXCJGbjo6Sm9pblwiOiBbcHJvcHMuZGVsaW1pdGVyID8/IFwiXCIsIE1hdGNoLmFycmF5V2l0aChwcm9wcy5hcnJheVdpdGgpXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyByZWdpb25hbCByZXNvdXJjZSBBUk4gbGlrZSA6IGBhcm46YXdzOmxvZ3M6YXAtbm9ydGhlYXN0LTE6MTIzNDU2Nzg5MDEyOmxvZy1ncm91cDovbG9nLWdyb3VwLW5hbWU6bG9nLXN0cmVhbTpsb2ctc3RyZWFtLW5hbWVgXG4gIC8vICAqIEBwYXJhbSBlbGVtc1xuICAvLyAgKiBAcmV0dXJuc1xuICAvLyAgKi9cbiAgLy8gc3RhdGljIHJlZ2lvbmFsQXJuTGlrZShlbGVtczogQWxzb01hdGNoZXI8QXJuRWxlbWVudHM+KTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgIFwiXCIsXG4gIC8vICAgICAgIE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgICAgXCJhcm46XCIsXG4gIC8vICAgICAgICAgZWxlbXMucGFydGl0aW9uID8/IHsgUmVmOiBcIkFXUzo6UGFydGl0aW9uXCIgfSxcbiAgLy8gICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGA6JHtlbGVtcy5zZXJ2aWNlID8/IFwiKlwifTpgKSxcbiAgLy8gICAgICAgICBlbGVtcy5yZWdpb24gPz8geyBSZWY6IFwiQVdTOjpSZWdpb25cIiB9LFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyBnbG9iYWwgcmVzb3VyY2UgQVJOIGxpa2UgOiBgYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjpyb2xlL3JvbGUtbmFtZWBcbiAgLy8gICogQHBhcmFtIGVsZW1zXG4gIC8vICAqIEByZXR1cm5zXG4gIC8vICAqL1xuICAvLyBzdGF0aWMgZ2xvYmFsQXJuKFxuICAvLyAgIGVsZW1zOiBPbWl0PEFybkVsZW1lbnRzLCBcInJlZ2lvblwiPixcbiAgLy8gICBkZWxpbWl0ZXI6IHN0cmluZyA9IFwiXCJcbiAgLy8gKTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5RXF1YWxzKFtcbiAgLy8gICAgICAgZGVsaW1pdGVyLFxuICAvLyAgICAgICBNYXRjaC5hcnJheVdpdGgoW1xuICAvLyAgICAgICAgIFwiYXJuOlwiLFxuICAvLyAgICAgICAgIGVsZW1zLnBhcnRpdGlvbiA/PyB7IFJlZjogXCJBV1M6OlBhcnRpdGlvblwiIH0sXG4gIC8vICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgOiR7ZWxlbXMuc2VydmljZSA/PyBcIipcIn06OmApLFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHN0YXRpYyBpYW1Qb2xpY3lMaWtlKGRvYzogQWxzb01hdGNoZXI8SUFNUG9saWN5RG9jdW1lbnQ+KTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2UoZG9jKTtcbiAgfVxufVxuIl19
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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TUFBTSxDQUFDLEtBQUssQ0FBSSxPQUFpRDtRQUMvRCxPQUFPLGtCQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQXRSRCxnQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZSwgTWF0Y2gsIE1hdGNoZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBJbnB1dFJlc291cmNlLFxuICBNYXBwaW5nLFxuICBPdXRwdXRSZXNvdXJjZSxcbiAgSW5wdXRQYXJhbXRlcixcbiAgT3V0cHV0UGFyYW1ldGVyLFxuICBSZXR1cm5WYWx1ZSxcbiAgSW5wdXRPdXRwdXQsXG4gIE91dHB1dE91dHB1dCxcbiAgSW5wdXRSZXNvdXJjZVdpdGhvdXRUeXBlLFxuICBJQU1Qb2xpY3lEb2N1bWVudCxcbiAgQWxzb01hdGNoZXIsXG4gIFR5cGVkTWF0Y2hlcixcbn0gZnJvbSBcIi4vdHlwZWQtcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBhbG1vc3Qgc2FtZSBjbGFzcyBhcyBgVGVtcGxhdGVgIGNsYXNzIGF0IFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiLCBidXQgeW91IGNhbiB1c2UgdGhpcyB3aXRoIHByb3BlciB0eXBlIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZFRlbXBsYXRlIHtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHR5cGU6IHN0cmluZywgZGVmOiBhbnksIGFycmF5OiBUW10pOiBUIHtcbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHt0eXBlfSBub3QgZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWApO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBtdWx0aXBsZSAke3R5cGV9IGZvdW5kIHdpdGggZGVmaW5pdGlvbiA6ICR7SlNPTi5zdHJpbmdpZnkoZGVmKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlbMF07XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbVN0YWNrYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RhY2soXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0YWNrPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbVN0YWNrKC4uLmFyZ3MpKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbUpTT05gIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21KU09OPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbUpTT04oLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RyaW5nYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21TdHJpbmc+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RyaW5nKC4uLmFyZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXNgXG4gICAqXG4gICAqIHVzZSB0aGlzIG1ldGhvZCBsaWtlIGJlbG93OlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoQVdTX0VDMl9TVUJORVQsIDMpXG4gICAqIGBgYFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlQ291bnRJczxUPihcbiAgICB0eXBlOiAocmVzb3VyY2U/OiBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD4pID0+IElucHV0UmVzb3VyY2U8VD4sXG4gICAgY291bnQ6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLnJlc291cmNlQ291bnRJcyh0eXBlKCkuVHlwZSwgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlUHJvcGVydGllc0NvdW50SXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPiwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJcyhyLlR5cGUsIHIuUHJvcGVydGllcywgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZVByb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUmVzb3VyY2VgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZTxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZShyLlR5cGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUmVzb3VyY2VzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogUmV0dXJuVmFsdWU8T3V0cHV0UmVzb3VyY2U8VD4+W10ge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudGVtcGxhdGUuZmluZFJlc291cmNlcyhyLlR5cGUsIHIpIGFzIHtcbiAgICAgIFtpZCBpbiBzdHJpbmddOiBPdXRwdXRSZXNvdXJjZTxUPjtcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpLm1hcCgoW2lkLCByZXNvdXJjZV0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiByZXNvdXJjZSB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5hbGxSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBhbGxSZXNvdXJjZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlc1Byb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzUHJvcGVydGllcyhyLlR5cGUsIHIuUHJvcGVydGllcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1BhcmFtZXRlcmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc1BhcmFtZXRlcihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IElucHV0UGFyYW10ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1BhcmFtZXRlcihsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZFBhcmFtZXRlcnNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUGFyYW1ldGVycyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0UGFyYW10ZXJcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0UGFyYW1ldGVyPltdIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy50ZW1wbGF0ZS5maW5kUGFyYW1ldGVycyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykubWFwKChbaWQsIHBhcmFtZXRlcl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBwYXJhbWV0ZXIgYXMgT3V0cHV0UGFyYW1ldGVyIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzT3V0cHV0YFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzT3V0cHV0KGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRPdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc091dHB1dChsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE91dHB1dHNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kT3V0cHV0cyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0T3V0cHV0XG4gICk6IFJldHVyblZhbHVlPE91dHB1dE91dHB1dD5bXSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMudGVtcGxhdGUuZmluZE91dHB1dHMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2lkLCBvdXRwdXRdKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogb3V0cHV0IGFzIE91dHB1dE91dHB1dCB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNNYXBwaW5nYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzTWFwcGluZyhsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzTWFwcGluZyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE1hcHBpbmdzYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE1hcHBpbmdzKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPE1hcHBpbmc+W10ge1xuICAgIGNvbnN0IG1hcHBpbmdzID0gdGhpcy50ZW1wbGF0ZS5maW5kTWFwcGluZ3MobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzKS5tYXAoKFtpZCwgbWFwcGluZ10pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBtYXBwaW5nIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc0NvbmRpdGlvbmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc0NvbmRpdGlvbihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kQ29uZGl0aW9uc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRDb25kaXRpb25zKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPENvbmRpdGlvbj5bXSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMudGVtcGxhdGUuZmluZENvbmRpdGlvbnMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbnMpLm1hcCgoW2lkLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogY29uZGl0aW9uIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGEgc2luZ2xlIHJlc291cmNlIGZvciBzcGVjaWZpZWQgdHlwZSBhbmQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogLSBpZiBubyByZXNvdXJjZSBtYXRjaGVkIHdpdGggdGhlIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLCByYWlzZSBFcnJvci5cbiAgICogLSBpZiBtdWx0aXBsZSByZXNvdXJjZXMgbWF0Y2hlZCwgcmFpc2UgRXJyb3JcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFJlc291cmNlPFQ+KFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIHRoaXMuZmluZFJlc291cmNlczxUPj5cbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoXCJyZXNvdXJjZVwiLCBhcmdzWzBdLCB0aGlzLmZpbmRSZXNvdXJjZXMoYXJnc1swXSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblByb3BzIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIGRlbGltaXRlcj86IHN0cmluZztcbiAgYXJyYXlXaXRoOiBhbnlbXTtcbn1cbi8qKlxuICogcHJvdmlkZXMgc29tZSBzeW50YXggc3VnYXJzIGZvciBgTWF0Y2hgIGNsYXNzIGF0IGBhd3MtY2RrLWxpYi9hc3NlcnRpb25zYFxuICovXG5leHBvcnQgY2xhc3MgRXh0cmFNYXRjaCB7XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIHJlZihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBhdHRyaWJ1dGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBnZXRBdHQobG9naWNhbElkOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7IFwiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBhdHRyaWJ1dGVdIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoe1wiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBcIkFyblwiXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0QXJuKGxvZ2ljYWxJZDogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0KGxvZ2ljYWxJZCwgXCJBcm5cIik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYmVsb3c6XG4gICAqIFxuICAgKiBgYGBqc1xuICAgKiBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICogIFwiRm46OkpvaW5cIjogW3Byb3BzLmRlbGltaXRlciA/PyBcIlwiLCBNYXRjaC5hcnJheVdpdGgocHJvcHMuYXJyYXlXaXRoKV0sXG4gICAgfSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGpvaW5MaWtlKHByb3BzOiBKb2luUHJvcHMpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICBZb3UgY2FuIGRlZmluZSBNYXRjaGVyIGZvciBJQU0gUG9saWN5IERvY3VtZW50IHdpdGggdHlwZSBoaW50cy5cbiAgIGBgYGpzXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfSUFNX1JPTEUoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBFeHRyYU1hdGNoLmlhbVBvbGljeUxpa2Uoe1xuICAgICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBQcmluY2lwYWw6IHsgU2VydmljZTogXCJlYzIuYW1hem9uYXdzLmNvbVwiIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIEBwYXJhbSBkb2MgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGlhbVBvbGljeUxpa2UoZG9jOiBBbHNvTWF0Y2hlcjxJQU1Qb2xpY3lEb2N1bWVudD4pOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShkb2MpO1xuICB9XG4gIC8qKlxuICAgU2FtZSBtZXRob2QgYXMgYE1hdGNoLmFycmF5V2l0aGAgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxzdHJpbmdbXT4oW1xuICAgICAgICAgICAgXCJob2dlXCIsIFwiZnVnYVwiXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICBgYGBcbiAgICogQHBhcmFtIHBhdHRlcm4gXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pIGFzIHVua25vd24gYXMgVHlwZWRNYXRjaGVyPFQ+O1xuICB9XG4gIC8qKlxuICAgKiBTYW1lIG1ldGhvZCBhcyBgTWF0Y2guYXJyYXlFcXVhbHNgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9FSVAoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGFnczogRXh0cmFNYXRjaC5hcnJheUVxdWFsczxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MVwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwxXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5RXF1YWxzPFRhZ1tdPihbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogXCJrZXkxXCIsXG4gICAgICAgICAgICAgIFZhbHVlOiBcInZhbDFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogMTAwLFxuICAgICAgICAgICAgICBWYWx1ZTogMjAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgYXJyYXlFcXVhbHM8VCBleHRlbmRzIGFueVtdPihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5hcnJheUVxdWFscyhwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdExpa2VgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0lOU1RBTkNFKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIEJsb2NrRGV2aWNlTWFwcGluZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgRGV2aWNlTmFtZTogXCJ0ZXN0XCIsXG4gICAgICAgICAgICAgIEViczogRXh0cmFNYXRjaC5vYmplY3RMaWtlPEVicz4oe1xuICAgICAgICAgICAgICAgIFZvbHVtZVNpemU6IDEwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBCbG9ja0RldmljZU1hcHBpbmdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIERldmljZU5hbWU6IFwidGVzdFwiLFxuICAgICAgICAgICAgICBFYnM6IEV4dHJhTWF0Y2gub2JqZWN0TGlrZTxFYnM+KHtcbiAgICAgICAgICAgICAgICBWb2x1bWVTaXplOiBcIjEwXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0TGlrZTxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgcGF0dGVybjogQWxzb01hdGNoZXI8VD5cbiAgKTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdEVxdWFsc2AgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFlvdSBjYW4gbmVzdCBUeXBlZE1hdGNoZXIodXNlIFR5cGVkTWF0Y2hlciBpbnNpZGUgVHlwZWRNYXRjaGVyKVxuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IFwidmFsMVwiLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IDEwMCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgLyoqXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdChcImFtaS0xMjM0NVwiKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdCgxMDApLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICAvLyBUT0RPOiB3aHkgdGhpcyBleHByZXNzaW9uIGBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFRgIGlzIHJlcXVpcmVkIGJ1dCB0aGlzIGlzIHJlcXVpcmVkXG4gIHN0YXRpYyBub3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLmV4YWN0YCBidXQgcHJvdmlkZXMgdHlwZSBoaW50cyBhbmQgdmFsaWRhdGUgdHlwZSBtYXRjaCBcbiAgIGBgYGpzXG4gICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KFwidDIubWljcm9cIiksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmV4YWN0KHBhdHRlcm4pO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Matcher } from "aws-cdk-lib/assertions";
2
2
  type Primitives = string | number | boolean | undefined | null | symbol | bigint | string[] | number[] | boolean[] | bigint[];
3
- export type TypedMatcher<T> = Matcher;
3
+ export type TypedMatcher<T> = Matcher | T;
4
4
  /**
5
5
  * make properties of `T` asignable Matcher recirsively and other arbitrary json objects for primitive type fields
6
6
  */
@@ -30,4 +30,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
30
30
  // */
31
31
  // rest?: string[];
32
32
  // }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlZC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStJQSxNQUFNO0FBQ04sNENBQTRDO0FBQzVDLDBFQUEwRTtBQUMxRSxNQUFNO0FBQ04saUNBQWlDO0FBQ2pDLFFBQVE7QUFDUix3Q0FBd0M7QUFDeEMsUUFBUTtBQUNSLHdCQUF3QjtBQUN4QixRQUFRO0FBQ1IsNkRBQTZEO0FBQzdELE9BQU87QUFDUCxvQkFBb0I7QUFDcEIsUUFBUTtBQUNSLHNCQUFzQjtBQUN0QixRQUFRO0FBQ1IscUNBQXFDO0FBQ3JDLFFBQVE7QUFDUixxQkFBcUI7QUFDckIsUUFBUTtBQUNSLHdDQUF3QztBQUN4QyxRQUFRO0FBQ1Isc0JBQXNCO0FBQ3RCLFFBQVE7QUFDUiw2QkFBNkI7QUFDN0IsT0FBTztBQUNQLDZFQUE2RTtBQUM3RSxRQUFRO0FBQ1IscUJBQXFCO0FBQ3JCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRjaGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcblxudHlwZSBQcmltaXRpdmVzID1cbiAgfCBzdHJpbmdcbiAgfCBudW1iZXJcbiAgfCBib29sZWFuXG4gIHwgdW5kZWZpbmVkXG4gIHwgbnVsbFxuICB8IHN5bWJvbFxuICB8IGJpZ2ludFxuICB8IHN0cmluZ1tdXG4gIHwgbnVtYmVyW11cbiAgfCBib29sZWFuW11cbiAgfCBiaWdpbnRbXTtcblxuZXhwb3J0IHR5cGUgVHlwZWRNYXRjaGVyPFQ+ID0gTWF0Y2hlclxuLyoqXG4gKiBtYWtlIHByb3BlcnRpZXMgb2YgYFRgIGFzaWduYWJsZSBNYXRjaGVyIHJlY2lyc2l2ZWx5IGFuZCBvdGhlciBhcmJpdHJhcnkganNvbiBvYmplY3RzIGZvciBwcmltaXRpdmUgdHlwZSBmaWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgQWxzb01hdGNoZXI8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdPzogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCBUeXBlZE1hdGNoZXI8VFtwXT5cbiAgICA6IEFsc29NYXRjaGVyPFRbcF0+IHwgVHlwZWRNYXRjaGVyPFRbcF0+O1xufTtcbi8qKlxuICogbWFrZSBwcm9wZXJ0aWVzIG9mIGBUYCBhc2lnbmFibGUgYXJiaXRyYXJ5IGpzb24gb2JqZWN0c1xuICovXG5leHBvcnQgdHlwZSBBbHNvQW55PFQ+ID0ge1xuICBbcCBpbiBrZXlvZiBUXTogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCB7IFtrZXkgaW4gc3RyaW5nXTogYW55IH1cbiAgICA6IEFsc29Bbnk8VFtwXT47XG59O1xuXG4vKipcbiAqIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIGF0IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9qYV9qcC9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9kdWN0LWF0dHJpYnV0ZS1yZWZlcmVuY2UuaHRtbFxuICovXG5pbnRlcmZhY2UgQmFzZVJlc291cmNlIHtcbiAgQ3JlYXRpb25Qb2xpY3k/OiBhbnk7XG4gIERlbGV0aW9uUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlJldGFpbkV4Y2VwdE9uQ3JlYXRlXCIgfCBcIlNuYXBzaG90XCI7XG4gIERlcGVuZHNPbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBNZXRhZGF0YT86IGFueTtcbiAgVXBkYXRlUG9saWN5PzogYW55O1xuICBVcGRhdGVSZXBsYWNlUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlNuYXBzaG90XCI7XG4gIENvbmRpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlPFQ+IGV4dGVuZHMgQWxzb01hdGNoZXI8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvTWF0Y2hlcjxUPjtcbiAgVHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD5cbiAgZXh0ZW5kcyBPbWl0PElucHV0UmVzb3VyY2U8VD4sIFwiVHlwZVwiPiB7fVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSZXNvdXJjZTxUPiBleHRlbmRzIEFsc29Bbnk8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvQW55PFQ+O1xuICBUeXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIG9mIHJldHVybiB2YWx1ZSBvZiBUeXBlZFRlbXBsYXRlJ3MgbWV0aG9kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblZhbHVlPFQ+IHtcbiAgLyoqXG4gICAqIGxvZ2ljYWwgaWQgb2YgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2VzLCBwYXJhbWV0ZXJzLCBvdXRwdXRzLi4uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogZGVmaW5pdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZXMsIHBhcmFtZXRlcnMsIG91dHB1dHMuLi5cbiAgICovXG4gIGRlZjogVDtcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgb3V0cHV0XG4gKi9cbmludGVyZmFjZSBPdXRwdXQge1xuICBEZXNjcmlwdGlvbj86IGFueTtcbiAgVmFsdWU6IGFueTtcbiAgRXhwb3J0Pzoge1xuICAgIE5hbWU6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdXRwdXQgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxPdXRwdXQ+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE91dHB1dCBleHRlbmRzIEFsc29Bbnk8T3V0cHV0PiB7fVxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyXG4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXIge1xuICBBbGxvd2VkUGF0dGVybj86IHN0cmluZztcbiAgQWxsb3dlZFZhbHVlcz86IGFueVtdO1xuICBDb25zdHJhaW50RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIERlZmF1bHQ/OiBhbnk7XG4gIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gIE1heFZhbHVlPzogbnVtYmVyO1xuICBNaW5MZW5ndGg/OiBudW1iZXI7XG4gIE1pblZhbHVlPzogbnVtYmVyO1xuICBOb0VjaG8/OiBib29sZWFuO1xuICBUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0UGFyYW10ZXIgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxQYXJhbWV0ZXI+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFBhcmFtZXRlciBleHRlbmRzIEFsc29Bbnk8UGFyYW1ldGVyPiB7fVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIE1hcHBpbmcgPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQU1Qb2xpY3lEb2N1bWVudCB7XG4gIFZlcnNpb24/OiBzdHJpbmc7XG4gIElkPzogc3RyaW5nO1xuICBTdGF0ZW1lbnQ/OiBJQU1Qb2xpY3lTdGF0ZW1lbnRbXTtcbn1cblxuZXhwb3J0IHR5cGUgSUFNUG9saWN5UHJpbmNpcGFsID1cbiAgfCBcIipcIlxuICB8IHtcbiAgICAgIFtlbnRyeSBpbiBcIkFXU1wiIHwgXCJGZWRlcmF0ZWRcIiB8IFwiU2VydmljZVwiIHwgXCJDYW5vbmljYWxVc2VyXCJdPzpcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCBzdHJpbmdbXTtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIElBTVBvbGljeVN0YXRlbWVudCB7XG4gIFNpZD86IHN0cmluZztcbiAgRWZmZWN0PzogXCJBbGxvd1wiIHwgXCJFZmZlY3RcIjtcbiAgUHJpbmNpcGFsPzogSUFNUG9saWN5UHJpbmNpcGFsO1xuICBOb3RQcmluY2lwYWw/OiBJQU1Qb2xpY3lQcmluY2lwYWw7XG4gIE5vdEFjdGlvbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBBY3Rpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgUmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgTm90UmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgQ29uZGl0aW9uPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICBLZXk6IHN0cmluZ1xuICBWYWx1ZTogc3RyaW5nXG59XG4vLyAvKipcbi8vICAqIGVsZW1lbnRzIG9mIEFSTiAtIEFtYXpvbiBSZXNvdXJjZSBOYW1lXG4vLyAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlLWFybnMuaHRtbFxuLy8gICovXG4vLyBleHBvcnQgaW50ZXJmYWNlIEFybkVsZW1lbnRzIHtcbi8vICAgLyoqXG4vLyAgICAqIEBkZWZhdWx0IHtSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIn1cbi8vICAgICovXG4vLyAgIHBhcnRpdGlvbj86IHN0cmluZztcbi8vICAgLyoqXG4vLyAgICAqIFRoZSBzZXJ2aWNlIG5hbWVzcGFjZSB0aGF0IGlkZW50aWZpZXMgdGhlIEFXUyBwcm9kdWN0XG4vLyAgICAqXG4vLyAgICAqIEBleGFtcGxlIGVjMlxuLy8gICAgKi9cbi8vICAgc2VydmljZT86IHN0cmluZztcbi8vICAgLyoqXG4vLyAgICAqIEBkZWZhdWx0IHtSZWY6IFwiQVdTOjpSZWdpb25cIn1cbi8vICAgICovXG4vLyAgIHJlZ2lvbj86IHN0cmluZztcbi8vICAgLyoqXG4vLyAgICAqIEBkZWZhdWx0IHtSZWY6IFwiQVdTOjpBY2NvdW50SWRcIn1cbi8vICAgICovXG4vLyAgIGFjY291bnQ/OiBzdHJpbmc7XG4vLyAgIC8qKlxuLy8gICAgKiB0aGUgcmVzdCBwYXJ0cyBvZiBBUk5cbi8vICAgICpcbi8vICAgICogQGV4YW1wbGUgW1wibG9nLWdyb3VwOi9sb2ctZ3JvdXAtbmFtZTpcIiwgXCJsb2ctc3RyZWFtOmxvZy1zdHJlYW0tbmFtZVwiXVxuLy8gICAgKi9cbi8vICAgcmVzdD86IHN0cmluZ1tdO1xuLy8gfVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlZC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlKQSxNQUFNO0FBQ04sNENBQTRDO0FBQzVDLDBFQUEwRTtBQUMxRSxNQUFNO0FBQ04saUNBQWlDO0FBQ2pDLFFBQVE7QUFDUix3Q0FBd0M7QUFDeEMsUUFBUTtBQUNSLHdCQUF3QjtBQUN4QixRQUFRO0FBQ1IsNkRBQTZEO0FBQzdELE9BQU87QUFDUCxvQkFBb0I7QUFDcEIsUUFBUTtBQUNSLHNCQUFzQjtBQUN0QixRQUFRO0FBQ1IscUNBQXFDO0FBQ3JDLFFBQVE7QUFDUixxQkFBcUI7QUFDckIsUUFBUTtBQUNSLHdDQUF3QztBQUN4QyxRQUFRO0FBQ1Isc0JBQXNCO0FBQ3RCLFFBQVE7QUFDUiw2QkFBNkI7QUFDN0IsT0FBTztBQUNQLDZFQUE2RTtBQUM3RSxRQUFRO0FBQ1IscUJBQXFCO0FBQ3JCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRjaGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7IEJsb2NrRGV2aWNlTWFwcGluZyB9IGZyb20gXCIuL3R5cGVzL2Nmbi1yZXNvdXJjZS10eXBlcy9hd3MtYXV0b3NjYWxpbmctbGF1bmNoY29uZmlndXJhdGlvblwiO1xuXG50eXBlIFByaW1pdGl2ZXMgPVxuICB8IHN0cmluZ1xuICB8IG51bWJlclxuICB8IGJvb2xlYW5cbiAgfCB1bmRlZmluZWRcbiAgfCBudWxsXG4gIHwgc3ltYm9sXG4gIHwgYmlnaW50XG4gIHwgc3RyaW5nW11cbiAgfCBudW1iZXJbXVxuICB8IGJvb2xlYW5bXVxuICB8IGJpZ2ludFtdO1xuXG5leHBvcnQgdHlwZSBUeXBlZE1hdGNoZXI8VD4gPSBNYXRjaGVyIHwgVDtcblxuLyoqXG4gKiBtYWtlIHByb3BlcnRpZXMgb2YgYFRgIGFzaWduYWJsZSBNYXRjaGVyIHJlY2lyc2l2ZWx5IGFuZCBvdGhlciBhcmJpdHJhcnkganNvbiBvYmplY3RzIGZvciBwcmltaXRpdmUgdHlwZSBmaWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgQWxzb01hdGNoZXI8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdPzogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCBUeXBlZE1hdGNoZXI8VFtwXT5cbiAgICA6IEFsc29NYXRjaGVyPFRbcF0+IHwgVHlwZWRNYXRjaGVyPFRbcF0+O1xufTtcbi8qKlxuICogbWFrZSBwcm9wZXJ0aWVzIG9mIGBUYCBhc2lnbmFibGUgYXJiaXRyYXJ5IGpzb24gb2JqZWN0c1xuICovXG5leHBvcnQgdHlwZSBBbHNvQW55PFQ+ID0ge1xuICBbcCBpbiBrZXlvZiBUXTogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCB7IFtrZXkgaW4gc3RyaW5nXTogYW55IH1cbiAgICA6IEFsc29Bbnk8VFtwXT47XG59O1xuXG4vKipcbiAqIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIGF0IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9qYV9qcC9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9kdWN0LWF0dHJpYnV0ZS1yZWZlcmVuY2UuaHRtbFxuICovXG5pbnRlcmZhY2UgQmFzZVJlc291cmNlIHtcbiAgQ3JlYXRpb25Qb2xpY3k/OiBhbnk7XG4gIERlbGV0aW9uUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlJldGFpbkV4Y2VwdE9uQ3JlYXRlXCIgfCBcIlNuYXBzaG90XCI7XG4gIERlcGVuZHNPbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBNZXRhZGF0YT86IGFueTtcbiAgVXBkYXRlUG9saWN5PzogYW55O1xuICBVcGRhdGVSZXBsYWNlUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlNuYXBzaG90XCI7XG4gIENvbmRpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlPFQ+IGV4dGVuZHMgQWxzb01hdGNoZXI8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvTWF0Y2hlcjxUPjtcbiAgVHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD5cbiAgZXh0ZW5kcyBPbWl0PElucHV0UmVzb3VyY2U8VD4sIFwiVHlwZVwiPiB7fVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSZXNvdXJjZTxUPiBleHRlbmRzIEFsc29Bbnk8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvQW55PFQ+O1xuICBUeXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIG9mIHJldHVybiB2YWx1ZSBvZiBUeXBlZFRlbXBsYXRlJ3MgbWV0aG9kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblZhbHVlPFQ+IHtcbiAgLyoqXG4gICAqIGxvZ2ljYWwgaWQgb2YgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2VzLCBwYXJhbWV0ZXJzLCBvdXRwdXRzLi4uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogZGVmaW5pdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZXMsIHBhcmFtZXRlcnMsIG91dHB1dHMuLi5cbiAgICovXG4gIGRlZjogVDtcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgb3V0cHV0XG4gKi9cbmludGVyZmFjZSBPdXRwdXQge1xuICBEZXNjcmlwdGlvbj86IGFueTtcbiAgVmFsdWU6IGFueTtcbiAgRXhwb3J0Pzoge1xuICAgIE5hbWU6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdXRwdXQgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxPdXRwdXQ+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE91dHB1dCBleHRlbmRzIEFsc29Bbnk8T3V0cHV0PiB7fVxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyXG4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXIge1xuICBBbGxvd2VkUGF0dGVybj86IHN0cmluZztcbiAgQWxsb3dlZFZhbHVlcz86IGFueVtdO1xuICBDb25zdHJhaW50RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIERlZmF1bHQ/OiBhbnk7XG4gIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gIE1heFZhbHVlPzogbnVtYmVyO1xuICBNaW5MZW5ndGg/OiBudW1iZXI7XG4gIE1pblZhbHVlPzogbnVtYmVyO1xuICBOb0VjaG8/OiBib29sZWFuO1xuICBUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0UGFyYW10ZXIgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxQYXJhbWV0ZXI+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFBhcmFtZXRlciBleHRlbmRzIEFsc29Bbnk8UGFyYW1ldGVyPiB7fVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIE1hcHBpbmcgPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQU1Qb2xpY3lEb2N1bWVudCB7XG4gIFZlcnNpb24/OiBzdHJpbmc7XG4gIElkPzogc3RyaW5nO1xuICBTdGF0ZW1lbnQ/OiBJQU1Qb2xpY3lTdGF0ZW1lbnRbXTtcbn1cblxuZXhwb3J0IHR5cGUgSUFNUG9saWN5UHJpbmNpcGFsID1cbiAgfCBcIipcIlxuICB8IHtcbiAgICAgIFtlbnRyeSBpbiBcIkFXU1wiIHwgXCJGZWRlcmF0ZWRcIiB8IFwiU2VydmljZVwiIHwgXCJDYW5vbmljYWxVc2VyXCJdPzpcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCBzdHJpbmdbXTtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIElBTVBvbGljeVN0YXRlbWVudCB7XG4gIFNpZD86IHN0cmluZztcbiAgRWZmZWN0PzogXCJBbGxvd1wiIHwgXCJFZmZlY3RcIjtcbiAgUHJpbmNpcGFsPzogSUFNUG9saWN5UHJpbmNpcGFsO1xuICBOb3RQcmluY2lwYWw/OiBJQU1Qb2xpY3lQcmluY2lwYWw7XG4gIE5vdEFjdGlvbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBBY3Rpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgUmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgTm90UmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgQ29uZGl0aW9uPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICBLZXk6IHN0cmluZztcbiAgVmFsdWU6IHN0cmluZztcbn1cbi8vIC8qKlxuLy8gICogZWxlbWVudHMgb2YgQVJOIC0gQW1hem9uIFJlc291cmNlIE5hbWVcbi8vICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2UtYXJucy5odG1sXG4vLyAgKi9cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQXJuRWxlbWVudHMge1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OlBhcnRpdGlvblwifVxuLy8gICAgKi9cbi8vICAgcGFydGl0aW9uPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogVGhlIHNlcnZpY2UgbmFtZXNwYWNlIHRoYXQgaWRlbnRpZmllcyB0aGUgQVdTIHByb2R1Y3Rcbi8vICAgICpcbi8vICAgICogQGV4YW1wbGUgZWMyXG4vLyAgICAqL1xuLy8gICBzZXJ2aWNlPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OlJlZ2lvblwifVxuLy8gICAgKi9cbi8vICAgcmVnaW9uPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OkFjY291bnRJZFwifVxuLy8gICAgKi9cbi8vICAgYWNjb3VudD86IHN0cmluZztcbi8vICAgLyoqXG4vLyAgICAqIHRoZSByZXN0IHBhcnRzIG9mIEFSTlxuLy8gICAgKlxuLy8gICAgKiBAZXhhbXBsZSBbXCJsb2ctZ3JvdXA6L2xvZy1ncm91cC1uYW1lOlwiLCBcImxvZy1zdHJlYW06bG9nLXN0cmVhbS1uYW1lXCJdXG4vLyAgICAqL1xuLy8gICByZXN0Pzogc3RyaW5nW107XG4vLyB9XG4iXX0=
@@ -22,7 +22,7 @@ export interface _AWS_ACCESSANALYZER_ANALYZER {
22
22
  */
23
23
  Tags?: Tag[];
24
24
  /**
25
- * The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS or ORGANIZATION_UNUSED_ACCESS
25
+ * The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_INTERNAL_ACCESS, ORGANIZATION_INTERNAL_ACCESS, ACCOUNT_UNUSED_ACCESS and ORGANIZATION_UNUSED_ACCESS
26
26
  */
27
27
  Type: string;
28
28
  /**
@@ -30,6 +30,7 @@ export interface _AWS_ACCESSANALYZER_ANALYZER {
30
30
  */
31
31
  AnalyzerConfiguration?: {
32
32
  UnusedAccessConfiguration?: UnusedAccessConfiguration;
33
+ InternalAccessConfiguration?: InternalAccessConfiguration;
33
34
  };
34
35
  }
35
36
  /**
@@ -100,3 +101,34 @@ export interface AnalysisRuleCriteria {
100
101
  */
101
102
  ResourceTags?: Tags[];
102
103
  }
104
+ /**
105
+ * Specifies the configuration of an internal access analyzer for an AWS organization or account. This configuration determines how the analyzer evaluates internal access within your AWS environment.
106
+ */
107
+ export interface InternalAccessConfiguration {
108
+ /**
109
+ * Contains information about analysis rules for the internal access analyzer. Analysis rules determine which entities will generate findings based on the criteria you define when you create the rule.
110
+ */
111
+ InternalAccessAnalysisRule?: {
112
+ /**
113
+ * A list of rules for the internal access analyzer containing criteria to include in analysis. Only resources that meet the rule criteria will generate findings.
114
+ */
115
+ Inclusions?: InternalAccessAnalysisRuleCriteria[];
116
+ };
117
+ }
118
+ /**
119
+ * The criteria for an analysis rule for an internal access analyzer.
120
+ */
121
+ export interface InternalAccessAnalysisRuleCriteria {
122
+ /**
123
+ * A list of AWS account IDs to apply to the internal access analysis rule criteria. Account IDs can only be applied to the analysis rule criteria for organization-level analyzers and cannot include the organization owner account.
124
+ */
125
+ AccountIds?: string[];
126
+ /**
127
+ * A list of resource ARNs to apply to the internal access analysis rule criteria. The analyzer will only generate findings for resources that match these ARNs.
128
+ */
129
+ ResourceArns?: string[];
130
+ /**
131
+ * A list of resource types to apply to the internal access analysis rule criteria. The analyzer will only generate findings for resources of these types.
132
+ */
133
+ ResourceTypes?: string[];
134
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cblxuLyoqXG4gKiBUaGUgQVdTOjpBY2Nlc3NBbmFseXplcjo6QW5hbHl6ZXIgdHlwZSBzcGVjaWZpZXMgYW4gYW5hbHl6ZXIgb2YgdGhlIHVzZXIncyBhY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BQ0NFU1NBTkFMWVpFUl9BTkFMWVpFUiB7XG4vKipcbiAqIEFuYWx5emVyIG5hbWVcbiAqL1xuQW5hbHl6ZXJOYW1lPzogc3RyaW5nXG5BcmNoaXZlUnVsZXM/OiBBcmNoaXZlUnVsZVtdXG4vKipcbiAqIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhbmFseXplclxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGFuYWx5emVyLCBtdXN0IGJlIG9uZSBvZiBBQ0NPVU5ULCBPUkdBTklaQVRJT04sIEFDQ09VTlRfVU5VU0VEX0FDQ0VTUyBvciBPUkdBTklaQVRJT05fVU5VU0VEX0FDQ0VTU1xuICovXG5UeXBlOiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhbmFseXplclxuICovXG5BbmFseXplckNvbmZpZ3VyYXRpb24/OiB7XG5VbnVzZWRBY2Nlc3NDb25maWd1cmF0aW9uPzogVW51c2VkQWNjZXNzQ29uZmlndXJhdGlvblxufVxufVxuLyoqXG4gKiBBbiBBY2Nlc3MgQW5hbHl6ZXIgYXJjaGl2ZSBydWxlLiBBcmNoaXZlIHJ1bGVzIGF1dG9tYXRpY2FsbHkgYXJjaGl2ZSBuZXcgZmluZGluZ3MgdGhhdCBtZWV0IHRoZSBjcml0ZXJpYSB5b3UgZGVmaW5lIHdoZW4geW91IGNyZWF0ZSB0aGUgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmNoaXZlUnVsZSB7XG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKi9cbkZpbHRlcjogRmlsdGVyW11cbi8qKlxuICogVGhlIGFyY2hpdmUgcnVsZSBuYW1lXG4gKi9cblJ1bGVOYW1lOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbkNvbnRhaW5zPzogc3RyaW5nW11cbkVxPzogc3RyaW5nW11cbkV4aXN0cz86IGJvb2xlYW5cblByb3BlcnR5OiBzdHJpbmdcbk5lcT86IHN0cmluZ1tdXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUga2V5IG5hbWUgb2YgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyNyBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBmb3IgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAwIHRvIDI1NSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cblZhbHVlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBDb25maWd1cmF0aW9uIGZvciBVbnVzZWQgQWNjZXNzIEFuYWx5emVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW51c2VkQWNjZXNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBzcGVjaWZpZWQgYWNjZXNzIGFnZSBpbiBkYXlzIGZvciB3aGljaCB0byBnZW5lcmF0ZSBmaW5kaW5ncyBmb3IgdW51c2VkIGFjY2Vzcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IDkwIGRheXMsIHRoZSBhbmFseXplciB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzIGZvciBJQU0gZW50aXRpZXMgd2l0aGluIHRoZSBhY2NvdW50cyBvZiB0aGUgc2VsZWN0ZWQgb3JnYW5pemF0aW9uIGZvciBhbnkgYWNjZXNzIHRoYXQgaGFzbid0IGJlZW4gdXNlZCBpbiA5MCBvciBtb3JlIGRheXMgc2luY2UgdGhlIGFuYWx5emVyJ3MgbGFzdCBzY2FuLiBZb3UgY2FuIGNob29zZSBhIHZhbHVlIGJldHdlZW4gMSBhbmQgMzY1IGRheXMuXG4gKi9cblVudXNlZEFjY2Vzc0FnZT86IG51bWJlclxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBydWxlcyBmb3IgdGhlIGFuYWx5emVyLlxuICovXG5BbmFseXNpc1J1bGU/OiB7XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyBmb3IgdGhlIGFuYWx5emVyIGNvbnRhaW5pbmcgY3JpdGVyaWEgdG8gZXhjbHVkZSBmcm9tIGFuYWx5c2lzLiBFbnRpdGllcyB0aGF0IG1lZXQgdGhlIHJ1bGUgY3JpdGVyaWEgd2lsbCBub3QgZ2VuZXJhdGUgZmluZGluZ3MuXG4gKi9cbkV4Y2x1c2lvbnM/OiBBbmFseXNpc1J1bGVDcml0ZXJpYVtdXG59XG59XG4vKipcbiAqIFRoZSBjcml0ZXJpYSBmb3IgYW4gYW5hbHlzaXMgcnVsZSBmb3IgYW4gYW5hbHl6ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHlzaXNSdWxlQ3JpdGVyaWEge1xuLyoqXG4gKiBBIGxpc3Qgb2YgQVdTIGFjY291bnQgSURzIHRvIGFwcGx5IHRvIHRoZSBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYWNjb3VudHMgY2Fubm90IGluY2x1ZGUgdGhlIG9yZ2FuaXphdGlvbiBhbmFseXplciBvd25lciBhY2NvdW50LiBBY2NvdW50IElEcyBjYW4gb25seSBiZSBhcHBsaWVkIHRvIHRoZSBhbmFseXNpcyBydWxlIGNyaXRlcmlhIGZvciBvcmdhbml6YXRpb24tbGV2ZWwgYW5hbHl6ZXJzLlxuICovXG5BY2NvdW50SWRzPzogc3RyaW5nW11cbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIG1hdGNoIGZvciB5b3VyIHJlc291cmNlcy4gWW91IGNhbiB1c2UgdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKiBcbiAqIEZvciB0aGUgdGFnIGtleSwgeW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyOCBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi5cbiAqIFxuICogRm9yIHRoZSB0YWcgdmFsdWUsIHlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTYgY2hhcmFjdGVycyBpbiBsZW5ndGguIElmIHRoZSBzcGVjaWZpZWQgdGFnIHZhbHVlIGlzIDAgY2hhcmFjdGVycywgdGhlIHJ1bGUgaXMgYXBwbGllZCB0byBhbGwgcHJpbmNpcGFscyB3aXRoIHRoZSBzcGVjaWZpZWQgdGFnIGtleS5cbiAqL1xuUmVzb3VyY2VUYWdzPzogVGFnc1tdXG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cblxuLyoqXG4gKiBUaGUgQVdTOjpBY2Nlc3NBbmFseXplcjo6QW5hbHl6ZXIgdHlwZSBzcGVjaWZpZXMgYW4gYW5hbHl6ZXIgb2YgdGhlIHVzZXIncyBhY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BQ0NFU1NBTkFMWVpFUl9BTkFMWVpFUiB7XG4vKipcbiAqIEFuYWx5emVyIG5hbWVcbiAqL1xuQW5hbHl6ZXJOYW1lPzogc3RyaW5nXG5BcmNoaXZlUnVsZXM/OiBBcmNoaXZlUnVsZVtdXG4vKipcbiAqIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhbmFseXplclxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGFuYWx5emVyLCBtdXN0IGJlIG9uZSBvZiBBQ0NPVU5ULCBPUkdBTklaQVRJT04sIEFDQ09VTlRfSU5URVJOQUxfQUNDRVNTLCBPUkdBTklaQVRJT05fSU5URVJOQUxfQUNDRVNTLCBBQ0NPVU5UX1VOVVNFRF9BQ0NFU1MgYW5kIE9SR0FOSVpBVElPTl9VTlVTRURfQUNDRVNTXG4gKi9cblR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFuYWx5emVyXG4gKi9cbkFuYWx5emVyQ29uZmlndXJhdGlvbj86IHtcblVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24/OiBVbnVzZWRBY2Nlc3NDb25maWd1cmF0aW9uXG5JbnRlcm5hbEFjY2Vzc0NvbmZpZ3VyYXRpb24/OiBJbnRlcm5hbEFjY2Vzc0NvbmZpZ3VyYXRpb25cbn1cbn1cbi8qKlxuICogQW4gQWNjZXNzIEFuYWx5emVyIGFyY2hpdmUgcnVsZS4gQXJjaGl2ZSBydWxlcyBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgbmV3IGZpbmRpbmdzIHRoYXQgbWVldCB0aGUgY3JpdGVyaWEgeW91IGRlZmluZSB3aGVuIHlvdSBjcmVhdGUgdGhlIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJjaGl2ZVJ1bGUge1xuLyoqXG4gKiBAbWluSXRlbXMgMVxuICovXG5GaWx0ZXI6IEZpbHRlcltdXG4vKipcbiAqIFRoZSBhcmNoaXZlIHJ1bGUgbmFtZVxuICovXG5SdWxlTmFtZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5Db250YWlucz86IHN0cmluZ1tdXG5FcT86IHN0cmluZ1tdXG5FeGlzdHM/OiBib29sZWFuXG5Qcm9wZXJ0eTogc3RyaW5nXG5OZXE/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBBIGtleS12YWx1ZSBwYWlyIHRvIGFzc29jaWF0ZSB3aXRoIGEgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIGtleSBuYW1lIG9mIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjcgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uIFxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uIFxuICovXG5WYWx1ZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQ29uZmlndXJhdGlvbiBmb3IgVW51c2VkIEFjY2VzcyBBbmFseXplclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgc3BlY2lmaWVkIGFjY2VzcyBhZ2UgaW4gZGF5cyBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgZmluZGluZ3MgZm9yIHVudXNlZCBhY2Nlc3MuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSA5MCBkYXlzLCB0aGUgYW5hbHl6ZXIgd2lsbCBnZW5lcmF0ZSBmaW5kaW5ncyBmb3IgSUFNIGVudGl0aWVzIHdpdGhpbiB0aGUgYWNjb3VudHMgb2YgdGhlIHNlbGVjdGVkIG9yZ2FuaXphdGlvbiBmb3IgYW55IGFjY2VzcyB0aGF0IGhhc24ndCBiZWVuIHVzZWQgaW4gOTAgb3IgbW9yZSBkYXlzIHNpbmNlIHRoZSBhbmFseXplcidzIGxhc3Qgc2Nhbi4gWW91IGNhbiBjaG9vc2UgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDM2NSBkYXlzLlxuICovXG5VbnVzZWRBY2Nlc3NBZ2U/OiBudW1iZXJcbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcnVsZXMgZm9yIHRoZSBhbmFseXplci5cbiAqL1xuQW5hbHlzaXNSdWxlPzoge1xuLyoqXG4gKiBBIGxpc3Qgb2YgcnVsZXMgZm9yIHRoZSBhbmFseXplciBjb250YWluaW5nIGNyaXRlcmlhIHRvIGV4Y2x1ZGUgZnJvbSBhbmFseXNpcy4gRW50aXRpZXMgdGhhdCBtZWV0IHRoZSBydWxlIGNyaXRlcmlhIHdpbGwgbm90IGdlbmVyYXRlIGZpbmRpbmdzLlxuICovXG5FeGNsdXNpb25zPzogQW5hbHlzaXNSdWxlQ3JpdGVyaWFbXVxufVxufVxuLyoqXG4gKiBUaGUgY3JpdGVyaWEgZm9yIGFuIGFuYWx5c2lzIHJ1bGUgZm9yIGFuIGFuYWx5emVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5c2lzUnVsZUNyaXRlcmlhIHtcbi8qKlxuICogQSBsaXN0IG9mIEFXUyBhY2NvdW50IElEcyB0byBhcHBseSB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYS4gVGhlIGFjY291bnRzIGNhbm5vdCBpbmNsdWRlIHRoZSBvcmdhbml6YXRpb24gYW5hbHl6ZXIgb3duZXIgYWNjb3VudC4gQWNjb3VudCBJRHMgY2FuIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYSBmb3Igb3JnYW5pemF0aW9uLWxldmVsIGFuYWx5emVycy5cbiAqL1xuQWNjb3VudElkcz86IHN0cmluZ1tdXG4vKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBtYXRjaCBmb3IgeW91ciByZXNvdXJjZXMuIFlvdSBjYW4gdXNlIHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICogXG4gKiBGb3IgdGhlIHRhZyBrZXksIHlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjggY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouXG4gKiBcbiAqIEZvciB0aGUgdGFnIHZhbHVlLCB5b3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDAgdG8gMjU2IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiBJZiB0aGUgc3BlY2lmaWVkIHRhZyB2YWx1ZSBpcyAwIGNoYXJhY3RlcnMsIHRoZSBydWxlIGlzIGFwcGxpZWQgdG8gYWxsIHByaW5jaXBhbHMgd2l0aCB0aGUgc3BlY2lmaWVkIHRhZyBrZXkuXG4gKi9cblJlc291cmNlVGFncz86IFRhZ3NbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gaW50ZXJuYWwgYWNjZXNzIGFuYWx5emVyIGZvciBhbiBBV1Mgb3JnYW5pemF0aW9uIG9yIGFjY291bnQuIFRoaXMgY29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIGhvdyB0aGUgYW5hbHl6ZXIgZXZhbHVhdGVzIGludGVybmFsIGFjY2VzcyB3aXRoaW4geW91ciBBV1MgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxBY2Nlc3NDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYW5hbHlzaXMgcnVsZXMgZm9yIHRoZSBpbnRlcm5hbCBhY2Nlc3MgYW5hbHl6ZXIuIEFuYWx5c2lzIHJ1bGVzIGRldGVybWluZSB3aGljaCBlbnRpdGllcyB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSB5b3UgZGVmaW5lIHdoZW4geW91IGNyZWF0ZSB0aGUgcnVsZS5cbiAqL1xuSW50ZXJuYWxBY2Nlc3NBbmFseXNpc1J1bGU/OiB7XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyBmb3IgdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXplciBjb250YWluaW5nIGNyaXRlcmlhIHRvIGluY2x1ZGUgaW4gYW5hbHlzaXMuIE9ubHkgcmVzb3VyY2VzIHRoYXQgbWVldCB0aGUgcnVsZSBjcml0ZXJpYSB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzLlxuICovXG5JbmNsdXNpb25zPzogSW50ZXJuYWxBY2Nlc3NBbmFseXNpc1J1bGVDcml0ZXJpYVtdXG59XG59XG4vKipcbiAqIFRoZSBjcml0ZXJpYSBmb3IgYW4gYW5hbHlzaXMgcnVsZSBmb3IgYW4gaW50ZXJuYWwgYWNjZXNzIGFuYWx5emVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsQWNjZXNzQW5hbHlzaXNSdWxlQ3JpdGVyaWEge1xuLyoqXG4gKiBBIGxpc3Qgb2YgQVdTIGFjY291bnQgSURzIHRvIGFwcGx5IHRvIHRoZSBpbnRlcm5hbCBhY2Nlc3MgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYS4gQWNjb3VudCBJRHMgY2FuIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYSBmb3Igb3JnYW5pemF0aW9uLWxldmVsIGFuYWx5emVycyBhbmQgY2Fubm90IGluY2x1ZGUgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBhY2NvdW50LlxuICovXG5BY2NvdW50SWRzPzogc3RyaW5nW11cbi8qKlxuICogQSBsaXN0IG9mIHJlc291cmNlIEFSTnMgdG8gYXBwbHkgdG8gdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYW5hbHl6ZXIgd2lsbCBvbmx5IGdlbmVyYXRlIGZpbmRpbmdzIGZvciByZXNvdXJjZXMgdGhhdCBtYXRjaCB0aGVzZSBBUk5zLlxuICovXG5SZXNvdXJjZUFybnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBIGxpc3Qgb2YgcmVzb3VyY2UgdHlwZXMgdG8gYXBwbHkgdG8gdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYW5hbHl6ZXIgd2lsbCBvbmx5IGdlbmVyYXRlIGZpbmRpbmdzIGZvciByZXNvdXJjZXMgb2YgdGhlc2UgdHlwZXMuXG4gKi9cblJlc291cmNlVHlwZXM/OiBzdHJpbmdbXVxufVxuIl19