Socket
Socket
Sign inDemoInstall

@aws-cdk/cdk

Package Overview
Dependencies
Maintainers
4
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/cdk - npm Package Compare versions

Comparing version 0.16.0 to 0.17.0

9

lib/cloudformation/stack.d.ts

@@ -93,2 +93,11 @@ import cxapi = require('@aws-cdk/cx-api');

/**
* Returns the AWS account ID of this Stack,
* or throws an exception if the account ID is not set in the environment.
*
* @param why more information about why is the account ID required
* @returns the AWS account ID of this Stack
*/
requireAccountId(why?: string): string;
parentApp(): App | undefined;
/**
* Indicate that a context key was expected

@@ -95,0 +104,0 @@ *

23

lib/cloudformation/stack.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cxapi = require("@aws-cdk/cx-api");
const app_1 = require("../app");
const construct_1 = require("../core/construct");

@@ -124,2 +125,22 @@ const tokens_1 = require("../core/tokens");

/**
* Returns the AWS account ID of this Stack,
* or throws an exception if the account ID is not set in the environment.
*
* @param why more information about why is the account ID required
* @returns the AWS account ID of this Stack
*/
requireAccountId(why) {
if (!this.env.account) {
throw new Error(`${why ? why + '. ' : ''}Stack requires account information. ` +
'It can be supplied either via the "env" property when creating the Stack, or by using "aws configure"');
}
return this.env.account;
}
parentApp() {
const parent = this.parent;
return parent instanceof app_1.App
? parent
: undefined;
}
/**
* Indicate that a context key was expected

@@ -315,2 +336,2 @@ *

exports.Ref = Ref;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUEwQztBQUUxQyxpREFBd0Q7QUFDeEQsMkNBQWdEO0FBRWhELGlFQUE2RDtBQUM3RCw2Q0FBcUY7QUFvQnJGOztHQUVHO0FBQ0gsTUFBYSxLQUFNLFNBQVEscUJBQVM7SUFpRWxDOzs7Ozs7T0FNRztJQUNILFlBQW1CLE1BQVksRUFBRSxJQUFhLEVBQUUsS0FBa0I7UUFDaEUsb0dBQW9HO1FBQ3BHLEtBQUssQ0FBQyxNQUFPLEVBQUUsSUFBSyxDQUFDLENBQUM7UUF6Q3hCOzs7O1dBSUc7UUFDYSxtQkFBYyxHQUE0QyxFQUFHLENBQUM7UUFPOUU7O1dBRUc7UUFDYSxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBTy9COztXQUVHO1FBQ2Esb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBaUJwRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxtQ0FBc0IsRUFBRSxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDO0lBQzlCLENBQUM7SUE5RUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBZTtRQUNoQyxJQUFJLElBQUksR0FBMEIsSUFBSSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQjtRQUVELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixN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Y2RrL2N4LWFwaScpO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnLi4vYXBwJztcbmltcG9ydCB7IENvbnN0cnVjdCwgUEFUSF9TRVAgfSBmcm9tICcuLi9jb3JlL2NvbnN0cnVjdCc7XG5pbXBvcnQgeyByZXNvbHZlLCBUb2tlbiB9IGZyb20gJy4uL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25Ub2tlbiB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24tdG9rZW4nO1xuaW1wb3J0IHsgSGFzaGVkQWRkcmVzc2luZ1NjaGVtZSwgSUFkZHJlc3NpbmdTY2hlbWUsIExvZ2ljYWxJRHMgfSBmcm9tICcuL2xvZ2ljYWwtaWQnO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgZW52aXJvbm1lbnQgKGFjY291bnQvcmVnaW9uKSB3aGVyZSB0aGlzIHN0YWNrIHdpbGwgYmUgZGVwbG95ZWQuXG4gICAqXG4gICAqIElmIG5vdCBzdXBwbGllZCwgdGhlIGBkZWZhdWx0LWFjY291bnRgIGFuZCBgZGVmYXVsdC1yZWdpb25gIGNvbnRleHQgcGFyYW1ldGVycyB3aWxsIGJlXG4gICAqIHVzZWQuIElmIHRoZXkgYXJlIHVuZGVmaW5lZCwgaXQgd2lsbCBub3QgYmUgcG9zc2libGUgdG8gZGVwbG95IHRoZSBzdGFjay5cbiAgICovXG4gIGVudj86IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSBmb3IgbG9naWNhbCBJRCBnZW5lcmF0aW9uXG4gICAqXG4gICAqIE9wdGlvbmFsLiBJZiBub3Qgc3VwcGxpZWQsIHRoZSBIYXNoZWROYW1pbmdTY2hlbWUgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgbmFtaW5nU2NoZW1lPzogSUFkZHJlc3NpbmdTY2hlbWU7XG59XG5cbi8qKlxuICogQSByb290IGNvbnN0cnVjdCB3aGljaCByZXByZXNlbnRzIGEgc2luZ2xlIENsb3VkRm9ybWF0aW9uIHN0YWNrLlxuICovXG5leHBvcnQgY2xhc3MgU3RhY2sgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSB0cmVlIGFuZCBsb29rcyB1cCBmb3IgdGhlIFN0YWNrIHJvb3QuXG4gICAqIEBwYXJhbSBub2RlIEEgY29uc3RydWN0IGluIHRoZSB0cmVlXG4gICAqIEByZXR1cm5zIFRoZSBTdGFjayBvYmplY3QgKHRocm93cyBpZiB0aGUgbm9kZSBpcyBub3QgcGFydCBvZiBhIFN0YWNrLXJvb3RlZCB0cmVlKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kKG5vZGU6IENvbnN0cnVjdCk6IFN0YWNrIHtcbiAgICBsZXQgY3VycjogQ29uc3RydWN0IHwgdW5kZWZpbmVkID0gbm9kZTtcbiAgICB3aGlsZSAoY3VyciAhPSBudWxsICYmICFpc1N0YWNrKGN1cnIpKSB7XG4gICAgICBjdXJyID0gY3Vyci5wYXJlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGN1cnIgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIFN0YWNrIHBhcmVudCBmb3IgJyR7bm9kZS50b1N0cmluZygpfSdgKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnI7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG1ldGFkYXRhIGFubm90YXRpb24gXCJhd3M6Y2RrOnBoeXNpY2FsLW5hbWVcIiB0byB0aGUgY29uc3RydWN0IGlmIHBoeXNpY2FsTmFtZVxuICAgKiBpcyBub24tbnVsbC4gVGhpcyBjYW4gYmUgdXNlZCBsYXRlciBieSB0b29scyBhbmQgYXNwZWN0cyB0byBkZXRlcm1pbmUgaWYgcmVzb3VyY2VzXG4gICAqIGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggcGh5c2ljYWwgbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFubm90YXRlUGh5c2ljYWxOYW1lKGNvbnN0cnVjdDogQ29uc3RydWN0LCBwaHlzaWNhbE5hbWU/OiBzdHJpbmcpIHtcbiAgICBpZiAocGh5c2ljYWxOYW1lID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3QuYWRkTWV0YWRhdGEoJ2F3czpjZGs6cGh5c2ljYWwtbmFtZScsIHBoeXNpY2FsTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWQUxJRF9TVEFDS19OQU1FX1JFR0VYID0gL15bQS1aYS16XVtBLVphLXowLTktXSokLztcblxuICAvKipcbiAgICogTGlzdHMgYWxsIG1pc3NpbmcgY29udGV4dHVhbCBpbmZvcm1hdGlvbi5cbiAgICogVGhpcyBpcyByZXR1cm5lZCB3aGVuIHRoZSBzdGFjayBpcyBzeW50aGVzaXplZCB1bmRlciB0aGUgJ21pc3NpbmcnIGF0dHJpYnV0ZVxuICAgKiBhbmQgYWxsb3dzIHRvb2xpbmcgdG8gb2J0YWluIHRoZSBjb250ZXh0IGFuZCByZS1zeW50aGVzaXplLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1pc3NpbmdDb250ZXh0OiB7IFtrZXk6IHN0cmluZ106IGN4YXBpLk1pc3NpbmdDb250ZXh0IH0gPSB7IH07XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGlzIHN0YWNrIGlzIGRlcGxveWVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVudjogRW52aXJvbm1lbnQ7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29uc3RydWN0IGlzIGEgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTdGFjayA9IHRydWU7XG5cbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgZ2VuZXJhdGlvbiBzdHJhdGVneVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvZ2ljYWxJZHM6IExvZ2ljYWxJRHM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIChsaWtlIHZlcnNpb24sIHRyYW5zZm9ybSwgZGVzY3JpcHRpb24pLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlT3B0aW9uczogVGVtcGxhdGVPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzdGFjay5cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudCBQYXJlbnQgb2YgdGhpcyBzdGFjaywgdXN1YWxseSBhIFByb2dyYW0gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFjay4gRGVmYXVsdHMgdG8gXCJTdGFja1wiLlxuICAgKiBAcGFyYW0gcHJvcHMgU3RhY2sgcHJvcGVydGllcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJlbnQ/OiBBcHAsIG5hbWU/OiBzdHJpbmcsIHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIC8vIEZvciB1bml0IHRlc3QgY29udmVuaWVuY2UgcGFyZW50cyBhcmUgb3B0aW9uYWwsIHNvIGJ5cGFzcyB0aGUgdHlwZSBjaGVjayB3aGVuIGNhbGxpbmcgdGhlIHBhcmVudC5cbiAgICBzdXBlcihwYXJlbnQhLCBuYW1lISk7XG4gICAgdGhpcy5lbnYgPSB0aGlzLnBhcnNlRW52aXJvbm1lbnQocHJvcHMpO1xuXG4gICAgdGhpcy5sb2dpY2FsSWRzID0gbmV3IExvZ2ljYWxJRHMocHJvcHMgJiYgcHJvcHMubmFtaW5nU2NoZW1lID8gcHJvcHMubmFtaW5nU2NoZW1lIDogbmV3IEhhc2hlZEFkZHJlc3NpbmdTY2hlbWUoKSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZSB8fCAnU3RhY2snO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIGEgcmVzb3VyY2UgYnkgcGF0aC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIFJlc291cmNlIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyBmaW5kUmVzb3VyY2UocGF0aDogc3RyaW5nKTogUmVzb3VyY2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHIgPSB0aGlzLmZpbmRDaGlsZChwYXRoKTtcbiAgICBpZiAoIXIpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuXG4gICAgLy8gZm91bmQgYW4gZWxlbWVudCwgY2hlY2sgaWYgaXQncyBhIHJlc291cmNlIChkdWNrLXR5cGUpXG4gICAgaWYgKCEoJ3Jlc291cmNlVHlwZScgaW4gcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm91bmQgYSBzdGFjayBlbGVtZW50IGZvciAke3BhdGh9IGJ1dCBpdCBpcyBub3QgYSByZXNvdXJjZTogJHtyLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHIgYXMgUmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIHRoaXMgc3RhY2sgYnkgdHJhdmVyc2luZ1xuICAgKiB0aGUgdHJlZSBhbmQgaW52b2tpbmcgdG9DbG91ZEZvcm1hdGlvbigpIG9uIGFsbCBFbnRpdHkgb2JqZWN0cy5cbiAgICovXG4gIHB1YmxpYyB0b0Nsb3VkRm9ybWF0aW9uKCkge1xuICAgIC8vIGJlZm9yZSB3ZSBiZWdpbiBzeW50aGVzaXMsIHdlIHNoYWxsIGxvY2sgdGhpcyBzdGFjaywgc28gY2hpbGRyZW4gY2Fubm90IGJlIGFkZGVkXG4gICAgdGhpcy5sb2NrKCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGVtcGxhdGU6IGFueSA9IHtcbiAgICAgICAgRGVzY3JpcHRpb246IHRoaXMudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICBUcmFuc2Zvcm06IHRoaXMudGVtcGxhdGVPcHRpb25zLnRyYW5zZm9ybSxcbiAgICAgICAgQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uOiB0aGlzLnRlbXBsYXRlT3B0aW9ucy50ZW1wbGF0ZUZvcm1hdFZlcnNpb24sXG4gICAgICAgIE1ldGFkYXRhOiB0aGlzLnRlbXBsYXRlT3B0aW9ucy5tZXRhZGF0YVxuICAgICAgfTtcblxuICAgICAgY29uc3QgZWxlbWVudHMgPSBzdGFja0VsZW1lbnRzKHRoaXMpO1xuICAgICAgY29uc3QgZnJhZ21lbnRzID0gZWxlbWVudHMubWFwKGUgPT4gZS50b0Nsb3VkRm9ybWF0aW9uKCkpO1xuXG4gICAgICAvLyBtZXJnZSBpbiBhbGwgQ2xvdWRGb3JtYXRpb24gZnJhZ21lbnRzIGNvbGxlY3RlZCBmcm9tIHRoZSB0cmVlXG4gICAgICBmb3IgKGNvbnN0IGZyYWdtZW50IG9mIGZyYWdtZW50cykge1xuICAgICAgICBtZXJnZSh0ZW1wbGF0ZSwgZnJhZ21lbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyByZXNvbHZlIGFsbCB0b2tlbnMgYW5kIHJlbW92ZSBhbGwgZW1wdGllc1xuICAgICAgY29uc3QgcmV0ID0gcmVzb2x2ZSh0ZW1wbGF0ZSkgfHwgeyB9O1xuXG4gICAgICB0aGlzLmxvZ2ljYWxJZHMuYXNzZXJ0QWxsUmVuYW1lc0FwcGxpZWQoKTtcblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gYWxsb3cgbXV0YXRpb25zIGFmdGVyIHN5bnRoZXNpcyBpcyBmaW5pc2hlZC5cbiAgICAgIHRoaXMudW5sb2NrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB3aHkgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aHkgcmVnaW9uIGlzIHJlcXVpcmVkLlxuICAgKiBAcmV0dXJucyBUaGUgcmVnaW9uIGluIHdoaWNoIHRoaXMgc3RhY2sgaXMgZGVwbG95ZWQuIFRocm93cyBpZiByZWdpb24gaXMgbm90IGRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgcmVxdWlyZVJlZ2lvbih3aHk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZW52LnJlZ2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3doeSA/IHdoeSArICcuICcgOiAnJ31TdGFjayByZXF1aXJlcyByZWdpb24gaW5mb3JtYXRpb24uIEl0IGNhbiBiZSBlaXRoZXIgc3VwcGxpZWQgdmlhIHRoZSBcImVudlwiIHByb3BlcnR5LCBgICtcbiAgICAgICAgICBgdmlhIHRoZSBcIiR7Y3hhcGkuREVGQVVMVF9SRUdJT05fQ09OVEVYVF9LRVl9XCIgY29udGV4dCBwYXJhbWV0ZXJzIG9yIHVzaW5nIFwiYXdzIGNvbmZpZ3VyZVwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW52LnJlZ2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZSB0aGF0IGEgY29udGV4dCBrZXkgd2FzIGV4cGVjdGVkXG4gICAqXG4gICAqIENvbnRhaW5zIGluc3RydWN0aW9ucyBvbiBob3cgdGhlIGtleSBzaG91bGQgYmUgc3VwcGxpZWQuXG4gICAqIEBwYXJhbSBrZXkgS2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIG1pc3NpbmcgY29udGV4dC5cbiAgICogQHBhcmFtIGRldGFpbHMgVGhlIHNldCBvZiBwYXJhbWV0ZXJzIG5lZWRlZCB0byBvYnRhaW4gdGhlIGNvbnRleHQgKHNwZWNpZmljIHRvIGNvbnRleHQgcHJvdmlkZXIpLlxuICAgKi9cbiAgcHVibGljIHJlcG9ydE1pc3NpbmdDb250ZXh0KGtleTogc3RyaW5nLCBkZXRhaWxzOiBjeGFwaS5NaXNzaW5nQ29udGV4dCkge1xuICAgIHRoaXMubWlzc2luZ0NvbnRleHRba2V5XSA9IGRldGFpbHM7XG4gIH1cblxuICAvKipcbiAgICogUmVuYW1lIGEgZ2VuZXJhdGVkIGxvZ2ljYWwgaWRlbnRpdGllc1xuICAgKi9cbiAgcHVibGljIHJlbmFtZUxvZ2ljYWwob2xkSWQ6IHN0cmluZywgbmV3SWQ6IHN0cmluZykge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWxsIHJlbmFtZXMgbXVzdCBiZSBzZXQgdXAgYmVmb3JlIGFkZGluZyBlbGVtZW50cyB0byB0aGUgc3RhY2tcIik7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dpY2FsSWRzLnJlbmFtZUxvZ2ljYWwob2xkSWQsIG5ld0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBzdGFjayBuYW1lXG4gICAqXG4gICAqIENsb3VkRm9ybWF0aW9uIHN0YWNrIG5hbWVzIGNhbiBpbmNsdWRlIGRhc2hlcyBpbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBpZGVudGlmaWVyXG4gICAqIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQgd2UgZG9uJ3QgYWxsb3cgb25lIG9mIHRoZSBtYWdpYyBtYXJrZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIF92YWxpZGF0ZUlkKG5hbWU6IHN0cmluZykge1xuICAgIGlmICghU3RhY2suVkFMSURfU1RBQ0tfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YWNrIG5hbWUgbXVzdCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uOiAke1N0YWNrLlZBTElEX1NUQUNLX05BTUVfUkVHRVgudG9TdHJpbmcoKX0sIGdvdCAnJHtuYW1lfSdgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllZCBkZWZhdWx0cyB0byBlbnZpcm9ubWVudCBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUVudmlyb25tZW50KHByb3BzPzogU3RhY2tQcm9wcykge1xuICAgIC8vIHN0YXJ0IHdpdGggYGVudmAuXG4gICAgY29uc3QgZW52OiBFbnZpcm9ubWVudCA9IChwcm9wcyAmJiBwcm9wcy5lbnYpIHx8IHsgfTtcblxuICAgIC8vIGlmIGFjY291bnQgaXMgbm90IHNwZWNpZmllZCwgYXR0ZW1wdCB0byByZWFkIGZyb20gY29udGV4dC5cbiAgICBpZiAoIWVudi5hY2NvdW50KSB7XG4gICAgICBlbnYuYWNjb3VudCA9IHRoaXMuZ2V0Q29udGV4dChjeGFwaS5ERUZBVUxUX0FDQ09VTlRfQ09OVEVYVF9LRVkpO1xuICAgIH1cblxuICAgIC8vIGlmIHJlZ2lvbiBpcyBub3Qgc3BlY2lmaWVkLCBhdHRlbXB0IHRvIHJlYWQgZnJvbSBjb250ZXh0LlxuICAgIGlmICghZW52LnJlZ2lvbikge1xuICAgICAgZW52LnJlZ2lvbiA9IHRoaXMuZ2V0Q29udGV4dChjeGFwaS5ERUZBVUxUX1JFR0lPTl9DT05URVhUX0tFWSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudjtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZSh0ZW1wbGF0ZTogYW55LCBwYXJ0OiBhbnkpIHtcbiAgZm9yIChjb25zdCBzZWN0aW9uIG9mIE9iamVjdC5rZXlzKHBhcnQpKSB7XG4gICAgY29uc3Qgc3JjID0gcGFydFtzZWN0aW9uXTtcblxuICAgIC8vIGNyZWF0ZSB0b3AtbGV2ZWwgc2VjdGlvbiBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgbGV0IGRlc3QgPSB0ZW1wbGF0ZVtzZWN0aW9uXTtcbiAgICBpZiAoIWRlc3QpIHtcbiAgICAgIHRlbXBsYXRlW3NlY3Rpb25dID0gZGVzdCA9IHNyYztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYWRkIGFsbCBlbnRpdGllcyBmcm9tIHNvdXJjZSBzZWN0aW9uIHRvIGRlc3RpbmF0aW9uIHNlY3Rpb25cbiAgICAgIGZvciAoY29uc3QgaWQgb2YgT2JqZWN0LmtleXMoc3JjKSkge1xuICAgICAgICBpZiAoaWQgaW4gZGVzdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc2VjdGlvbiAnJHtzZWN0aW9ufScgYWxyZWFkeSBjb250YWlucyAnJHtpZH0nYCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVzdFtpZF0gPSBzcmNbaWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBMT0dJQ0FMX0lEX01EID0gJ2F3czpjZGs6bG9naWNhbElkJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgY29uc3RydWN0IHRoYXQgY2FuIGJlIFwiZGVwZW5kZWQgb25cIiB2aWEgYGFkZERlcGVuZGVuY3lgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiBhbGwgc3RhY2sgZWxlbWVudHMgKHJlc291cmNlcywgcGFyYW1ldGVycywgY29uZGl0aW9ucylcbiAgICogdGhhdCBzaG91bGQgYmUgYWRkZWQgd2hlbiBhIHJlc291cmNlIFwiZGVwZW5kcyBvblwiIHRoaXMgY29uc3RydWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jeUVsZW1lbnRzOiBJRGVwZW5kYWJsZVtdO1xufVxuXG4vKipcbiAqIEFuIGVsZW1lbnQgb2YgYSBDbG91ZEZvcm1hdGlvbiBzdGFjay5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YWNrRWxlbWVudCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGEgY29uc3RydWN0IGlzIGEgc3RhY2sgZWxlbWVudCAoaS5lLiBwYXJ0IG9mIHRoZVxuICAgKiBzeW50aGVzaXplZCBjbG91ZGZvcm1hdGlvbiB0ZW1wbGF0ZSkuXG4gICAqXG4gICAqIFVzZXMgZHVjay10eXBpbmcgaW5zdGVhZCBvZiBgaW5zdGFuY2VvZmAgdG8gYWxsb3cgc3RhY2sgZWxlbWVudHMgZnJvbSBkaWZmZXJlbnRcbiAgICogdmVyc2lvbnMgb2YgdGhpcyBsaWJyYXJ5IHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzYW1lIHN0YWNrLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY29uc3RydWN0IGFzIGEgc3RhY2sgZWxlbWVudCBvciB1bmRlZmluZWQgaWYgaXQgaXMgbm90IGEgc3RhY2sgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgX2FzU3RhY2tFbGVtZW50KGNvbnN0cnVjdDogQ29uc3RydWN0KTogU3RhY2tFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoJ2xvZ2ljYWxJZCcgaW4gY29uc3RydWN0ICYmICd0b0Nsb3VkRm9ybWF0aW9uJyBpbiBjb25zdHJ1Y3QpIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3QgYXMgU3RhY2tFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBmb3IgdGhpcyBDbG91ZEZvcm1hdGlvbiBzdGFjayBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0aGlzIENvbnN0cnVjdCBoYXMgYmVlbiBtYWRlIGEgcGFydCBvZlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YWNrOiBTdGFjaztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlbnRpdHkgYW5kIGJpbmRzIGl0IHRvIGEgdHJlZS5cbiAgICogTm90ZSB0aGF0IHRoZSByb290IG9mIHRoZSB0cmVlIG11c3QgYmUgYSBTdGFjayBvYmplY3QgKG5vdCBqdXN0IGFueSBSb290KS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmVudCBUaGUgcGFyZW50IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gcHJvcHMgQ29uc3RydWN0IHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuICAgIGNvbnN0IHMgPSBTdGFjay5maW5kKHRoaXMpO1xuICAgIGlmICghcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgdHJlZSByb290IG11c3QgYmUgZGVyaXZlZCBmcm9tIFwiU3RhY2tcIicpO1xuICAgIH1cbiAgICB0aGlzLnN0YWNrID0gcztcblxuICAgIHRoaXMuYWRkTWV0YWRhdGEoTE9HSUNBTF9JRF9NRCwgbmV3IFRva2VuKCgpID0+IHRoaXMubG9naWNhbElkKSwgdGhpcy5jb25zdHJ1Y3Rvcik7XG5cbiAgICB0aGlzLmxvZ2ljYWxJZCA9IHRoaXMuc3RhY2subG9naWNhbElkcy5nZXRMb2dpY2FsSWQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBwb2ludCB3aGVyZSB0aGlzIFJlc291cmNlIHdhcyBjcmVhdGVkIGZyb20sIHNvdXJjZWRcbiAgICogICAgICBmcm9tIHRoZSArbWV0YWRhdGErIGVudHJ5IHR5cGVkICthd3M6Y2RrOmxvZ2ljYWxJZCssIGFuZCB3aXRoIHRoZSBib3R0b20tbW9zdFxuICAgKiAgICAgIG5vZGUgK2ludGVybmFsKyBlbnRyaWVzIGZpbHRlcmVkLlxuICAgKi9cbiAgcHVibGljIGdldCBjcmVhdGlvblN0YWNrVHJhY2UoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBmaWx0ZXJTdGFja1RyYWNlKHRoaXMubWV0YWRhdGEuZmluZChtZCA9PiBtZC50eXBlID09PSBMT0dJQ0FMX0lEX01EKSEudHJhY2UpO1xuXG4gICAgZnVuY3Rpb24gZmlsdGVyU3RhY2tUcmFjZShzdGFjazogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBBcnJheS5vZiguLi5zdGFjayk7XG4gICAgICB3aGlsZSAocmVzdWx0Lmxlbmd0aCA+IDAgJiYgc2hvdWxkRmlsdGVyKHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0pKSB7XG4gICAgICAgIHJlc3VsdC5wb3AoKTtcbiAgICAgIH1cbiAgICAgIC8vIEl0J3Mgd2VpcmQgaWYgd2UgZmlsdGVyZWQgZXZlcnl0aGluZywgc28gcmV0dXJuIHRoZSB3aG9sZSBzdGFjay4uLlxuICAgICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPT09IDAgPyBzdGFjayA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzaG91bGRGaWx0ZXIoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBzdHIubWF0Y2goL1teKF0rXFwoaW50ZXJuYWxcXC8uKi8pICE9PSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHBhdGggd2l0aCByZXNwZWN0IHRvIHRoZSBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldCBzdGFja1BhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbmNlc3RvcnModGhpcy5zdGFjaykubWFwKGMgPT4gYy5pZCkuam9pbihQQVRIX1NFUCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlcGVuZGVuY3lFbGVtZW50cygpOiBJRGVwZW5kYWJsZVtdIHtcbiAgICByZXR1cm4gWyB0aGlzIF07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQ2xvdWRGb3JtYXRpb24gJ3NuaXBwZXQnIGZvciB0aGlzIGVudGl0eS4gVGhlIHNuaXBwZXQgd2lsbCBvbmx5IGJlIG1lcmdlZFxuICAgKiBhdCB0aGUgcm9vdCBsZXZlbCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIGlkZW50aXR5IGNvbmZsaWN0cy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGEgUmVzb3VyY2UgY2xhc3Mgd2lsbCByZXR1cm4gc29tZXRoaW5nIGxpa2U6XG4gICAqIHtcbiAgICogICBSZXNvdXJjZXM6IHtcbiAgICogICAgIFt0aGlzLmxvZ2ljYWxJZF06IHtcbiAgICogICAgICAgVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUsXG4gICAqICAgICAgIFByb3BlcnRpZXM6IHRoaXMucHJvcHMsXG4gICAqICAgICAgIENvbmRpdGlvbjogdGhpcy5jb25kaXRpb25cbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0b0Nsb3VkRm9ybWF0aW9uKCk6IG9iamVjdDtcbn1cblxuLyoqXG4gKiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBvcHRpb25zIGZvciBhIHN0YWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgc3RhY2suXG4gICAqIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSdzIFwiRGVzY3JpcHRpb25cIiBhdHRyaWJ1dGUuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSBBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gZmllbGQgb2YgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlLlxuICAgKi9cbiAgdGVtcGxhdGVGb3JtYXRWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIHRvcC1sZXZlbCB0ZW1wbGF0ZSB0cmFuc2Zvcm0gZm9yIHRoaXMgc3RhY2sgKGUuZy4gXCJBV1M6OlNlcnZlcmxlc3MtMjAxNi0xMC0zMVwiKS5cbiAgICovXG4gIHRyYW5zZm9ybT86IHN0cmluZztcblxuICAvKipcbiAgICogTWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZS5cbiAgICovXG4gICBtZXRhZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgcmVmZXJlbmNlYWJsZSBDbG91ZEZvcm1hdGlvbiBjb25zdHJ1Y3RzIHdoaWNoIGFyZSBub3QgUmVzb3VyY2VzXG4gKlxuICogVGhlc2UgY29uc3RydWN0cyBhcmUgdGhpbmdzIGxpa2UgQ29uZGl0aW9ucyBhbmQgUGFyYW1ldGVycywgY2FuIGJlXG4gKiByZWZlcmVuY2VkIGJ5IHRha2luZyB0aGUgYC5yZWZgIGF0dHJpYnV0ZS5cbiAqXG4gKiBSZXNvdXJjZSBjb25zdHJ1Y3RzIGRvIG5vdCBpbmhlcml0IGZyb20gUmVmZXJlbmNlYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSB0aGVpclxuICogb3duLCBtb3JlIHNwZWNpZmljIHR5cGVzIHJldHVybmVkIGZyb20gdGhlIC5yZWYgYXR0cmlidXRlLiBBbHNvLCBzb21lXG4gKiByZXNvdXJjZXMgYXJlbid0IHJlZmVyZW5jZWFibGUgYXQgYWxsIChzdWNoIGFzIEJ1Y2tldFBvbGljaWVzIG9yIEdhdGV3YXlBdHRhY2htZW50cykuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZWZlcmVuY2VhYmxlIGV4dGVuZHMgU3RhY2tFbGVtZW50IHtcbiAgLyoqXG4gICAqIFJldHVybnMgYSB0b2tlbiB0byBhIENsb3VkRm9ybWF0aW9uIHsgUmVmIH0gdGhhdCByZWZlcmVuY2VzIHRoaXMgZW50aXR5IGJhc2VkIG9uIGl0J3MgbG9naWNhbCBJRC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcmVmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBSZWYodGhpcykudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBTdGFjay5cbiAqXG4gKiBXZSBkbyBhdHRyaWJ1dGUgZGV0ZWN0aW9uIHNpbmNlIHdlIGNhbid0IHJlbGlhYmx5IHVzZSAnaW5zdGFuY2VvZicuXG4gKi9cbmZ1bmN0aW9uIGlzU3RhY2soY29uc3RydWN0OiBDb25zdHJ1Y3QpOiBjb25zdHJ1Y3QgaXMgU3RhY2sge1xuICByZXR1cm4gKGNvbnN0cnVjdCBhcyBhbnkpLmlzU3RhY2s7XG59XG5cbi8qKlxuICogQ29sbGVjdCBhbGwgU3RhY2tFbGVtZW50cyBmcm9tIGEgY29uc3RydWN0XG4gKlxuICogQHBhcmFtIG5vZGUgUm9vdCBub2RlIHRvIGNvbGxlY3QgYWxsIFN0YWNrRWxlbWVudHMgZnJvbVxuICogQHBhcmFtIGludG8gQXJyYXkgdG8gYXBwZW5kIFN0YWNrRWxlbWVudHMgdG9cbiAqIEByZXR1cm5zIFRoZSBzYW1lIGFycmF5IGFzIGlzIGJlaW5nIGNvbGxlY3RlZCBpbnRvXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRWxlbWVudHMobm9kZTogQ29uc3RydWN0LCBpbnRvOiBTdGFja0VsZW1lbnRbXSA9IFtdKTogU3RhY2tFbGVtZW50W10ge1xuICBjb25zdCBlbGVtZW50ID0gU3RhY2tFbGVtZW50Ll9hc1N0YWNrRWxlbWVudChub2RlKTtcbiAgaWYgKGVsZW1lbnQpIHtcbiAgICBpbnRvLnB1c2goZWxlbWVudCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICBzdGFja0VsZW1lbnRzKGNoaWxkLCBpbnRvKTtcbiAgfVxuXG4gIHJldHVybiBpbnRvO1xufVxuXG4vKipcbiAqIEEgZ2VuZXJpYywgdW50eXBlZCByZWZlcmVuY2UgdG8gYSBTdGFjayBFbGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBSZWYgZXh0ZW5kcyBDbG91ZEZvcm1hdGlvblRva2VuIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudDogU3RhY2tFbGVtZW50KSB7XG4gICAgc3VwZXIoeyBSZWY6IGVsZW1lbnQubG9naWNhbElkIH0sIGAke2VsZW1lbnQubG9naWNhbElkfS5SZWZgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUEwQztBQUMxQyxnQ0FBNkI7QUFDN0IsaURBQXdEO0FBQ3hELDJDQUFnRDtBQUVoRCxpRUFBNkQ7QUFDN0QsNkNBQXFGO0FBb0JyRjs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFCQUFTO0lBaUVsQzs7Ozs7O09BTUc7SUFDSCxZQUFtQixNQUFZLEVBQUUsSUFBYSxFQUFFLEtBQWtCO1FBQ2hFLG9HQUFvRztRQUNwRyxLQUFLLENBQUMsTUFBTyxFQUFFLElBQUssQ0FBQyxDQUFDO1FBekN4Qjs7OztXQUlHO1FBQ2EsbUJBQWMsR0FBNEMsRUFBRyxDQUFDO1FBTzlFOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUksQ0FBQztRQU8vQjs7V0FFRztRQUNhLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQWlCcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksbUNBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBOUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQWU7UUFDaEMsSUFBSSxJQUFJLEdBQTBCLElBQUksQ0FBQztRQUN2QyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDcEI7UUFFRCxJQUFJLElBQUksSUFBSSxJQUFJ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QUksT0FBTyxFQUFFO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNwQjtJQUVELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLEdBQUksU0FBUSwwQ0FBbUI7SUFDMUMsWUFBWSxPQUFxQjtRQUMvQixLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGO0FBSkQsa0JBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3hhcGkgPSByZXF1aXJlKCdAYXdzLWNkay9jeC1hcGknKTtcbmltcG9ydCB7IEFwcCB9IGZyb20gJy4uL2FwcCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIFBBVEhfU0VQIH0gZnJvbSAnLi4vY29yZS9jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgcmVzb2x2ZSwgVG9rZW4gfSBmcm9tICcuLi9jb3JlL3Rva2Vucyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENsb3VkRm9ybWF0aW9uVG9rZW4gfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uLXRva2VuJztcbmltcG9ydCB7IEhhc2hlZEFkZHJlc3NpbmdTY2hlbWUsIElBZGRyZXNzaW5nU2NoZW1lLCBMb2dpY2FsSURzIH0gZnJvbSAnLi9sb2dpY2FsLWlkJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIGVudmlyb25tZW50IChhY2NvdW50L3JlZ2lvbikgd2hlcmUgdGhpcyBzdGFjayB3aWxsIGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBJZiBub3Qgc3VwcGxpZWQsIHRoZSBgZGVmYXVsdC1hY2NvdW50YCBhbmQgYGRlZmF1bHQtcmVnaW9uYCBjb250ZXh0IHBhcmFtZXRlcnMgd2lsbCBiZVxuICAgKiB1c2VkLiBJZiB0aGV5IGFyZSB1bmRlZmluZWQsIGl0IHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGRlcGxveSB0aGUgc3RhY2suXG4gICAqL1xuICBlbnY/OiBFbnZpcm9ubWVudDtcblxuICAvKipcbiAgICogU3RyYXRlZ3kgZm9yIGxvZ2ljYWwgSUQgZ2VuZXJhdGlvblxuICAgKlxuICAgKiBPcHRpb25hbC4gSWYgbm90IHN1cHBsaWVkLCB0aGUgSGFzaGVkTmFtaW5nU2NoZW1lIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIG5hbWluZ1NjaGVtZT86IElBZGRyZXNzaW5nU2NoZW1lO1xufVxuXG4vKipcbiAqIEEgcm9vdCBjb25zdHJ1Y3Qgd2hpY2ggcmVwcmVzZW50cyBhIHNpbmdsZSBDbG91ZEZvcm1hdGlvbiBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgdHJlZSBhbmQgbG9va3MgdXAgZm9yIHRoZSBTdGFjayByb290LlxuICAgKiBAcGFyYW0gbm9kZSBBIGNvbnN0cnVjdCBpbiB0aGUgdHJlZVxuICAgKiBAcmV0dXJucyBUaGUgU3RhY2sgb2JqZWN0ICh0aHJvd3MgaWYgdGhlIG5vZGUgaXMgbm90IHBhcnQgb2YgYSBTdGFjay1yb290ZWQgdHJlZSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZChub2RlOiBDb25zdHJ1Y3QpOiBTdGFjayB7XG4gICAgbGV0IGN1cnI6IENvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IG5vZGU7XG4gICAgd2hpbGUgKGN1cnIgIT0gbnVsbCAmJiAhaXNTdGFjayhjdXJyKSkge1xuICAgICAgY3VyciA9IGN1cnIucGFyZW50O1xuICAgIH1cblxuICAgIGlmIChjdXJyID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBTdGFjayBwYXJlbnQgZm9yICcke25vZGUudG9TdHJpbmcoKX0nYCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBtZXRhZGF0YSBhbm5vdGF0aW9uIFwiYXdzOmNkazpwaHlzaWNhbC1uYW1lXCIgdG8gdGhlIGNvbnN0cnVjdCBpZiBwaHlzaWNhbE5hbWVcbiAgICogaXMgbm9uLW51bGwuIFRoaXMgY2FuIGJlIHVzZWQgbGF0ZXIgYnkgdG9vbHMgYW5kIGFzcGVjdHMgdG8gZGV0ZXJtaW5lIGlmIHJlc291cmNlc1xuICAgKiBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHBoeXNpY2FsIG5hbWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbm5vdGF0ZVBoeXNpY2FsTmFtZShjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgcGh5c2ljYWxOYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKHBoeXNpY2FsTmFtZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3RydWN0LmFkZE1ldGFkYXRhKCdhd3M6Y2RrOnBoeXNpY2FsLW5hbWUnLCBwaHlzaWNhbE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgVkFMSURfU1RBQ0tfTkFNRV9SRUdFWCA9IC9eW0EtWmEtel1bQS1aYS16MC05LV0qJC87XG5cbiAgLyoqXG4gICAqIExpc3RzIGFsbCBtaXNzaW5nIGNvbnRleHR1YWwgaW5mb3JtYXRpb24uXG4gICAqIFRoaXMgaXMgcmV0dXJuZWQgd2hlbiB0aGUgc3RhY2sgaXMgc3ludGhlc2l6ZWQgdW5kZXIgdGhlICdtaXNzaW5nJyBhdHRyaWJ1dGVcbiAgICogYW5kIGFsbG93cyB0b29saW5nIHRvIG9idGFpbiB0aGUgY29udGV4dCBhbmQgcmUtc3ludGhlc2l6ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtaXNzaW5nQ29udGV4dDogeyBba2V5OiBzdHJpbmddOiBjeGFwaS5NaXNzaW5nQ29udGV4dCB9ID0geyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyBzdGFjayBpcyBkZXBsb3llZC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlbnY6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbnN0cnVjdCBpcyBhIHN0YWNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzU3RhY2sgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIGdlbmVyYXRpb24gc3RyYXRlZ3lcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2dpY2FsSWRzOiBMb2dpY2FsSURzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSAobGlrZSB2ZXJzaW9uLCB0cmFuc2Zvcm0sIGRlc2NyaXB0aW9uKS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZU9wdGlvbnM6IFRlbXBsYXRlT3B0aW9ucyA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gc3RhY2sgbmFtZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc3RhY2suXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnQgUGFyZW50IG9mIHRoaXMgc3RhY2ssIHVzdWFsbHkgYSBQcm9ncmFtIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2suIERlZmF1bHRzIHRvIFwiU3RhY2tcIi5cbiAgICogQHBhcmFtIHByb3BzIFN0YWNrIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyZW50PzogQXBwLCBuYW1lPzogc3RyaW5nLCBwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICAvLyBGb3IgdW5pdCB0ZXN0IGNvbnZlbmllbmNlIHBhcmVudHMgYXJlIG9wdGlvbmFsLCBzbyBieXBhc3MgdGhlIHR5cGUgY2hlY2sgd2hlbiBjYWxsaW5nIHRoZSBwYXJlbnQuXG4gICAgc3VwZXIocGFyZW50ISwgbmFtZSEpO1xuICAgIHRoaXMuZW52ID0gdGhpcy5wYXJzZUVudmlyb25tZW50KHByb3BzKTtcblxuICAgIHRoaXMubG9naWNhbElkcyA9IG5ldyBMb2dpY2FsSURzKHByb3BzICYmIHByb3BzLm5hbWluZ1NjaGVtZSA/IHByb3BzLm5hbWluZ1NjaGVtZSA6IG5ldyBIYXNoZWRBZGRyZXNzaW5nU2NoZW1lKCkpO1xuICAgIHRoaXMubmFtZSA9IG5hbWUgfHwgJ1N0YWNrJztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCBhIHJlc291cmNlIGJ5IHBhdGguXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZSBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqL1xuICBwdWJsaWMgZmluZFJlc291cmNlKHBhdGg6IHN0cmluZyk6IFJlc291cmNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByID0gdGhpcy5maW5kQ2hpbGQocGF0aCk7XG4gICAgaWYgKCFyKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICAgIC8vIGZvdW5kIGFuIGVsZW1lbnQsIGNoZWNrIGlmIGl0J3MgYSByZXNvdXJjZSAoZHVjay10eXBlKVxuICAgIGlmICghKCdyZXNvdXJjZVR5cGUnIGluIHIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvdW5kIGEgc3RhY2sgZWxlbWVudCBmb3IgJHtwYXRofSBidXQgaXQgaXMgbm90IGEgcmVzb3VyY2U6ICR7ci50b1N0cmluZygpfWApO1xuICAgIH1cblxuICAgIHJldHVybiByIGFzIFJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciB0aGlzIHN0YWNrIGJ5IHRyYXZlcnNpbmdcbiAgICogdGhlIHRyZWUgYW5kIGludm9raW5nIHRvQ2xvdWRGb3JtYXRpb24oKSBvbiBhbGwgRW50aXR5IG9iamVjdHMuXG4gICAqL1xuICBwdWJsaWMgdG9DbG91ZEZvcm1hdGlvbigpIHtcbiAgICAvLyBiZWZvcmUgd2UgYmVnaW4gc3ludGhlc2lzLCB3ZSBzaGFsbCBsb2NrIHRoaXMgc3RhY2ssIHNvIGNoaWxkcmVuIGNhbm5vdCBiZSBhZGRlZFxuICAgIHRoaXMubG9jaygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRlbXBsYXRlOiBhbnkgPSB7XG4gICAgICAgIERlc2NyaXB0aW9uOiB0aGlzLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgVHJhbnNmb3JtOiB0aGlzLnRlbXBsYXRlT3B0aW9ucy50cmFuc2Zvcm0sXG4gICAgICAgIEFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogdGhpcy50ZW1wbGF0ZU9wdGlvbnMudGVtcGxhdGVGb3JtYXRWZXJzaW9uLFxuICAgICAgICBNZXRhZGF0YTogdGhpcy50ZW1wbGF0ZU9wdGlvbnMubWV0YWRhdGFcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gc3RhY2tFbGVtZW50cyh0aGlzKTtcbiAgICAgIGNvbnN0IGZyYWdtZW50cyA9IGVsZW1lbnRzLm1hcChlID0+IGUudG9DbG91ZEZvcm1hdGlvbigpKTtcblxuICAgICAgLy8gbWVyZ2UgaW4gYWxsIENsb3VkRm9ybWF0aW9uIGZyYWdtZW50cyBjb2xsZWN0ZWQgZnJvbSB0aGUgdHJlZVxuICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudHMpIHtcbiAgICAgICAgbWVyZ2UodGVtcGxhdGUsIGZyYWdtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzb2x2ZSBhbGwgdG9rZW5zIGFuZCByZW1vdmUgYWxsIGVtcHRpZXNcbiAgICAgIGNvbnN0IHJldCA9IHJlc29sdmUodGVtcGxhdGUpIHx8IHsgfTtcblxuICAgICAgdGhpcy5sb2dpY2FsSWRzLmFzc2VydEFsbFJlbmFtZXNBcHBsaWVkKCk7XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIGFsbG93IG11dGF0aW9ucyBhZnRlciBzeW50aGVzaXMgaXMgZmluaXNoZWQuXG4gICAgICB0aGlzLnVubG9jaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gd2h5IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgd2h5IHJlZ2lvbiBpcyByZXF1aXJlZC5cbiAgICogQHJldHVybnMgVGhlIHJlZ2lvbiBpbiB3aGljaCB0aGlzIHN0YWNrIGlzIGRlcGxveWVkLiBUaHJvd3MgaWYgcmVnaW9uIGlzIG5vdCBkZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIHJlcXVpcmVSZWdpb24od2h5Pzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmVudi5yZWdpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt3aHkgPyB3aHkgKyAnLiAnIDogJyd9U3RhY2sgcmVxdWlyZXMgcmVnaW9uIGluZm9ybWF0aW9uLiBJdCBjYW4gYmUgZWl0aGVyIHN1cHBsaWVkIHZpYSB0aGUgXCJlbnZcIiBwcm9wZXJ0eSwgYCArXG4gICAgICAgICAgYHZpYSB0aGUgXCIke2N4YXBpLkRFRkFVTFRfUkVHSU9OX0NPTlRFWFRfS0VZfVwiIGNvbnRleHQgcGFyYW1ldGVycyBvciB1c2luZyBcImF3cyBjb25maWd1cmVcImApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVudi5yZWdpb247XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQVdTIGFjY291bnQgSUQgb2YgdGhpcyBTdGFjayxcbiAgICogb3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYWNjb3VudCBJRCBpcyBub3Qgc2V0IGluIHRoZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQHBhcmFtIHdoeSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHdoeSBpcyB0aGUgYWNjb3VudCBJRCByZXF1aXJlZFxuICAgKiBAcmV0dXJucyB0aGUgQVdTIGFjY291bnQgSUQgb2YgdGhpcyBTdGFja1xuICAgKi9cbiAgcHVibGljIHJlcXVpcmVBY2NvdW50SWQod2h5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZW52LmFjY291bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt3aHkgPyB3aHkgKyAnLiAnIDogJyd9U3RhY2sgcmVxdWlyZXMgYWNjb3VudCBpbmZvcm1hdGlvbi4gYCArXG4gICAgICAgICdJdCBjYW4gYmUgc3VwcGxpZWQgZWl0aGVyIHZpYSB0aGUgXCJlbnZcIiBwcm9wZXJ0eSB3aGVuIGNyZWF0aW5nIHRoZSBTdGFjaywgb3IgYnkgdXNpbmcgXCJhd3MgY29uZmlndXJlXCInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lbnYuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBwYXJlbnRBcHAoKTogQXBwIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudDtcbiAgICByZXR1cm4gcGFyZW50IGluc3RhbmNlb2YgQXBwXG4gICAgICA/IHBhcmVudFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGUgdGhhdCBhIGNvbnRleHQga2V5IHdhcyBleHBlY3RlZFxuICAgKlxuICAgKiBDb250YWlucyBpbnN0cnVjdGlvbnMgb24gaG93IHRoZSBrZXkgc2hvdWxkIGJlIHN1cHBsaWVkLlxuICAgKiBAcGFyYW0ga2V5IEtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBtaXNzaW5nIGNvbnRleHQuXG4gICAqIEBwYXJhbSBkZXRhaWxzIFRoZSBzZXQgb2YgcGFyYW1ldGVycyBuZWVkZWQgdG8gb2J0YWluIHRoZSBjb250ZXh0IChzcGVjaWZpYyB0byBjb250ZXh0IHByb3ZpZGVyKS5cbiAgICovXG4gIHB1YmxpYyByZXBvcnRNaXNzaW5nQ29udGV4dChrZXk6IHN0cmluZywgZGV0YWlsczogY3hhcGkuTWlzc2luZ0NvbnRleHQpIHtcbiAgICB0aGlzLm1pc3NpbmdDb250ZXh0W2tleV0gPSBkZXRhaWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmFtZSBhIGdlbmVyYXRlZCBsb2dpY2FsIGlkZW50aXRpZXNcbiAgICovXG4gIHB1YmxpYyByZW5hbWVMb2dpY2FsKG9sZElkOiBzdHJpbmcsIG5ld0lkOiBzdHJpbmcpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkFsbCByZW5hbWVzIG11c3QgYmUgc2V0IHVwIGJlZm9yZSBhZGRpbmcgZWxlbWVudHMgdG8gdGhlIHN0YWNrXCIpO1xuICAgIH1cblxuICAgIHRoaXMubG9naWNhbElkcy5yZW5hbWVMb2dpY2FsKG9sZElkLCBuZXdJZCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgc3RhY2sgbmFtZVxuICAgKlxuICAgKiBDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lcyBjYW4gaW5jbHVkZSBkYXNoZXMgaW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgaWRlbnRpZmllclxuICAgKiBjaGFyYWN0ZXIgY2xhc3NlcywgYW5kIHdlIGRvbid0IGFsbG93IG9uZSBvZiB0aGUgbWFnaWMgbWFya2Vycy5cbiAgICovXG4gIHByb3RlY3RlZCBfdmFsaWRhdGVJZChuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIVN0YWNrLlZBTElEX1NUQUNLX05BTUVfUkVHRVgudGVzdChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayBuYW1lIG11c3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbjogJHtTdGFjay5WQUxJRF9TVEFDS19OQU1FX1JFR0VYLnRvU3RyaW5nKCl9LCBnb3QgJyR7bmFtZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZWQgZGVmYXVsdHMgdG8gZW52aXJvbm1lbnQgYXR0cmlidXRlcy5cbiAgICovXG4gIHByaXZhdGUgcGFyc2VFbnZpcm9ubWVudChwcm9wcz86IFN0YWNrUHJvcHMpIHtcbiAgICAvLyBzdGFydCB3aXRoIGBlbnZgLlxuICAgIGNvbnN0IGVudjogRW52aXJvbm1lbnQgPSAocHJvcHMgJiYgcHJvcHMuZW52KSB8fCB7IH07XG5cbiAgICAvLyBpZiBhY2NvdW50IGlzIG5vdCBzcGVjaWZpZWQsIGF0dGVtcHQgdG8gcmVhZCBmcm9tIGNvbnRleHQuXG4gICAgaWYgKCFlbnYuYWNjb3VudCkge1xuICAgICAgZW52LmFjY291bnQgPSB0aGlzLmdldENvbnRleHQoY3hhcGkuREVGQVVMVF9BQ0NPVU5UX0NPTlRFWFRfS0VZKTtcbiAgICB9XG5cbiAgICAvLyBpZiByZWdpb24gaXMgbm90IHNwZWNpZmllZCwgYXR0ZW1wdCB0byByZWFkIGZyb20gY29udGV4dC5cbiAgICBpZiAoIWVudi5yZWdpb24pIHtcbiAgICAgIGVudi5yZWdpb24gPSB0aGlzLmdldENvbnRleHQoY3hhcGkuREVGQVVMVF9SRUdJT05fQ09OVEVYVF9LRVkpO1xuICAgIH1cblxuICAgIHJldHVybiBlbnY7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2UodGVtcGxhdGU6IGFueSwgcGFydDogYW55KSB7XG4gIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBPYmplY3Qua2V5cyhwYXJ0KSkge1xuICAgIGNvbnN0IHNyYyA9IHBhcnRbc2VjdGlvbl07XG5cbiAgICAvLyBjcmVhdGUgdG9wLWxldmVsIHNlY3Rpb24gaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIGxldCBkZXN0ID0gdGVtcGxhdGVbc2VjdGlvbl07XG4gICAgaWYgKCFkZXN0KSB7XG4gICAgICB0ZW1wbGF0ZVtzZWN0aW9uXSA9IGRlc3QgPSBzcmM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkZCBhbGwgZW50aXRpZXMgZnJvbSBzb3VyY2Ugc2VjdGlvbiB0byBkZXN0aW5hdGlvbiBzZWN0aW9uXG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHNyYykpIHtcbiAgICAgICAgaWYgKGlkIGluIGRlc3QpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHNlY3Rpb24gJyR7c2VjdGlvbn0nIGFscmVhZHkgY29udGFpbnMgJyR7aWR9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGRlc3RbaWRdID0gc3JjW2lkXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY29uc3QgTE9HSUNBTF9JRF9NRCA9ICdhd3M6Y2RrOmxvZ2ljYWxJZCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbnN0cnVjdCB0aGF0IGNhbiBiZSBcImRlcGVuZGVkIG9uXCIgdmlhIGBhZGREZXBlbmRlbmN5YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgYWxsIHN0YWNrIGVsZW1lbnRzIChyZXNvdXJjZXMsIHBhcmFtZXRlcnMsIGNvbmRpdGlvbnMpXG4gICAqIHRoYXQgc2hvdWxkIGJlIGFkZGVkIHdoZW4gYSByZXNvdXJjZSBcImRlcGVuZHMgb25cIiB0aGlzIGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY3lFbGVtZW50czogSURlcGVuZGFibGVbXTtcbn1cblxuLyoqXG4gKiBBbiBlbGVtZW50IG9mIGEgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGFja0VsZW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBhIGNvbnN0cnVjdCBpcyBhIHN0YWNrIGVsZW1lbnQgKGkuZS4gcGFydCBvZiB0aGVcbiAgICogc3ludGhlc2l6ZWQgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUpLlxuICAgKlxuICAgKiBVc2VzIGR1Y2stdHlwaW5nIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIHRvIGFsbG93IHN0YWNrIGVsZW1lbnRzIGZyb20gZGlmZmVyZW50XG4gICAqIHZlcnNpb25zIG9mIHRoaXMgbGlicmFyeSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgc2FtZSBzdGFjay5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGNvbnN0cnVjdCBhcyBhIHN0YWNrIGVsZW1lbnQgb3IgdW5kZWZpbmVkIGlmIGl0IGlzIG5vdCBhIHN0YWNrIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIF9hc1N0YWNrRWxlbWVudChjb25zdHJ1Y3Q6IENvbnN0cnVjdCk6IFN0YWNrRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCdsb2dpY2FsSWQnIGluIGNvbnN0cnVjdCAmJiAndG9DbG91ZEZvcm1hdGlvbicgaW4gY29uc3RydWN0KSB7XG4gICAgICByZXR1cm4gY29uc3RydWN0IGFzIFN0YWNrRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxvZ2ljYWwgSUQgZm9yIHRoaXMgQ2xvdWRGb3JtYXRpb24gc3RhY2sgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvZ2ljYWxJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdGhpcyBDb25zdHJ1Y3QgaGFzIGJlZW4gbWFkZSBhIHBhcnQgb2ZcbiAgICovXG4gIHByb3RlY3RlZCBzdGFjazogU3RhY2s7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZW50aXR5IGFuZCBiaW5kcyBpdCB0byBhIHRyZWUuXG4gICAqIE5vdGUgdGhhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBtdXN0IGJlIGEgU3RhY2sgb2JqZWN0IChub3QganVzdCBhbnkgUm9vdCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJlbnQgVGhlIHBhcmVudCBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHByb3BzIENvbnN0cnVjdCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcbiAgICBjb25zdCBzID0gU3RhY2suZmluZCh0aGlzKTtcbiAgICBpZiAoIXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHRyZWUgcm9vdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSBcIlN0YWNrXCInKTtcbiAgICB9XG4gICAgdGhpcy5zdGFjayA9IHM7XG5cbiAgICB0aGlzLmFkZE1ldGFkYXRhKExPR0lDQUxfSURfTUQsIG5ldyBUb2tlbigoKSA9PiB0aGlzLmxvZ2ljYWxJZCksIHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgdGhpcy5sb2dpY2FsSWQgPSB0aGlzLnN0YWNrLmxvZ2ljYWxJZHMuZ2V0TG9naWNhbElkKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgcG9pbnQgd2hlcmUgdGhpcyBSZXNvdXJjZSB3YXMgY3JlYXRlZCBmcm9tLCBzb3VyY2VkXG4gICAqICAgICAgZnJvbSB0aGUgK21ldGFkYXRhKyBlbnRyeSB0eXBlZCArYXdzOmNkazpsb2dpY2FsSWQrLCBhbmQgd2l0aCB0aGUgYm90dG9tLW1vc3RcbiAgICogICAgICBub2RlICtpbnRlcm5hbCsgZW50cmllcyBmaWx0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY3JlYXRpb25TdGFja1RyYWNlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZmlsdGVyU3RhY2tUcmFjZSh0aGlzLm1ldGFkYXRhLmZpbmQobWQgPT4gbWQudHlwZSA9PT0gTE9HSUNBTF9JRF9NRCkhLnRyYWNlKTtcblxuICAgIGZ1bmN0aW9uIGZpbHRlclN0YWNrVHJhY2Uoc3RhY2s6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gQXJyYXkub2YoLi4uc3RhY2spO1xuICAgICAgd2hpbGUgKHJlc3VsdC5sZW5ndGggPiAwICYmIHNob3VsZEZpbHRlcihyZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdKSkge1xuICAgICAgICByZXN1bHQucG9wKCk7XG4gICAgICB9XG4gICAgICAvLyBJdCdzIHdlaXJkIGlmIHdlIGZpbHRlcmVkIGV2ZXJ5dGhpbmcsIHNvIHJldHVybiB0aGUgd2hvbGUgc3RhY2suLi5cbiAgICAgIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAwID8gc3RhY2sgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hvdWxkRmlsdGVyKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gc3RyLm1hdGNoKC9bXihdK1xcKGludGVybmFsXFwvLiovKSAhPT0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBwYXRoIHdpdGggcmVzcGVjdCB0byB0aGUgc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgc3RhY2tQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5jZXN0b3JzKHRoaXMuc3RhY2spLm1hcChjID0+IGMuaWQpLmpvaW4oUEFUSF9TRVApO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXBlbmRlbmN5RWxlbWVudHMoKTogSURlcGVuZGFibGVbXSB7XG4gICAgcmV0dXJuIFsgdGhpcyBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIENsb3VkRm9ybWF0aW9uICdzbmlwcGV0JyBmb3IgdGhpcyBlbnRpdHkuIFRoZSBzbmlwcGV0IHdpbGwgb25seSBiZSBtZXJnZWRcbiAgICogYXQgdGhlIHJvb3QgbGV2ZWwgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBpZGVudGl0eSBjb25mbGljdHMuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBhIFJlc291cmNlIGNsYXNzIHdpbGwgcmV0dXJuIHNvbWV0aGluZyBsaWtlOlxuICAgKiB7XG4gICAqICAgUmVzb3VyY2VzOiB7XG4gICAqICAgICBbdGhpcy5sb2dpY2FsSWRdOiB7XG4gICAqICAgICAgIFR5cGU6IHRoaXMucmVzb3VyY2VUeXBlLFxuICAgKiAgICAgICBQcm9wZXJ0aWVzOiB0aGlzLnByb3BzLFxuICAgKiAgICAgICBDb25kaXRpb246IHRoaXMuY29uZGl0aW9uXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdG9DbG91ZEZvcm1hdGlvbigpOiBvYmplY3Q7XG59XG5cbi8qKlxuICogQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgb3B0aW9ucyBmb3IgYSBzdGFjay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZU9wdGlvbnMge1xuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGlzIHN0YWNrLlxuICAgKiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUncyBcIkRlc2NyaXB0aW9uXCIgYXR0cmlidXRlLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uIGZpZWxkIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZS5cbiAgICovXG4gIHRlbXBsYXRlRm9ybWF0VmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSB0b3AtbGV2ZWwgdGVtcGxhdGUgdHJhbnNmb3JtIGZvciB0aGlzIHN0YWNrIChlLmcuIFwiQVdTOjpTZXJ2ZXJsZXNzLTIwMTYtMTAtMzFcIikuXG4gICAqL1xuICB0cmFuc2Zvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gICAqL1xuICAgbWV0YWRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHJlZmVyZW5jZWFibGUgQ2xvdWRGb3JtYXRpb24gY29uc3RydWN0cyB3aGljaCBhcmUgbm90IFJlc291cmNlc1xuICpcbiAqIFRoZXNlIGNvbnN0cnVjdHMgYXJlIHRoaW5ncyBsaWtlIENvbmRpdGlvbnMgYW5kIFBhcmFtZXRlcnMsIGNhbiBiZVxuICogcmVmZXJlbmNlZCBieSB0YWtpbmcgdGhlIGAucmVmYCBhdHRyaWJ1dGUuXG4gKlxuICogUmVzb3VyY2UgY29uc3RydWN0cyBkbyBub3QgaW5oZXJpdCBmcm9tIFJlZmVyZW5jZWFibGUgYmVjYXVzZSB0aGV5IGhhdmUgdGhlaXJcbiAqIG93biwgbW9yZSBzcGVjaWZpYyB0eXBlcyByZXR1cm5lZCBmcm9tIHRoZSAucmVmIGF0dHJpYnV0ZS4gQWxzbywgc29tZVxuICogcmVzb3VyY2VzIGFyZW4ndCByZWZlcmVuY2VhYmxlIGF0IGFsbCAoc3VjaCBhcyBCdWNrZXRQb2xpY2llcyBvciBHYXRld2F5QXR0YWNobWVudHMpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVmZXJlbmNlYWJsZSBleHRlbmRzIFN0YWNrRWxlbWVudCB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdG9rZW4gdG8gYSBDbG91ZEZvcm1hdGlvbiB7IFJlZiB9IHRoYXQgcmVmZXJlbmNlcyB0aGlzIGVudGl0eSBiYXNlZCBvbiBpdCdzIGxvZ2ljYWwgSUQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgUmVmKHRoaXMpLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgU3RhY2suXG4gKlxuICogV2UgZG8gYXR0cmlidXRlIGRldGVjdGlvbiBzaW5jZSB3ZSBjYW4ndCByZWxpYWJseSB1c2UgJ2luc3RhbmNlb2YnLlxuICovXG5mdW5jdGlvbiBpc1N0YWNrKGNvbnN0cnVjdDogQ29uc3RydWN0KTogY29uc3RydWN0IGlzIFN0YWNrIHtcbiAgcmV0dXJuIChjb25zdHJ1Y3QgYXMgYW55KS5pc1N0YWNrO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIFN0YWNrRWxlbWVudHMgZnJvbSBhIGNvbnN0cnVjdFxuICpcbiAqIEBwYXJhbSBub2RlIFJvb3Qgbm9kZSB0byBjb2xsZWN0IGFsbCBTdGFja0VsZW1lbnRzIGZyb21cbiAqIEBwYXJhbSBpbnRvIEFycmF5IHRvIGFwcGVuZCBTdGFja0VsZW1lbnRzIHRvXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBhcnJheSBhcyBpcyBiZWluZyBjb2xsZWN0ZWQgaW50b1xuICovXG5mdW5jdGlvbiBzdGFja0VsZW1lbnRzKG5vZGU6IENvbnN0cnVjdCwgaW50bzogU3RhY2tFbGVtZW50W10gPSBbXSk6IFN0YWNrRWxlbWVudFtdIHtcbiAgY29uc3QgZWxlbWVudCA9IFN0YWNrRWxlbWVudC5fYXNTdGFja0VsZW1lbnQobm9kZSk7XG4gIGlmIChlbGVtZW50KSB7XG4gICAgaW50by5wdXNoKGVsZW1lbnQpO1xuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgc3RhY2tFbGVtZW50cyhjaGlsZCwgaW50byk7XG4gIH1cblxuICByZXR1cm4gaW50bztcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMsIHVudHlwZWQgcmVmZXJlbmNlIHRvIGEgU3RhY2sgRWxlbWVudFxuICovXG5leHBvcnQgY2xhc3MgUmVmIGV4dGVuZHMgQ2xvdWRGb3JtYXRpb25Ub2tlbiB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IFN0YWNrRWxlbWVudCkge1xuICAgIHN1cGVyKHsgUmVmOiBlbGVtZW50LmxvZ2ljYWxJZCB9LCBgJHtlbGVtZW50LmxvZ2ljYWxJZH0uUmVmYCk7XG4gIH1cbn1cbiJdfQ==

2

node_modules/cli-color/package.json

@@ -24,3 +24,3 @@ {

"_spec": "cli-color@~0.1.6",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Mariusz Nowak",

@@ -24,3 +24,3 @@ {

"_spec": "difflib@~0.2.1",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Xueqiao Xu",

@@ -24,3 +24,3 @@ {

"_spec": "dreamopt@~0.6.0",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/json-diff",
"author": {

@@ -27,0 +27,0 @@ "name": "Andrey Tarantsov",

@@ -24,3 +24,3 @@ {

"_spec": "es5-ext@0.8.x",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/cli-color",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/cli-color",
"author": {

@@ -27,0 +27,0 @@ "name": "Mariusz Nowak",

@@ -24,3 +24,3 @@ {

"_spec": "heap@>= 0.2.0",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/difflib",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/difflib",
"author": {

@@ -27,0 +27,0 @@ "name": "Xueqiao Xu",

@@ -24,3 +24,3 @@ {

"_spec": "js-base64@^2.4.5",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk",
"author": {

@@ -27,0 +27,0 @@ "name": "Dan Kogai"

@@ -24,3 +24,3 @@ {

"_spec": "json-diff@^0.3.1",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk",
"author": {

@@ -27,0 +27,0 @@ "name": "Andrey Tarantsov",

@@ -24,3 +24,3 @@ {

"_spec": "wordwrap@>=0.0.2",
"_where": "/codebuild/output/src680494326/src/packages/@aws-cdk/cdk/node_modules/dreamopt",
"_where": "/codebuild/output/src254171234/src/packages/@aws-cdk/cdk/node_modules/dreamopt",
"author": {

@@ -27,0 +27,0 @@ "name": "James Halliday",

{
"name": "@aws-cdk/cdk",
"version": "0.16.0",
"version": "0.17.0",
"description": "AWS Cloud Development Kit Core Library",

@@ -57,10 +57,10 @@ "main": "lib/index.js",

"@types/lodash": "^4.14.117",
"cdk-build-tools": "^0.16.0",
"cfn2ts": "^0.16.0",
"cdk-build-tools": "^0.17.0",
"cfn2ts": "^0.17.0",
"fast-check": "^1.7.0",
"lodash": "^4.17.11",
"pkglint": "^0.16.0"
"pkglint": "^0.17.0"
},
"dependencies": {
"@aws-cdk/cx-api": "^0.16.0",
"@aws-cdk/cx-api": "^0.17.0",
"js-base64": "^2.4.5",

@@ -75,4 +75,4 @@ "json-diff": "^0.3.1"

"peerDependencies": {
"@aws-cdk/cx-api": "^0.16.0"
"@aws-cdk/cx-api": "^0.17.0"
}
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc