@aws-cdk/service-spec-types 0.0.181 → 0.0.182

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/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './types/database';
2
2
  export * from './types/resource';
3
3
  export * from './types/augmentations';
4
+ export * from './types/event';
4
5
  export * from './types/metrics';
5
6
  export * from './types/diff';
package/lib/index.js CHANGED
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types/database"), exports);
18
18
  __exportStar(require("./types/resource"), exports);
19
19
  __exportStar(require("./types/augmentations"), exports);
20
+ __exportStar(require("./types/event"), exports);
20
21
  __exportStar(require("./types/metrics"), exports);
21
22
  __exportStar(require("./types/diff"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGdEQUE4QjtBQUM5QixrREFBZ0M7QUFDaEMsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcy9kYXRhYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3Jlc291cmNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvYXVnbWVudGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2V2ZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19
@@ -1,5 +1,6 @@
1
1
  import { Database } from '@cdklabs/tskb';
2
2
  import { IsAugmentedResource, ResourceAugmentation } from './augmentations';
3
+ import { HasEvent, Event, EventUsesType, EventTypeDefinition } from './event';
3
4
  import { DimensionSet, Metric, ResourceHasDimensionSet, ServiceHasDimensionSet, UsesDimensionSet, ResourceHasMetric, ServiceHasMetric } from './metrics';
4
5
  import { Resource, Service, TypeDefinition, PropertyType, Region, HasResource, RegionHasResource, RegionHasService, UsesType } from './resource';
5
6
  export declare function emptyDatabase(): Database<{
@@ -13,6 +14,7 @@ export declare function emptyDatabase(): Database<{
13
14
  name: import("@cdklabs/tskb").EntityIndex<Service, string>;
14
15
  cloudFormationNamespace: import("@cdklabs/tskb").EntityIndex<Service, string>;
15
16
  }>;
17
+ eventTypeDefinition: import("@cdklabs/tskb").EntityCollection<EventTypeDefinition, {}>;
16
18
  typeDefinition: import("@cdklabs/tskb").EntityCollection<TypeDefinition, {}>;
17
19
  augmentations: import("@cdklabs/tskb").EntityCollection<ResourceAugmentation, {}>;
18
20
  metric: import("@cdklabs/tskb").EntityCollection<Metric, {
@@ -23,6 +25,9 @@ export declare function emptyDatabase(): Database<{
23
25
  dimensionSet: import("@cdklabs/tskb").EntityCollection<DimensionSet, {
24
26
  dedupKey: import("@cdklabs/tskb").EntityIndex<DimensionSet, string>;
25
27
  }>;
28
+ event: import("@cdklabs/tskb").EntityCollection<Event, {
29
+ name: import("@cdklabs/tskb").EntityIndex<Event, string>;
30
+ }>;
26
31
  }, {
27
32
  hasResource: import("@cdklabs/tskb").RelationshipCollection<HasResource>;
28
33
  regionHasResource: import("@cdklabs/tskb").RelationshipCollection<RegionHasResource>;
@@ -34,6 +39,8 @@ export declare function emptyDatabase(): Database<{
34
39
  serviceHasMetric: import("@cdklabs/tskb").RelationshipCollection<ServiceHasMetric>;
35
40
  resourceHasDimensionSet: import("@cdklabs/tskb").RelationshipCollection<ResourceHasDimensionSet>;
36
41
  serviceHasDimensionSet: import("@cdklabs/tskb").RelationshipCollection<ServiceHasDimensionSet>;
42
+ hasEvent: import("@cdklabs/tskb").RelationshipCollection<HasEvent>;
43
+ eventUsesType: import("@cdklabs/tskb").RelationshipCollection<EventUsesType>;
37
44
  }>;
38
45
  export declare function loadDatabase(pathToDb: string): Promise<Database<{
39
46
  resource: import("@cdklabs/tskb").EntityCollection<Resource, {
@@ -46,6 +53,7 @@ export declare function loadDatabase(pathToDb: string): Promise<Database<{
46
53
  name: import("@cdklabs/tskb").EntityIndex<Service, string>;
47
54
  cloudFormationNamespace: import("@cdklabs/tskb").EntityIndex<Service, string>;
48
55
  }>;
56
+ eventTypeDefinition: import("@cdklabs/tskb").EntityCollection<EventTypeDefinition, {}>;
49
57
  typeDefinition: import("@cdklabs/tskb").EntityCollection<TypeDefinition, {}>;
50
58
  augmentations: import("@cdklabs/tskb").EntityCollection<ResourceAugmentation, {}>;
51
59
  metric: import("@cdklabs/tskb").EntityCollection<Metric, {
@@ -56,6 +64,9 @@ export declare function loadDatabase(pathToDb: string): Promise<Database<{
56
64
  dimensionSet: import("@cdklabs/tskb").EntityCollection<DimensionSet, {
57
65
  dedupKey: import("@cdklabs/tskb").EntityIndex<DimensionSet, string>;
58
66
  }>;
67
+ event: import("@cdklabs/tskb").EntityCollection<Event, {
68
+ name: import("@cdklabs/tskb").EntityIndex<Event, string>;
69
+ }>;
59
70
  }, {
60
71
  hasResource: import("@cdklabs/tskb").RelationshipCollection<HasResource>;
61
72
  regionHasResource: import("@cdklabs/tskb").RelationshipCollection<RegionHasResource>;
@@ -67,6 +78,8 @@ export declare function loadDatabase(pathToDb: string): Promise<Database<{
67
78
  serviceHasMetric: import("@cdklabs/tskb").RelationshipCollection<ServiceHasMetric>;
68
79
  resourceHasDimensionSet: import("@cdklabs/tskb").RelationshipCollection<ResourceHasDimensionSet>;
69
80
  serviceHasDimensionSet: import("@cdklabs/tskb").RelationshipCollection<ServiceHasDimensionSet>;
81
+ hasEvent: import("@cdklabs/tskb").RelationshipCollection<HasEvent>;
82
+ eventUsesType: import("@cdklabs/tskb").RelationshipCollection<EventUsesType>;
70
83
  }>>;
71
84
  export type SpecDatabase = ReturnType<typeof emptyDatabase>;
72
85
  /**
@@ -16,6 +16,7 @@ function emptyDatabase() {
16
16
  name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),
17
17
  cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),
18
18
  }),
19
+ eventTypeDefinition: (0, tskb_1.entityCollection)(),
19
20
  typeDefinition: (0, tskb_1.entityCollection)(),
20
21
  augmentations: (0, tskb_1.entityCollection)(),
21
22
  metric: (0, tskb_1.entityCollection)().index({
@@ -26,6 +27,9 @@ function emptyDatabase() {
26
27
  dimensionSet: (0, tskb_1.entityCollection)().index({
27
28
  dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),
28
29
  }),
30
+ event: (0, tskb_1.entityCollection)().index({
31
+ name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),
32
+ }),
29
33
  }, (r) => ({
30
34
  hasResource: r.relationship('service', 'resource'),
31
35
  regionHasResource: r.relationship('region', 'resource'),
@@ -37,6 +41,8 @@ function emptyDatabase() {
37
41
  serviceHasMetric: r.relationship('service', 'metric'),
38
42
  resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),
39
43
  serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),
44
+ hasEvent: r.relationship('resource', 'event'),
45
+ eventUsesType: r.relationship('event', 'eventTypeDefinition'),
40
46
  }));
41
47
  }
42
48
  exports.emptyDatabase = emptyDatabase;
@@ -80,4 +86,4 @@ class RichSpecDatabase {
80
86
  }
81
87
  }
82
88
  exports.RichSpecDatabase = RichSpecDatabase;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF3QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsbUJBQW1CLEVBQUUsSUFBQSx1QkFBZ0IsR0FBdUI7UUFDNUQsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMs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QUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsT0FBZTtRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDOUYsQ0FBQztDQUNGO0FBNUJELDRDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgZ3VuemlwU3luYyB9IGZyb20gJ3psaWInO1xuaW1wb3J0IHsgRGF0YWJhc2UsIGVudGl0eUNvbGxlY3Rpb24sIGZpZWxkSW5kZXgsIHN0cmluZ0NtcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgSXNBdWdtZW50ZWRSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24gfSBmcm9tICcuL2F1Z21lbnRhdGlvbnMnO1xuaW1wb3J0IHsgSGFzRXZlbnQsIEV2ZW50LCBFdmVudFVzZXNUeXBlLCBFdmVudFR5cGVEZWZpbml0aW9uIH0gZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICBldmVudFR5cGVEZWZpbml0aW9uOiBlbnRpdHlDb2xsZWN0aW9uPEV2ZW50VHlwZURlZmluaXRpb24+KCksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIGV2ZW50OiBlbnRpdHlDb2xsZWN0aW9uPEV2ZW50PigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICAgIGhhc0V2ZW50OiByLnJlbGF0aW9uc2hpcDxIYXNFdmVudD4oJ3Jlc291cmNlJywgJ2V2ZW50JyksXG4gICAgICBldmVudFVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxFdmVudFVzZXNUeXBlPignZXZlbnQnLCAnZXZlbnRUeXBlRGVmaW5pdGlvbicpLFxuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZERhdGFiYXNlKHBhdGhUb0RiOiBzdHJpbmcpIHtcbiAgY29uc3QgZGIgPSBlbXB0eURhdGFiYXNlKCk7XG4gIGNvbnN0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aFRvRGIpO1xuICBjb25zdCBqc29uID0gcGF0aFRvRGIuZW5kc1dpdGgoJy5neicpID8gZ3VuemlwU3luYyhjb250ZW50cykudG9TdHJpbmcoJ3V0Zi04JykgOiBjb250ZW50cy50b1N0cmluZygndXRmLTgnKTtcbiAgZGIubG9hZChKU09OLnBhcnNlKGpzb24pKTtcbiAgcmV0dXJuIGRiO1xufVxuXG5leHBvcnQgdHlwZSBTcGVjRGF0YWJhc2UgPSBSZXR1cm5UeXBlPHR5cGVvZiBlbXB0eURhdGFiYXNlPjtcblxuLyoqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggYSBTcGVjRGF0YWJhc2VcbiAqL1xuZXhwb3J0IGNsYXNzIFJpY2hTcGVjRGF0YWJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRiOiBTcGVjRGF0YWJhc2UpIHt9XG5cbiAgLyoqXG4gICAqIEZpbmQgYWxsIHJlc291cmNlcyBvZiBhIGdpdmVuIHR5cGVcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZUJ5VHlwZShjZm5UeXBlOiBzdHJpbmcsIG9wZXJhdGlvbiA9ICdyZXNvdXJjZUJ5VHlwZScpOiBSZXNvdXJjZSB7XG4gICAgY29uc3QgcmVzID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKTtcbiAgICBpZiAocmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke29wZXJhdGlvbn06IG5vIHN1Y2ggcmVzb3VyY2U6ICR7Y2ZuVHlwZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgdHlwZSBkZWZpbml0aW9ucyB1c2VkIGJ5IGEgY2VydGFpbiByZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIHJlc291cmNlVHlwZURlZnMoY2ZuVHlwZTogc3RyaW5nKTogcmVhZG9ubHkgVHlwZURlZmluaXRpb25bXSB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLmRiLmxvb2t1cCgncmVzb3VyY2UnLCAnY2xvdWRGb3JtYXRpb25UeXBlJywgJ2VxdWFscycsIGNmblR5cGUpLm9ubHkoKTtcbiAgICByZXR1cm4gdGhpcy5kYi5mb2xsb3coJ3VzZXNUeXBlJywgcmVzb3VyY2UpLm1hcCgoeCkgPT4geC5lbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSB0eXBlIGRlZmluaXRpb24gZnJvbSBhIGdpdmVuIHByb3BlcnR5IHR5cGVcbiAgICovXG4gIHB1YmxpYyB0cnlGaW5kRGVmKHR5cGU6IFByb3BlcnR5VHlwZSk6IFR5cGVEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdHlwZS50eXBlID09PSAncmVmJyA/IHRoaXMuZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHR5cGUucmVmZXJlbmNlLiRyZWYpIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Entity, Reference, Relationship } from '@cdklabs/tskb';
2
+ import { PropertyType, Resource } from './resource';
3
+ export interface Event extends Entity {
4
+ /**
5
+ * The full name of the EventBridge schema
6
+ *
7
+ * @example aws.s3@ObjectCreated
8
+ */
9
+ readonly name: string;
10
+ /**
11
+ * EventBridge schema description
12
+ */
13
+ readonly description: string;
14
+ /**
15
+ * The source value for this event
16
+ *
17
+ * @example aws.s3
18
+ */
19
+ readonly source: string;
20
+ /**
21
+ * The detailType value for this event
22
+ *
23
+ * @example Object Created
24
+ */
25
+ readonly detailType: string;
26
+ /**
27
+ * Each item is a `ResourceField` describing which property (fieldName)
28
+ * in the event payload contains a resource identifier and the associated
29
+ * typed definition for that resource (the `type` reference).
30
+ *
31
+ * @example Object Created
32
+ */
33
+ readonly resourcesField: Array<ResourceField>;
34
+ readonly properties: EventProperties;
35
+ }
36
+ export interface ResourceField {
37
+ type: Reference<EventTypeDefinition>;
38
+ fieldName?: string;
39
+ }
40
+ export type HasEvent = Relationship<Resource, Event>;
41
+ export type EventProperties = Record<string, EventProperty>;
42
+ export interface EventProperty {
43
+ /**
44
+ * The type of this property
45
+ */
46
+ type: PropertyType;
47
+ /**
48
+ * Is this property required
49
+ *
50
+ * @default false
51
+ */
52
+ required?: boolean;
53
+ }
54
+ export interface EventTypeDefinition extends Entity {
55
+ /**
56
+ * The name of the type
57
+ *
58
+ * @example ObjectCreated
59
+ */
60
+ readonly name: string;
61
+ readonly properties: EventProperties;
62
+ }
63
+ export type EventUsesType = Relationship<Event, EventTypeDefinition>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgUmVmZXJlbmNlLCBSZWxhdGlvbnNoaXAgfSBmcm9tICdAY2RrbGFicy90c2tiJztcbmltcG9ydCB7IFByb3BlcnR5VHlwZSwgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudCBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBFdmVudEJyaWRnZSBzY2hlbWFcbiAgICpcbiAgICogQGV4YW1wbGUgYXdzLnMzQE9iamVjdENyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEV2ZW50QnJpZGdlIHNjaGVtYSBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgdmFsdWUgZm9yIHRoaXMgZXZlbnRcbiAgICpcbiAgICogQGV4YW1wbGUgYXdzLnMzXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXRhaWxUeXBlIHZhbHVlIGZvciB0aGlzIGV2ZW50XG4gICAqXG4gICAqIEBleGFtcGxlIE9iamVjdCBDcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxUeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFYWNoIGl0ZW0gaXMgYSBgUmVzb3VyY2VGaWVsZGAgZGVzY3JpYmluZyB3aGljaCBwcm9wZXJ0eSAoZmllbGROYW1lKVxuICAgKiBpbiB0aGUgZXZlbnQgcGF5bG9hZCBjb250YWlucyBhIHJlc291cmNlIGlkZW50aWZpZXIgYW5kIHRoZSBhc3NvY2lhdGVkXG4gICAqIHR5cGVkIGRlZmluaXRpb24gZm9yIHRoYXQgcmVzb3VyY2UgKHRoZSBgdHlwZWAgcmVmZXJlbmNlKS5cbiAgICpcbiAgICogQGV4YW1wbGUgT2JqZWN0IENyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlc0ZpZWxkOiBBcnJheTxSZXNvdXJjZUZpZWxkPjtcbiAgcmVhZG9ubHkgcHJvcGVydGllczogRXZlbnRQcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRmllbGQge1xuICB0eXBlOiBSZWZlcmVuY2U8RXZlbnRUeXBlRGVmaW5pdGlvbj47XG4gIGZpZWxkTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzRXZlbnQgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIEV2ZW50PjtcblxuZXhwb3J0IHR5cGUgRXZlbnRQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgRXZlbnRQcm9wZXJ0eT47XG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKi9cbiAgdHlwZTogUHJvcGVydHlUeXBlO1xuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50VHlwZURlZmluaXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHR5cGVcbiAgICpcbiAgICogQGV4YW1wbGUgT2JqZWN0Q3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBFdmVudFByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50VXNlc1R5cGUgPSBSZWxhdGlvbnNoaXA8RXZlbnQsIEV2ZW50VHlwZURlZmluaXRpb24+O1xuIl19
@@ -1,5 +1,6 @@
1
1
  import { Entity, Reference, Relationship } from '@cdklabs/tskb';
2
2
  import { SpecDatabase } from './database';
3
+ import { EventTypeDefinition } from './event';
3
4
  export interface Partition extends Entity {
4
5
  readonly partition: string;
5
6
  }
@@ -242,7 +243,7 @@ export interface BuiltinTagType {
242
243
  }
243
244
  export interface DefinitionReference {
244
245
  readonly type: 'ref';
245
- readonly reference: Reference<TypeDefinition>;
246
+ readonly reference: Reference<TypeDefinition | EventTypeDefinition>;
246
247
  }
247
248
  export interface ArrayType<E> {
248
249
  readonly type: 'array';
@@ -317,4 +317,4 @@ class RichPropertyType {
317
317
  }
318
318
  }
319
319
  exports.RichPropertyType = RichPropertyType;
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBNEtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsSUFBa0I7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1Qyw2R0FBNkc7UUFDN0csd0dBQXdHO1FBQ3hHLDhHQUE4RztRQUM5RyxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsMkNBQTJDO1lBQzNDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsRUFBRTtZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsdUdBQXVHO1FB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QUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakgsS0FBSyxPQUFPO2dCQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBhcm5UZW1wbGF0ZT86IHN0cmluZztcbiAgaXNTdGF0ZWZ1bD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0YWdnYWJpbGl0eSBvZiB0aGlzIHJlc291cmNlXG4gICAqXG4gICAqIFVuZGVmaW5lZCBpZiB0aGUgcmVzb3VyY2UgaXMgbm90IHRhZ2dhYmxlLlxuICAgKi9cbiAgdGFnSW5mb3JtYXRpb24/OiBUYWdJbmZvcm1hdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBjaGFuZ2VzIHRvIHRoaXMgcmVzb3VyY2UgbmVlZCB0byBiZSBzY3J1dGluaXplZFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZXNvdXJjZVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcGF0aHMgdG8gcHJvcGVydGllcyB0aGF0IGFsc28gY2F1c2UgcmVwbGFjZW1lbnQuXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gaW5kaWNhdGUgdGhhdCBjZXJ0YWluIHByb3BlcnR5IHBhdGhzIGludG8gdGhpcyByZXNvdXJjZVxuICAgKiB3aWxsIGNhdXNlIHJlcGxhY2VtZW50OyBvbmx5IHJlcGxhY2VtZW50cyB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZFxuICAgKiBieSB0YWdnaW5nIHRoZSBwcm9wZXJ0eSBpbiBhIHR5cGUgZGVmaW5pdGlvbiB3aWxsIGJlIGluY2x1ZGVkIGhlcmVcbiAgICogKGZvciBleGFtcGxlLCBiZWNhdXNlIHRoZSB0YWdnZWQgcHJvcGVydHkgd291bGQgYmUgaW4gYSBwcmVkZWZpbmVkXG4gICAqIHR5cGUgbGlrZSBgdGFnYCkuXG4gICAqXG4gICAqIEFsbCBwcm9wZXJ0aWVzIGluIHRoaXMgbGlzdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBgY2F1c2VzUmVwbGFjZW1lbnQ6ICd5ZXMnYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLVxuICAgKi9cbiAgYWRkaXRpb25hbFJlcGxhY2VtZW50UHJvcGVydGllcz86IHN0cmluZ1tdW107XG59XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlUHJvcGVydGllcyA9IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5PjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlRGVmaW5pdGlvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvcGVydGllczogUmVzb3VyY2VQcm9wZXJ0aWVzO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCByZW5kZXIgdGhpcyB0eXBlIGV2ZW4gaWYgaXQgaXMgdW51c2VkLlxuICAgKi9cbiAgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHlcbiAgICovXG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgcHJvcGVydHkgcmVxdWlyZWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdHlwZSBvZiB0aGlzIHByb3BlcnR5XG4gICAqL1xuICB0eXBlOiBQcm9wZXJ0eVR5cGU7XG5cbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgcHJvcGVydHlcbiAgICpcbiAgICogVGhpcyB2YWx1ZSBpcyBub3QgZGlyZWN0bHkgZnVuY3Rpb25hbDsgaXQgZGVzY3JpYmVzIGhvdyB0aGUgdW5kZXJseWluZyByZXNvdXJjZVxuICAgKiB3aWxsIGJlaGF2ZSBpZiB0aGUgdmFsdWUgaXMgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHVua25vd25cbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3QgZGVwcmVjYXRlZFxuICAgKi9cbiAgZGVwcmVjYXRlZD86IERlcHJlY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBzY3J1dGluaXplZCBzcGVjaWFsbHlcbiAgICpcbiAgICogQGRlZmF1bHQgUHJvcGVydHlTY3J1dGlueVR5cGUuTk9ORVxuICAgKi9cbiAgc2NydXRpbml6YWJsZT86IFByb3BlcnR5U2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb250YWluaW5nIHJlc291cmNlIHdpbGwgYmUgcmVwbGFjZWQgaWYgdGhpcyBwcm9wZXJ0eSBpcyBjaGFuZ2VkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdubydcbiAgICovXG4gIGNhdXNlc1JlcGxhY2VtZW50PzogJ3llcycgfCAnbm8nIHwgJ21heWJlJztcblxuICAvKipcbiAgICogUmVsYXRpb25zaGlwIHJlZmVyZW5jZXMgdG8gb3RoZXIgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzXG4gICAqL1xuICByZWxhdGlvbnNoaXBSZWZzPzogUmVsYXRpb25zaGlwUmVmW107XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoVHlwZWRGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmllbGQ6IFBpY2s8UHJvcGVydHksICd0eXBlJyB8ICdwcmV2aW91c1R5cGVzJz4pIHtcbiAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBpcyB1bmRlZmluZWQnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHlwZXMoKTogUHJvcGVydHlUeXBlW10ge1xuICAgIHJldHVybiBbLi4uKHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA/PyBbXSksIHRoaXMuZmllbGQudHlwZV07XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0eXBlIG9mIHRoaXMgcHJvcGVydHkgd2l0aCBhIG5ldyB0eXBlXG4gICAqXG4gICAqIE9ubHkgaWYgaXQncyBub3QgaW4gdGhlIHNldCBvZiB0eXBlcyBhbHJlYWR5LlxuICAgKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR5cGUgd2FzIHVwZGF0ZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCByaWNoVHlwZSA9IG5ldyBSaWNoUHJvcGVydHlUeXBlKHR5cGUpO1xuXG4gICAgLy8gT25seSBhZGQgdGhpcyB0eXBlIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdC4gV2UgYXJlIG9ubHkgZG9pbmcgY29tcGFyaXNvbnMgd2hlcmUgJ2ludGVnZXInIGFuZCAnbnVtYmVyJ1xuICAgIC8vIGFyZSB0cmVhdGVkIHRoZSBzYW1lLCBmb3IgYWxsIG90aGVyIHR5cGVzIHdlIG5lZWQgc3RyaWN0IGVxdWFsaXR5LiBXZSB1c2VkIHRvIHVzZSAnYXNzaWduYWJsZVRvJyBhcyBhXG4gICAgLy8gY29uZGl0aW9uLCBidXQgdGhlc2UgdHlwZXMgd2lsbCBiZSByZW5kZXJlZCBpbiBib3RoIGNvLSBhbmQgY29udHJhdmFyaWFudCBwb3NpdGlvbnMsIGFuZCBzbyB3ZSByZWFsbHkgY2FuJ3RcbiAgICAvLyBkbyBtdWNoIGJldHRlciB0aGFuIGZ1bGwgZXF1YWxpdHkuXG4gICAgaWYgKHRoaXMudHlwZXMoKS5zb21lKCh0KSA9PiByaWNoVHlwZS5lcXVhbHModCkpKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvLCB0eXBlIGlzIGFscmVhZHkgaW4gdGhlcmUuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBpZiB0aGUgbmV3IHR5cGUgaXMgYHN0cmluZ2AgYW5kIHRoZSBvbGQgdHlwZSBpcyBgZGF0ZS10aW1lYCwgd2UgYXNzdW1lIHRoaXMgaXNcbiAgICAvLyB0aGUgc2FtZSB0eXBlIGJ1dCB3ZSBkcm9wcGVkIHNvbWUgZm9ybWF0dGluZyBpbmZvcm1hdGlvbi4gTm8gbmVlZCB0byBtYWtlIHRoaXMgYSBzZXBhcmF0ZSB0eXBlLlxuICAgIGlmICh0eXBlLnR5cGUgPT09ICdzdHJpbmcnICYmIHRoaXMudHlwZXMoKS5zb21lKCh0KSA9PiB0LnR5cGUgPT09ICdkYXRlLXRpbWUnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZTogaWYgdGhlIG5ldyB0eXBlIGlzIGBzdHJpbmdgIGFuZCB0aGUgb2xkIHR5cGUgaXMgYGpzb25gLCB3ZSBhc3N1bWUgdGhpcyBpcyBhIGNvcnJlY3Rpb25cbiAgICAvLyBvZiBhIGJ1ZzsgdGhlIG9sZCB0eXBlIHdhcyBpbmNvcnJlY3RseSB0eXBlZCBhcyBKc29uLCBhbmQgd2UncmUgbm93IGNvcnJlY3RpbmcgdGhpcy4gU2luY2UgdGhpcyB3YXMgYVxuICAgIC8vIGJ1Zywgd2UgZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBvbGQgdHlwZTogaXQgd2FzIG5ldmVyIGFjY3VyYXRlLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgYmUgbW9yZSBicm9hZCwgYW5kIG9ubHkgbWFpbnRhaW4gdHlwZSBoaXN0b3J5IGlmIHdlIGdvIGZyb21cbiAgICAvLyBganNvbmAgLT4gYG5hbWVkIHR5cGVgLCBvciBgbmFtZWQgdHlwZWAgLT4gYG5hbWVkIHR5cGVgLiAgRm9yIG5vdyBJJ21cbiAgICAvLyB3YXJ5IG9mIGRlc3Ryb3lpbmcgdG9vIG11Y2ggaW5mb3JtYXRpb247IHdlJ2xsIGp1c3QgZG8gdGhlIGZpeCBzcGVjaWZpY2FsbHlcbiAgICAvLyBmb3IgYGpzb25gIC0+IGBzdHJpbmdgLlxuICAgIGlmICh0eXBlLnR5cGUgPT09ICdzdHJpbmcnICYmIHRoaXMuZmllbGQudHlwZS50eXBlID09PSAnanNvbicpIHtcbiAgICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmllbGQucHJldmlvdXNUeXBlcykge1xuICAgICAgdGhpcy5maWVsZC5wcmV2aW91c1R5cGVzID0gW107XG4gICAgfVxuICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcy5wdXNoKHRoaXMuZmllbGQudHlwZSk7XG4gICAgdGhpcy5maWVsZC50eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmljaFByb3BlcnR5IGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICBzdXBlcihwcm9wZXJ0eSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hBdHRyaWJ1dGUgZXh0ZW5kcyBSaWNoVHlwZWRGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGF0dHI6IEF0dHJpYnV0ZSkge1xuICAgIHN1cGVyKGF0dHIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlIHtcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbiAgdHlwZTogUHJvcGVydHlUeXBlO1xuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcbn1cblxuZXhwb3J0IGVudW0gRGVwcmVjYXRpb24ge1xuICAvKipcbiAgICogTm90IGRlcHJlY2F0ZWRcbiAgICovXG4gIE5PTkUgPSAnTk9ORScsXG5cbiAgLyoqXG4gICAqIFdhcm4gYWJvdXQgdXNlXG4gICAqL1xuICBXQVJOID0gJ1dBUk4nLFxuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCB0aGUgdmFsdWUgYXQgYWxsXG4gICAqXG4gICAqIChIYW5kbGUgcHJvcGVydGllcyB0aGF0IHdlcmUgaW5jb3JyZWN0bHkgYWRkZWQgdG8gdGhlIHNwZWMpXG4gICAqL1xuICBJR05PUkUgPSAnSUdOT1JFJyxcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydHlUeXBlID1cbiAgfCBQcmltaXRpdmVUeXBlXG4gIHwgRGVmaW5pdGlvblJlZmVyZW5jZVxuICB8IEJ1aWx0aW5UYWdUeXBlXG4gIHwgQXJyYXlUeXBlPFByb3BlcnR5VHlwZT5cbiAgfCBNYXBUeXBlPFByb3BlcnR5VHlwZT5cbiAgfCBUeXBlVW5pb248UHJvcGVydHlUeXBlPjtcblxuZXhwb3J0IHR5cGUgUHJpbWl0aXZlVHlwZSA9XG4gIHwgU3RyaW5nVHlwZVxuICB8IE51bWJlclR5cGVcbiAgfCBJbnRlZ2VyVHlwZVxuICB8IEJvb2xlYW5UeXBlXG4gIHwgSnNvblR5cGVcbiAgfCBEYXRlVGltZVR5cGVcbiAgfCBOdWxsVHlwZVxuICB8IEJ1aWx0aW5UYWdUeXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xsZWN0aW9uVHlwZSh4OiBQcm9wZXJ0eVR5cGUpOiB4IGlzIEFycmF5VHlwZTxhbnk+IHwgTWFwVHlwZTxhbnk+IHtcbiAgcmV0dXJuIHgudHlwZSA9PT0gJ2FycmF5JyB8fCB4LnR5cGUgPT09ICdtYXAnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0luZm9ybWF0aW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGluc3RydWN0IGNkay5UYWdNYW5hZ2VyIGhvdyB0byBoYW5kbGUgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudDogVGFnVmFyaWFudDtcbn1cblxuZXhwb3J0IHR5cGUgVGFnVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAnYXNnJyB8ICdtYXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1R5cGUge1xuICByZWFkb25seSB0eXBlOiAnc3RyaW5nJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpblRhZ1R5cGUge1xuICByZWFkb25seSB0eXBlOiAndGFnJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bWJlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdlclR5cGUge1xuICByZWFkb25seSB0eXBlOiAnaW50ZWdlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhblR5cGUge1xuICByZWFkb25seSB0eXBlOiAnYm9vbGVhbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblR5cGUge1xuICByZWFkb25seSB0eXBlOiAnanNvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVsbFR5cGUge1xuICByZWFkb25seSB0eXBlOiAnbnVsbCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2RhdGUtdGltZSc7XG59XG5cbi8qKlxuICogVGhlIFwibGVnYWN5XCIgdGFnIHR5cGUgKHVzZWQgaW4gdGhlIG9sZCByZXNvdXJjZSBzcGVjKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdyZWYnO1xuICByZWFkb25seSByZWZlcmVuY2U6IFJlZmVyZW5jZTxUeXBlRGVmaW5pdGlvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlUeXBlPEU+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ2FycmF5JztcbiAgcmVhZG9ubHkgZWxlbWVudDogRTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBUeXBlPEU+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ21hcCc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVVuaW9uPEU+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ3VuaW9uJztcbiAgcmVhZG9ubHkgdHlwZXM6IEVbXTtcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVzb3VyY2UgPSBSZWxhdGlvbnNoaXA8U2VydmljZSwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzUmVzb3VyY2UgPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5leHBvcnQgdHlwZSBSZWdpb25IYXNTZXJ2aWNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgU2VydmljZT47XG5leHBvcnQgdHlwZSBSZXNvdXJjZURvYyA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgRG9jdW1lbnRhdGlvbj47XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VJblJlZ2lvbiA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VJblJlZ2lvbiA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFJlc291cmNlPjtcblxuZXhwb3J0IHR5cGUgVXNlc1R5cGUgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIFR5cGVEZWZpbml0aW9uPjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZUlkZW50aWZpZXIgZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBhcm5UZW1wbGF0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBNYXJrIGEgcmVzb3VyY2UgYXMgYSByZXNvdXJjZSB0aGF0IG5lZWRzIGFkZGl0aW9uYWwgc2NydXRpeSB3aGVuIGFkZGVkLCByZW1vdmVkIG9yIGNoYW5nZWRcbiAqXG4gKiBVc2VkIHRvIG1hcmsgcmVzb3VyY2VzIHRoYXQgcmVwcmVzZW50IHNlY3VyaXR5IHBvbGljaWVzLlxuICovXG5leHBvcnQgZW51bSBSZXNvdXJjZVNjcnV0aW55VHlwZSB7XG4gIC8qKlxuICAgKiBObyBhZGRpdGlvbmFsIHNjcnV0aW55XG4gICAqL1xuICBOb25lID0gJ05vbmUnLFxuXG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IGF0dGFjaGVkIHBvbGljeSBkb2N1bWVudCB0byBhIHJlc291cmNlXG4gICAqXG4gICAqIChDb21tb24gZm9yIFNRUywgU05TLCBTMywgLi4uKVxuICAgKi9cbiAgUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSA9ICdSZXNvdXJjZVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IG9uIGFuIGlkZW50aXR5IHJlc291cmNlXG4gICAqXG4gICAqIChCYXNpY2FsbHkgc2F5aW5nOiB0aGlzIGlzIEFXUzo6SUFNOjpQb2xpY3kpXG4gICAqL1xuICBJZGVudGl0eVBvbGljeVJlc291cmNlID0gJ0lkZW50aXR5UG9saWN5UmVzb3VyY2UnLFxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgTGFtYmRhIFBlcm1pc3Npb24gcG9saWN5XG4gICAqL1xuICBMYW1iZGFQZXJtaXNzaW9uID0gJ0xhbWJkYVBlcm1pc3Npb24nLFxuXG4gIC8qKlxuICAgKiBBbiBpbmdyZXNzIHJ1bGUgb2JqZWN0XG4gICAqL1xuICBJbmdyZXNzUnVsZVJlc291cmNlID0gJ0luZ3Jlc3NSdWxlUmVzb3VyY2UnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBlZ3Jlc3MgcnVsZXNcbiAgICovXG4gIEVncmVzc1J1bGVSZXNvdXJjZSA9ICdFZ3Jlc3NSdWxlUmVzb3VyY2UnLFxuXG4gIC8qKlxuICAgKiBBV1M6OlNTTzo6QXNzaWdubWVudFxuICAgKlxuICAgKiBJQU0gSWRlbnRpdHkgQ2VudGVyIChmb3JtZXJseSBrbm93biBhcyBTU08pXG4gICAqL1xuICBTc29Bc3NpZ25tZW50UmVzb3VyY2UgPSAnU3NvQXNzaWdubWVudFJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086Okluc3RhbmNlQWNjZXNzQ29udHJvbEF0dHJpYnV0ZUNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZSA9ICdTc29JbnN0YW5jZUFDQUNvbmZpZ1Jlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OlBlcm1pc3Npb25TZXRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvUGVybWlzc2lvblNldCA9ICdTc29QZXJtaXNzaW9uU2V0Jyxcbn1cblxuLyoqXG4gKiBNYXJrIGEgcHJvcGVydHkgYXMgYSBwcm9wZXJ0eSB0aGF0IG5lZWRzIGFkZGl0aW9uYWwgc2NydXRpbnkgd2hlbiBpdCBjaGFuZ2VzXG4gKlxuICogVXNlZCB0byBtYXJrIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBzZWN1cml0eS1yZWxhdGVkIGltcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gUHJvcGVydHlTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IGRpcmVjdGx5IG9uIGEgcmVzb3VyY2VcbiAgICovXG4gIElubGluZVJlc291cmNlUG9saWN5ID0gJ0lubGluZVJlc291cmNlUG9saWN5JyxcblxuICAvKipcbiAgICogRWl0aGVyIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBvciBhIGRpY3Rpb25hcnkgb2YgcG9saWN5IGRvY3VtZW50c1xuICAgKi9cbiAgSW5saW5lSWRlbnRpdHlQb2xpY2llcyA9ICdJbmxpbmVJZGVudGl0eVBvbGljaWVzJyxcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXMgKG9uIGFuIGlkZW50aXR5IHJlc291cmNlKVxuICAgKi9cbiAgTWFuYWdlZFBvbGljaWVzID0gJ01hbmFnZWRQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGluZ3Jlc3MgcnVsZXMgKG9uIGEgc2VjdXJpdHkgZ3JvdXApXG4gICAqL1xuICBJbmdyZXNzUnVsZXMgPSAnSW5ncmVzc1J1bGVzJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgRWdyZXNzUnVsZXMgPSAnRWdyZXNzUnVsZXMnLFxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSByZWxhdGlvbnNoaXAgcmVmZXJlbmNlIHRvIGFub3RoZXIgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBSZWYge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgdGhpcyBwcm9wZXJ0eSByZWZlcmVuY2VzXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3BlcnR5IG5hbWUgd2l0aGluIHRoZSByZWZlcmVuY2VkIHJlc291cmNlIChlLmcuLCBcIklkXCIpXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsNkNBQW9EO0FBNEtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsSUFBa0I7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1Qyw2R0FBNkc7UUFDN0csd0dBQXdHO1FBQ3hHLDhHQUE4RztRQUM5RyxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsMkNBQTJDO1lBQzNDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsRUFBRTtZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsdUdBQXVHO1FB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QUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakgsS0FBSyxPQUFPO2dCQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IEV2ZW50VHlwZURlZmluaXRpb24gfSBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBhcm5UZW1wbGF0ZT86IHN0cmluZztcbiAgaXNTdGF0ZWZ1bD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0YWdnYWJpbGl0eSBvZiB0aGlzIHJlc291cmNlXG4gICAqXG4gICAqIFVuZGVmaW5lZCBpZiB0aGUgcmVzb3VyY2UgaXMgbm90IHRhZ2dhYmxlLlxuICAgKi9cbiAgdGFnSW5mb3JtYXRpb24/OiBUYWdJbmZvcm1hdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBjaGFuZ2VzIHRvIHRoaXMgcmVzb3VyY2UgbmVlZCB0byBiZSBzY3J1dGluaXplZFxuICAgKlxuICAgKiBAZGVmYXVsdCBSZXNvdXJjZVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcGF0aHMgdG8gcHJvcGVydGllcyB0aGF0IGFsc28gY2F1c2UgcmVwbGFjZW1lbnQuXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gaW5kaWNhdGUgdGhhdCBjZXJ0YWluIHByb3BlcnR5IHBhdGhzIGludG8gdGhpcyByZXNvdXJjZVxuICAgKiB3aWxsIGNhdXNlIHJlcGxhY2VtZW50OyBvbmx5IHJlcGxhY2VtZW50cyB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZFxuICAgKiBieSB0YWdnaW5nIHRoZSBwcm9wZXJ0eSBpbiBhIHR5cGUgZGVmaW5pdGlvbiB3aWxsIGJlIGluY2x1ZGVkIGhlcmVcbiAgICogKGZvciBleGFtcGxlLCBiZWNhdXNlIHRoZSB0YWdnZWQgcHJvcGVydHkgd291bGQgYmUgaW4gYSBwcmVkZWZpbmVkXG4gICAqIHR5cGUgbGlrZSBgdGFnYCkuXG4gICAqXG4gICAqIEFsbCBwcm9wZXJ0aWVzIGluIHRoaXMgbGlzdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBgY2F1c2VzUmVwbGFjZW1lbnQ6ICd5ZXMnYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLVxuICAgKi9cbiAgYWRkaXRpb25hbFJlcGxhY2VtZW50UHJvcGVydGllcz86IHN0cmluZ1tdW107XG59XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlUHJvcGVydGllcyA9IFJlY29yZDxzdHJpbmcsIFByb3BlcnR5PjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlRGVmaW5pdGlvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvcGVydGllczogUmVzb3VyY2VQcm9wZXJ0aWVzO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCByZW5kZXIgdGhpcyB0eXBlIGV2ZW4gaWYgaXQgaXMgdW51c2VkLlxuICAgKi9cbiAgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgcHJvcGVydHlcbiAgICovXG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgcHJvcGVydHkgcmVxdWlyZWRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdHlwZSBvZiB0aGlzIHByb3BlcnR5XG4gICAqL1xuICB0eXBlOiBQcm9wZXJ0eVR5cGU7XG5cbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgcHJvcGVydHlcbiAgICpcbiAgICogVGhpcyB2YWx1ZSBpcyBub3QgZGlyZWN0bHkgZnVuY3Rpb25hbDsgaXQgZGVzY3JpYmVzIGhvdyB0aGUgdW5kZXJseWluZyByZXNvdXJjZVxuICAgKiB3aWxsIGJlaGF2ZSBpZiB0aGUgdmFsdWUgaXMgbm90IHNwZWNpZmllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHVua25vd25cbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3QgZGVwcmVjYXRlZFxuICAgKi9cbiAgZGVwcmVjYXRlZD86IERlcHJlY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyBwcm9wZXJ0eSBuZWVkcyB0byBiZSBzY3J1dGluaXplZCBzcGVjaWFsbHlcbiAgICpcbiAgICogQGRlZmF1bHQgUHJvcGVydHlTY3J1dGlueVR5cGUuTk9ORVxuICAgKi9cbiAgc2NydXRpbml6YWJsZT86IFByb3BlcnR5U2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb250YWluaW5nIHJlc291cmNlIHdpbGwgYmUgcmVwbGFjZWQgaWYgdGhpcyBwcm9wZXJ0eSBpcyBjaGFuZ2VkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdubydcbiAgICovXG4gIGNhdXNlc1JlcGxhY2VtZW50PzogJ3llcycgfCAnbm8nIHwgJ21heWJlJztcblxuICAvKipcbiAgICogUmVsYXRpb25zaGlwIHJlZmVyZW5jZXMgdG8gb3RoZXIgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzXG4gICAqL1xuICByZWxhdGlvbnNoaXBSZWZzPzogUmVsYXRpb25zaGlwUmVmW107XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoVHlwZWRGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmllbGQ6IFBpY2s8UHJvcGVydHksICd0eXBlJyB8ICdwcmV2aW91c1R5cGVzJz4pIHtcbiAgICBpZiAoZmllbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBpcyB1bmRlZmluZWQnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHlwZXMoKTogUHJvcGVydHlUeXBlW10ge1xuICAgIHJldHVybiBbLi4uKHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA/PyBbXSksIHRoaXMuZmllbGQudHlwZV07XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB0eXBlIG9mIHRoaXMgcHJvcGVydHkgd2l0aCBhIG5ldyB0eXBlXG4gICAqXG4gICAqIE9ubHkgaWYgaXQncyBub3QgaW4gdGhlIHNldCBvZiB0eXBlcyBhbHJlYWR5LlxuICAgKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR5cGUgd2FzIHVwZGF0ZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVHlwZSh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCByaWNoVHlwZSA9IG5ldyBSaWNoUHJvcGVydHlUeXBlKHR5cGUpO1xuXG4gICAgLy8gT25seSBhZGQgdGhpcyB0eXBlIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBpdC4gV2UgYXJlIG9ubHkgZG9pbmcgY29tcGFyaXNvbnMgd2hlcmUgJ2ludGVnZXInIGFuZCAnbnVtYmVyJ1xuICAgIC8vIGFyZSB0cmVhdGVkIHRoZSBzYW1lLCBmb3IgYWxsIG90aGVyIHR5cGVzIHdlIG5lZWQgc3RyaWN0IGVxdWFsaXR5LiBXZSB1c2VkIHRvIHVzZSAnYXNzaWduYWJsZVRvJyBhcyBhXG4gICAgLy8gY29uZGl0aW9uLCBidXQgdGhlc2UgdHlwZXMgd2lsbCBiZSByZW5kZXJlZCBpbiBib3RoIGNvLSBhbmQgY29udHJhdmFyaWFudCBwb3NpdGlvbnMsIGFuZCBzbyB3ZSByZWFsbHkgY2FuJ3RcbiAgICAvLyBkbyBtdWNoIGJldHRlciB0aGFuIGZ1bGwgZXF1YWxpdHkuXG4gICAgaWYgKHRoaXMudHlwZXMoKS5zb21lKCh0KSA9PiByaWNoVHlwZS5lcXVhbHModCkpKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvLCB0eXBlIGlzIGFscmVhZHkgaW4gdGhlcmUuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBpZiB0aGUgbmV3IHR5cGUgaXMgYHN0cmluZ2AgYW5kIHRoZSBvbGQgdHlwZSBpcyBgZGF0ZS10aW1lYCwgd2UgYXNzdW1lIHRoaXMgaXNcbiAgICAvLyB0aGUgc2FtZSB0eXBlIGJ1dCB3ZSBkcm9wcGVkIHNvbWUgZm9ybWF0dGluZyBpbmZvcm1hdGlvbi4gTm8gbmVlZCB0byBtYWtlIHRoaXMgYSBzZXBhcmF0ZSB0eXBlLlxuICAgIGlmICh0eXBlLnR5cGUgPT09ICdzdHJpbmcnICYmIHRoaXMudHlwZXMoKS5zb21lKCh0KSA9PiB0LnR5cGUgPT09ICdkYXRlLXRpbWUnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZTogaWYgdGhlIG5ldyB0eXBlIGlzIGBzdHJpbmdgIGFuZCB0aGUgb2xkIHR5cGUgaXMgYGpzb25gLCB3ZSBhc3N1bWUgdGhpcyBpcyBhIGNvcnJlY3Rpb25cbiAgICAvLyBvZiBhIGJ1ZzsgdGhlIG9sZCB0eXBlIHdhcyBpbmNvcnJlY3RseSB0eXBlZCBhcyBKc29uLCBhbmQgd2UncmUgbm93IGNvcnJlY3RpbmcgdGhpcy4gU2luY2UgdGhpcyB3YXMgYVxuICAgIC8vIGJ1Zywgd2UgZG9uJ3QgbmVlZCB0byBrZWVwIHRoZSBvbGQgdHlwZTogaXQgd2FzIG5ldmVyIGFjY3VyYXRlLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgYmUgbW9yZSBicm9hZCwgYW5kIG9ubHkgbWFpbnRhaW4gdHlwZSBoaXN0b3J5IGlmIHdlIGdvIGZyb21cbiAgICAvLyBganNvbmAgLT4gYG5hbWVkIHR5cGVgLCBvciBgbmFtZWQgdHlwZWAgLT4gYG5hbWVkIHR5cGVgLiAgRm9yIG5vdyBJJ21cbiAgICAvLyB3YXJ5IG9mIGRlc3Ryb3lpbmcgdG9vIG11Y2ggaW5mb3JtYXRpb247IHdlJ2xsIGp1c3QgZG8gdGhlIGZpeCBzcGVjaWZpY2FsbHlcbiAgICAvLyBmb3IgYGpzb25gIC0+IGBzdHJpbmdgLlxuICAgIGlmICh0eXBlLnR5cGUgPT09ICdzdHJpbmcnICYmIHRoaXMuZmllbGQudHlwZS50eXBlID09PSAnanNvbicpIHtcbiAgICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZmllbGQucHJldmlvdXNUeXBlcykge1xuICAgICAgdGhpcy5maWVsZC5wcmV2aW91c1R5cGVzID0gW107XG4gICAgfVxuICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcy5wdXNoKHRoaXMuZmllbGQudHlwZSk7XG4gICAgdGhpcy5maWVsZC50eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmljaFByb3BlcnR5IGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICBzdXBlcihwcm9wZXJ0eSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hBdHRyaWJ1dGUgZXh0ZW5kcyBSaWNoVHlwZWRGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGF0dHI6IEF0dHJpYnV0ZSkge1xuICAgIHN1cGVyKGF0dHIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlIHtcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcbiAgdHlwZTogUHJvcGVydHlUeXBlO1xuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcbn1cblxuZXhwb3J0IGVudW0gRGVwcmVjYXRpb24ge1xuICAvKipcbiAgICogTm90IGRlcHJlY2F0ZWRcbiAgICovXG4gIE5PTkUgPSAnTk9ORScsXG5cbiAgLyoqXG4gICAqIFdhcm4gYWJvdXQgdXNlXG4gICAqL1xuICBXQVJOID0gJ1dBUk4nLFxuXG4gIC8qKlxuICAgKiBEbyBub3QgZW1pdCB0aGUgdmFsdWUgYXQgYWxsXG4gICAqXG4gICAqIChIYW5kbGUgcHJvcGVydGllcyB0aGF0IHdlcmUgaW5jb3JyZWN0bHkgYWRkZWQgdG8gdGhlIHNwZWMpXG4gICAqL1xuICBJR05PUkUgPSAnSUdOT1JFJyxcbn1cblxuZXhwb3J0IHR5cGUgUHJvcGVydHlUeXBlID1cbiAgfCBQcmltaXRpdmVUeXBlXG4gIHwgRGVmaW5pdGlvblJlZmVyZW5jZVxuICB8IEJ1aWx0aW5UYWdUeXBlXG4gIHwgQXJyYXlUeXBlPFByb3BlcnR5VHlwZT5cbiAgfCBNYXBUeXBlPFByb3BlcnR5VHlwZT5cbiAgfCBUeXBlVW5pb248UHJvcGVydHlUeXBlPjtcblxuZXhwb3J0IHR5cGUgUHJpbWl0aXZlVHlwZSA9XG4gIHwgU3RyaW5nVHlwZVxuICB8IE51bWJlclR5cGVcbiAgfCBJbnRlZ2VyVHlwZVxuICB8IEJvb2xlYW5UeXBlXG4gIHwgSnNvblR5cGVcbiAgfCBEYXRlVGltZVR5cGVcbiAgfCBOdWxsVHlwZVxuICB8IEJ1aWx0aW5UYWdUeXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xsZWN0aW9uVHlwZSh4OiBQcm9wZXJ0eVR5cGUpOiB4IGlzIEFycmF5VHlwZTxhbnk+IHwgTWFwVHlwZTxhbnk+IHtcbiAgcmV0dXJuIHgudHlwZSA9PT0gJ2FycmF5JyB8fCB4LnR5cGUgPT09ICdtYXAnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0luZm9ybWF0aW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaG9sZHMgdGhlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGluc3RydWN0IGNkay5UYWdNYW5hZ2VyIGhvdyB0byBoYW5kbGUgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudDogVGFnVmFyaWFudDtcbn1cblxuZXhwb3J0IHR5cGUgVGFnVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAnYXNnJyB8ICdtYXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ1R5cGUge1xuICByZWFkb25seSB0eXBlOiAnc3RyaW5nJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbHRpblRhZ1R5cGUge1xuICByZWFkb25seSB0eXBlOiAndGFnJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bWJlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdlclR5cGUge1xuICByZWFkb25seSB0eXBlOiAnaW50ZWdlcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhblR5cGUge1xuICByZWFkb25seSB0eXBlOiAnYm9vbGVhbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblR5cGUge1xuICByZWFkb25seSB0eXBlOiAnanNvbic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVsbFR5cGUge1xuICByZWFkb25seSB0eXBlOiAnbnVsbCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2RhdGUtdGltZSc7XG59XG5cbi8qKlxuICogVGhlIFwibGVnYWN5XCIgdGFnIHR5cGUgKHVzZWQgaW4gdGhlIG9sZCByZXNvdXJjZSBzcGVjKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdyZWYnO1xuICByZWFkb25seSByZWZlcmVuY2U6IFJlZmVyZW5jZTxUeXBlRGVmaW5pdGlvbiB8IEV2ZW50VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVsYXRpb25zaGlwIHJlZmVyZW5jZSB0byBhbm90aGVyIENsb3VkRm9ybWF0aW9uIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRpb25zaGlwUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIHRoaXMgcHJvcGVydHkgcmVmZXJlbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHdpdGhpbiB0aGUgcmVmZXJlbmNlZCByZXNvdXJjZSAoZS5nLiwgXCJJZFwiKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoUHJvcGVydHlUeXBlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlOiBQcm9wZXJ0eVR5cGUpIHt9XG5cbiAgcHVibGljIGVxdWFscyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGUgJiYgbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLmVxdWFscyhyaHMuZWxlbWVudCk7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09ICdyZWYnICYmIHRoaXMudHlwZS5yZWZlcmVuY2UuJHJlZiA9PT0gcmhzLnJlZmVyZW5jZS4kcmVmO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCBsaHNLZXkgPSB0aGlzLnNvcnRLZXkoKTtcbiAgICAgICAgY29uc3QgcmhzS2V5ID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUocmhzKS5zb3J0S2V5KCk7XG4gICAgICAgIHJldHVybiBsaHNLZXkubGVuZ3RoID09PSByaHNLZXkubGVuZ3RoICYmIGxoc0tleS5ldmVyeSgobCwgaSkgPT4gbCA9PT0gcmhzS2V5W2ldKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIEphdmFTY3JpcHQtZXF1YWwgdG8gdGhlIFJIUyB0eXBlXG4gICAqXG4gICAqIFNhbWUgYXMgbm9ybWFsIGVxdWFsaXR5LCBidXQgY29uc2lkZXIgYGludGVnZXJgIGFuZCBgbnVtYmVyYCB0aGUgc2FtZSB0eXBlcy5cbiAgICovXG4gIHB1YmxpYyBqYXZhc2NyaXB0RXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAvLyBXaWRlbmluZ1xuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCByaHMudHlwZSA9PT0gJ251bWJlcic7XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGUgJiYgbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLmphdmFzY3JpcHRFcXVhbHMocmhzLmVsZW1lbnQpO1xuXG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGlmIChyaHMudHlwZSAhPT0gJ3VuaW9uJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSB0eXBlIGluIHRoaXMgdW5pb24gbmVlZHMgdG8gYmUgZXF1YWwgb25lIHR5cGUgaW4gUkhTXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZXMuZXZlcnkoKHQxKSA9PiByaHMudHlwZXMuc29tZSgodDIpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQxKS5qYXZhc2NyaXB0RXF1YWxzKHQyKSkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBGb3IgYW55dGhpbmcgZWxzZSwgbmVlZCBzdHJpY3QgZXF1YWxpdHlcbiAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKHJocyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgdHlwZSBpcyBhc3NpZ25hYmxlIHRvIHRoZSBSSFMgdHlwZS5cbiAgICpcbiAgICogVGhpcyBpcyBtZWFucyBldmVyeSB0eXBlIG1lbWJlciBvZiB0aGUgTEhTIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgUkhTIHR5cGVcbiAgICovXG4gIHB1YmxpYyBhc3NpZ25hYmxlVG8ocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHRyYWN0TWVtYmVycyA9ICh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBQcm9wZXJ0eVR5cGVbXSA9PiAodHlwZS50eXBlID09ICd1bmlvbicgPyB0eXBlLnR5cGVzIDogW3R5cGVdKTtcbiAgICBjb25zdCBhc1JpY2hUeXBlID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFJpY2hQcm9wZXJ0eVR5cGUgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICBjb25zdCByaHNNZW1iZXJzID0gZXh0cmFjdE1lbWJlcnMocmhzKTtcbiAgICBmb3IgKGNvbnN0IGxoc01lbWJlciBvZiBleHRyYWN0TWVtYmVycyh0aGlzLnR5cGUpLm1hcChhc1JpY2hUeXBlKSkge1xuICAgICAgaWYgKCFyaHNNZW1iZXJzLnNvbWUoKHR5cGUpID0+IGxoc01lbWJlci5lcXVhbHModHlwZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB2ZXJzaW9uIG9mIHRoaXMgdHlwZSwgYnV0IHdpdGggYWxsIHR5cGUgdW5pb25zIGluIGEgcmVndWxhcml6ZWQgb3JkZXJcbiAgICovXG4gIHB1YmxpYyBub3JtYWxpemUoZGI6IFNwZWNEYXRhYmFzZSk6IFJpY2hQcm9wZXJ0eVR5cGUge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBuZXcgUmljaFByb3BlcnR5VHlwZSh7XG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLnR5cGUsXG4gICAgICAgICAgZWxlbWVudDogbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLm5vcm1hbGl6ZShkYikudHlwZSxcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IHR5cGVzID0gdGhpcy50eXBlLnR5cGVzXG4gICAgICAgICAgLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkubm9ybWFsaXplKGRiKSlcbiAgICAgICAgICAubWFwKCh0KSA9PiBbdCwgdC5zb3J0S2V5KGRiKV0gYXMgY29uc3QpO1xuICAgICAgICB0eXBlcy5zb3J0KHNvcnRLZXlDb21wYXJhdG9yKChbXywgc29ydEtleV0pID0+IHNvcnRLZXkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiAndW5pb24nLFxuICAgICAgICAgIHR5cGVzOiB0eXBlcy5tYXAoKFt0LCBfXSkgPT4gdC50eXBlKSxcbiAgICAgICAgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RyaW5naWZ5KGRiOiBTcGVjRGF0YWJhc2UsIHdpdGhJZCA9IHRydWUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gYEFycmF5PCR7bmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnN0cmluZ2lmeShkYiwgd2l0aElkKX0+YDtcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBgTWFwPHN0cmluZywgJHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgY29uc3QgdHlwZSA9IGRiLmdldCgndHlwZURlZmluaXRpb24nLCB0aGlzLnR5cGUucmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuIHdpdGhJZCA/IGAke3R5cGUubmFtZX0oJHt0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWZ9KWAgOiB0eXBlLm5hbWU7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCkpLmpvaW4oJyB8ICcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzb3J0YWJsZSBrZXkgYmFzZWQgb24gdGhpcyB0eXBlXG4gICAqXG4gICAqIElmIGEgZGF0YWJhc2UgaXMgZ2l2ZW4sIHR5cGUgZGVmaW5pdGlvbnMgd2lsbCBiZSBzb3J0ZWQgYmFzZWQgb24gdHlwZSBuYW1lLFxuICAgKiBvdGhlcndpc2Ugb24gaWRlbnRpZmllclxuICAgKi9cbiAgcHVibGljIHNvcnRLZXkoZGI/OiBTcGVjRGF0YWJhc2UpOiBzdHJpbmdbXSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gWycwJywgdGhpcy50eXBlLnR5cGVdO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIFsnMScsIHRoaXMudHlwZS50eXBlLCAuLi5uZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc29ydEtleShkYildO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgcmV0dXJuIFsnMicsIHRoaXMudHlwZS50eXBlLCBkYj8uZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpPy5uYW1lID8/IHRoaXMudHlwZS5yZWZlcmVuY2UuJHJlZl07XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IHR5cGVLZXlzID0gdGhpcy50eXBlLnR5cGVzLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkuc29ydEtleShkYikpO1xuICAgICAgICB0eXBlS2V5cy5zb3J0KHNvcnRLZXlDb21wYXJhdG9yKCh4KSA9PiB4KSk7XG4gICAgICAgIHJldHVybiBbJzMnLCB0aGlzLnR5cGUudHlwZSwgLi4udHlwZUtleXMuZmxhdE1hcCgoeCkgPT4geCldO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -50,7 +50,7 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "version": "0.0.181",
53
+ "version": "0.0.182",
54
54
  "jest": {
55
55
  "coverageProvider": "v8",
56
56
  "testMatch": [