truemark-cdk-lib 1.28.0 → 1.28.2

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.
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handler = handler;
4
4
  const crypto = require("node:crypto");
5
- const credential_provider_node_1 = require("@aws-sdk/credential-provider-node");
6
5
  const opensearch_1 = require("@opensearch-project/opensearch");
7
6
  const aws_1 = require("@opensearch-project/opensearch/aws");
8
7
  function success(event, physicalResourceId, indexName) {
@@ -63,11 +62,8 @@ async function handler(event) {
63
62
  ...(0, aws_1.AwsSigv4Signer)({
64
63
  region,
65
64
  service: 'aoss',
66
- getCredentials: () => {
67
- // Any other method to acquire a new Credentials object can be used.
68
- const credentialsProvider = (0, credential_provider_node_1.defaultProvider)();
69
- return credentialsProvider();
70
- },
65
+ // getCredentials is omitted so the signer falls back to the
66
+ // @aws-sdk/credential-provider-node module provided by the Lambda runtime
71
67
  }),
72
68
  node: endpoint,
73
69
  });
@@ -146,4 +142,4 @@ async function handler(event) {
146
142
  : fail(event, physicalResourceId, `Error: ${e}`, indexName);
147
143
  }
148
144
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWJhc2UtY29sbGVjdGlvbi1pbmRleC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy1iZWRyb2NrL2xpYi9rbm93bGVkZ2UtYmFzZS1jb2xsZWN0aW9uLWluZGV4LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3RUEsMEJBNklDO0FBck5ELHNDQUFzQztBQUN0QyxnRkFBa0U7QUFDbEUsK0RBQXNEO0FBQ3RELDREQUFrRTtBQTJCbEUsU0FBUyxPQUFPLENBQ2QsS0FBMEIsRUFDMUIsa0JBQTBCLEVBQzFCLFNBQWlCO0lBRWpCLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUztRQUNqQixrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUNYLEtBQTBCLEVBQzFCLGtCQUEwQixFQUMxQixNQUFjLEVBQ2QsU0FBaUI7SUFFakIsT0FBTztRQUNMLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxNQUFNO1FBQ2Qsa0JBQWtCLEVBQUUsa0JBQWtCO1FBQ3RDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtRQUMxQyxNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxTQUFTO1NBQ3JCO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFhO0lBQ3pCLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFTSxLQUFLLFVBQVUsT0FBTyxDQUMzQixLQUEwQjtJQUUxQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELHVCQUF1QjtJQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7SUFDN0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztJQUNyRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7SUFDN0QsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztJQUNqRSxNQUFNLG9CQUFvQixHQUFHLFFBQVEsQ0FDbkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUM3QyxFQUFFLENBQ0gsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUNULEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsdUNBQXVDLEVBQ3ZDLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FDVCxLQUFLLEVBQ0wsa0JBQWtCLEVBQ2xCLDZDQUE2QyxFQUM3QyxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBTSxDQUFDO1FBQ3hCLEdBQUcsSUFBQSxvQkFBYyxFQUFDO1lBQ2hCLE1BQU07WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQ25CLG9FQUFvRTtnQkFDcEUsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLDBDQUFlLEdBQUUsQ0FBQztnQkFDOUMsT0FBTyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDO1FBQ0YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDSCxpREFBaUQ7UUFDakQsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELHlHQUF5RztRQUN6RyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ2pELEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFO3dCQUNMLEdBQUcsRUFBRSxJQUFJO3FCQUNWO2lCQUNGO2dCQUNELFFBQVEsRUFBRTtvQkFDUixVQUFVLEVBQUU7d0JBQ1YsQ0FBQyxlQUFlLENBQUMsRUFBRTs0QkFDakIsSUFBSSxFQUFFLFlBQVk7NEJBQ2xCLFNBQVMsRUFBRSxvQkFBb0I7NEJBQy9CLE1BQU0sRUFBRTtnQ0FDTixNQUFNLEVBQUUsT0FBTztnQ0FDZixJQUFJLEVBQUUsTUFBTTs2QkFDYjt5QkFDRjt3QkFDRCxDQUFDLGFBQWEsQ0FBQyxFQUFFOzRCQUNmLElBQUksRUFBRSxNQUFNO3lCQUNiO3dCQUNELENBQUMsaUJBQWlCLENBQUMsRUFBRTs0QkFDbkIsSUFBSSxFQUFFLFNBQVM7eUJBQ2hCO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FDWCx5QkFBeUIsRUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUNqQyxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQ1QsS0FBSyxFQUNMLGtCQUFrQixFQUNsQiwyQkFBMkIsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQzdELFNBQVMsQ0FDVixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEdBQUcsQ0FBQztZQUNGLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztnQkFDakUsSUFBSSxXQUFXLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUNULDhCQUE4QixFQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUMxQyxDQUFDO29CQUNGLHdIQUF3SDtvQkFDeEgsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUMzRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUM7d0JBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLDBCQUEwQixDQUFDLENBQUM7b0JBQzFELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDL0QsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ25FLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUMsaURBQWlEO1FBQ3ZFLE9BQU8sSUFBSSxDQUNULEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsNkVBQTZFLEVBQzdFLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsWUFBWSxLQUFLO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtkZWZhdWx0UHJvdmlkZXJ9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSc7XG5pbXBvcnQge0NsaWVudH0gZnJvbSAnQG9wZW5zZWFyY2gtcHJvamVjdC9vcGVuc2VhcmNoJztcbmltcG9ydCB7QXdzU2lndjRTaWduZXJ9IGZyb20gJ0BvcGVuc2VhcmNoLXByb2plY3Qvb3BlbnNlYXJjaC9hd3MnO1xuXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY3JwZy1yZWYtcmVxdWVzdHMuaHRtbFxuaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlRXZlbnQge1xuICByZWFkb25seSBSZXF1ZXN0VHlwZTogJ0NyZWF0ZScgfCAnVXBkYXRlJyB8ICdEZWxldGUnO1xuICByZWFkb25seSBSZXNwb25zZVVSTDogc3RyaW5nO1xuICByZWFkb25seSBTdGFja0lkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFJlcXVlc3RJZDogc3RyaW5nO1xuICByZWFkb25seSBSZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgcmVhZG9ubHkgTG9naWNhbFJlc291cmNlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgUGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nOyAvLyBOb3Qgc2VudCBmb3IgJ0NyZWF0ZScgcmVxdWVzdHNcbiAgcmVhZG9ubHkgUmVzb3VyY2VQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBPbGRSZXNvdXJjZVByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvY3JwZy1yZWYtcmVzcG9uc2VzLmh0bWxcbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgU3RhdHVzOiAnU1VDQ0VTUycgfCAnRkFJTEVEJztcbiAgUmVhc29uPzogc3RyaW5nOyAvLyBSZXF1aXJlZCBpZiBzdGF0dXMgaXMgRkFJTEVEXG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZzsgLy8gSWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBzYW1lLCBpdCBpcyBjb25zaWRlcmVkIGEgbm9ybWFsIHVwZGF0ZS4gSWYgdGhlIHZhbHVlIHJldHVybmVkIGlzIGRpZmZlcmVudCwgQVdTIENsb3VkRm9ybWF0aW9uIHJlY29nbml6ZXMgdGhlIHVwZGF0ZSBhcyBhIHJlcGxhY2VtZW50IGFuZCBzZW5kcyBhIGRlbGV0ZSByZXF1ZXN0IHRvIHRoZSBvbGQgcmVzb3VyY2UuXG4gIFN0YWNrSWQ6IHN0cmluZzsgLy8gVGhpcyByZXNwb25zZSB2YWx1ZSBzaG91bGQgYmUgY29waWVkIHZlcmJhdGltIGZyb20gdGhlIHJlcXVlc3QuXG4gIFJlcXVlc3RJZDogc3RyaW5nOyAvLyBUaGlzIHJlc3BvbnNlIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQgdmVyYmF0aW0gZnJvbSB0aGUgcmVxdWVzdC5cbiAgTG9naWNhbFJlc291cmNlSWQ6IHN0cmluZzsgLy8gIFRoaXMgcmVzcG9uc2UgdmFsdWUgc2hvdWxkIGJlIGNvcGllZCB2ZXJiYXRpbSBmcm9tIHRoZSByZXF1ZXN0LlxuICBOb0VjaG8/OiBib29sZWFuOyAvLyBJZiB0aGUgdmFsdWUgaXMgdHJ1ZSwgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBkb2Vzbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHByb3BlcnR5IHZhbHVlIGluIHRoZSByZXNwb25zZS5cbiAgRGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47IC8vIEEgbWFwIG9mIGtleS12YWx1ZSBwYWlycyB0aGF0IHJlcHJlc2VudCB0aGUgb3V0cHV0IGRhdGEgb2YgdGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlci5cbn1cblxuZnVuY3Rpb24gc3VjY2VzcyhcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4gIHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nLFxuICBpbmRleE5hbWU6IHN0cmluZyxcbik6IEN1c3RvbVJlc291cmNlUmVzcG9uc2Uge1xuICByZXR1cm4ge1xuICAgIFN0YXR1czogJ1NVQ0NFU1MnLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YToge1xuICAgICAgSW5kZXhOYW1lOiBpbmRleE5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmFpbChcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4gIHBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nLFxuICByZWFzb246IHN0cmluZyxcbiAgaW5kZXhOYW1lOiBzdHJpbmcsXG4pOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgcmV0dXJuIHtcbiAgICBTdGF0dXM6ICdGQUlMRUQnLFxuICAgIFJlYXNvbjogcmVhc29uLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFN0YWNrSWQ6IGV2ZW50LlN0YWNrSWQsXG4gICAgUmVxdWVzdElkOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgIE5vRWNobzogZmFsc2UsXG4gICAgRGF0YToge1xuICAgICAgSW5kZXhOYW1lOiBpbmRleE5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFzaCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodmFsdWUpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKFxuICBldmVudDogQ3VzdG9tUmVzb3VyY2VFdmVudCxcbik6IFByb21pc2U8Q3VzdG9tUmVzb3VyY2VSZXNwb25zZT4ge1xuICBjb25zb2xlLmxvZygnUmVjZWl2ZWQgZXZlbnQnLCBKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMikpO1xuICAvLyBJbml0aWFsaXplIHZhcmlhYmxlc1xuICBjb25zdCBlbmRwb2ludCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5vcGVuU2VhcmNoRW5kcG9pbnQ7XG4gIGNvbnN0IGluZGV4TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5pbmRleE5hbWU7XG4gIGNvbnN0IHBoeXNpY2FsUmVzb3VyY2VJZCA9IGhhc2goYCR7ZW5kcG9pbnR9LyR7aW5kZXhOYW1lfWApO1xuICBjb25zdCBtZXRhZGF0YUZpZWxkTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5tZXRhZGF0YUZpZWxkTmFtZTtcbiAgY29uc3QgdGV4dEZpZWxkTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy50ZXh0RmllbGROYW1lO1xuICBjb25zdCB2ZWN0b3JGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudmVjdG9yRmllbGROYW1lO1xuICBjb25zdCB2ZWN0b3JGaWVsZERpbWVuc2lvbiA9IHBhcnNlSW50KFxuICAgIGV2ZW50LlJlc291cmNlUHJvcGVydGllcy52ZWN0b3JGaWVsZERpbWVuc2lvbixcbiAgICAxMCxcbiAgKTtcbiAgaWYgKE51bWJlci5pc05hTih2ZWN0b3JGaWVsZERpbWVuc2lvbikpIHtcbiAgICBjb25zb2xlLmVycm9yKCd2ZWN0b3JGaWVsZERpbWVuc2lvbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICd2ZWN0b3JGaWVsZERpbWVuc2lvbiBtdXN0IGJlIGEgbnVtYmVyJyxcbiAgICAgIGluZGV4TmFtZSxcbiAgICApO1xuICB9XG4gIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52LkFXU19SRUdJT047XG4gIGlmICghcmVnaW9uKSB7XG4gICAgY29uc29sZS5lcnJvcignQVdTX1JFR0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcpO1xuICAgIHJldHVybiBmYWlsKFxuICAgICAgZXZlbnQsXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAnQVdTX1JFR0lPTiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyByZXF1aXJlZCcsXG4gICAgICBpbmRleE5hbWUsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdlIGRvbid0IHN1cHBvcnQgdXBkYXRlcyBvciBkZWxldGVzIHJpZ2h0IG5vdyBzbyByZXR1cm4gc3VjY2Vzc1xuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnIHx8IGV2ZW50LlJlcXVlc3RUeXBlID09PSAnVXBkYXRlJykge1xuICAgIGNvbnNvbGUubG9nKCdJZ25vcmluZyByZXF1ZXN0IHR5cGUnLCBldmVudC5SZXF1ZXN0VHlwZSk7XG4gICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgfVxuXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBDbGllbnQoe1xuICAgIC4uLkF3c1NpZ3Y0U2lnbmVyKHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIHNlcnZpY2U6ICdhb3NzJyxcbiAgICAgIGdldENyZWRlbnRpYWxzOiAoKSA9PiB7XG4gICAgICAgIC8vIEFueSBvdGhlciBtZXRob2QgdG8gYWNxdWlyZSBhIG5ldyBDcmVkZW50aWFscyBvYmplY3QgY2FuIGJlIHVzZWQuXG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBkZWZhdWx0UHJvdmlkZXIoKTtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzUHJvdmlkZXIoKTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgbm9kZTogZW5kcG9pbnQsXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgLy8gSWYgZW5kcG9pbnQgZXhpc3RzLCByZXR1cm4gc3VjY2VzcyBhbmQgbW92ZSBvblxuICAgIGNvbnN0IGluZGV4RXhpc3RzID0gYXdhaXQgY2xpZW50LmluZGljZXMuZXhpc3RzKHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgaWYgKGluZGV4RXhpc3RzLmJvZHkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbmRleCBhbHJlYWR5IGV4aXN0cycpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgICB9XG4gICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZlcmxlc3MtdmVjdG9yLXNlYXJjaC5odG1sXG4gICAgY29uc3QgY3JlYXRlUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuaW5kaWNlcy5jcmVhdGUoe1xuICAgICAgaW5kZXg6IGluZGV4TmFtZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAga25uOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgW3ZlY3RvckZpZWxkTmFtZV06IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2tubl92ZWN0b3InLFxuICAgICAgICAgICAgICBkaW1lbnNpb246IHZlY3RvckZpZWxkRGltZW5zaW9uLFxuICAgICAgICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICAgICAgICBlbmdpbmU6ICdmYWlzcycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2huc3cnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFt0ZXh0RmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW21ldGFkYXRhRmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAna2V5d29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjcmVhdGVSZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdGYWlsZWQgdG8gY3JlYXRlIGluZGV4OicsXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlLmJvZHkuZXJyb3IucmVhc29uLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWlsKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBpbmRleDogJHtjcmVhdGVSZXNwb25zZS5ib2R5LmVycm9yLnJlYXNvbn1gLFxuICAgICAgICBpbmRleE5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZG8ge1xuICAgICAgY291bnQrKztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGdldFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmluZGljZXMuZ2V0KHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgICAgIGlmIChnZXRSZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICdSZXRyaWV2ZWQgaW5kZXggc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGdldFJlc3BvbnNlLmJvZHksIG51bGwsIDIpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGV2ZW4gdGhvdWdoIHRoZSBpbmRleCBpcyBjcmVhdGVkLCB3ZSBuZWVkIHRvIHdhaXQgb3Igd2UgZ2V0IGEgNDAzIGVycm9yIG9uIHRoZSBCZWRyb2NrIEtub3dsZWRnZSBCYXNlXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTUwMDApKTtcbiAgICAgICAgICByZXR1cm4gc3VjY2VzcyhldmVudCwgcGh5c2ljYWxSZXNvdXJjZUlkLCBpbmRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoZS5tZXNzYWdlLmluY2x1ZGVzKCdpbmRleF9ub3RfZm91bmRfZXhjZXB0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBdHRlbXB0ICR7Y291bnR9IC0gSW5kZXggbm90IHlldCBjcmVhdGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGUubWVzc2FnZSwgaW5kZXhOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpO1xuICAgIH0gd2hpbGUgKGNvdW50IDwgODApOyAvLyBUcmllcyB1cCB0byA0IG1pbnV0ZXMgODAgKiAzMDAwIC8gMTAwMCAvIDYwID00XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgaW5kZXggY3JlYXRpb24uIE1hbnVhbCBpbnRlcnZlbnRpb24gbWF5IGJlIG5lY2Vzc2FyeS4nLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICA/IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgZS5tZXNzYWdlLCBpbmRleE5hbWUpXG4gICAgICA6IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgfVxufVxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWJhc2UtY29sbGVjdGlvbi1pbmRleC1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy1iZWRyb2NrL2xpYi9rbm93bGVkZ2UtYmFzZS1jb2xsZWN0aW9uLWluZGV4LWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1RUEsMEJBMElDO0FBak5ELHNDQUFzQztBQUN0QywrREFBc0Q7QUFDdEQsNERBQWtFO0FBMkJsRSxTQUFTLE9BQU8sQ0FDZCxLQUEwQixFQUMxQixrQkFBMEIsRUFDMUIsU0FBaUI7SUFFakIsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLGtCQUFrQixFQUFFLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7UUFDMUMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsU0FBUztTQUNyQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxJQUFJLENBQ1gsS0FBMEIsRUFDMUIsa0JBQTBCLEVBQzFCLE1BQWMsRUFDZCxTQUFpQjtJQUVqQixPQUFPO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxrQkFBa0I7UUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1FBQzFDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLFNBQVM7U0FDckI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEtBQWE7SUFDekIsT0FBTyxNQUFNLENBQUMsVUFBVSxD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LENBQUMsWUFBWSxLQUFLO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtDbGllbnR9IGZyb20gJ0BvcGVuc2VhcmNoLXByb2plY3Qvb3BlbnNlYXJjaCc7XG5pbXBvcnQge0F3c1NpZ3Y0U2lnbmVyfSBmcm9tICdAb3BlbnNlYXJjaC1wcm9qZWN0L29wZW5zZWFyY2gvYXdzJztcblxuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2NycGctcmVmLXJlcXVlc3RzLmh0bWxcbmludGVyZmFjZSBDdXN0b21SZXNvdXJjZUV2ZW50IHtcbiAgcmVhZG9ubHkgUmVxdWVzdFR5cGU6ICdDcmVhdGUnIHwgJ1VwZGF0ZScgfCAnRGVsZXRlJztcbiAgcmVhZG9ubHkgUmVzcG9uc2VVUkw6IHN0cmluZztcbiAgcmVhZG9ubHkgU3RhY2tJZDogc3RyaW5nO1xuICByZWFkb25seSBSZXF1ZXN0SWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgUmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IExvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZzsgLy8gTm90IHNlbnQgZm9yICdDcmVhdGUnIHJlcXVlc3RzXG4gIHJlYWRvbmx5IFJlc291cmNlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmVhZG9ubHkgT2xkUmVzb3VyY2VQcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2NycGctcmVmLXJlc3BvbnNlcy5odG1sXG5pbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSB7XG4gIFN0YXR1czogJ1NVQ0NFU1MnIHwgJ0ZBSUxFRCc7XG4gIFJlYXNvbj86IHN0cmluZzsgLy8gUmVxdWlyZWQgaWYgc3RhdHVzIGlzIEZBSUxFRFxuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmc7IC8vIElmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSwgaXQgaXMgY29uc2lkZXJlZCBhIG5vcm1hbCB1cGRhdGUuIElmIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyBkaWZmZXJlbnQsIEFXUyBDbG91ZEZvcm1hdGlvbiByZWNvZ25pemVzIHRoZSB1cGRhdGUgYXMgYSByZXBsYWNlbWVudCBhbmQgc2VuZHMgYSBkZWxldGUgcmVxdWVzdCB0byB0aGUgb2xkIHJlc291cmNlLlxuICBTdGFja0lkOiBzdHJpbmc7IC8vIFRoaXMgcmVzcG9uc2UgdmFsdWUgc2hvdWxkIGJlIGNvcGllZCB2ZXJiYXRpbSBmcm9tIHRoZSByZXF1ZXN0LlxuICBSZXF1ZXN0SWQ6IHN0cmluZzsgLy8gVGhpcyByZXNwb25zZSB2YWx1ZSBzaG91bGQgYmUgY29waWVkIHZlcmJhdGltIGZyb20gdGhlIHJlcXVlc3QuXG4gIExvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmc7IC8vICBUaGlzIHJlc3BvbnNlIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQgdmVyYmF0aW0gZnJvbSB0aGUgcmVxdWVzdC5cbiAgTm9FY2hvPzogYm9vbGVhbjsgLy8gSWYgdGhlIHZhbHVlIGlzIHRydWUsIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gZG9lc24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSBwcm9wZXJ0eSB2YWx1ZSBpbiB0aGUgcmVzcG9uc2UuXG4gIERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyAvLyBBIG1hcCBvZiBrZXktdmFsdWUgcGFpcnMgdGhhdCByZXByZXNlbnQgdGhlIG91dHB1dCBkYXRhIG9mIHRoZSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIuXG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3MoXG4gIGV2ZW50OiBDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZyxcbiAgaW5kZXhOYW1lOiBzdHJpbmcsXG4pOiBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgcmV0dXJuIHtcbiAgICBTdGF0dXM6ICdTVUNDRVNTJyxcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IHtcbiAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGZhaWwoXG4gIGV2ZW50OiBDdXN0b21SZXNvdXJjZUV2ZW50LFxuICBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZyxcbiAgcmVhc29uOiBzdHJpbmcsXG4gIGluZGV4TmFtZTogc3RyaW5nLFxuKTogQ3VzdG9tUmVzb3VyY2VSZXNwb25zZSB7XG4gIHJldHVybiB7XG4gICAgU3RhdHVzOiAnRkFJTEVEJyxcbiAgICBSZWFzb246IHJlYXNvbixcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBTdGFja0lkOiBldmVudC5TdGFja0lkLFxuICAgIFJlcXVlc3RJZDogZXZlbnQuUmVxdWVzdElkLFxuICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCxcbiAgICBOb0VjaG86IGZhbHNlLFxuICAgIERhdGE6IHtcbiAgICAgIEluZGV4TmFtZTogaW5kZXhOYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhhc2godmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihcbiAgZXZlbnQ6IEN1c3RvbVJlc291cmNlRXZlbnQsXG4pOiBQcm9taXNlPEN1c3RvbVJlc291cmNlUmVzcG9uc2U+IHtcbiAgY29uc29sZS5sb2coJ1JlY2VpdmVkIGV2ZW50JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgLy8gSW5pdGlhbGl6ZSB2YXJpYWJsZXNcbiAgY29uc3QgZW5kcG9pbnQgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMub3BlblNlYXJjaEVuZHBvaW50O1xuICBjb25zdCBpbmRleE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuaW5kZXhOYW1lO1xuICBjb25zdCBwaHlzaWNhbFJlc291cmNlSWQgPSBoYXNoKGAke2VuZHBvaW50fS8ke2luZGV4TmFtZX1gKTtcbiAgY29uc3QgbWV0YWRhdGFGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMubWV0YWRhdGFGaWVsZE5hbWU7XG4gIGNvbnN0IHRleHRGaWVsZE5hbWUgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudGV4dEZpZWxkTmFtZTtcbiAgY29uc3QgdmVjdG9yRmllbGROYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLnZlY3RvckZpZWxkTmFtZTtcbiAgY29uc3QgdmVjdG9yRmllbGREaW1lbnNpb24gPSBwYXJzZUludChcbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMudmVjdG9yRmllbGREaW1lbnNpb24sXG4gICAgMTAsXG4gICk7XG4gIGlmIChOdW1iZXIuaXNOYU4odmVjdG9yRmllbGREaW1lbnNpb24pKSB7XG4gICAgY29uc29sZS5lcnJvcigndmVjdG9yRmllbGREaW1lbnNpb24gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIHJldHVybiBmYWlsKFxuICAgICAgZXZlbnQsXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICAndmVjdG9yRmllbGREaW1lbnNpb24gbXVzdCBiZSBhIG51bWJlcicsXG4gICAgICBpbmRleE5hbWUsXG4gICAgKTtcbiAgfVxuICBjb25zdCByZWdpb24gPSBwcm9jZXNzLmVudi5BV1NfUkVHSU9OO1xuICBpZiAoIXJlZ2lvbikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0FXU19SRUdJT04gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnKTtcbiAgICByZXR1cm4gZmFpbChcbiAgICAgIGV2ZW50LFxuICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgJ0FXU19SRUdJT04gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgcmVxdWlyZWQnLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH1cblxuICAvLyBXZSBkb24ndCBzdXBwb3J0IHVwZGF0ZXMgb3IgZGVsZXRlcyByaWdodCBub3cgc28gcmV0dXJuIHN1Y2Nlc3NcbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnRGVsZXRlJyB8fCBldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ1VwZGF0ZScpIHtcbiAgICBjb25zb2xlLmxvZygnSWdub3JpbmcgcmVxdWVzdCB0eXBlJywgZXZlbnQuUmVxdWVzdFR5cGUpO1xuICAgIHJldHVybiBzdWNjZXNzKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGluZGV4TmFtZSk7XG4gIH1cblxuICBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KHtcbiAgICAuLi5Bd3NTaWd2NFNpZ25lcih7XG4gICAgICByZWdpb24sXG4gICAgICBzZXJ2aWNlOiAnYW9zcycsXG4gICAgICAvLyBnZXRDcmVkZW50aWFscyBpcyBvbWl0dGVkIHNvIHRoZSBzaWduZXIgZmFsbHMgYmFjayB0byB0aGVcbiAgICAgIC8vIEBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbm9kZSBtb2R1bGUgcHJvdmlkZWQgYnkgdGhlIExhbWJkYSBydW50aW1lXG4gICAgfSksXG4gICAgbm9kZTogZW5kcG9pbnQsXG4gIH0pO1xuXG4gIHRyeSB7XG4gICAgLy8gSWYgZW5kcG9pbnQgZXhpc3RzLCByZXR1cm4gc3VjY2VzcyBhbmQgbW92ZSBvblxuICAgIGNvbnN0IGluZGV4RXhpc3RzID0gYXdhaXQgY2xpZW50LmluZGljZXMuZXhpc3RzKHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgaWYgKGluZGV4RXhpc3RzLmJvZHkpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdJbmRleCBhbHJlYWR5IGV4aXN0cycpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgaW5kZXhOYW1lKTtcbiAgICB9XG4gICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9vcGVuc2VhcmNoLXNlcnZpY2UvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZlcmxlc3MtdmVjdG9yLXNlYXJjaC5odG1sXG4gICAgY29uc3QgY3JlYXRlUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuaW5kaWNlcy5jcmVhdGUoe1xuICAgICAgaW5kZXg6IGluZGV4TmFtZSxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAga25uOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG1hcHBpbmdzOiB7XG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgW3ZlY3RvckZpZWxkTmFtZV06IHtcbiAgICAgICAgICAgICAgdHlwZTogJ2tubl92ZWN0b3InLFxuICAgICAgICAgICAgICBkaW1lbnNpb246IHZlY3RvckZpZWxkRGltZW5zaW9uLFxuICAgICAgICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICAgICAgICBlbmdpbmU6ICdmYWlzcycsXG4gICAgICAgICAgICAgICAgbmFtZTogJ2huc3cnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFt0ZXh0RmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW21ldGFkYXRhRmllbGROYW1lXToge1xuICAgICAgICAgICAgICB0eXBlOiAna2V5d29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjcmVhdGVSZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdGYWlsZWQgdG8gY3JlYXRlIGluZGV4OicsXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlLmJvZHkuZXJyb3IucmVhc29uLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWlsKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgICBgRmFpbGVkIHRvIGNyZWF0ZSBpbmRleDogJHtjcmVhdGVSZXNwb25zZS5ib2R5LmVycm9yLnJlYXNvbn1gLFxuICAgICAgICBpbmRleE5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgZG8ge1xuICAgICAgY291bnQrKztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGdldFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmluZGljZXMuZ2V0KHtpbmRleDogaW5kZXhOYW1lfSk7XG4gICAgICAgIGlmIChnZXRSZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICdSZXRyaWV2ZWQgaW5kZXggc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGdldFJlc3BvbnNlLmJvZHksIG51bGwsIDIpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIGV2ZW4gdGhvdWdoIHRoZSBpbmRleCBpcyBjcmVhdGVkLCB3ZSBuZWVkIHRvIHdhaXQgb3Igd2UgZ2V0IGEgNDAzIGVycm9yIG9uIHRoZSBCZWRyb2NrIEtub3dsZWRnZSBCYXNlXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTUwMDApKTtcbiAgICAgICAgICByZXR1cm4gc3VjY2VzcyhldmVudCwgcGh5c2ljYWxSZXNvdXJjZUlkLCBpbmRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBpZiAoZS5tZXNzYWdlLmluY2x1ZGVzKCdpbmRleF9ub3RfZm91bmRfZXhjZXB0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBBdHRlbXB0ICR7Y291bnR9IC0gSW5kZXggbm90IHlldCBjcmVhdGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGV2ZW50LCBwaHlzaWNhbFJlc291cmNlSWQsIGUubWVzc2FnZSwgaW5kZXhOYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwMCkpO1xuICAgIH0gd2hpbGUgKGNvdW50IDwgODApOyAvLyBUcmllcyB1cCB0byA0IG1pbnV0ZXMgODAgKiAzMDAwIC8gMTAwMCAvIDYwID00XG4gICAgcmV0dXJuIGZhaWwoXG4gICAgICBldmVudCxcbiAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgaW5kZXggY3JlYXRpb24uIE1hbnVhbCBpbnRlcnZlbnRpb24gbWF5IGJlIG5lY2Vzc2FyeS4nLFxuICAgICAgaW5kZXhOYW1lLFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yXG4gICAgICA/IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgZS5tZXNzYWdlLCBpbmRleE5hbWUpXG4gICAgICA6IGZhaWwoZXZlbnQsIHBoeXNpY2FsUmVzb3VyY2VJZCwgYEVycm9yOiAke2V9YCwgaW5kZXhOYW1lKTtcbiAgfVxufVxuIl19
@@ -4,6 +4,7 @@ exports.AutoBackup = void 0;
4
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
5
  const aws_backup_1 = require("aws-cdk-lib/aws-backup");
6
6
  const aws_events_1 = require("aws-cdk-lib/aws-events");
7
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
8
  const aws_cdk_1 = require("../../aws-cdk");
8
9
  class AutoBackup extends aws_cdk_1.ExtendedConstruct {
9
10
  daily(days) {
@@ -33,9 +34,12 @@ class AutoBackup extends aws_cdk_1.ExtendedConstruct {
33
34
  });
34
35
  }
35
36
  tagSelection(plan, tagValue) {
36
- plan.addSelection('Selection', {
37
+ const selection = plan.addSelection('Selection', {
37
38
  resources: [aws_backup_1.BackupResource.fromTag('backup:policy', tagValue)],
38
39
  });
40
+ // The default backup policy does not cover S3, so a tagged bucket fails
41
+ // with a permission error until the S3-specific policy is attached.
42
+ selection.grantPrincipal.addManagedPolicy(aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('AWSBackupServiceRolePolicyForS3Backup'));
39
43
  }
40
44
  constructor(scope, id, props = {}) {
41
45
  super(scope, id);
@@ -81,4 +85,4 @@ class AutoBackup extends aws_cdk_1.ExtendedConstruct {
81
85
  }
82
86
  }
83
87
  exports.AutoBackup = AutoBackup;
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2JhY2t1cC1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXBhdHRlcm5zLWF1dG9iYWNrdXAvbGliL2F1dG9iYWNrdXAtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxQztBQUNyQyx1REFNZ0M7QUFDaEMsdURBQWdEO0FBRWhELDJDQUFnRDtBQWdCaEQsTUFBYSxVQUFXLFNBQVEsMkJBQWlCO0lBQ3ZDLEtBQUssQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSwyQkFBYyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGtCQUFrQixFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLENBQUM7WUFDM0QsV0FBVyxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLDJCQUFjLENBQUM7WUFDeEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsa0JBQWtCLEVBQUUscUJBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxHQUFHO2dCQUNULE1BQU0sRUFBRSxHQUFHO2dCQUNYLE9BQU8sRUFBRSxLQUFLO2FBQ2YsQ0FBQztZQUNGLFdBQVcsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSwyQkFBYyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLGtCQUFrQixFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVB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QUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkUsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQ0FBaUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQTdGRCxnQ0E2RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9ufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBCYWNrdXBQbGFuLFxuICBCYWNrdXBQbGFuUnVsZSxcbiAgQmFja3VwUmVzb3VyY2UsXG4gIEJhY2t1cFZhdWx0LFxuICB0eXBlIENmbkJhY2t1cFZhdWx0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmFja3VwJztcbmltcG9ydCB7U2NoZWR1bGV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHR5cGUge0NvbnN0cnVjdH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge0V4dGVuZGVkQ29uc3RydWN0fSBmcm9tICcuLi8uLi9hd3MtY2RrJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQmFja3VwUHJvcHMge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgYXBwbGllcyBBV1MgQmFja3VwIFZhdWx0IExvY2sgdG8gdGhlIEF1dG9CYWNrdXAgdmF1bHQuXG4gICAqIE5vdGU6IFZhdWx0IExvY2sgYXBwbGllcyB0byBhbGwgcmVjb3ZlcnkgcG9pbnRzIGluIHRoZSB2YXVsdC5cbiAgICovXG4gIGVuYWJsZUltbXV0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gcHJvdmlkZWQgKG1pbiAzKSwgVmF1bHQgTG9jayBpcyBDb21wbGlhbmNlIG1vZGUuXG4gICAqIFdoZW4gb21pdHRlZCwgVmF1bHQgTG9jayBpcyBHb3Zlcm5hbmNlIG1vZGUuXG4gICAqL1xuICB2YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9CYWNrdXAgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdCB7XG4gIHByaXZhdGUgZGFpbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdEYWlseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2hvdXI6ICc1JywgbWludXRlOiAnMCd9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3ZWVrbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdXZWVrbHknLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBTY2hlZHVsZS5jcm9uKHtcbiAgICAgICAgaG91cjogJzUnLFxuICAgICAgICBtaW51dGU6ICcwJyxcbiAgICAgICAgd2Vla0RheTogJ1NBVCcsXG4gICAgICB9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb250aGx5KGRheXM6IG51bWJlcik6IEJhY2t1cFBsYW5SdWxlIHtcbiAgICByZXR1cm4gbmV3IEJhY2t1cFBsYW5SdWxlKHtcbiAgICAgIHJ1bGVOYW1lOiAnTW9udGhseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2RheTogJzEnLCBob3VyOiAnNScsIG1pbnV0ZTogJzAnfSksXG4gICAgICBtb3ZlVG9Db2xkU3RvcmFnZUFmdGVyOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWdTZWxlY3Rpb24ocGxhbjogQmFja3VwUGxhbiwgdGFnVmFsdWU6IHN0cmluZykge1xuICAgIHBsYW4uYWRkU2VsZWN0aW9uKCdTZWxlY3Rpb24nLCB7XG4gICAgICByZXNvdXJjZXM6IFtCYWNrdXBSZXNvdXJjZS5mcm9tVGFnKCdiYWNrdXA6cG9saWN5JywgdGFnVmFsdWUpXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvQmFja3VwUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBiYWNrdXBWYXVsdCA9IG5ldyBCYWNrdXBWYXVsdCh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGJhY2t1cFZhdWx0TmFtZTogJ0F1dG9CYWNrdXAnLFxuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgVmF1bHQgTG9jayB3aGVuIGVuYWJsZUltbXV0YWJsZSBpcyB0cnVlXG4gICAgaWYgKHByb3BzLmVuYWJsZUltbXV0YWJsZSkge1xuICAgICAgY29uc3QgY2ZuVmF1bHQgPSBiYWNrdXBWYXVsdC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5CYWNrdXBWYXVsdDtcbiAgICAgIGNmblZhdWx0LmxvY2tDb25maWd1cmF0aW9uID0ge1xuICAgICAgICBtaW5SZXRlbnRpb25EYXlzOiAxLFxuICAgICAgICBtYXhSZXRlbnRpb25EYXlzOiAyNTU1LFxuICAgICAgICAuLi4ocHJvcHMudmF1bHRMb2NrQ2hhbmdlYWJsZUZvckRheXMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8ge2NoYW5nZWFibGVGb3JEYXlzOiBwcm9wcy52YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5c31cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFdlZWsgPSBuZXcgQmFja3VwUGxhbih0aGlzLCAnRGVmYXVsdFdlZWsnLCB7XG4gICAgICBiYWNrdXBWYXVsdCxcbiAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoNyldLFxuICAgIH0pO1xuICAgIHRoaXMudGFnU2VsZWN0aW9uKGRlZmF1bHRXZWVrLCAnZGVmYXVsdC13ZWVrJyk7XG5cbiAgICBjb25zdCBkZWZhdWx0TW9udGggPSBuZXcgQmFja3VwUGxhbih0aGlzLCAnRGVmYXVsdE1vbnRoJywge1xuICAgICAgYmFja3VwVmF1bHQsXG4gICAgICBiYWNrdXBQbGFuUnVsZXM6IFt0aGlzLmRhaWx5KDM1KV0sXG4gICAgfSk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdE1vbnRoLCAnZGVmYXVsdC1tb250aCcpO1xuXG4gICAgY29uc3QgZGVmYXVsdFF1YXJ0ZXIgPSBuZXcgQmFja3VwUGxhbih0aGlzLCAnRGVmYXVsdFF1YXJ0ZXInLCB7XG4gICAgICBiYWNrdXBWYXVsdCxcbiAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpLCB0aGlzLndlZWtseSg5MCldLFxuICAgIH0pO1xuICAgIHRoaXMudGFnU2VsZWN0aW9uKGRlZmF1bHRRdWFydGVyLCAnZGVmYXVsdC1xdWFydGVyJyk7XG5cbiAgICBjb25zdCBkZWZhdWx0RGFpbHkzNVdlZWtseTkwTW9udGhseTM2NSA9IG5ldyBCYWNrdXBQbGFuKFxuICAgICAgdGhpcyxcbiAgICAgICdEZWZhdWx0WWVhcicsXG4gICAgICB7XG4gICAgICAgIGJhY2t1cFZhdWx0LFxuICAgICAgICBiYWNrdXBQbGFuUnVsZXM6IFt0aGlzLmRhaWx5KDM1KSwgdGhpcy53ZWVrbHkoOTApLCB0aGlzLm1vbnRobHkoMzY1KV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdERhaWx5MzVXZWVrbHk5ME1vbnRobHkzNjUsICdkZWZhdWx0LXllYXInKTtcblxuICAgIGNvbnN0IGRlZmF1bHREYWlseTM1V2Vla2x5OTBNb250aGx5MjU1NSA9IG5ldyBCYWNrdXBQbGFuKFxuICAgICAgdGhpcyxcbiAgICAgICdEZWZhdWx0N1llYXJzJyxcbiAgICAgIHtcbiAgICAgICAgYmFja3VwVmF1bHQsXG4gICAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpLCB0aGlzLndlZWtseSg5MCksIHRoaXMubW9udGhseSgyNTU1KV0sXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdERhaWx5MzVXZWVrbHk5ME1vbnRobHkyNTU1LCAnZGVmYXVsdC03LXllYXJzJyk7XG4gIH1cbn1cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2JhY2t1cC1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXBhdHRlcm5zLWF1dG9iYWNrdXAvbGliL2F1dG9iYWNrdXAtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFxQztBQUNyQyx1REFNZ0M7QUFDaEMsdURBQWdEO0FBQ2hELGlEQUE4RDtBQUU5RCwyQ0FBZ0Q7QUFnQmhELE1BQWEsVUFBVyxTQUFRLDJCQUFpQjtJQUN2QyxLQUFLLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksMkJBQWMsQ0FBQztZQUN4QixRQUFRLEVBQUUsT0FBTztZQUNqQixrQkFBa0IsRUFBRSxxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDO1lBQzNELFdBQVcsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSwyQkFBYyxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGtCQUFrQixFQUFFLHFCQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLEVBQUUsR0FBRztnQkFDVCxNQUFNLEVBQUUsR0FBRztnQkFDWCxPQUFPLEVBQUUsS0FBSzthQUNmLENBQUM7WUFDRixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksMkJBQWMsQ0FBQztZQUN4QixRQUFRLEVBQUUsU0FBUztZQUNuQixrQkFBa0IsRUFBRSxxQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFN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QUVwRSxNQUFNLGlDQUFpQyxHQUFHLElBQUksdUJBQVUsQ0FDdEQsSUFBSSxFQUNKLGVBQWUsRUFDZjtZQUNFLFdBQVc7WUFDWCxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2RSxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLGlDQUFpQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBcEdELGdDQW9HQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RHVyYXRpb259IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEJhY2t1cFBsYW4sXG4gIEJhY2t1cFBsYW5SdWxlLFxuICBCYWNrdXBSZXNvdXJjZSxcbiAgQmFja3VwVmF1bHQsXG4gIHR5cGUgQ2ZuQmFja3VwVmF1bHQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iYWNrdXAnO1xuaW1wb3J0IHtTY2hlZHVsZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQge3R5cGUgSVJvbGUsIE1hbmFnZWRQb2xpY3l9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHR5cGUge0NvbnN0cnVjdH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge0V4dGVuZGVkQ29uc3RydWN0fSBmcm9tICcuLi8uLi9hd3MtY2RrJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQmFja3VwUHJvcHMge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgYXBwbGllcyBBV1MgQmFja3VwIFZhdWx0IExvY2sgdG8gdGhlIEF1dG9CYWNrdXAgdmF1bHQuXG4gICAqIE5vdGU6IFZhdWx0IExvY2sgYXBwbGllcyB0byBhbGwgcmVjb3ZlcnkgcG9pbnRzIGluIHRoZSB2YXVsdC5cbiAgICovXG4gIGVuYWJsZUltbXV0YWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gcHJvdmlkZWQgKG1pbiAzKSwgVmF1bHQgTG9jayBpcyBDb21wbGlhbmNlIG1vZGUuXG4gICAqIFdoZW4gb21pdHRlZCwgVmF1bHQgTG9jayBpcyBHb3Zlcm5hbmNlIG1vZGUuXG4gICAqL1xuICB2YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5cz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9CYWNrdXAgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdCB7XG4gIHByaXZhdGUgZGFpbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdEYWlseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2hvdXI6ICc1JywgbWludXRlOiAnMCd9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3ZWVrbHkoZGF5czogbnVtYmVyKTogQmFja3VwUGxhblJ1bGUge1xuICAgIHJldHVybiBuZXcgQmFja3VwUGxhblJ1bGUoe1xuICAgICAgcnVsZU5hbWU6ICdXZWVrbHknLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBTY2hlZHVsZS5jcm9uKHtcbiAgICAgICAgaG91cjogJzUnLFxuICAgICAgICBtaW51dGU6ICcwJyxcbiAgICAgICAgd2Vla0RheTogJ1NBVCcsXG4gICAgICB9KSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtb250aGx5KGRheXM6IG51bWJlcik6IEJhY2t1cFBsYW5SdWxlIHtcbiAgICByZXR1cm4gbmV3IEJhY2t1cFBsYW5SdWxlKHtcbiAgICAgIHJ1bGVOYW1lOiAnTW9udGhseScsXG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246IFNjaGVkdWxlLmNyb24oe2RheTogJzEnLCBob3VyOiAnNScsIG1pbnV0ZTogJzAnfSksXG4gICAgICBtb3ZlVG9Db2xkU3RvcmFnZUFmdGVyOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgIGRlbGV0ZUFmdGVyOiBEdXJhdGlvbi5kYXlzKGRheXMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWdTZWxlY3Rpb24ocGxhbjogQmFja3VwUGxhbiwgdGFnVmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHBsYW4uYWRkU2VsZWN0aW9uKCdTZWxlY3Rpb24nLCB7XG4gICAgICByZXNvdXJjZXM6IFtCYWNrdXBSZXNvdXJjZS5mcm9tVGFnKCdiYWNrdXA6cG9saWN5JywgdGFnVmFsdWUpXSxcbiAgICB9KTtcbiAgICAvLyBUaGUgZGVmYXVsdCBiYWNrdXAgcG9saWN5IGRvZXMgbm90IGNvdmVyIFMzLCBzbyBhIHRhZ2dlZCBidWNrZXQgZmFpbHNcbiAgICAvLyB3aXRoIGEgcGVybWlzc2lvbiBlcnJvciB1bnRpbCB0aGUgUzMtc3BlY2lmaWMgcG9saWN5IGlzIGF0dGFjaGVkLlxuICAgIChzZWxlY3Rpb24uZ3JhbnRQcmluY2lwYWwgYXMgSVJvbGUpLmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgJ0FXU0JhY2t1cFNlcnZpY2VSb2xlUG9saWN5Rm9yUzNCYWNrdXAnLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9CYWNrdXBQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGJhY2t1cFZhdWx0ID0gbmV3IEJhY2t1cFZhdWx0KHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgYmFja3VwVmF1bHROYW1lOiAnQXV0b0JhY2t1cCcsXG4gICAgfSk7XG5cbiAgICAvLyBBcHBseSBWYXVsdCBMb2NrIHdoZW4gZW5hYmxlSW1tdXRhYmxlIGlzIHRydWVcbiAgICBpZiAocHJvcHMuZW5hYmxlSW1tdXRhYmxlKSB7XG4gICAgICBjb25zdCBjZm5WYXVsdCA9IGJhY2t1cFZhdWx0Lm5vZGUuZGVmYXVsdENoaWxkIGFzIENmbkJhY2t1cFZhdWx0O1xuICAgICAgY2ZuVmF1bHQubG9ja0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIG1pblJldGVudGlvbkRheXM6IDEsXG4gICAgICAgIG1heFJldGVudGlvbkRheXM6IDI1NTUsXG4gICAgICAgIC4uLihwcm9wcy52YXVsdExvY2tDaGFuZ2VhYmxlRm9yRGF5cyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB7Y2hhbmdlYWJsZUZvckRheXM6IHByb3BzLnZhdWx0TG9ja0NoYW5nZWFibGVGb3JEYXlzfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0V2VlayA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0V2VlaycsIHtcbiAgICAgIGJhY2t1cFZhdWx0LFxuICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSg3KV0sXG4gICAgfSk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdFdlZWssICdkZWZhdWx0LXdlZWsnKTtcblxuICAgIGNvbnN0IGRlZmF1bHRNb250aCA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0TW9udGgnLCB7XG4gICAgICBiYWNrdXBWYXVsdCxcbiAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpXSxcbiAgICB9KTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0TW9udGgsICdkZWZhdWx0LW1vbnRoJyk7XG5cbiAgICBjb25zdCBkZWZhdWx0UXVhcnRlciA9IG5ldyBCYWNrdXBQbGFuKHRoaXMsICdEZWZhdWx0UXVhcnRlcicsIHtcbiAgICAgIGJhY2t1cFZhdWx0LFxuICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSgzNSksIHRoaXMud2Vla2x5KDkwKV0sXG4gICAgfSk7XG4gICAgdGhpcy50YWdTZWxlY3Rpb24oZGVmYXVsdFF1YXJ0ZXIsICdkZWZhdWx0LXF1YXJ0ZXInKTtcblxuICAgIGNvbnN0IGRlZmF1bHREYWlseTM1V2Vla2x5OTBNb250aGx5MzY1ID0gbmV3IEJhY2t1cFBsYW4oXG4gICAgICB0aGlzLFxuICAgICAgJ0RlZmF1bHRZZWFyJyxcbiAgICAgIHtcbiAgICAgICAgYmFja3VwVmF1bHQsXG4gICAgICAgIGJhY2t1cFBsYW5SdWxlczogW3RoaXMuZGFpbHkoMzUpLCB0aGlzLndlZWtseSg5MCksIHRoaXMubW9udGhseSgzNjUpXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0RGFpbHkzNVdlZWtseTkwTW9udGhseTM2NSwgJ2RlZmF1bHQteWVhcicpO1xuXG4gICAgY29uc3QgZGVmYXVsdERhaWx5MzVXZWVrbHk5ME1vbnRobHkyNTU1ID0gbmV3IEJhY2t1cFBsYW4oXG4gICAgICB0aGlzLFxuICAgICAgJ0RlZmF1bHQ3WWVhcnMnLFxuICAgICAge1xuICAgICAgICBiYWNrdXBWYXVsdCxcbiAgICAgICAgYmFja3VwUGxhblJ1bGVzOiBbdGhpcy5kYWlseSgzNSksIHRoaXMud2Vla2x5KDkwKSwgdGhpcy5tb250aGx5KDI1NTUpXSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLnRhZ1NlbGVjdGlvbihkZWZhdWx0RGFpbHkzNVdlZWtseTkwTW9udGhseTI1NTUsICdkZWZhdWx0LTcteWVhcnMnKTtcbiAgfVxufVxuIl19
@@ -1,2 +1,3 @@
1
+ export * from './nat-instance';
1
2
  export * from './network-parameters';
2
3
  export * from './standard-network';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./nat-instance"), exports);
17
18
  __exportStar(require("./network-parameters"), exports);
18
19
  __exportStar(require("./standard-network"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXZwYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFxQztBQUNyQyxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25ldHdvcmstcGFyYW1ldGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3N0YW5kYXJkLW5ldHdvcmsnO1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXZwYy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQjtBQUMvQix1REFBcUM7QUFDckMscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXQtaW5zdGFuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uZXR3b3JrLXBhcmFtZXRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGFuZGFyZC1uZXR3b3JrJztcbiJdfQ==
@@ -0,0 +1,166 @@
1
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
2
+ import type { Construct } from 'constructs';
3
+ import { ExtendedConstruct, type ExtendedConstructProps } from '../../aws-cdk/index';
4
+ /**
5
+ * An additional file to write via cloud-init write_files.
6
+ */
7
+ export interface NatInstanceWriteFile {
8
+ /** Absolute path on the instance where the file will be written. */
9
+ readonly path: string;
10
+ /** File content. */
11
+ readonly content: string;
12
+ /** Octal file permissions string, e.g. '0755'. */
13
+ readonly permissions?: string;
14
+ }
15
+ /**
16
+ * Properties for NatInstance.
17
+ */
18
+ export interface NatInstanceProps extends ExtendedConstructProps {
19
+ /**
20
+ * VPC to place the NAT instance in.
21
+ */
22
+ readonly vpc: ec2.IVpc;
23
+ /**
24
+ * The public subnet where the ENI and instance will live.
25
+ */
26
+ readonly publicSubnet: ec2.ISubnet;
27
+ /**
28
+ * CIDR blocks of private subnets. Used for the security group ingress rule
29
+ * so that private instances can route traffic through the NAT instance.
30
+ */
31
+ readonly privateSubnetCidrBlocks: string[];
32
+ /**
33
+ * Whether to run the ASG at desired capacity of 1. When false the ASG is
34
+ * set to desired/min=0, effectively pausing the NAT instance without
35
+ * destroying the ENI or other resources. Default is true.
36
+ *
37
+ * @default true
38
+ */
39
+ readonly enabled?: boolean;
40
+ /**
41
+ * IDs of private route tables that should receive a 0.0.0.0/0 default
42
+ * route pointing to the NAT instance ENI. Typically one per AZ.
43
+ */
44
+ readonly privateRouteTableIds?: string[];
45
+ /**
46
+ * Custom AMI ID. When omitted the latest Amazon Linux 2023 standard AMI
47
+ * is used, filtered by the resolved architecture. The standard edition
48
+ * includes the SSM agent for remote management.
49
+ */
50
+ readonly imageId?: string;
51
+ /**
52
+ * CPU architecture used for the AMI lookup. Default is ARM_64, which
53
+ * corresponds to the default t4g.micro instance type.
54
+ *
55
+ * @default ec2.AmazonLinuxCpuType.ARM_64
56
+ */
57
+ readonly architecture?: ec2.AmazonLinuxCpuType;
58
+ /**
59
+ * EC2 instance types for the Auto Scaling Group mixed instances policy.
60
+ * Defaults based on architecture: t4g.micro for ARM64 (~$6/month on-demand),
61
+ * t3a.micro for X86_64 (~$7.60/month on-demand).
62
+ *
63
+ * @default [new ec2.InstanceType('t4g.micro')] for ARM64, [new ec2.InstanceType('t3a.micro')] for X86_64
64
+ */
65
+ readonly instanceTypes?: ec2.InstanceType[];
66
+ /**
67
+ * Use Spot instances instead of On-Demand. Spot can reduce cost to ~$1/month
68
+ * but the instance may be interrupted with a 2-minute warning. Default is false.
69
+ *
70
+ * @default false
71
+ */
72
+ readonly useSpotInstance?: boolean;
73
+ /**
74
+ * Name of an existing EC2 key pair to allow SSH access. When omitted,
75
+ * AWS Systems Manager Session Manager (enabled via the attached SSM policy)
76
+ * is the only console access method.
77
+ */
78
+ readonly keyName?: string;
79
+ /**
80
+ * Additional cloud-init write_files entries appended after the built-in
81
+ * NAT scripts. Useful for injecting custom configuration files.
82
+ */
83
+ readonly additionalWriteFiles?: NatInstanceWriteFile[];
84
+ /**
85
+ * Additional cloud-init runcmd entries appended after /opt/nat/runonce.sh.
86
+ * Each inner array represents one command invocation (argv style).
87
+ */
88
+ readonly additionalRunCmds?: string[][];
89
+ /**
90
+ * ARN of the IAM managed policy attached to the instance role for Systems
91
+ * Manager access. When omitted, uses AmazonSSMManagedInstanceCore resolved
92
+ * for the stack's partition (works in GovCloud and China).
93
+ *
94
+ * @default AmazonSSMManagedInstanceCore (partition-agnostic)
95
+ */
96
+ readonly ssmPolicyArn?: string;
97
+ }
98
+ /**
99
+ * A self-healing, cost-optimised NAT instance for private subnet egress.
100
+ *
101
+ * This is a CDK port of the truemark/nat-instance Terraform module. It
102
+ * provisions:
103
+ * - A dedicated secondary Elastic Network Interface (ENI) with source/dest
104
+ * check disabled. Private subnets route to this ENI, which persists across
105
+ * instance replacements. Actual NAT egress happens through the instance's
106
+ * primary interface (which has an auto-assigned public IP by default).
107
+ * - An IAM role with AmazonSSMManagedInstanceCore and the EC2 permissions
108
+ * needed for snat.sh to attach the secondary ENI at boot.
109
+ * - An EC2 Launch Template running Amazon Linux 2023 standard (ARM64 by
110
+ * default) with a cloud-init user-data that installs iptables, attaches
111
+ * the ENI, enables IP forwarding, and sets up NAT masquerading.
112
+ * - An Auto Scaling Group (desired=1) that auto-replaces the instance on
113
+ * failure, keeping the ENI persistent across replacements.
114
+ * - Optional 0.0.0.0/0 routes in private route tables pointing to the ENI.
115
+ *
116
+ * **Usage with StandardNetwork:**
117
+ * ```ts
118
+ * const network = new StandardNetwork(this, 'Network', {
119
+ * name: 'prod',
120
+ * vpcCidr: '10.0.0.0/20',
121
+ * natType: 'none', // no managed NAT gateway
122
+ * });
123
+ *
124
+ * const nat = new NatInstance(this, 'Nat', {
125
+ * vpc: network.vpc,
126
+ * publicSubnet: network.vpc.selectSubnets({subnetGroupName: 'public'}).subnets[0],
127
+ * privateSubnetCidrBlocks: ['10.0.0.0/24'],
128
+ * privateRouteTableIds: network.vpc
129
+ * .selectSubnets({subnetGroupName: 'private'})
130
+ * .subnets.map(s => s.routeTable.routeTableId),
131
+ * });
132
+ *
133
+ * // The instance's primary interface gets an auto-assigned public IP.
134
+ * // For a stable outbound IP, allocate and associate an EIP with the
135
+ * // instance's primary interface using ASG lifecycle hooks or tags.
136
+ * // Example:
137
+ * // const eip = new ec2.CfnEIP(this, 'NatEip', {domain: 'vpc'});
138
+ * // Associate the EIP with new instances via lifecycle hook or tag matching.
139
+ * ```
140
+ *
141
+ * > **Note:** This construct is optimised for cost (ARM64 spot/on-demand
142
+ * > t4g.micro at ~$2–6/month) and is suitable for dev/staging environments.
143
+ * > For production use prefer AWS NAT Gateway or a larger instance type with
144
+ * > `useSpotInstance: false`.
145
+ */
146
+ export declare class NatInstance extends ExtendedConstruct {
147
+ /**
148
+ * CloudFormation resource ID of the dedicated secondary ENI. Private subnet
149
+ * routes point to this ENI, which persists across instance replacements.
150
+ * Note: NAT egress occurs through the primary interface, not this ENI.
151
+ */
152
+ readonly eniId: string;
153
+ /**
154
+ * Primary private IPv4 address of the dedicated ENI.
155
+ */
156
+ readonly eniPrivateIp: string;
157
+ /**
158
+ * Security group ID of the NAT instance security group.
159
+ */
160
+ readonly sgId: string;
161
+ /**
162
+ * Name of the IAM role attached to the NAT instance.
163
+ */
164
+ readonly iamRoleName: string;
165
+ constructor(scope: Construct, id: string, props: NatInstanceProps);
166
+ }