cdk-assets 2.3.0 → 2.7.0

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/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
189
+ Copyright 2018-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
package/NOTICE CHANGED
@@ -1,2 +1,2 @@
1
1
  AWS Cloud Development Kit (AWS CDK)
2
- Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ Copyright 2018-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -26,12 +26,8 @@ async function main() {
26
26
  throw new Error(`unable to find CDK Docker credentials at: ${docker_credentials_1.cdkCredentialsConfigFile()}`);
27
27
  }
28
28
  // Read the domain to fetch from stdin
29
- let rawDomain = fs.readFileSync(0, { encoding: 'utf-8' }).trim();
30
- // Paranoid handling to ensure new URL() doesn't throw if the schema is missing.
31
- // Not convinced docker will ever pass in a url like 'index.docker.io/v1', but just in case...
32
- rawDomain = rawDomain.includes('://') ? rawDomain : `https://${rawDomain}`;
33
- const domain = new URL(rawDomain).hostname;
34
- const credentials = await docker_credentials_1.fetchDockerLoginCredentials(new lib_1.DefaultAwsClient(), config, domain);
29
+ let endpoint = fs.readFileSync(0, { encoding: 'utf-8' }).trim();
30
+ const credentials = await docker_credentials_1.fetchDockerLoginCredentials(new lib_1.DefaultAwsClient(), config, endpoint);
35
31
  // Write the credentials back to stdout
36
32
  fs.writeFileSync(1, JSON.stringify(credentials));
37
33
  }
@@ -40,4 +36,4 @@ main().catch(e => {
40
36
  console.error(e.stack);
41
37
  process.exitCode = 1;
42
38
  });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILHlCQUF5QjtBQUN6QixnQ0FBMEM7QUFFMUMsMEVBQWdJO0FBRWhJLEtBQUssVUFBVSxJQUFJO0lBQ2pCLDRGQUE0RjtJQUM1RixrRUFBa0U7SUFDbEUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtJQUVELE1BQU0sTUFBTSxHQUFHLHlDQUFvQixFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLDZDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzVGO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakUsZ0ZBQWdGO0lBQ2hGLDhGQUE4RjtJQUM5RixTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLFNBQVMsRUFBRSxDQUFDO0lBQzNFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUUzQyxNQUFNLFdBQVcsR0FBRyxNQUFNLGdEQUEyQixDQUFDLElBQUksc0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFOUYsdUNBQXVDO0lBQ3ZDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2Ysc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEb2NrZXIgQ3JlZGVudGlhbCBIZWxwZXIgdG8gcmV0cmlldmUgY3JlZGVudGlhbHMgYmFzZWQgb24gYW4gZXh0ZXJuYWwgY29uZmlndXJhdGlvbiBmaWxlLlxuICogU3VwcG9ydHMgbG9hZGluZyBjcmVkZW50aWFscyBmcm9tIEVDUiByZXBvc2l0b3JpZXMgYW5kIGZyb20gU2VjcmV0cyBNYW5hZ2VyLFxuICogb3B0aW9uYWxseSB2aWEgYW4gYXNzdW1lZCByb2xlLlxuICpcbiAqIFRoZSBvbmx5IG9wZXJhdGlvbiBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IHRoaXMgY3JlZGVudGlhbCBoZWxwZXIgYXQgdGhpcyB0aW1lIGlzIHRoZSBgZ2V0YFxuICogY29tbWFuZCwgd2hpY2ggcmVjZWl2ZXMgYSBkb21haW4gbmFtZSBhcyBpbnB1dCBvbiBzdGRpbiBhbmQgcmV0dXJucyBhIFVzZXJuYW1lL1NlY3JldCBpblxuICogSlNPTiBmb3JtYXQgb24gc3Rkb3V0LlxuICpcbiAqIElNUE9SVEFOVCAtIFRoZSBjcmVkZW50aWFsIGhlbHBlciBtdXN0IG5vdCBvdXRwdXQgYW55dGhpbmcgZWxzZSBiZXNpZGVzIHRoZSBmaW5hbCBjcmVkZW50aWFsc1xuICogaW4gYW55IHN1Y2Nlc3MgY2FzZTsgZG9pbmcgc28gYnJlYWtzIGRvY2tlcidzIHBhcnNpbmcgb2YgdGhlIG91dHB1dCBhbmQgY2F1c2VzIHRoZSBsb2dpbiB0byBmYWlsLlxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IERlZmF1bHRBd3NDbGllbnQgfSBmcm9tICcuLi9saWInO1xuXG5pbXBvcnQgeyBjZGtDcmVkZW50aWFsc0NvbmZpZywgY2RrQ3JlZGVudGlhbHNDb25maWdGaWxlLCBmZXRjaERvY2tlckxvZ2luQ3JlZGVudGlhbHMgfSBmcm9tICcuLi9saWIvcHJpdmF0ZS9kb2NrZXItY3JlZGVudGlhbHMnO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICAvLyBFeHBlY3RlZCBpbnZvY2F0aW9uIGlzIFtub2RlLCBkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzLCBnZXRdIHdpdGggaW5wdXQgZmVkIHZpYSBTVERJTlxuICAvLyBGb3Igb3RoZXIgdmFsaWQgZG9ja2VyIGNvbW1hbmRzIChzdG9yZSwgbGlzdCwgZXJhc2UpLCB3ZSBuby1vcC5cbiAgaWYgKHByb2Nlc3MuYXJndi5sZW5ndGggIT09IDMgfHwgcHJvY2Vzcy5hcmd2WzJdICE9PSAnZ2V0Jykge1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGNka0NyZWRlbnRpYWxzQ29uZmlnKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZmluZCBDREsgRG9ja2VyIGNyZWRlbnRpYWxzIGF0OiAke2Nka0NyZWRlbnRpYWxzQ29uZmlnRmlsZSgpfWApO1xuICB9XG5cbiAgLy8gUmVhZCB0aGUgZG9tYWluIHRvIGZldGNoIGZyb20gc3RkaW5cbiAgbGV0IHJhd0RvbWFpbiA9IGZzLnJlYWRGaWxlU3luYygwLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLnRyaW0oKTtcbiAgLy8gUGFyYW5vaWQgaGFuZGxpbmcgdG8gZW5zdXJlIG5ldyBVUkwoKSBkb2Vzbid0IHRocm93IGlmIHRoZSBzY2hlbWEgaXMgbWlzc2luZy5cbiAgLy8gTm90IGNvbnZpbmNlZCBkb2NrZXIgd2lsbCBldmVyIHBhc3MgaW4gYSB1cmwgbGlrZSAnaW5kZXguZG9ja2VyLmlvL3YxJywgYnV0IGp1c3QgaW4gY2FzZS4uLlxuICByYXdEb21haW4gPSByYXdEb21haW4uaW5jbHVkZXMoJzovLycpID8gcmF3RG9tYWluIDogYGh0dHBzOi8vJHtyYXdEb21haW59YDtcbiAgY29uc3QgZG9tYWluID0gbmV3IFVSTChyYXdEb21haW4pLmhvc3RuYW1lO1xuXG4gIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgZmV0Y2hEb2NrZXJMb2dpbkNyZWRlbnRpYWxzKG5ldyBEZWZhdWx0QXdzQ2xpZW50KCksIGNvbmZpZywgZG9tYWluKTtcblxuICAvLyBXcml0ZSB0aGUgY3JlZGVudGlhbHMgYmFjayB0byBzdGRvdXRcbiAgZnMud3JpdGVGaWxlU3luYygxLCBKU09OLnN0cmluZ2lmeShjcmVkZW50aWFscykpO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUuZXJyb3IoZS5zdGFjayk7XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILHlCQUF5QjtBQUN6QixnQ0FBMEM7QUFFMUMsMEVBQWdJO0FBRWhJLEtBQUssVUFBVSxJQUFJO0lBQ2pCLDRGQUE0RjtJQUM1RixrRUFBa0U7SUFDbEUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtJQUVELE1BQU0sTUFBTSxHQUFHLHlDQUFvQixFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLDZDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzVGO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxnREFBMkIsQ0FBQyxJQUFJLHNCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hHLHVDQUF1QztJQUN2QyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRG9ja2VyIENyZWRlbnRpYWwgSGVscGVyIHRvIHJldHJpZXZlIGNyZWRlbnRpYWxzIGJhc2VkIG9uIGFuIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAqIFN1cHBvcnRzIGxvYWRpbmcgY3JlZGVudGlhbHMgZnJvbSBFQ1IgcmVwb3NpdG9yaWVzIGFuZCBmcm9tIFNlY3JldHMgTWFuYWdlcixcbiAqIG9wdGlvbmFsbHkgdmlhIGFuIGFzc3VtZWQgcm9sZS5cbiAqXG4gKiBUaGUgb25seSBvcGVyYXRpb24gY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGlzIGNyZWRlbnRpYWwgaGVscGVyIGF0IHRoaXMgdGltZSBpcyB0aGUgYGdldGBcbiAqIGNvbW1hbmQsIHdoaWNoIHJlY2VpdmVzIGEgZG9tYWluIG5hbWUgYXMgaW5wdXQgb24gc3RkaW4gYW5kIHJldHVybnMgYSBVc2VybmFtZS9TZWNyZXQgaW5cbiAqIEpTT04gZm9ybWF0IG9uIHN0ZG91dC5cbiAqXG4gKiBJTVBPUlRBTlQgLSBUaGUgY3JlZGVudGlhbCBoZWxwZXIgbXVzdCBub3Qgb3V0cHV0IGFueXRoaW5nIGVsc2UgYmVzaWRlcyB0aGUgZmluYWwgY3JlZGVudGlhbHNcbiAqIGluIGFueSBzdWNjZXNzIGNhc2U7IGRvaW5nIHNvIGJyZWFrcyBkb2NrZXIncyBwYXJzaW5nIG9mIHRoZSBvdXRwdXQgYW5kIGNhdXNlcyB0aGUgbG9naW4gdG8gZmFpbC5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBEZWZhdWx0QXdzQ2xpZW50IH0gZnJvbSAnLi4vbGliJztcblxuaW1wb3J0IHsgY2RrQ3JlZGVudGlhbHNDb25maWcsIGNka0NyZWRlbnRpYWxzQ29uZmlnRmlsZSwgZmV0Y2hEb2NrZXJMb2dpbkNyZWRlbnRpYWxzIH0gZnJvbSAnLi4vbGliL3ByaXZhdGUvZG9ja2VyLWNyZWRlbnRpYWxzJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgLy8gRXhwZWN0ZWQgaW52b2NhdGlvbiBpcyBbbm9kZSwgZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cywgZ2V0XSB3aXRoIGlucHV0IGZlZCB2aWEgU1RESU5cbiAgLy8gRm9yIG90aGVyIHZhbGlkIGRvY2tlciBjb21tYW5kcyAoc3RvcmUsIGxpc3QsIGVyYXNlKSwgd2Ugbm8tb3AuXG4gIGlmIChwcm9jZXNzLmFyZ3YubGVuZ3RoICE9PSAzIHx8IHByb2Nlc3MuYXJndlsyXSAhPT0gJ2dldCcpIHtcbiAgICBwcm9jZXNzLmV4aXQoMCk7XG4gIH1cblxuICBjb25zdCBjb25maWcgPSBjZGtDcmVkZW50aWFsc0NvbmZpZygpO1xuICBpZiAoIWNvbmZpZykge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5hYmxlIHRvIGZpbmQgQ0RLIERvY2tlciBjcmVkZW50aWFscyBhdDogJHtjZGtDcmVkZW50aWFsc0NvbmZpZ0ZpbGUoKX1gKTtcbiAgfVxuXG4gIC8vIFJlYWQgdGhlIGRvbWFpbiB0byBmZXRjaCBmcm9tIHN0ZGluXG4gIGxldCBlbmRwb2ludCA9IGZzLnJlYWRGaWxlU3luYygwLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLnRyaW0oKTtcbiAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBmZXRjaERvY2tlckxvZ2luQ3JlZGVudGlhbHMobmV3IERlZmF1bHRBd3NDbGllbnQoKSwgY29uZmlnLCBlbmRwb2ludCk7XG4gIC8vIFdyaXRlIHRoZSBjcmVkZW50aWFscyBiYWNrIHRvIHN0ZG91dFxuICBmcy53cml0ZUZpbGVTeW5jKDEsIEpTT04uc3RyaW5naWZ5KGNyZWRlbnRpYWxzKSk7XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlLnN0YWNrKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ==
@@ -20,7 +20,7 @@ export declare function cdkCredentialsConfigFile(): string;
20
20
  /** Loads and parses the CDK Docker credentials configuration, if it exists. */
21
21
  export declare function cdkCredentialsConfig(): DockerCredentialsConfig | undefined;
22
22
  /** Fetches login credentials from the configured source (e.g., SecretsManager, ECR) */
23
- export declare function fetchDockerLoginCredentials(aws: IAws, config: DockerCredentialsConfig, domain: string): Promise<{
23
+ export declare function fetchDockerLoginCredentials(aws: IAws, config: DockerCredentialsConfig, endpoint: string): Promise<{
24
24
  Username: any;
25
25
  Secret: any;
26
26
  }>;
@@ -23,12 +23,16 @@ function cdkCredentialsConfig() {
23
23
  }
24
24
  exports.cdkCredentialsConfig = cdkCredentialsConfig;
25
25
  /** Fetches login credentials from the configured source (e.g., SecretsManager, ECR) */
26
- async function fetchDockerLoginCredentials(aws, config, domain) {
27
- var _a, _b;
28
- if (!Object.keys(config.domainCredentials).includes(domain)) {
26
+ async function fetchDockerLoginCredentials(aws, config, endpoint) {
27
+ var _a, _b, _c;
28
+ // Paranoid handling to ensure new URL() doesn't throw if the schema is missing
29
+ // For official docker registry, docker will pass https://index.docker.io/v1/
30
+ endpoint = endpoint.includes('://') ? endpoint : `https://${endpoint}`;
31
+ const domain = new URL(endpoint).hostname;
32
+ if (!Object.keys(config.domainCredentials).includes(domain) && !Object.keys(config.domainCredentials).includes(endpoint)) {
29
33
  throw new Error(`unknown domain ${domain}`);
30
34
  }
31
- const domainConfig = config.domainCredentials[domain];
35
+ let domainConfig = (_a = config.domainCredentials[domain]) !== null && _a !== void 0 ? _a : config.domainCredentials[endpoint];
32
36
  if (domainConfig.secretsManagerSecretId) {
33
37
  const sm = await aws.secretsManagerClient({ assumeRoleArn: domainConfig.assumeRoleArn });
34
38
  const secretValue = await sm.getSecretValue({ SecretId: domainConfig.secretsManagerSecretId }).promise();
@@ -37,8 +41,8 @@ async function fetchDockerLoginCredentials(aws, config, domain) {
37
41
  }
38
42
  ;
39
43
  const secret = JSON.parse(secretValue.SecretString);
40
- const usernameField = (_a = domainConfig.secretsUsernameField) !== null && _a !== void 0 ? _a : 'username';
41
- const secretField = (_b = domainConfig.secretsPasswordField) !== null && _b !== void 0 ? _b : 'secret';
44
+ const usernameField = (_b = domainConfig.secretsUsernameField) !== null && _b !== void 0 ? _b : 'username';
45
+ const secretField = (_c = domainConfig.secretsPasswordField) !== null && _c !== void 0 ? _c : 'secret';
42
46
  if (!secret[usernameField] || !secret[secretField]) {
43
47
  throw new Error(`malformed secret string ("${usernameField}" or "${secretField}" field missing)`);
44
48
  }
@@ -74,4 +78,4 @@ async function obtainEcrCredentials(ecr, logger) {
74
78
  };
75
79
  }
76
80
  exports.obtainEcrCredentials = obtainEcrCredentials;
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNyZWRlbnRpYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLWNyZWRlbnRpYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBc0I3Qiw4RUFBOEU7QUFDOUUsU0FBZ0Isd0JBQXdCOztJQUN0QyxhQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDaEosQ0FBQztBQUZELDREQUVDO0FBRUQsSUFBSSxlQUFvRCxDQUFDO0FBQ3pELCtFQUErRTtBQUMvRSxTQUFnQixvQkFBb0I7SUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixJQUFJO1lBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQTRCLENBQUM7U0FDN0g7UUFBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0tBQ2xCO0lBQ0QsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQVBELG9EQU9DO0FBRUQsdUZBQXVGO0FBQ2hGLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxHQUFTLEVBQUUsTUFBK0IsRUFBRSxNQUFjOztJQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUM3QztJ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LENBQUMsYUFBYztLQUNyQyxDQUFDO0FBQ0osQ0FBQztBQWZELG9EQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IElBd3MgfSBmcm9tICcuLi9hd3MnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi9zaGVsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ3JlZGVudGlhbHMge1xuICByZWFkb25seSBVc2VybmFtZTogc3RyaW5nO1xuICByZWFkb25seSBTZWNyZXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJDcmVkZW50aWFsc0NvbmZpZyB7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkgZG9tYWluQ3JlZGVudGlhbHM6IFJlY29yZDxzdHJpbmcsIERvY2tlckRvbWFpbkNyZWRlbnRpYWxTb3VyY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckRvbWFpbkNyZWRlbnRpYWxTb3VyY2Uge1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldElkPzogc3RyaW5nO1xuICByZWFkb25seSBzZWNyZXRzVXNlcm5hbWVGaWVsZD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2VjcmV0c1Bhc3N3b3JkRmllbGQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVjclJlcG9zaXRvcnk/OiBib29sZWFuO1xuICByZWFkb25seSBhc3N1bWVSb2xlQXJuPzogc3RyaW5nO1xufVxuXG4vKiogUmV0dXJucyB0aGUgcHJlc3VtZWQgbG9jYXRpb24gb2YgdGhlIENESyBEb2NrZXIgY3JlZGVudGlhbHMgY29uZmlnIGZpbGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBjZGtDcmVkZW50aWFsc0NvbmZpZ0ZpbGUoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LkNES19ET0NLRVJfQ1JFRFNfRklMRSA/PyBwYXRoLmpvaW4oKG9zLnVzZXJJbmZvKCkuaG9tZWRpciA/PyBvcy5ob21lZGlyKCkpLnRyaW0oKSB8fCAnLycsICcuY2RrJywgJ2Nkay1kb2NrZXItY3JlZHMuanNvbicpO1xufVxuXG5sZXQgX2Nka0NyZWRlbnRpYWxzOiBEb2NrZXJDcmVkZW50aWFsc0NvbmZpZyB8IHVuZGVmaW5lZDtcbi8qKiBMb2FkcyBhbmQgcGFyc2VzIHRoZSBDREsgRG9ja2VyIGNyZWRlbnRpYWxzIGNvbmZpZ3VyYXRpb24sIGlmIGl0IGV4aXN0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjZGtDcmVkZW50aWFsc0NvbmZpZygpOiBEb2NrZXJDcmVkZW50aWFsc0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghX2Nka0NyZWRlbnRpYWxzKSB7XG4gICAgdHJ5IHtcbiAgICAgIF9jZGtDcmVkZW50aWFscyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGNka0NyZWRlbnRpYWxzQ29uZmlnRmlsZSgpLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKSBhcyBEb2NrZXJDcmVkZW50aWFsc0NvbmZpZztcbiAgICB9IGNhdGNoIChlcnIpIHsgfVxuICB9XG4gIHJldHVybiBfY2RrQ3JlZGVudGlhbHM7XG59XG5cbi8qKiBGZXRjaGVzIGxvZ2luIGNyZWRlbnRpYWxzIGZyb20gdGhlIGNvbmZpZ3VyZWQgc291cmNlIChlLmcuLCBTZWNyZXRzTWFuYWdlciwgRUNSKSAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoRG9ja2VyTG9naW5DcmVkZW50aWFscyhhd3M6IElBd3MsIGNvbmZpZzogRG9ja2VyQ3JlZGVudGlhbHNDb25maWcsIGRvbWFpbjogc3RyaW5nKSB7XG4gIGlmICghT2JqZWN0LmtleXMoY29uZmlnLmRvbWFpbkNyZWRlbnRpYWxzKS5pbmNsdWRlcyhkb21haW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGRvbWFpbiAke2RvbWFpbn1gKTtcbiAgfVxuXG4gIGNvbnN0IGRvbWFpbkNvbmZpZyA9IGNvbmZpZy5kb21haW5DcmVkZW50aWFsc1tkb21haW5dO1xuXG4gIGlmIChkb21haW5Db25maWcuc2VjcmV0c01hbmFnZXJTZWNyZXRJZCkge1xuICAgIGNvbnN0IHNtID0gYXdhaXQgYXdzLnNlY3JldHNNYW5hZ2VyQ2xpZW50KHsgYXNzdW1lUm9sZUFybjogZG9tYWluQ29uZmlnLmFzc3VtZVJvbGVBcm4gfSk7XG4gICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBhd2FpdCBzbS5nZXRTZWNyZXRWYWx1ZSh7IFNlY3JldElkOiBkb21haW5Db25maWcuc2VjcmV0c01hbmFnZXJTZWNyZXRJZCB9KS5wcm9taXNlKCk7XG4gICAgaWYgKCFzZWNyZXRWYWx1ZS5TZWNyZXRTdHJpbmcpIHsgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZmV0Y2ggU2VjcmV0U3RyaW5nIGZyb20gc2VjcmV0OiAke2RvbWFpbkNvbmZpZy5zZWNyZXRzTWFuYWdlclNlY3JldElkfWApOyB9O1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gSlNPTi5wYXJzZShzZWNyZXRWYWx1ZS5TZWNyZXRTdHJpbmcpO1xuXG4gICAgY29uc3QgdXNlcm5hbWVGaWVsZCA9IGRvbWFpbkNvbmZpZy5zZWNyZXRzVXNlcm5hbWVGaWVsZCA/PyAndXNlcm5hbWUnO1xuICAgIGNvbnN0IHNlY3JldEZpZWxkID0gZG9tYWluQ29uZmlnLnNlY3JldHNQYXNzd29yZEZpZWxkID8/ICdzZWNyZXQnO1xuICAgIGlmICghc2VjcmV0W3VzZXJuYW1lRmllbGRdIHx8ICFzZWNyZXRbc2VjcmV0RmllbGRdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1hbGZvcm1lZCBzZWNyZXQgc3RyaW5nIChcIiR7dXNlcm5hbWVGaWVsZH1cIiBvciBcIiR7c2VjcmV0RmllbGR9XCIgZmllbGQgbWlzc2luZylgKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBVc2VybmFtZTogc2VjcmV0W3VzZXJuYW1lRmllbGRdLCBTZWNyZXQ6IHNlY3JldFtzZWNyZXRGaWVsZF0gfTtcbiAgfSBlbHNlIGlmIChkb21haW5Db25maWcuZWNyUmVwb3NpdG9yeSkge1xuICAgIGNvbnN0IGVjciA9IGF3YWl0IGF3cy5lY3JDbGllbnQoeyBhc3N1bWVSb2xlQXJuOiBkb21haW5Db25maWcuYXNzdW1lUm9sZUFybiB9KTtcbiAgICBjb25zdCBlY3JBdXRoRGF0YSA9IGF3YWl0IG9idGFpbkVjckNyZWRlbnRpYWxzKGVjcik7XG5cbiAgICByZXR1cm4geyBVc2VybmFtZTogZWNyQXV0aERhdGEudXNlcm5hbWUsIFNlY3JldDogZWNyQXV0aERhdGEucGFzc3dvcmQgfTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3JlZGVudGlhbCB0eXBlOiBubyBzZWNyZXQgSUQgb3IgRUNSIHJlcG8nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2J0YWluRWNyQ3JlZGVudGlhbHMoZWNyOiBBV1MuRUNSLCBsb2dnZXI/OiBMb2dnZXIpIHtcbiAgaWYgKGxvZ2dlcikgeyBsb2dnZXIoJ0ZldGNoaW5nIEVDUiBhdXRob3JpemF0aW9uIHRva2VuJyk7IH1cbiAgY29uc3QgYXV0aERhdGEgPSAoYXdhaXQgZWNyLmdldEF1dGhvcml6YXRpb25Ub2tlbih7IH0pLnByb21pc2UoKSkuYXV0aG9yaXphdGlvbkRhdGEgfHwgW107XG4gIGlmIChhdXRoRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGF1dGhvcml6YXRpb24gZGF0YSByZWNlaXZlZCBmcm9tIEVDUicpO1xuICB9XG4gIGNvbnN0IHRva2VuID0gQnVmZmVyLmZyb20oYXV0aERhdGFbMF0uYXV0aG9yaXphdGlvblRva2VuISwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdhc2NpaScpO1xuICBjb25zdCBbdXNlcm5hbWUsIHBhc3N3b3JkXSA9IHRva2VuLnNwbGl0KCc6Jyk7XG4gIGlmICghdXNlcm5hbWUgfHwgIXBhc3N3b3JkKSB7IHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBFQ1IgYXV0aERhdGEgZm9ybWF0Jyk7IH1cblxuICByZXR1cm4ge1xuICAgIHVzZXJuYW1lLFxuICAgIHBhc3N3b3JkLFxuICAgIGVuZHBvaW50OiBhdXRoRGF0YVswXS5wcm94eUVuZHBvaW50ISxcbiAgfTtcbn1cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWNyZWRlbnRpYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLWNyZWRlbnRpYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBc0I3Qiw4RUFBOEU7QUFDOUUsU0FBZ0Isd0JBQXdCOztJQUN0QyxhQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDaEosQ0FBQztBQUZELDREQUVDO0FBRUQsSUFBSSxlQUFvRCxDQUFDO0FBQ3pELCtFQUErRTtBQUMvRSxTQUFnQixvQkFBb0I7SUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixJQUFJO1lBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQTRCLENBQUM7U0FDN0g7UUFBQyxPQUFPLEdBQUcsRUFBRSxHQUFHO0tBQ2xCO0lBQ0QsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQztBQVBELG9EQU9DO0FBRUQsdUZBQXVGO0FBQ2hGLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxHQUFTLEVBQUUsTUFBK0IsRUFBRSxRQUFnQjs7SUFDNUcsK0VBQStFO0lBQy9FLDZFQUE2RTtJQUM3RSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLFFBQVEsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFH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QVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkYsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7S0FBRTtJQUVsRixPQUFPO1FBQ0wsUUFBUTtRQUNSLFFBQVE7UUFDUixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWM7S0FDckMsQ0FBQztBQUNKLENBQUM7QUFmRCxvREFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBJQXdzIH0gZnJvbSAnLi4vYXdzJztcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gJy4vc2hlbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckNyZWRlbnRpYWxzIHtcbiAgcmVhZG9ubHkgVXNlcm5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgU2VjcmV0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ3JlZGVudGlhbHNDb25maWcge1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvbWFpbkNyZWRlbnRpYWxzOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJEb21haW5DcmVkZW50aWFsU291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJEb21haW5DcmVkZW50aWFsU291cmNlIHtcbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2VjcmV0c1VzZXJuYW1lRmllbGQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlY3JldHNQYXNzd29yZEZpZWxkPzogc3RyaW5nO1xuICByZWFkb25seSBlY3JSZXBvc2l0b3J5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYXNzdW1lUm9sZUFybj86IHN0cmluZztcbn1cblxuLyoqIFJldHVybnMgdGhlIHByZXN1bWVkIGxvY2F0aW9uIG9mIHRoZSBDREsgRG9ja2VyIGNyZWRlbnRpYWxzIGNvbmZpZyBmaWxlICovXG5leHBvcnQgZnVuY3Rpb24gY2RrQ3JlZGVudGlhbHNDb25maWdGaWxlKCk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9jZXNzLmVudi5DREtfRE9DS0VSX0NSRURTX0ZJTEUgPz8gcGF0aC5qb2luKChvcy51c2VySW5mbygpLmhvbWVkaXIgPz8gb3MuaG9tZWRpcigpKS50cmltKCkgfHwgJy8nLCAnLmNkaycsICdjZGstZG9ja2VyLWNyZWRzLmpzb24nKTtcbn1cblxubGV0IF9jZGtDcmVkZW50aWFsczogRG9ja2VyQ3JlZGVudGlhbHNDb25maWcgfCB1bmRlZmluZWQ7XG4vKiogTG9hZHMgYW5kIHBhcnNlcyB0aGUgQ0RLIERvY2tlciBjcmVkZW50aWFscyBjb25maWd1cmF0aW9uLCBpZiBpdCBleGlzdHMuICovXG5leHBvcnQgZnVuY3Rpb24gY2RrQ3JlZGVudGlhbHNDb25maWcoKTogRG9ja2VyQ3JlZGVudGlhbHNDb25maWcgfCB1bmRlZmluZWQge1xuICBpZiAoIV9jZGtDcmVkZW50aWFscykge1xuICAgIHRyeSB7XG4gICAgICBfY2RrQ3JlZGVudGlhbHMgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjZGtDcmVkZW50aWFsc0NvbmZpZ0ZpbGUoKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSkgYXMgRG9ja2VyQ3JlZGVudGlhbHNDb25maWc7XG4gICAgfSBjYXRjaCAoZXJyKSB7IH1cbiAgfVxuICByZXR1cm4gX2Nka0NyZWRlbnRpYWxzO1xufVxuXG4vKiogRmV0Y2hlcyBsb2dpbiBjcmVkZW50aWFscyBmcm9tIHRoZSBjb25maWd1cmVkIHNvdXJjZSAoZS5nLiwgU2VjcmV0c01hbmFnZXIsIEVDUikgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaERvY2tlckxvZ2luQ3JlZGVudGlhbHMoYXdzOiBJQXdzLCBjb25maWc6IERvY2tlckNyZWRlbnRpYWxzQ29uZmlnLCBlbmRwb2ludDogc3RyaW5nKSB7XG4gIC8vIFBhcmFub2lkIGhhbmRsaW5nIHRvIGVuc3VyZSBuZXcgVVJMKCkgZG9lc24ndCB0aHJvdyBpZiB0aGUgc2NoZW1hIGlzIG1pc3NpbmdcbiAgLy8gRm9yIG9mZmljaWFsIGRvY2tlciByZWdpc3RyeSwgZG9ja2VyIHdpbGwgcGFzcyBodHRwczovL2luZGV4LmRvY2tlci5pby92MS9cbiAgZW5kcG9pbnQgPSBlbmRwb2ludC5pbmNsdWRlcygnOi8vJykgPyBlbmRwb2ludCA6IGBodHRwczovLyR7ZW5kcG9pbnR9YDtcbiAgY29uc3QgZG9tYWluID0gbmV3IFVSTChlbmRwb2ludCkuaG9zdG5hbWU7XG5cbiAgaWYgKCFPYmplY3Qua2V5cyhjb25maWcuZG9tYWluQ3JlZGVudGlhbHMpLmluY2x1ZGVzKGRvbWFpbikgJiYgIU9iamVjdC5rZXlzKGNvbmZpZy5kb21haW5DcmVkZW50aWFscykuaW5jbHVkZXMoZW5kcG9pbnQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIGRvbWFpbiAke2RvbWFpbn1gKTtcbiAgfVxuXG4gIGxldCBkb21haW5Db25maWcgPSBjb25maWcuZG9tYWluQ3JlZGVudGlhbHNbZG9tYWluXSA/PyBjb25maWcuZG9tYWluQ3JlZGVudGlhbHNbZW5kcG9pbnRdO1xuXG4gIGlmIChkb21haW5Db25maWcuc2VjcmV0c01hbmFnZXJTZWNyZXRJZCkge1xuICAgIGNvbnN0IHNtID0gYXdhaXQgYXdzLnNlY3JldHNNYW5hZ2VyQ2xpZW50KHsgYXNzdW1lUm9sZUFybjogZG9tYWluQ29uZmlnLmFzc3VtZVJvbGVBcm4gfSk7XG4gICAgY29uc3Qgc2VjcmV0VmFsdWUgPSBhd2FpdCBzbS5nZXRTZWNyZXRWYWx1ZSh7IFNlY3JldElkOiBkb21haW5Db25maWcuc2VjcmV0c01hbmFnZXJTZWNyZXRJZCB9KS5wcm9taXNlKCk7XG4gICAgaWYgKCFzZWNyZXRWYWx1ZS5TZWNyZXRTdHJpbmcpIHsgdGhyb3cgbmV3IEVycm9yKGB1bmFibGUgdG8gZmV0Y2ggU2VjcmV0U3RyaW5nIGZyb20gc2VjcmV0OiAke2RvbWFpbkNvbmZpZy5zZWNyZXRzTWFuYWdlclNlY3JldElkfWApOyB9O1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gSlNPTi5wYXJzZShzZWNyZXRWYWx1ZS5TZWNyZXRTdHJpbmcpO1xuXG4gICAgY29uc3QgdXNlcm5hbWVGaWVsZCA9IGRvbWFpbkNvbmZpZy5zZWNyZXRzVXNlcm5hbWVGaWVsZCA/PyAndXNlcm5hbWUnO1xuICAgIGNvbnN0IHNlY3JldEZpZWxkID0gZG9tYWluQ29uZmlnLnNlY3JldHNQYXNzd29yZEZpZWxkID8/ICdzZWNyZXQnO1xuICAgIGlmICghc2VjcmV0W3VzZXJuYW1lRmllbGRdIHx8ICFzZWNyZXRbc2VjcmV0RmllbGRdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG1hbGZvcm1lZCBzZWNyZXQgc3RyaW5nIChcIiR7dXNlcm5hbWVGaWVsZH1cIiBvciBcIiR7c2VjcmV0RmllbGR9XCIgZmllbGQgbWlzc2luZylgKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBVc2VybmFtZTogc2VjcmV0W3VzZXJuYW1lRmllbGRdLCBTZWNyZXQ6IHNlY3JldFtzZWNyZXRGaWVsZF0gfTtcbiAgfSBlbHNlIGlmIChkb21haW5Db25maWcuZWNyUmVwb3NpdG9yeSkge1xuICAgIGNvbnN0IGVjciA9IGF3YWl0IGF3cy5lY3JDbGllbnQoeyBhc3N1bWVSb2xlQXJuOiBkb21haW5Db25maWcuYXNzdW1lUm9sZUFybiB9KTtcbiAgICBjb25zdCBlY3JBdXRoRGF0YSA9IGF3YWl0IG9idGFpbkVjckNyZWRlbnRpYWxzKGVjcik7XG5cbiAgICByZXR1cm4geyBVc2VybmFtZTogZWNyQXV0aERhdGEudXNlcm5hbWUsIFNlY3JldDogZWNyQXV0aERhdGEucGFzc3dvcmQgfTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3JlZGVudGlhbCB0eXBlOiBubyBzZWNyZXQgSUQgb3IgRUNSIHJlcG8nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb2J0YWluRWNyQ3JlZGVudGlhbHMoZWNyOiBBV1MuRUNSLCBsb2dnZXI/OiBMb2dnZXIpIHtcbiAgaWYgKGxvZ2dlcikgeyBsb2dnZXIoJ0ZldGNoaW5nIEVDUiBhdXRob3JpemF0aW9uIHRva2VuJyk7IH1cbiAgY29uc3QgYXV0aERhdGEgPSAoYXdhaXQgZWNyLmdldEF1dGhvcml6YXRpb25Ub2tlbih7IH0pLnByb21pc2UoKSkuYXV0aG9yaXphdGlvbkRhdGEgfHwgW107XG4gIGlmIChhdXRoRGF0YS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGF1dGhvcml6YXRpb24gZGF0YSByZWNlaXZlZCBmcm9tIEVDUicpO1xuICB9XG4gIGNvbnN0IHRva2VuID0gQnVmZmVyLmZyb20oYXV0aERhdGFbMF0uYXV0aG9yaXphdGlvblRva2VuISwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdhc2NpaScpO1xuICBjb25zdCBbdXNlcm5hbWUsIHBhc3N3b3JkXSA9IHRva2VuLnNwbGl0KCc6Jyk7XG4gIGlmICghdXNlcm5hbWUgfHwgIXBhc3N3b3JkKSB7IHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBFQ1IgYXV0aERhdGEgZm9ybWF0Jyk7IH1cblxuICByZXR1cm4ge1xuICAgIHVzZXJuYW1lLFxuICAgIHBhc3N3b3JkLFxuICAgIGVuZHBvaW50OiBhdXRoRGF0YVswXS5wcm94eUVuZHBvaW50ISxcbiAgfTtcbn1cbiJdfQ==
@@ -93,9 +93,19 @@ class Docker {
93
93
  this.configDir = undefined;
94
94
  }
95
95
  async execute(args, options = {}) {
96
+ var _a, _b;
96
97
  const configArgs = this.configDir ? ['--config', this.configDir] : [];
98
+ const pathToCdkAssets = path.resolve(__dirname, '..', '..', 'bin');
97
99
  try {
98
- await shell_1.shell(['docker', ...configArgs, ...args], { logger: this.logger, ...options });
100
+ await shell_1.shell(['docker', ...configArgs, ...args], {
101
+ logger: this.logger,
102
+ ...options,
103
+ env: {
104
+ ...process.env,
105
+ ...options.env,
106
+ PATH: `${pathToCdkAssets}${path.delimiter}${(_b = (_a = options.env) === null || _a === void 0 ? void 0 : _a.PATH) !== null && _b !== void 0 ? _b : process.env.PATH}`,
107
+ },
108
+ });
99
109
  }
100
110
  catch (e) {
101
111
  if (e.code === 'ENOENT') {
@@ -109,4 +119,4 @@ exports.Docker = Docker;
109
119
  function flatten(x) {
110
120
  return Array.prototype.concat([], ...x);
111
121
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZEQUFrRjtBQUNsRixtQ0FBc0Q7QUF3QnRELE1BQWEsTUFBTTtJQUlqQixZQUE2QixNQUFlO1FBQWYsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUZwQyxjQUFTLEdBQXVCLFNBQVMsQ0FBQztJQUdsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDN0IsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtnQkFBRSxNQUFNLENBQUMsQ0FBQzthQUFFO1lBQ2pFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFxQjtRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixPQUFPO1lBQ1AsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHO1lBQ3BCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFD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LEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUN0RjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0R0FBNEcsQ0FBQyxDQUFDO2FBQy9IO1lBQ0QsTUFBTSxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7Q0FDRjtBQTNHRCx3QkEyR0M7QUFFRCxTQUFTLE9BQU8sQ0FBQyxDQUFhO0lBQzVCLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjZGtDcmVkZW50aWFsc0NvbmZpZywgb2J0YWluRWNyQ3JlZGVudGlhbHMgfSBmcm9tICcuL2RvY2tlci1jcmVkZW50aWFscyc7XG5pbXBvcnQgeyBMb2dnZXIsIHNoZWxsLCBTaGVsbE9wdGlvbnMgfSBmcm9tICcuL3NoZWxsJztcblxuaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgdGhlIGltYWdlIHdpdGggYSBnaXZlbiByZXBvTmFtZTp0YWcgY29tYmluYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyQ3JlZGVudGlhbHNDb25maWcge1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvbWFpbkNyZWRlbnRpYWxzOiBSZWNvcmQ8c3RyaW5nLCBEb2NrZXJEb21haW5DcmVkZW50aWFscz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyRG9tYWluQ3JlZGVudGlhbHMge1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldElkPzogc3RyaW5nO1xuICByZWFkb25seSBlY3JSZXBvc2l0b3J5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VyIHtcblxuICBwcml2YXRlIGNvbmZpZ0Rpcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyKSB7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBhbiBpbWFnZSB3aXRoIHRoZSBnaXZlbiB0YWcgZXhpc3RzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhpc3RzKHRhZzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShbJ2luc3BlY3QnLCB0YWddLCB7IHF1aWV0OiB0cnVlIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSAhPT0gJ1BST0NFU1NfRkFJTEVEJyB8fCBlLmV4aXRDb2RlICE9PSAxKSB7IHRocm93IGU7IH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYnVpbGQob3B0aW9uczogQnVpbGRPcHRpb25zKSB7XG4gICAgY29uc3QgYnVpbGRDb21tYW5kID0gW1xuICAgICAgJ2J1aWxkJyxcbiAgICAgIC4uLmZsYXR0ZW4oT2JqZWN0LmVudHJpZXMob3B0aW9ucy5idWlsZEFyZ3MgfHwge30pLm1hcCgoW2ssIHZdKSA9PiBbJy0tYnVpbGQtYXJnJywgYCR7a309JHt2fWBdKSksXG4gICAgICAnLS10YWcnLCBvcHRpb25zLnRhZyxcbiAgICAgIC4uLm9wdGlvbnMudGFyZ2V0ID8gWyctLXRhcmdldCcsIG9wdGlvbnMudGFyZ2V0XSA6IFtdLFxuICAgICAgLi4ub3B0aW9ucy5maWxlID8gWyctLWZpbGUnLCBvcHRpb25zLmZpbGVdIDogW10sXG4gICAgICAnLicsXG4gICAgXTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoYnVpbGRDb21tYW5kLCB7IGN3ZDogb3B0aW9ucy5kaXJlY3RvcnkgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNyZWRlbnRpYWxzIGZyb20gRUNSIGFuZCBydW4gZG9ja2VyIGxvZ2luXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9naW4oZWNyOiBBV1MuRUNSKSB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBvYnRhaW5FY3JDcmVkZW50aWFscyhlY3IpO1xuXG4gICAgLy8gVXNlIC0tcGFzc3dvcmQtc3RkaW4gb3RoZXJ3aXNlIGRvY2tlciB3aWxsIGNvbXBsYWluLiBMb3VkbHkuXG4gICAgYXdhaXQgdGhpcy5leGVjdXRlKFsnbG9naW4nLFxuICAgICAgJy0tdXNlcm5hbWUnLCBjcmVkZW50aWFscy51c2VybmFtZSxcbiAgICAgICctLXBhc3N3b3JkLXN0ZGluJyxcbiAgICAgIGNyZWRlbnRpYWxzLmVuZHBvaW50XSwge1xuICAgICAgaW5wdXQ6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuXG4gICAgICAvLyBOZWVkIHRvIHF1aWV0IG90aGVyd2lzZSBEb2NrZXIgd2lsbCBjb21wbGFpblxuICAgICAgLy8gJ1dBUk5JTkchIFlvdXIgcGFzc3dvcmQgd2lsbCBiZSBzdG9yZWQgdW5lbmNyeXB0ZWQnXG4gICAgICAvLyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgc2luY2UgaXQncyBhIHRva2VuLlxuICAgICAgcXVpZXQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdGFnKHNvdXJjZVRhZzogc3RyaW5nLCB0YXJnZXRUYWc6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShbJ3RhZycsIHNvdXJjZVRhZywgdGFyZ2V0VGFnXSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVzaCh0YWc6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShbJ3B1c2gnLCB0YWddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhIENESyBEb2NrZXIgQ3JlZGVudGlhbHMgZmlsZSBleGlzdHMsIGNyZWF0ZXMgYSBuZXcgRG9ja2VyIGNvbmZpZyBkaXJlY3RvcnkuXG4gICAqIFNldHMgdXAgYGRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHNgIHRvIGJlIHRoZSBjcmVkZW50aWFsIGhlbHBlciBmb3IgZWFjaCBkb21haW4gaW4gdGhlIENESyBjb25maWcuXG4gICAqIEFsbCBmdXR1cmUgY29tbWFuZHMgKGUuZy4sIGBidWlsZGAsIGBwdXNoYCkgd2lsbCB1c2UgdGhpcyBjb25maWcuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2xvZ2luLyNjcmVkZW50aWFsLWhlbHBlcnMgZm9yIG1vcmUgZGV0YWlscyBvbiBjcmVkIGhlbHBlcnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHRydWUgaWYgQ0RLIGNvbmZpZyB3YXMgZm91bmQgYW5kIGNvbmZpZ3VyZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyZUNka0NyZWRlbnRpYWxzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNka0NyZWRlbnRpYWxzQ29uZmlnKCk7XG4gICAgaWYgKCFjb25maWcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICB0aGlzLmNvbmZpZ0RpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nka0RvY2tlckNvbmZpZycpKTtcblxuICAgIGNvbnN0IGRvbWFpbnMgPSBPYmplY3Qua2V5cyhjb25maWcuZG9tYWluQ3JlZGVudGlhbHMpO1xuICAgIGNvbnN0IGNyZWRIZWxwZXJzID0gZG9tYWlucy5yZWR1Y2UoKG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgZG9tYWluKSA9PiB7XG4gICAgICBtYXBbZG9tYWluXSA9ICdjZGstYXNzZXRzJzsgLy8gVXNlIGRvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMgZm9yIHRoaXMgZG9tYWluXG4gICAgICByZXR1cm4gbWFwO1xuICAgIH0sIHt9KTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbih0aGlzLmNvbmZpZ0RpciwgJ2NvbmZpZy5qc29uJyksIEpTT04uc3RyaW5naWZ5KHsgY3JlZEhlbHBlcnMgfSksIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFueSBjb25maWd1cmVkIERvY2tlciBjb25maWcgZGlyZWN0b3J5LlxuICAgKiBBbGwgZnV0dXJlIGNvbW1hbmRzIChlLmcuLCBgYnVpbGRgLCBgcHVzaGApIHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbmZpZy5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VmdWwgYWZ0ZXIgY2FsbGluZyBgY29uZmlndXJlQ2RrQ3JlZGVudGlhbHNgIHRvIHJlc2V0IHRvIGRlZmF1bHQgY3JlZGVudGlhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVzZXRBdXRoUGx1Z2lucygpIHtcbiAgICB0aGlzLmNvbmZpZ0RpciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZShhcmdzOiBzdHJpbmdbXSwgb3B0aW9uczogU2hlbGxPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBjb25maWdBcmdzID0gdGhpcy5jb25maWdEaXIgPyBbJy0tY29uZmlnJywgdGhpcy5jb25maWdEaXJdIDogW107XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2hlbGwoWydkb2NrZXInLCAuLi5jb25maWdBcmdzLCAuLi5hcmdzXSwgeyBsb2dnZXI6IHRoaXMubG9nZ2VyLCAuLi5vcHRpb25zIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGV4ZWN1dGUgXFwnZG9ja2VyXFwnIGluIG9yZGVyIHRvIGJ1aWxkIGEgY29udGFpbmVyIGFzc2V0LiBQbGVhc2UgaW5zdGFsbCBcXCdkb2NrZXJcXCcgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW4oeDogc3RyaW5nW11bXSkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdChbXSwgLi4ueCk7XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZEQUFrRjtBQUNsRixtQ0FBc0Q7QUF3QnRELE1BQWEsTUFBTTtJQUlqQixZQUE2QixNQUFlO1FBQWYsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUZwQyxjQUFTLEdBQXVCLFNBQVMsQ0FBQztJQUdsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVc7UUFDN0IsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtnQkFBRSxNQUFNLENBQUMsQ0FBQzthQUFFO1lBQ2pFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFxQjtRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixPQUFPO1lBQ1AsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHO1lBQ3BCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFD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SSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRSxJQUFJO1lBQ0YsTUFBTSxhQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixHQUFHLE9BQU87Z0JBQ1YsR0FBRyxFQUFFO29CQUNILEdBQUcsT0FBTyxDQUFDLEdBQUc7b0JBQ2QsR0FBRyxPQUFPLENBQUMsR0FBRztvQkFDZCxJQUFJLEVBQUUsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFBLE9BQU8sQ0FBQyxHQUFHLDBDQUFFLElBQUksbUNBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7aUJBQ3BGO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEdBQTRHLENBQUMsQ0FBQzthQUMvSDtZQUNELE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0NBQ0Y7QUFwSEQsd0JBb0hDO0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBYTtJQUM1QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY2RrQ3JlZGVudGlhbHNDb25maWcsIG9idGFpbkVjckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9kb2NrZXItY3JlZGVudGlhbHMnO1xuaW1wb3J0IHsgTG9nZ2VyLCBzaGVsbCwgU2hlbGxPcHRpb25zIH0gZnJvbSAnLi9zaGVsbCc7XG5cbmludGVyZmFjZSBCdWlsZE9wdGlvbnMge1xuICByZWFkb25seSBkaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHRoZSBpbWFnZSB3aXRoIGEgZ2l2ZW4gcmVwb05hbWU6dGFnIGNvbWJpbmF0aW9uXG4gICAqL1xuICByZWFkb25seSB0YWc6IHN0cmluZztcbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xuICByZWFkb25seSBmaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBidWlsZEFyZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckNyZWRlbnRpYWxzQ29uZmlnIHtcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBkb21haW5DcmVkZW50aWFsczogUmVjb3JkPHN0cmluZywgRG9ja2VyRG9tYWluQ3JlZGVudGlhbHM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckRvbWFpbkNyZWRlbnRpYWxzIHtcbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERvY2tlciB7XG5cbiAgcHJpdmF0ZSBjb25maWdEaXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcj86IExvZ2dlcikge1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYW4gaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gdGFnIGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4aXN0cyh0YWc6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoWydpbnNwZWN0JywgdGFnXSwgeyBxdWlldDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdQUk9DRVNTX0ZBSUxFRCcgfHwgZS5leGl0Q29kZSAhPT0gMSkgeyB0aHJvdyBlOyB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1aWxkKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucykge1xuICAgIGNvbnN0IGJ1aWxkQ29tbWFuZCA9IFtcbiAgICAgICdidWlsZCcsXG4gICAgICAuLi5mbGF0dGVuKE9iamVjdC5lbnRyaWVzKG9wdGlvbnMuYnVpbGRBcmdzIHx8IHt9KS5tYXAoKFtrLCB2XSkgPT4gWyctLWJ1aWxkLWFyZycsIGAke2t9PSR7dn1gXSkpLFxuICAgICAgJy0tdGFnJywgb3B0aW9ucy50YWcsXG4gICAgICAuLi5vcHRpb25zLnRhcmdldCA/IFsnLS10YXJnZXQnLCBvcHRpb25zLnRhcmdldF0gOiBbXSxcbiAgICAgIC4uLm9wdGlvbnMuZmlsZSA/IFsnLS1maWxlJywgb3B0aW9ucy5maWxlXSA6IFtdLFxuICAgICAgJy4nLFxuICAgIF07XG4gICAgYXdhaXQgdGhpcy5leGVjdXRlKGJ1aWxkQ29tbWFuZCwgeyBjd2Q6IG9wdGlvbnMuZGlyZWN0b3J5IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjcmVkZW50aWFscyBmcm9tIEVDUiBhbmQgcnVuIGRvY2tlciBsb2dpblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvZ2luKGVjcjogQVdTLkVDUikge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgb2J0YWluRWNyQ3JlZGVudGlhbHMoZWNyKTtcblxuICAgIC8vIFVzZSAtLXBhc3N3b3JkLXN0ZGluIG90aGVyd2lzZSBkb2NrZXIgd2lsbCBjb21wbGFpbi4gTG91ZGx5LlxuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShbJ2xvZ2luJyxcbiAgICAgICctLXVzZXJuYW1lJywgY3JlZGVudGlhbHMudXNlcm5hbWUsXG4gICAgICAnLS1wYXNzd29yZC1zdGRpbicsXG4gICAgICBjcmVkZW50aWFscy5lbmRwb2ludF0sIHtcbiAgICAgIGlucHV0OiBjcmVkZW50aWFscy5wYXNzd29yZCxcblxuICAgICAgLy8gTmVlZCB0byBxdWlldCBvdGhlcndpc2UgRG9ja2VyIHdpbGwgY29tcGxhaW5cbiAgICAgIC8vICdXQVJOSU5HISBZb3VyIHBhc3N3b3JkIHdpbGwgYmUgc3RvcmVkIHVuZW5jcnlwdGVkJ1xuICAgICAgLy8gZG9lc24ndCByZWFsbHkgbWF0dGVyIHNpbmNlIGl0J3MgYSB0b2tlbi5cbiAgICAgIHF1aWV0OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRhZyhzb3VyY2VUYWc6IHN0cmluZywgdGFyZ2V0VGFnOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoWyd0YWcnLCBzb3VyY2VUYWcsIHRhcmdldFRhZ10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1c2godGFnOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGUoWydwdXNoJywgdGFnXSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgYSBDREsgRG9ja2VyIENyZWRlbnRpYWxzIGZpbGUgZXhpc3RzLCBjcmVhdGVzIGEgbmV3IERvY2tlciBjb25maWcgZGlyZWN0b3J5LlxuICAgKiBTZXRzIHVwIGBkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzYCB0byBiZSB0aGUgY3JlZGVudGlhbCBoZWxwZXIgZm9yIGVhY2ggZG9tYWluIGluIHRoZSBDREsgY29uZmlnLlxuICAgKiBBbGwgZnV0dXJlIGNvbW1hbmRzIChlLmcuLCBgYnVpbGRgLCBgcHVzaGApIHdpbGwgdXNlIHRoaXMgY29uZmlnLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZW5naW5lL3JlZmVyZW5jZS9jb21tYW5kbGluZS9sb2dpbi8jY3JlZGVudGlhbC1oZWxwZXJzIGZvciBtb3JlIGRldGFpbHMgb24gY3JlZCBoZWxwZXJzLlxuICAgKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIENESyBjb25maWcgd2FzIGZvdW5kIGFuZCBjb25maWd1cmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBjb25maWd1cmVDZGtDcmVkZW50aWFscygpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSBjZGtDcmVkZW50aWFsc0NvbmZpZygpO1xuICAgIGlmICghY29uZmlnKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgdGhpcy5jb25maWdEaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGtEb2NrZXJDb25maWcnKSk7XG5cbiAgICBjb25zdCBkb21haW5zID0gT2JqZWN0LmtleXMoY29uZmlnLmRvbWFpbkNyZWRlbnRpYWxzKTtcbiAgICBjb25zdCBjcmVkSGVscGVycyA9IGRvbWFpbnMucmVkdWNlKChtYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGRvbWFpbikgPT4ge1xuICAgICAgbWFwW2RvbWFpbl0gPSAnY2RrLWFzc2V0cyc7IC8vIFVzZSBkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzIGZvciB0aGlzIGRvbWFpblxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LCB7fSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGhpcy5jb25maWdEaXIsICdjb25maWcuanNvbicpLCBKU09OLnN0cmluZ2lmeSh7IGNyZWRIZWxwZXJzIH0pLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbnkgY29uZmlndXJlZCBEb2NrZXIgY29uZmlnIGRpcmVjdG9yeS5cbiAgICogQWxsIGZ1dHVyZSBjb21tYW5kcyAoZS5nLiwgYGJ1aWxkYCwgYHB1c2hgKSB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb25maWcuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGFmdGVyIGNhbGxpbmcgYGNvbmZpZ3VyZUNka0NyZWRlbnRpYWxzYCB0byByZXNldCB0byBkZWZhdWx0IGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgcHVibGljIHJlc2V0QXV0aFBsdWdpbnMoKSB7XG4gICAgdGhpcy5jb25maWdEaXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGUoYXJnczogc3RyaW5nW10sIG9wdGlvbnM6IFNoZWxsT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgY29uZmlnQXJncyA9IHRoaXMuY29uZmlnRGlyID8gWyctLWNvbmZpZycsIHRoaXMuY29uZmlnRGlyXSA6IFtdO1xuXG4gICAgY29uc3QgcGF0aFRvQ2RrQXNzZXRzID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2JpbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzaGVsbChbJ2RvY2tlcicsIC4uLmNvbmZpZ0FyZ3MsIC4uLmFyZ3NdLCB7XG4gICAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICAgIC4uLm9wdGlvbnMuZW52LFxuICAgICAgICAgIFBBVEg6IGAke3BhdGhUb0Nka0Fzc2V0c30ke3BhdGguZGVsaW1pdGVyfSR7b3B0aW9ucy5lbnY/LlBBVEggPz8gcHJvY2Vzcy5lbnYuUEFUSH1gLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZXhlY3V0ZSBcXCdkb2NrZXJcXCcgaW4gb3JkZXIgdG8gYnVpbGQgYSBjb250YWluZXIgYXNzZXQuIFBsZWFzZSBpbnN0YWxsIFxcJ2RvY2tlclxcJyBhbmQgdHJ5IGFnYWluLicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlbih4OiBzdHJpbmdbXVtdKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0KFtdLCAuLi54KTtcbn1cbiJdfQ==
@@ -42,20 +42,24 @@ class FileAssetHandler {
42
42
  // required for SCP rules denying uploads without encryption header
43
43
  let paramsEncryption = {};
44
44
  const encryption2 = await bucketInfo.bucketEncryption(s3, destination.bucketName);
45
- switch (encryption2) {
46
- case BucketEncryption.NO_ENCRYPTION:
45
+ switch (encryption2.type) {
46
+ case 'no_encryption':
47
47
  break;
48
- case BucketEncryption.SSEAlgorithm_AES256:
48
+ case 'aes256':
49
49
  paramsEncryption = { ServerSideEncryption: 'AES256' };
50
50
  break;
51
- case BucketEncryption.SSEAlgorithm_aws_kms:
52
- paramsEncryption = { ServerSideEncryption: 'aws:kms' };
51
+ case 'kms':
52
+ // We must include the key ID otherwise S3 will encrypt with the default key
53
+ paramsEncryption = {
54
+ ServerSideEncryption: 'aws:kms',
55
+ SSEKMSKeyId: encryption2.kmsKeyId,
56
+ };
53
57
  break;
54
- case BucketEncryption.DOES_NOT_EXIST:
58
+ case 'does_not_exist':
55
59
  this.host.emitMessage(progress_1.EventType.DEBUG, `No bucket named '${destination.bucketName}'. Is account ${await account()} bootstrapped?`);
56
60
  break;
57
- case BucketEncryption.ACCES_DENIED:
58
- this.host.emitMessage(progress_1.EventType.DEBUG, `ACCES_DENIED for getting encryption of bucket '${destination.bucketName}'. Either wrong account ${await account()} or s3:GetEncryptionConfiguration not set for cdk role. Try "cdk bootstrap" again.`);
61
+ case 'access_denied':
62
+ this.host.emitMessage(progress_1.EventType.DEBUG, `Could not read encryption settings of bucket '${destination.bucketName}': uploading with default settings ("cdk bootstrap" to version 9 if your organization's policies prevent a successful upload or to get rid of this message).`);
59
63
  break;
60
64
  }
61
65
  if (this.host.aborted) {
@@ -110,14 +114,6 @@ var BucketOwnership;
110
114
  BucketOwnership[BucketOwnership["MINE"] = 1] = "MINE";
111
115
  BucketOwnership[BucketOwnership["SOMEONE_ELSES_OR_NO_ACCESS"] = 2] = "SOMEONE_ELSES_OR_NO_ACCESS";
112
116
  })(BucketOwnership || (BucketOwnership = {}));
113
- var BucketEncryption;
114
- (function (BucketEncryption) {
115
- BucketEncryption[BucketEncryption["NO_ENCRYPTION"] = 0] = "NO_ENCRYPTION";
116
- BucketEncryption[BucketEncryption["SSEAlgorithm_AES256"] = 1] = "SSEAlgorithm_AES256";
117
- BucketEncryption[BucketEncryption["SSEAlgorithm_aws_kms"] = 2] = "SSEAlgorithm_aws_kms";
118
- BucketEncryption[BucketEncryption["ACCES_DENIED"] = 3] = "ACCES_DENIED";
119
- BucketEncryption[BucketEncryption["DOES_NOT_EXIST"] = 4] = "DOES_NOT_EXIST";
120
- })(BucketEncryption || (BucketEncryption = {}));
121
117
  async function objectExists(s3, bucket, key) {
122
118
  /*
123
119
  * The object existence check here refrains from using the `headObject` operation because this
@@ -176,30 +172,31 @@ class BucketInformation {
176
172
  }
177
173
  }
178
174
  async _bucketEncryption(s3, bucket) {
179
- var _a, _b, _c, _d, _e, _f;
175
+ var _a, _b, _c, _d, _e;
180
176
  try {
181
177
  const encryption = await s3.getBucketEncryption({ Bucket: bucket }).promise();
182
178
  const l = (_c = (_b = (_a = encryption === null || encryption === void 0 ? void 0 : encryption.ServerSideEncryptionConfiguration) === null || _a === void 0 ? void 0 : _a.Rules) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
183
179
  if (l > 0) {
184
- let ssealgo = (_f = (_e = (_d = encryption === null || encryption === void 0 ? void 0 : encryption.ServerSideEncryptionConfiguration) === null || _d === void 0 ? void 0 : _d.Rules[0]) === null || _e === void 0 ? void 0 : _e.ApplyServerSideEncryptionByDefault) === null || _f === void 0 ? void 0 : _f.SSEAlgorithm;
180
+ const apply = (_e = (_d = encryption === null || encryption === void 0 ? void 0 : encryption.ServerSideEncryptionConfiguration) === null || _d === void 0 ? void 0 : _d.Rules[0]) === null || _e === void 0 ? void 0 : _e.ApplyServerSideEncryptionByDefault;
181
+ let ssealgo = apply === null || apply === void 0 ? void 0 : apply.SSEAlgorithm;
185
182
  if (ssealgo === 'AES256')
186
- return BucketEncryption.SSEAlgorithm_AES256;
183
+ return { type: 'aes256' };
187
184
  if (ssealgo === 'aws:kms')
188
- return BucketEncryption.SSEAlgorithm_aws_kms;
185
+ return { type: 'kms', kmsKeyId: apply === null || apply === void 0 ? void 0 : apply.KMSMasterKeyID };
189
186
  }
190
- return BucketEncryption.NO_ENCRYPTION;
187
+ return { type: 'no_encryption' };
191
188
  }
192
189
  catch (e) {
193
190
  if (e.code === 'NoSuchBucket') {
194
- return BucketEncryption.DOES_NOT_EXIST;
191
+ return { type: 'does_not_exist' };
195
192
  }
196
193
  if (e.code === 'ServerSideEncryptionConfigurationNotFoundError') {
197
- return BucketEncryption.NO_ENCRYPTION;
194
+ return { type: 'no_encryption' };
198
195
  }
199
196
  if (['AccessDenied', 'AllAccessDisabled'].includes(e.code)) {
200
- return BucketEncryption.ACCES_DENIED;
197
+ return { type: 'access_denied' };
201
198
  }
202
- return BucketEncryption.NO_ENCRYPTION;
199
+ return { type: 'no_encryption' };
203
200
  }
204
201
  }
205
202
  }
@@ -212,4 +209,4 @@ async function cached(cache, key, factory) {
212
209
  cache.set(key, fresh);
213
210
  return fresh;
214
211
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBc0Q7QUFDdEQsNkJBQTZCO0FBQzdCLDBFQUFnRjtBQUNoRiw2QkFBNkI7QUFFN0IsNkNBQTJDO0FBQzNDLHdDQUEwQztBQUUxQywwQ0FBeUM7QUFDekMsa0RBQXlEO0FBQ3pELG9DQUFpQztBQUVqQyxNQUFhLGdCQUFnQjtJQUczQixZQUNtQixPQUFlLEVBQ2YsS0FBd0IsRUFDeEIsSUFBa0I7UUFGbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQ0FBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLFFBQVEsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsbUZBQW1GO1FBQ25GLG9DQUFvQztRQUNwQyxNQUFNLE9BQU8sR0FB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ZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRmlsZUFzc2V0UGFja2FnaW5nLCBGaWxlU291cmNlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgeyBGaWxlTWFuaWZlc3RFbnRyeSB9IGZyb20gJy4uLy4uL2Fzc2V0LW1hbmlmZXN0JztcbmltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uLy4uL3Byb2dyZXNzJztcbmltcG9ydCB7IHppcERpcmVjdG9yeSB9IGZyb20gJy4uL2FyY2hpdmUnO1xuaW1wb3J0IHsgSUFzc2V0SGFuZGxlciwgSUhhbmRsZXJIb3N0IH0gZnJvbSAnLi4vYXNzZXQtaGFuZGxlcic7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSAnLi4vZnMtZXh0cmEnO1xuaW1wb3J0IHsgcmVwbGFjZUF3c1BsYWNlaG9sZGVycyB9IGZyb20gJy4uL3BsYWNlaG9sZGVycyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4uL3NoZWxsJztcblxuZXhwb3J0IGNsYXNzIEZpbGVBc3NldEhhbmRsZXIgaW1wbGVtZW50cyBJQXNzZXRIYW5kbGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlQ2FjaGVSb290OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrRGlyOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhc3NldDogRmlsZU1hbmlmZXN0RW50cnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0OiBJSGFuZGxlckhvc3QpIHtcbiAgICB0aGlzLmZpbGVDYWNoZVJvb3QgPSBwYXRoLmpvaW4od29ya0RpciwgJy5jYWNoZScpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1Ymxpc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSBhd2FpdCByZXBsYWNlQXdzUGxhY2Vob2xkZXJzKHRoaXMuYXNzZXQuZGVzdGluYXRpb24sIHRoaXMuaG9zdC5hd3MpO1xuICAgIGNvbnN0IHMzVXJsID0gYHMzOi8vJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfS8ke2Rlc3RpbmF0aW9uLm9iamVjdEtleX1gO1xuICAgIGNvbnN0IHMzID0gYXdhaXQgdGhpcy5ob3N0LmF3cy5zM0NsaWVudChkZXN0aW5hdGlvbik7XG4gICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5DSEVDSywgYENoZWNrICR7czNVcmx9YCk7XG5cbiAgICBjb25zdCBidWNrZXRJbmZvID0gQnVja2V0SW5mb3JtYXRpb24uZm9yKHRoaXMuaG9zdCk7XG5cbiAgICAvLyBBIHRodW5rIGZvciBkZXNjcmliaW5nIHRoZSBjdXJyZW50IGFjY291bnQuIFVzZWQgd2hlbiB3ZSBuZWVkIHRvIGZvcm1hdCBhbiBlcnJvclxuICAgIC8vIG1lc3NhZ2UsIG5vdCBpbiB0aGUgc3VjY2VzcyBjYXNlLlxuICAgIGNvbnN0IGFjY291bnQgPSBhc3luYyAoKSA9PiAoYXdhaXQgdGhpcy5ob3N0LmF3cy5kaXNjb3ZlclRhcmdldEFjY291bnQoZGVzdGluYXRpb24pKT8uYWNjb3VudElkO1xuICAgIHN3aXRjaCAoYXdhaXQgYnVja2V0SW5mby5idWNrZXRPd25lcnNoaXAoczMsIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUpKSB7XG4gICAgICBjYXNlIEJ1Y2tldE93bmVyc2hpcC5NSU5FOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScuIElzIGFjY291bnQgJHthd2FpdCBhY2NvdW50KCl9IGJvb3RzdHJhcHBlZD9gKTtcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLlNPTUVPTkVfRUxTRVNfT1JfTk9fQUNDRVNTOlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJ1Y2tldCBuYW1lZCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScgZXhpc3RzLCBidXQgbm90IGluIGFjY291bnQgJHthd2FpdCBhY2NvdW50KCl9LiBXcm9uZyBhY2NvdW50P2ApO1xuICAgIH1cblxuICAgIGlmIChhd2FpdCBvYmplY3RFeGlzdHMoczMsIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUsIGRlc3RpbmF0aW9uLm9iamVjdEtleSkpIHtcbiAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuRk9VTkQsIGBGb3VuZCAke3MzVXJsfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElkZW50aWZ5IHRoZSB0aGUgYnVja2V0IGVuY3J5cHRpb24gdHlwZSB0byBzZXQgdGhlIGhlYWRlciBvbiB1cGxvYWRcbiAgICAvLyByZXF1aXJlZCBmb3IgU0NQIHJ1bGVzIGRlbnlpbmcgdXBsb2FkcyB3aXRob3V0IGVuY3J5cHRpb24gaGVhZGVyXG4gICAgbGV0IHBhcmFtc0VuY3J5cHRpb246IHtbaW5kZXg6IHN0cmluZ106YW55fT0ge307XG4gICAgY29uc3QgZW5jcnlwdGlvbjIgPSBhd2FpdCBidWNrZXRJbmZvLmJ1Y2tldEVuY3J5cHRpb24oczMsIGRlc3RpbmF0aW9uLmJ1Y2tldE5hbWUpO1xuICAgIHN3aXRjaCAoZW5jcnlwdGlvbjIpIHtcbiAgICAgIGNhc2UgQnVja2V0RW5jcnlwdGlvbi5OT19FTkNSWVBUSU9OOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQnVja2V0RW5jcnlwdGlvbi5TU0VBbGdvcml0aG1fQUVTMjU2OlxuICAgICAgICBwYXJhbXNFbmNyeXB0aW9uID0geyBTZXJ2ZXJTaWRlRW5jcnlwdGlvbjogJ0FFUzI1NicgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1Y2tldEVuY3J5cHRpb24uU1NFQWxnb3JpdGhtX2F3c19rbXM6XG4gICAgICAgIHBhcmFtc0VuY3J5cHRpb24gPSB7IFNlcnZlclNpZGVFbmNyeXB0aW9uOiAnYXdzOmttcycgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJ1Y2tldEVuY3J5cHRpb24uRE9FU19OT1RfRVhJU1Q6XG4gICAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuREVCVUcsIGBObyBidWNrZXQgbmFtZWQgJyR7ZGVzdGluYXRpb24uYnVja2V0TmFtZX0nLiBJcyBhY2NvdW50ICR7YXdhaXQgYWNjb3VudCgpfSBib290c3RyYXBwZWQ/YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdWNrZXRFbmNyeXB0aW9uLkFDQ0VTX0RFTklFRDpcbiAgICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5ERUJVRywgYEFDQ0VTX0RFTklFRCBmb3IgZ2V0dGluZyBlbmNyeXB0aW9uIG9mIGJ1Y2tldCAnJHtkZXN0aW5hdGlvbi5idWNrZXROYW1lfScuIEVpdGhlciB3cm9uZyBhY2NvdW50ICR7YXdhaXQgYWNjb3VudCgpfSBvciBzMzpHZXRFbmNyeXB0aW9uQ29uZmlndXJhdGlvbiBub3Qgc2V0IGZvciBjZGsgcm9sZS4gVHJ5IFwiY2RrIGJvb3RzdHJhcFwiIGFnYWluLmApO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0LmFib3J0ZWQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHVibGlzaEZpbGUgPSB0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlID9cbiAgICAgIGF3YWl0IHRoaXMuZXh0ZXJuYWxQYWNrYWdlRmlsZSh0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlKSA6IGF3YWl0IHRoaXMucGFja2FnZUZpbGUodGhpcy5hc3NldC5zb3VyY2UpO1xuXG4gICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5VUExPQUQsIGBVcGxvYWQgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgIEJ1Y2tldDogZGVzdGluYXRpb24uYnVja2V0TmFtZSxcbiAgICAgIEtleTogZGVzdGluYXRpb24ub2JqZWN0S2V5LFxuICAgICAgQm9keTogY3JlYXRlUmVhZFN0cmVhbShwdWJsaXNoRmlsZS5wYWNrYWdlZFBhdGgpLFxuICAgICAgQ29udGVudFR5cGU6IHB1Ymxpc2hGaWxlLmNvbnRlbnRUeXBlLFxuICAgIH0sXG4gICAgcGFyYW1zRW5jcnlwdGlvbik7XG5cbiAgICBhd2FpdCBzMy51cGxvYWQocGFyYW1zKS5wcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhY2thZ2VGaWxlKHNvdXJjZTogRmlsZVNvdXJjZSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICBpZiAoIXNvdXJjZS5wYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCdwYXRoJyBpcyBleHBlY3RlZCBpbiB0aGUgRmlsZSBhc3NldCBzb3VyY2UsIGdvdDogJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMud29ya0Rpciwgc291cmNlLnBhdGgpO1xuXG4gICAgaWYgKHNvdXJjZS5wYWNrYWdpbmcgPT09IEZpbGVBc3NldFBhY2thZ2luZy5aSVBfRElSRUNUT1JZKSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi96aXAnO1xuXG4gICAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmZpbGVDYWNoZVJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc3QgcGFja2FnZWRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmlsZUNhY2hlUm9vdCwgYCR7dGhpcy5hc3NldC5pZC5hc3NldElkfS56aXBgKTtcblxuICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGFja2FnZWRQYXRoKSkge1xuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNBQ0hFRCwgYEZyb20gY2FjaGUgJHtwYXRofWApO1xuICAgICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGgsIGNvbnRlbnRUeXBlIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuQlVJTEQsIGBaaXAgJHtmdWxsUGF0aH0gLT4gJHtwYXRofWApO1xuICAgICAgYXdhaXQgemlwRGlyZWN0b3J5KGZ1bGxQYXRoLCBwYWNrYWdlZFBhdGgpO1xuICAgICAgcmV0dXJuIHsgcGFja2FnZWRQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmdWxsUGF0aCkgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGg6IGZ1bGxQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXh0ZXJuYWxQYWNrYWdlRmlsZShleGVjdXRhYmxlOiBzdHJpbmdbXSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkJVSUxELCBgQnVpbGRpbmcgYXNzZXQgc291cmNlIHVzaW5nIGNvbW1hbmQ6ICcke2V4ZWN1dGFibGV9J2ApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhY2thZ2VkUGF0aDogKGF3YWl0IHNoZWxsKGV4ZWN1dGFibGUsIHsgcXVpZXQ6IHRydWUgfSkpLnRyaW0oKSxcbiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vemlwJyxcbiAgICB9O1xuICB9XG59XG5cbmVudW0gQnVja2V0T3duZXJzaGlwIHtcbiAgRE9FU19OT1RfRVhJU1QsXG4gIE1JTkUsXG4gIFNPTUVPTkVfRUxTRVNfT1JfTk9fQUNDRVNTXG59XG5cbmVudW0gQnVja2V0RW5jcnlwdGlvbiB7XG4gIE5PX0VOQ1JZUFRJT04sXG4gIFNTRUFsZ29yaXRobV9BRVMyNTYsXG4gIFNTRUFsZ29yaXRobV9hd3Nfa21zLFxuICBBQ0NFU19ERU5JRUQsXG4gIERPRVNfTk9UX0VYSVNUXG59XG5cbmFzeW5jIGZ1bmN0aW9uIG9iamVjdEV4aXN0cyhzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZywga2V5OiBzdHJpbmcpIHtcbiAgLypcbiAgICogVGhlIG9iamVjdCBleGlzdGVuY2UgY2hlY2sgaGVyZSByZWZyYWlucyBmcm9tIHVzaW5nIHRoZSBgaGVhZE9iamVjdGAgb3BlcmF0aW9uIGJlY2F1c2UgdGhpc1xuICAgKiB3b3VsZCBjcmVhdGUgYSBuZWdhdGl2ZSBjYWNoZSBlbnRyeSwgbWFraW5nIEdFVC1hZnRlci1QVVQgZXZlbnR1YWxseSBjb25zaXN0ZW50LiBUaGlzIGhhcyBiZWVuXG4gICAqIG9ic2VydmVkIHRvIHJlc3VsdCBpbiBDbG91ZEZvcm1hdGlvbiBpc3N1aW5nIFwiVmFsaWRhdGlvbkVycm9yOiBTMyBlcnJvcjogQWNjZXNzIERlbmllZFwiLCBmb3JcbiAgICogZXhhbXBsZSBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzY0MzAuXG4gICAqXG4gICAqIFRvIHByZXZlbnQgdGhpcywgd2UgYXJlIGluc3RlYWQgdXNpbmcgdGhlIGxpc3RPYmplY3RzVjIgY2FsbCwgdXNpbmcgdGhlIGxvb2tlZCB1cCBrZXkgYXMgdGhlXG4gICAqIHByZWZpeCwgYW5kIGxpbWl0aW5nIHJlc3VsdHMgdG8gMS4gU2luY2UgdGhlIGxpc3Qgb3BlcmF0aW9uIHJldHVybnMga2V5cyBvcmRlcmVkIGJ5IGJpbmFyeVxuICAgKiBVVEYtOCByZXByZXNlbnRhdGlvbiwgdGhlIGtleSB3ZSBhcmUgbG9va2luZyBmb3IgaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUgdGhlIGZpcnN0IG1hdGNoXG4gICAqIHJldHVybmVkIGlmIGl0IGV4aXN0cy5cbiAgICovXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgczMubGlzdE9iamVjdHNWMih7IEJ1Y2tldDogYnVja2V0LCBQcmVmaXg6IGtleSwgTWF4S2V5czogMSB9KS5wcm9taXNlKCk7XG4gIHJldHVybiByZXNwb25zZS5Db250ZW50cyAhPSBudWxsICYmIHJlc3BvbnNlLkNvbnRlbnRzLnNvbWUob2JqZWN0ID0+IG9iamVjdC5LZXkgPT09IGtleSk7XG59XG5cblxuLyoqXG4gKiBBIHBhY2thZ2VkIGFzc2V0IHdoaWNoIGNhbiBiZSB1cGxvYWRlZCAoZWl0aGVyIGEgc2luZ2xlIGZpbGUgb3IgZGlyZWN0b3J5KVxuICovXG5pbnRlcmZhY2UgUGFja2FnZWRGaWxlQXNzZXQge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnlcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VkUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHR5cGUgdG8gYmUgYWRkZWQgaW4gdGhlIFMzIHVwbG9hZCBhY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjb250ZW50IHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5cbi8qKlxuICogQ2FjaGUgZm9yIGJ1Y2tldCBpbmZvcm1hdGlvbiwgc28gd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIGRvaW5nIHRoZSBzYW1lIGNhbGxzIGFnYWluIGFuZCBhZ2FpblxuICpcbiAqIFdlIHNjb3BlIHRoZSBsaWZldGltZSBvZiB0aGUgY2FjaGUgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSBob3N0LCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG9cbiAqIGFueXRoaW5nIHNwZWNpYWwgZm9yIHRlc3RzIGFuZCB5ZXQgdGhlIGNhY2hlIHdpbGwgbGl2ZSBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiB0aGUgYXNzZXRcbiAqIHVwbG9hZCBzZXNzaW9uIHdoZW4gdXNlZCBieSB0aGUgQ0xJLlxuICovXG5jbGFzcyBCdWNrZXRJbmZvcm1hdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yKGhvc3Q6IElIYW5kbGVySG9zdCkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gQnVja2V0SW5mb3JtYXRpb24uY2FjaGVzLmdldChob3N0KTtcbiAgICBpZiAoZXhpc3RpbmcpIHsgcmV0dXJuIGV4aXN0aW5nOyB9XG5cbiAgICBjb25zdCBmcmVzaCA9IG5ldyBCdWNrZXRJbmZvcm1hdGlvbigpO1xuICAgIEJ1Y2tldEluZm9ybWF0aW9uLmNhY2hlcy5zZXQoaG9zdCwgZnJlc2gpO1xuICAgIHJldHVybiBmcmVzaDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNhY2hlcyA9IG5ldyBXZWFrTWFwPElIYW5kbGVySG9zdCwgQnVja2V0SW5mb3JtYXRpb24+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcnNoaXBzID0gbmV3IE1hcDxzdHJpbmcsIEJ1Y2tldE93bmVyc2hpcD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlbmNyeXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBCdWNrZXRFbmNyeXB0aW9uPigpO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYnVja2V0T3duZXJzaGlwKHMzOiBBV1MuUzMsIGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTxCdWNrZXRPd25lcnNoaXA+IHtcbiAgICByZXR1cm4gY2FjaGVkKHRoaXMub3duZXJzaGlwcywgYnVja2V0LCAoKSA9PiB0aGlzLl9idWNrZXRPd25lcnNoaXAoczMsIGJ1Y2tldCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1Y2tldEVuY3J5cHRpb24oczM6IEFXUy5TMywgYnVja2V0OiBzdHJpbmcpOiBQcm9taXNlPEJ1Y2tldEVuY3J5cHRpb24+IHtcbiAgICByZXR1cm4gY2FjaGVkKHRoaXMuZW5jcnlwdGlvbnMsIGJ1Y2tldCwgKCkgPT4gdGhpcy5fYnVja2V0RW5jcnlwdGlvbihzMywgYnVja2V0KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9idWNrZXRPd25lcnNoaXAoczM6IEFXUy5TMywgYnVja2V0OiBzdHJpbmcpOiBQcm9taXNlPEJ1Y2tldE93bmVyc2hpcD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzMy5nZXRCdWNrZXRMb2NhdGlvbih7IEJ1Y2tldDogYnVja2V0IH0pLnByb21pc2UoKTtcbiAgICAgIHJldHVybiBCdWNrZXRPd25lcnNoaXAuTUlORTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5jb2RlID09PSAnTm9TdWNoQnVja2V0JykgeyByZXR1cm4gQnVja2V0T3duZXJzaGlwLkRPRVNfTk9UX0VYSVNUOyB9XG4gICAgICBpZiAoWydBY2Nlc3NEZW5pZWQnLCAnQWxsQWNjZXNzRGlzYWJsZWQnXS5pbmNsdWRlcyhlLmNvZGUpKSB7IHJldHVybiBCdWNrZXRPd25lcnNoaXAuU09NRU9ORV9FTFNFU19PUl9OT19BQ0NFU1M7IH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfYnVja2V0RW5jcnlwdGlvbihzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZyk6IFByb21pc2U8QnVja2V0RW5jcnlwdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmNyeXB0aW9uID0gYXdhaXQgczMuZ2V0QnVja2V0RW5jcnlwdGlvbih7IEJ1Y2tldDogYnVja2V0IH0pLnByb21pc2UoKTtcbiAgICAgIGNvbnN0IGwgPSBlbmNyeXB0aW9uPy5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/LlJ1bGVzPy5sZW5ndGggPz8gMDtcbiAgICAgIGlmIChsID4gMCkge1xuICAgICAgICBsZXQgc3NlYWxnbyA9IGVuY3J5cHRpb24/LlNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbj8uUnVsZXNbMF0/LkFwcGx5U2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ/LlNTRUFsZ29yaXRobTtcbiAgICAgICAgaWYgKHNzZWFsZ28gPT09ICdBRVMyNTYnKSByZXR1cm4gQnVja2V0RW5jcnlwdGlvbi5TU0VBbGdvcml0aG1fQUVTMjU2O1xuICAgICAgICBpZiAoc3NlYWxnbyA9PT0gJ2F3czprbXMnKSByZXR1cm4gQnVja2V0RW5jcnlwdGlvbi5TU0VBbGdvcml0aG1fYXdzX2ttcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBCdWNrZXRFbmNyeXB0aW9uLk5PX0VOQ1JZUFRJT047XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ05vU3VjaEJ1Y2tldCcpIHtcbiAgICAgICAgcmV0dXJuIEJ1Y2tldEVuY3J5cHRpb24uRE9FU19OT1RfRVhJU1Q7XG4gICAgICB9XG4gICAgICBpZiAoZS5jb2RlID09PSAnU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uTm90Rm91bmRFcnJvcicpIHtcbiAgICAgICAgcmV0dXJuIEJ1Y2tldEVuY3J5cHRpb24uTk9fRU5DUllQVElPTjtcbiAgICAgIH1cblxuICAgICAgaWYgKFsnQWNjZXNzRGVuaWVkJywgJ0FsbEFjY2Vzc0Rpc2FibGVkJ10uaW5jbHVkZXMoZS5jb2RlKSkge1xuICAgICAgICByZXR1cm4gQnVja2V0RW5jcnlwdGlvbi5BQ0NFU19ERU5JRUQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gQnVja2V0RW5jcnlwdGlvbi5OT19FTkNSWVBUSU9OO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjYWNoZWQ8QSwgQj4oY2FjaGU6IE1hcDxBLCBCPiwga2V5OiBBLCBmYWN0b3J5OiAoeDogQSkgPT4gUHJvbWlzZTxCPik6IFByb21pc2U8Qj4ge1xuICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSkhO1xuICB9XG5cbiAgY29uc3QgZnJlc2ggPSBhd2FpdCBmYWN0b3J5KGtleSk7XG4gIGNhY2hlLnNldChrZXksIGZyZXNoKTtcbiAgcmV0dXJuIGZyZXNoO1xufSJdfQ==
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBc0Q7QUFDdEQsNkJBQTZCO0FBQzdCLDBFQUFnRjtBQUNoRiw2QkFBNkI7QUFFN0IsNkNBQTJDO0FBQzNDLHdDQUEwQztBQUUxQywwQ0FBeUM7QUFDekMsa0RBQXlEO0FBQ3pELG9DQUFpQztBQUVqQyxNQUFhLGdCQUFnQjtJQUczQixZQUNtQixPQUFlLEVBQ2YsS0FBd0IsRUFDeEIsSUFBa0I7UUFGbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQ0FBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sS0FBSyxHQUFHLFFBQVEsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEQsbUZBQW1GO1FBQ25GLG9DQUFvQztRQUNwQyxNQUFNLE9BQU8sR0FB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cnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBGaWxlQXNzZXRQYWNrYWdpbmcsIEZpbGVTb3VyY2UgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lJztcbmltcG9ydCB7IEZpbGVNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi4vLi4vYXNzZXQtbWFuaWZlc3QnO1xuaW1wb3J0IHsgRXZlbnRUeXBlIH0gZnJvbSAnLi4vLi4vcHJvZ3Jlc3MnO1xuaW1wb3J0IHsgemlwRGlyZWN0b3J5IH0gZnJvbSAnLi4vYXJjaGl2ZSc7XG5pbXBvcnQgeyBJQXNzZXRIYW5kbGVyLCBJSGFuZGxlckhvc3QgfSBmcm9tICcuLi9hc3NldC1oYW5kbGVyJztcbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tICcuLi9mcy1leHRyYSc7XG5pbXBvcnQgeyByZXBsYWNlQXdzUGxhY2Vob2xkZXJzIH0gZnJvbSAnLi4vcGxhY2Vob2xkZXJzJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi4vc2hlbGwnO1xuXG5leHBvcnQgY2xhc3MgRmlsZUFzc2V0SGFuZGxlciBpbXBsZW1lbnRzIElBc3NldEhhbmRsZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbGVDYWNoZVJvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtEaXI6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0OiBGaWxlTWFuaWZlc3RFbnRyeSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IElIYW5kbGVySG9zdCkge1xuICAgIHRoaXMuZmlsZUNhY2hlUm9vdCA9IHBhdGguam9pbih3b3JrRGlyLCAnLmNhY2hlJyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGF3YWl0IHJlcGxhY2VBd3NQbGFjZWhvbGRlcnModGhpcy5hc3NldC5kZXN0aW5hdGlvbiwgdGhpcy5ob3N0LmF3cyk7XG4gICAgY29uc3QgczNVcmwgPSBgczM6Ly8ke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9LyR7ZGVzdGluYXRpb24ub2JqZWN0S2V5fWA7XG4gICAgY29uc3QgczMgPSBhd2FpdCB0aGlzLmhvc3QuYXdzLnMzQ2xpZW50KGRlc3RpbmF0aW9uKTtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNIRUNLLCBgQ2hlY2sgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IGJ1Y2tldEluZm8gPSBCdWNrZXRJbmZvcm1hdGlvbi5mb3IodGhpcy5ob3N0KTtcblxuICAgIC8vIEEgdGh1bmsgZm9yIGRlc2NyaWJpbmcgdGhlIGN1cnJlbnQgYWNjb3VudC4gVXNlZCB3aGVuIHdlIG5lZWQgdG8gZm9ybWF0IGFuIGVycm9yXG4gICAgLy8gbWVzc2FnZSwgbm90IGluIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgY29uc3QgYWNjb3VudCA9IGFzeW5jICgpID0+IChhd2FpdCB0aGlzLmhvc3QuYXdzLmRpc2NvdmVyVGFyZ2V0QWNjb3VudChkZXN0aW5hdGlvbikpPy5hY2NvdW50SWQ7XG4gICAgc3dpdGNoIChhd2FpdCBidWNrZXRJbmZvLmJ1Y2tldE93bmVyc2hpcChzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSkpIHtcbiAgICAgIGNhc2UgQnVja2V0T3duZXJzaGlwLk1JTkU6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCdWNrZXRPd25lcnNoaXAuRE9FU19OT1RfRVhJU1Q6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gYnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9Jy4gSXMgYWNjb3VudCAke2F3YWl0IGFjY291bnQoKX0gYm9vdHN0cmFwcGVkP2ApO1xuICAgICAgY2FzZSBCdWNrZXRPd25lcnNoaXAuU09NRU9ORV9FTFNFU19PUl9OT19BQ0NFU1M6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9JyBleGlzdHMsIGJ1dCBub3QgaW4gYWNjb3VudCAke2F3YWl0IGFjY291bnQoKX0uIFdyb25nIGFjY291bnQ/YCk7XG4gICAgfVxuXG4gICAgaWYgKGF3YWl0IG9iamVjdEV4aXN0cyhzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSwgZGVzdGluYXRpb24ub2JqZWN0S2V5KSkge1xuICAgICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5GT1VORCwgYEZvdW5kICR7czNVcmx9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWRlbnRpZnkgdGhlIHRoZSBidWNrZXQgZW5jcnlwdGlvbiB0eXBlIHRvIHNldCB0aGUgaGVhZGVyIG9uIHVwbG9hZFxuICAgIC8vIHJlcXVpcmVkIGZvciBTQ1AgcnVsZXMgZGVueWluZyB1cGxvYWRzIHdpdGhvdXQgZW5jcnlwdGlvbiBoZWFkZXJcbiAgICBsZXQgcGFyYW1zRW5jcnlwdGlvbjoge1tpbmRleDogc3RyaW5nXTphbnl9PSB7fTtcbiAgICBjb25zdCBlbmNyeXB0aW9uMiA9IGF3YWl0IGJ1Y2tldEluZm8uYnVja2V0RW5jcnlwdGlvbihzMywgZGVzdGluYXRpb24uYnVja2V0TmFtZSk7XG4gICAgc3dpdGNoIChlbmNyeXB0aW9uMi50eXBlKSB7XG4gICAgICBjYXNlICdub19lbmNyeXB0aW9uJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZXMyNTYnOlxuICAgICAgICBwYXJhbXNFbmNyeXB0aW9uID0geyBTZXJ2ZXJTaWRlRW5jcnlwdGlvbjogJ0FFUzI1NicgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdrbXMnOlxuICAgICAgICAvLyBXZSBtdXN0IGluY2x1ZGUgdGhlIGtleSBJRCBvdGhlcndpc2UgUzMgd2lsbCBlbmNyeXB0IHdpdGggdGhlIGRlZmF1bHQga2V5XG4gICAgICAgIHBhcmFtc0VuY3J5cHRpb24gPSB7XG4gICAgICAgICAgU2VydmVyU2lkZUVuY3J5cHRpb246ICdhd3M6a21zJyxcbiAgICAgICAgICBTU0VLTVNLZXlJZDogZW5jcnlwdGlvbjIua21zS2V5SWQsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG9lc19ub3RfZXhpc3QnOlxuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkRFQlVHLCBgTm8gYnVja2V0IG5hbWVkICcke2Rlc3RpbmF0aW9uLmJ1Y2tldE5hbWV9Jy4gSXMgYWNjb3VudCAke2F3YWl0IGFjY291bnQoKX0gYm9vdHN0cmFwcGVkP2ApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FjY2Vzc19kZW5pZWQnOlxuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkRFQlVHLCBgQ291bGQgbm90IHJlYWQgZW5jcnlwdGlvbiBzZXR0aW5ncyBvZiBidWNrZXQgJyR7ZGVzdGluYXRpb24uYnVja2V0TmFtZX0nOiB1cGxvYWRpbmcgd2l0aCBkZWZhdWx0IHNldHRpbmdzIChcImNkayBib290c3RyYXBcIiB0byB2ZXJzaW9uIDkgaWYgeW91ciBvcmdhbml6YXRpb24ncyBwb2xpY2llcyBwcmV2ZW50IGEgc3VjY2Vzc2Z1bCB1cGxvYWQgb3IgdG8gZ2V0IHJpZCBvZiB0aGlzIG1lc3NhZ2UpLmApO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3N0LmFib3J0ZWQpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHVibGlzaEZpbGUgPSB0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlID9cbiAgICAgIGF3YWl0IHRoaXMuZXh0ZXJuYWxQYWNrYWdlRmlsZSh0aGlzLmFzc2V0LnNvdXJjZS5leGVjdXRhYmxlKSA6IGF3YWl0IHRoaXMucGFja2FnZUZpbGUodGhpcy5hc3NldC5zb3VyY2UpO1xuXG4gICAgdGhpcy5ob3N0LmVtaXRNZXNzYWdlKEV2ZW50VHlwZS5VUExPQUQsIGBVcGxvYWQgJHtzM1VybH1gKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgIEJ1Y2tldDogZGVzdGluYXRpb24uYnVja2V0TmFtZSxcbiAgICAgIEtleTogZGVzdGluYXRpb24ub2JqZWN0S2V5LFxuICAgICAgQm9keTogY3JlYXRlUmVhZFN0cmVhbShwdWJsaXNoRmlsZS5wYWNrYWdlZFBhdGgpLFxuICAgICAgQ29udGVudFR5cGU6IHB1Ymxpc2hGaWxlLmNvbnRlbnRUeXBlLFxuICAgIH0sXG4gICAgcGFyYW1zRW5jcnlwdGlvbik7XG5cbiAgICBhd2FpdCBzMy51cGxvYWQocGFyYW1zKS5wcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHBhY2thZ2VGaWxlKHNvdXJjZTogRmlsZVNvdXJjZSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICBpZiAoIXNvdXJjZS5wYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCdwYXRoJyBpcyBleHBlY3RlZCBpbiB0aGUgRmlsZSBhc3NldCBzb3VyY2UsIGdvdDogJHtKU09OLnN0cmluZ2lmeShzb3VyY2UpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMud29ya0Rpciwgc291cmNlLnBhdGgpO1xuXG4gICAgaWYgKHNvdXJjZS5wYWNrYWdpbmcgPT09IEZpbGVBc3NldFBhY2thZ2luZy5aSVBfRElSRUNUT1JZKSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi96aXAnO1xuXG4gICAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLmZpbGVDYWNoZVJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc3QgcGFja2FnZWRQYXRoID0gcGF0aC5qb2luKHRoaXMuZmlsZUNhY2hlUm9vdCwgYCR7dGhpcy5hc3NldC5pZC5hc3NldElkfS56aXBgKTtcblxuICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGFja2FnZWRQYXRoKSkge1xuICAgICAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkNBQ0hFRCwgYEZyb20gY2FjaGUgJHtwYXRofWApO1xuICAgICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGgsIGNvbnRlbnRUeXBlIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaG9zdC5lbWl0TWVzc2FnZShFdmVudFR5cGUuQlVJTEQsIGBaaXAgJHtmdWxsUGF0aH0gLT4gJHtwYXRofWApO1xuICAgICAgYXdhaXQgemlwRGlyZWN0b3J5KGZ1bGxQYXRoLCBwYWNrYWdlZFBhdGgpO1xuICAgICAgcmV0dXJuIHsgcGFja2FnZWRQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmdWxsUGF0aCkgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gICAgICByZXR1cm4geyBwYWNrYWdlZFBhdGg6IGZ1bGxQYXRoLCBjb250ZW50VHlwZSB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXh0ZXJuYWxQYWNrYWdlRmlsZShleGVjdXRhYmxlOiBzdHJpbmdbXSk6IFByb21pc2U8UGFja2FnZWRGaWxlQXNzZXQ+IHtcbiAgICB0aGlzLmhvc3QuZW1pdE1lc3NhZ2UoRXZlbnRUeXBlLkJVSUxELCBgQnVpbGRpbmcgYXNzZXQgc291cmNlIHVzaW5nIGNvbW1hbmQ6ICcke2V4ZWN1dGFibGV9J2ApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhY2thZ2VkUGF0aDogKGF3YWl0IHNoZWxsKGV4ZWN1dGFibGUsIHsgcXVpZXQ6IHRydWUgfSkpLnRyaW0oKSxcbiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vemlwJyxcbiAgICB9O1xuICB9XG59XG5cbmVudW0gQnVja2V0T3duZXJzaGlwIHtcbiAgRE9FU19OT1RfRVhJU1QsXG4gIE1JTkUsXG4gIFNPTUVPTkVfRUxTRVNfT1JfTk9fQUNDRVNTXG59XG5cbnR5cGUgQnVja2V0RW5jcnlwdGlvbiA9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnbm9fZW5jcnlwdGlvbicgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2FlczI1NicgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2ttcyc7IHJlYWRvbmx5IGttc0tleUlkPzogc3RyaW5nIH1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdhY2Nlc3NfZGVuaWVkJyB9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnZG9lc19ub3RfZXhpc3QnIH1cbiAgO1xuXG5hc3luYyBmdW5jdGlvbiBvYmplY3RFeGlzdHMoczM6IEFXUy5TMywgYnVja2V0OiBzdHJpbmcsIGtleTogc3RyaW5nKSB7XG4gIC8qXG4gICAqIFRoZSBvYmplY3QgZXhpc3RlbmNlIGNoZWNrIGhlcmUgcmVmcmFpbnMgZnJvbSB1c2luZyB0aGUgYGhlYWRPYmplY3RgIG9wZXJhdGlvbiBiZWNhdXNlIHRoaXNcbiAgICogd291bGQgY3JlYXRlIGEgbmVnYXRpdmUgY2FjaGUgZW50cnksIG1ha2luZyBHRVQtYWZ0ZXItUFVUIGV2ZW50dWFsbHkgY29uc2lzdGVudC4gVGhpcyBoYXMgYmVlblxuICAgKiBvYnNlcnZlZCB0byByZXN1bHQgaW4gQ2xvdWRGb3JtYXRpb24gaXNzdWluZyBcIlZhbGlkYXRpb25FcnJvcjogUzMgZXJyb3I6IEFjY2VzcyBEZW5pZWRcIiwgZm9yXG4gICAqIGV4YW1wbGUgaW4gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy82NDMwLlxuICAgKlxuICAgKiBUbyBwcmV2ZW50IHRoaXMsIHdlIGFyZSBpbnN0ZWFkIHVzaW5nIHRoZSBsaXN0T2JqZWN0c1YyIGNhbGwsIHVzaW5nIHRoZSBsb29rZWQgdXAga2V5IGFzIHRoZVxuICAgKiBwcmVmaXgsIGFuZCBsaW1pdGluZyByZXN1bHRzIHRvIDEuIFNpbmNlIHRoZSBsaXN0IG9wZXJhdGlvbiByZXR1cm5zIGtleXMgb3JkZXJlZCBieSBiaW5hcnlcbiAgICogVVRGLTggcmVwcmVzZW50YXRpb24sIHRoZSBrZXkgd2UgYXJlIGxvb2tpbmcgZm9yIGlzIGd1YXJhbnRlZWQgdG8gYWx3YXlzIGJlIHRoZSBmaXJzdCBtYXRjaFxuICAgKiByZXR1cm5lZCBpZiBpdCBleGlzdHMuXG4gICAqL1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHMzLmxpc3RPYmplY3RzVjIoeyBCdWNrZXQ6IGJ1Y2tldCwgUHJlZml4OiBrZXksIE1heEtleXM6IDEgfSkucHJvbWlzZSgpO1xuICByZXR1cm4gcmVzcG9uc2UuQ29udGVudHMgIT0gbnVsbCAmJiByZXNwb25zZS5Db250ZW50cy5zb21lKG9iamVjdCA9PiBvYmplY3QuS2V5ID09PSBrZXkpO1xufVxuXG5cbi8qKlxuICogQSBwYWNrYWdlZCBhc3NldCB3aGljaCBjYW4gYmUgdXBsb2FkZWQgKGVpdGhlciBhIHNpbmdsZSBmaWxlIG9yIGRpcmVjdG9yeSlcbiAqL1xuaW50ZXJmYWNlIFBhY2thZ2VkRmlsZUFzc2V0IHtcbiAgLyoqXG4gICAqIFBhdGggb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5XG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlZFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udGVudCB0eXBlIHRvIGJlIGFkZGVkIGluIHRoZSBTMyB1cGxvYWQgYWN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY29udGVudCB0eXBlXG4gICAqL1xuICByZWFkb25seSBjb250ZW50VHlwZT86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIENhY2hlIGZvciBidWNrZXQgaW5mb3JtYXRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8ga2VlcCBkb2luZyB0aGUgc2FtZSBjYWxscyBhZ2FpbiBhbmQgYWdhaW5cbiAqXG4gKiBXZSBzY29wZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGNhY2hlIHRvIHRoZSBsaWZldGltZSBvZiB0aGUgaG9zdCwgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvXG4gKiBhbnl0aGluZyBzcGVjaWFsIGZvciB0ZXN0cyBhbmQgeWV0IHRoZSBjYWNoZSB3aWxsIGxpdmUgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgdGhlIGFzc2V0XG4gKiB1cGxvYWQgc2Vzc2lvbiB3aGVuIHVzZWQgYnkgdGhlIENMSS5cbiAqL1xuY2xhc3MgQnVja2V0SW5mb3JtYXRpb24ge1xuICBwdWJsaWMgc3RhdGljIGZvcihob3N0OiBJSGFuZGxlckhvc3QpIHtcbiAgICBjb25zdCBleGlzdGluZyA9IEJ1Y2tldEluZm9ybWF0aW9uLmNhY2hlcy5nZXQoaG9zdCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7IHJldHVybiBleGlzdGluZzsgfVxuXG4gICAgY29uc3QgZnJlc2ggPSBuZXcgQnVja2V0SW5mb3JtYXRpb24oKTtcbiAgICBCdWNrZXRJbmZvcm1hdGlvbi5jYWNoZXMuc2V0KGhvc3QsIGZyZXNoKTtcbiAgICByZXR1cm4gZnJlc2g7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBjYWNoZXMgPSBuZXcgV2Vha01hcDxJSGFuZGxlckhvc3QsIEJ1Y2tldEluZm9ybWF0aW9uPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3duZXJzaGlwcyA9IG5ldyBNYXA8c3RyaW5nLCBCdWNrZXRPd25lcnNoaXA+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5jcnlwdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgQnVja2V0RW5jcnlwdGlvbj4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1Y2tldE93bmVyc2hpcChzMzogQVdTLlMzLCBidWNrZXQ6IHN0cmluZyk6IFByb21pc2U8QnVja2V0T3duZXJzaGlwPiB7XG4gICAgcmV0dXJuIGNhY2hlZCh0aGlzLm93bmVyc2hpcHMsIGJ1Y2tldCwgKCkgPT4gdGhpcy5fYnVja2V0T3duZXJzaGlwKHMzLCBidWNrZXQpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBidWNrZXRFbmNyeXB0aW9uKHMzOiBBV1MuUzMsIGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTxCdWNrZXRFbmNyeXB0aW9uPiB7XG4gICAgcmV0dXJuIGNhY2hlZCh0aGlzLmVuY3J5cHRpb25zLCBidWNrZXQsICgpID0+IHRoaXMuX2J1Y2tldEVuY3J5cHRpb24oczMsIGJ1Y2tldCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfYnVja2V0T3duZXJzaGlwKHMzOiBBV1MuUzMsIGJ1Y2tldDogc3RyaW5nKTogUHJvbWlzZTxCdWNrZXRPd25lcnNoaXA+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgczMuZ2V0QnVja2V0TG9jYXRpb24oeyBCdWNrZXQ6IGJ1Y2tldCB9KS5wcm9taXNlKCk7XG4gICAgICByZXR1cm4gQnVja2V0T3duZXJzaGlwLk1JTkU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ05vU3VjaEJ1Y2tldCcpIHsgcmV0dXJuIEJ1Y2tldE93bmVyc2hpcC5ET0VTX05PVF9FWElTVDsgfVxuICAgICAgaWYgKFsnQWNjZXNzRGVuaWVkJywgJ0FsbEFjY2Vzc0Rpc2FibGVkJ10uaW5jbHVkZXMoZS5jb2RlKSkgeyByZXR1cm4gQnVja2V0T3duZXJzaGlwLlNPTUVPTkVfRUxTRVNfT1JfTk9fQUNDRVNTOyB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2J1Y2tldEVuY3J5cHRpb24oczM6IEFXUy5TMywgYnVja2V0OiBzdHJpbmcpOiBQcm9taXNlPEJ1Y2tldEVuY3J5cHRpb24+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZW5jcnlwdGlvbiA9IGF3YWl0IHMzLmdldEJ1Y2tldEVuY3J5cHRpb24oeyBCdWNrZXQ6IGJ1Y2tldCB9KS5wcm9taXNlKCk7XG4gICAgICBjb25zdCBsID0gZW5jcnlwdGlvbj8uU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uPy5SdWxlcz8ubGVuZ3RoID8/IDA7XG4gICAgICBpZiAobCA+IDApIHtcbiAgICAgICAgY29uc3QgYXBwbHkgPSBlbmNyeXB0aW9uPy5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/LlJ1bGVzWzBdPy5BcHBseVNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0O1xuICAgICAgICBsZXQgc3NlYWxnbyA9IGFwcGx5Py5TU0VBbGdvcml0aG07XG4gICAgICAgIGlmIChzc2VhbGdvID09PSAnQUVTMjU2JykgcmV0dXJuIHsgdHlwZTogJ2FlczI1NicgfTtcbiAgICAgICAgaWYgKHNzZWFsZ28gPT09ICdhd3M6a21zJykgcmV0dXJuIHsgdHlwZTogJ2ttcycsIGttc0tleUlkOiBhcHBseT8uS01TTWFzdGVyS2V5SUQgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6ICdub19lbmNyeXB0aW9uJyB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLmNvZGUgPT09ICdOb1N1Y2hCdWNrZXQnKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdkb2VzX25vdF9leGlzdCcgfTtcbiAgICAgIH1cbiAgICAgIGlmIChlLmNvZGUgPT09ICdTZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25Ob3RGb3VuZEVycm9yJykge1xuICAgICAgICByZXR1cm4geyB0eXBlOiAnbm9fZW5jcnlwdGlvbicgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKFsnQWNjZXNzRGVuaWVkJywgJ0FsbEFjY2Vzc0Rpc2FibGVkJ10uaW5jbHVkZXMoZS5jb2RlKSkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiAnYWNjZXNzX2RlbmllZCcgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6ICdub19lbmNyeXB0aW9uJyB9O1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjYWNoZWQ8QSwgQj4oY2FjaGU6IE1hcDxBLCBCPiwga2V5OiBBLCBmYWN0b3J5OiAoeDogQSkgPT4gUHJvbWlzZTxCPik6IFByb21pc2U8Qj4ge1xuICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSkhO1xuICB9XG5cbiAgY29uc3QgZnJlc2ggPSBhd2FpdCBmYWN0b3J5KGtleSk7XG4gIGNhY2hlLnNldChrZXksIGZyZXNoKTtcbiAgcmV0dXJuIGZyZXNoO1xufSJdfQ==
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "cdk-assets",
3
- "version": "2.3.0",
3
+ "version": "2.7.0",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
7
7
  "@aws-cdk/cloud-assembly-schema": {
8
- "version": "2.3.0",
8
+ "version": "2.7.0",
9
9
  "requires": {
10
10
  "jsonschema": "^1.4.0",
11
11
  "semver": "^7.3.5"
12
12
  }
13
13
  },
14
14
  "@aws-cdk/cx-api": {
15
- "version": "2.3.0",
15
+ "version": "2.7.0",
16
16
  "requires": {
17
- "@aws-cdk/cloud-assembly-schema": "2.3.0",
17
+ "@aws-cdk/cloud-assembly-schema": "2.7.0",
18
18
  "semver": "^7.3.5"
19
19
  }
20
20
  },
@@ -33,9 +33,9 @@
33
33
  }
34
34
  },
35
35
  "aws-sdk": {
36
- "version": "2.1044.0",
37
- "integrity": "sha512-n55uGUONQGXteGGG1QlZ1rKx447KSuV/x6jUGNf2nOl41qMI8ZgLUhNUt0uOtw3qJrCTanzCyR/JKBq2PMiqEQ==",
38
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1044.0.tgz#0708eaf48daf8d961b414e698d84e8cd1f82c4ad",
36
+ "version": "2.1050.0",
37
+ "integrity": "sha512-xXY3wAZQyh/d6vk5oClyB3ViFENc1OOrsB/HUu/g+wnMzMLp+ea+OpZwRM5+g90mAiJ1eLOxje0Sgnbe7fP2oA==",
38
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1050.0.tgz#172e80839a3c1bed82e7c42db2fbe7d46fbb90ca",
39
39
  "requires": {
40
40
  "buffer": "4.9.2",
41
41
  "events": "1.1.1",
@@ -229,9 +229,9 @@
229
229
  }
230
230
  },
231
231
  "graceful-fs": {
232
- "version": "4.2.8",
233
- "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
234
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
232
+ "version": "4.2.9",
233
+ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
234
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
235
235
  },
236
236
  "lazystream": {
237
237
  "version": "1.0.1",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cdk-assets",
3
3
  "description": "CDK Asset Publishing Tool",
4
- "version": "2.3.0",
4
+ "version": "2.7.0",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "bin": {
@@ -32,20 +32,20 @@
32
32
  "devDependencies": {
33
33
  "@types/archiver": "^5.3.0",
34
34
  "@types/glob": "^7.2.0",
35
- "@types/jest": "^27.0.3",
35
+ "@types/jest": "^27.4.0",
36
36
  "@types/mime": "^2.0.3",
37
37
  "@types/mock-fs": "^4.13.1",
38
38
  "@types/node": "^10.17.60",
39
39
  "@types/yargs": "^15.0.14",
40
- "@aws-cdk/cdk-build-tools": "2.3.0",
41
- "jest": "^27.4.3",
40
+ "@aws-cdk/cdk-build-tools": "2.7.0",
41
+ "jest": "^27.4.7",
42
42
  "jszip": "^3.7.1",
43
43
  "mock-fs": "^4.14.0",
44
- "@aws-cdk/pkglint": "2.3.0"
44
+ "@aws-cdk/pkglint": "2.7.0"
45
45
  },
46
46
  "dependencies": {
47
- "@aws-cdk/cloud-assembly-schema": "2.3.0",
48
- "@aws-cdk/cx-api": "2.3.0",
47
+ "@aws-cdk/cloud-assembly-schema": "2.7.0",
48
+ "@aws-cdk/cx-api": "2.7.0",
49
49
  "archiver": "^5.3.0",
50
50
  "aws-sdk": "^2.848.0",
51
51
  "glob": "^7.2.0",