Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aws-cdk/aws-ecs

Package Overview
Dependencies
Maintainers
4
Versions
288
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/aws-ecs - npm Package Compare versions

Comparing version 0.19.0 to 0.20.0

test/fargate/integ.l3.d.ts

4

lib/base/base-service.js

@@ -27,3 +27,3 @@ "use strict";

minimumHealthyPercent: props.minimumHealthyPercent || 50
},
}, healthCheckGracePeriodSeconds: props.healthCheckGracePeriodSeconds,
/* role: never specified, supplanted by Service Linked Role */

@@ -131,2 +131,2 @@ networkConfiguration: new cdk.Token(() => this.networkConfiguration) }, additionalProps));

const EPHEMERAL_PORT_RANGE = new ec2.TcpPortRange(32768, 65535);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYmFzZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0VBQW1FO0FBQ25FLHNEQUF1RDtBQUN2RCx3Q0FBeUM7QUFDekMsNkRBQThEO0FBQzlELHdDQUF5QztBQUN6QyxvQ0FBcUM7QUFDckMsNkRBQXNFO0FBQ3RFLG9EQUFrRDtBQUNsRCwrREFBMEQ7QUE4QzFEOztHQUVHO0FBQ0gsTUFBc0IsV0FBWSxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBc0NyRCxZQUFZLE1BQXFCLEVBQ3JCLElBQVksRUFDWixLQUF1QixFQUN2QixlQUFvQixFQUNwQixXQUFtQixFQUNuQixjQUE4QjtRQUN4QyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBcEN0Qjs7V0FFRztRQUNhLGdCQUFXLEdBQW9CLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBc0IzRCxrQkFBYSxHQUFHLElBQUksS0FBSyxFQUF1RCxDQUFDO1FBYXpGLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw4QkFBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxrQkFDaEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQ2hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUM5QixhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDdEQsdUJBQXVCLEVBQUU7Z0JBQ3ZCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxJQUFJLEdBQUc7Z0JBQzNDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFO2FBQ3pEO1lBQ0QsOERBQThEO1lBQzlELG9CQUFvQixFQUFFLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxH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Q0ssbUJBQW1CO1FBQ3pCLDZCQUE2QjtRQUM3QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDMUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO2dCQUNuQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsaUVBQWlFO2dCQUMzRSxZQUFZLEVBQUUsb0RBQW9EO2FBQ25FLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuTEQsa0NBbUxDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXBwc2NhbGluZyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1hcHBsaWNhdGlvbmF1dG9zY2FsaW5nJyk7XG5pbXBvcnQgY2xvdWR3YXRjaCA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1jbG91ZHdhdGNoJyk7XG5pbXBvcnQgZWMyID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWVjMicpO1xuaW1wb3J0IGVsYnYyID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInKTtcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBOZXR3b3JrTW9kZSwgVGFza0RlZmluaXRpb24gfSBmcm9tICcuLi9iYXNlL3Rhc2stZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBjbG91ZGZvcm1hdGlvbiB9IGZyb20gJy4uL2Vjcy5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgU2NhbGFibGVUYXNrQ291bnQgfSBmcm9tICcuL3NjYWxhYmxlLXRhc2stY291bnQnO1xuXG4vKipcbiAqIEJhc2ljIHNlcnZpY2UgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VTZXJ2aWNlUHJvcHMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGRlc2lyZWQgY29waWVzIG9mIHJ1bm5pbmcgdGFza3NcbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZGVzaXJlZENvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDbG91ZEZvcm1hdGlvbi1nZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgc2VydmljZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcywgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgQW1hem9uIEVDU1xuICAgKiBzZXJ2aWNlJ3MgRGVzaXJlZENvdW50IHZhbHVlLCB0aGF0IGNhbiBydW4gaW4gYSBzZXJ2aWNlIGR1cmluZyBhXG4gICAqIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDIwMFxuICAgKi9cbiAgbWF4aW11bVBlcmNlbnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiB0YXNrcywgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZlxuICAgKiB0aGUgQW1hem9uIEVDUyBzZXJ2aWNlJ3MgRGVzaXJlZENvdW50IHZhbHVlLCB0aGF0IG11c3RcbiAgICogY29udGludWUgdG8gcnVuIGFuZCByZW1haW4gaGVhbHRoeSBkdXJpbmcgYSBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgbWluaW11bUhlYWx0aHlQZXJjZW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lIGFmdGVyIHN0YXJ0dXAgdG8gaWdub3JlIHVuaGVhbHRoeSBsb2FkIGJhbGFuY2VyIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgPz8/IEZJWE1FXG4gICAqL1xuICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kU2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBFY3MgYW5kIEZhcmdhdGUgc2VydmljZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZXJ2aWNlIGV4dGVuZHMgY2RrLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVsYnYyLklBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclRhcmdldCwgZWxidjIuSU5ldHdvcmtMb2FkQmFsYW5jZXJUYXJnZXQsIGNkay5JRGVwZW5kYWJsZSB7XG5cbiAgLyoqXG4gICAqIENsb3VkRm9ybWF0aW9uIHJlc291cmNlcyBnZW5lcmF0ZWQgYnkgdGhpcyBzZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwZW5kZW5jeUVsZW1lbnRzOiBjZGsuSURlcGVuZGFibGVbXTtcblxuICAvKipcbiAgICogTWFuYWdlIGFsbG93ZWQgbmV0d29yayB0cmFmZmljIGZvciB0aGlzIHNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogZWMyLkNvbm5lY3Rpb25zID0gbmV3IGVjMi5Db25uZWN0aW9ucygpO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyBzZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBzZXJ2aWNlJ3MgY2x1c3RlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhc2sgZGVmaW5pdGlvbiB0aGlzIHNlcnZpY2UgaXMgYXNzb2NpYXRlZCB3aXRoXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IFRhc2tEZWZpbml0aW9uO1xuXG4gIHByb3RlY3RlZCBsb2FkQmFsYW5jZXJzID0gbmV3IEFycmF5PGNsb3VkZm9ybWF0aW9uLlNlcnZpY2VSZXNvdXJjZS5Mb2FkQmFsYW5jZXJQcm9wZXJ0eT4oKTtcbiAgcHJvdGVjdGVkIG5ldHdvcmtDb25maWd1cmF0aW9uPzogY2xvdWRmb3JtYXRpb24uU2VydmljZVJlc291cmNlLk5ldHdvcmtDb25maWd1cmF0aW9uUHJvcGVydHk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3VkZm9ybWF0aW9uLlNlcnZpY2VSZXNvdXJjZTtcbiAgcHJpdmF0ZSBzY2FsYWJsZVRhc2tDb3VudD86IFNjYWxhYmxlVGFza0NvdW50O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCxcbiAgICAgICAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwcm9wczogQmFzZVNlcnZpY2VQcm9wcyxcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BzOiBhbnksXG4gICAgICAgICAgICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHRhc2tEZWZpbml0aW9uOiBUYXNrRGVmaW5pdGlvbikge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG5cbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gdGFza0RlZmluaXRpb247XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNsb3VkZm9ybWF0aW9uLlNlcnZpY2VSZXNvdXJjZSh0aGlzLCBcIlNlcnZpY2VcIiwge1xuICAgICAgZGVzaXJlZENvdW50OiBwcm9wcy5kZXNpcmVkQ291bnQsXG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBsb2FkQmFsYW5jZXJzOiBuZXcgY2RrLlRva2VuKCgpID0+IHRoaXMubG9hZEJhbGFuY2VycyksXG4gICAgICBkZXBsb3ltZW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICBtYXhpbXVtUGVyY2VudDogcHJvcHMubWF4aW11bVBlcmNlbnQgfHwgMjAwLFxuICAgICAgICBtaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IHByb3BzLm1pbmltdW1IZWFsdGh5UGVyY2VudCB8fCA1MFxuICAgICAgfSxcbiAgICAgIC8qIHJvbGU6IG5ldmVyIHNwZWNpZmllZCwgc3VwcGxhbnRlZCBieSBTZXJ2aWNlIExpbmtlZCBSb2xlICovXG4gICAgICBuZXR3b3JrQ29uZmlndXJhdGlvbjogbmV3IGNkay5Ub2tlbigoKSA9PiB0aGlzLm5ldHdvcmtDb25maWd1cmF0aW9uKSxcbiAgICAgIC4uLmFkZGl0aW9uYWxQcm9wc1xuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZUFybiA9IHRoaXMucmVzb3VyY2Uuc2VydmljZUFybjtcbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gdGhpcy5yZXNvdXJjZS5zZXJ2aWNlTmFtZTtcbiAgICB0aGlzLmRlcGVuZGVuY3lFbGVtZW50cyA9IFt0aGlzLnJlc291cmNlXTtcbiAgICB0aGlzLmNsdXN0ZXJOYW1lID0gY2x1c3Rlck5hbWU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgYXR0YWNoZWQgdG8gYW4gQUxCXG4gICAqXG4gICAqIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4gSW5zdGVhZCwgY2FsbCBsaXN0ZW5lci5hZGRUYXJnZXQoKVxuICAgKiB0byBhZGQgdGhpcyBzZXJ2aWNlIHRvIGEgbG9hZCBiYWxhbmNlci5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUb0FwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXApOiBlbGJ2Mi5Mb2FkQmFsYW5jZXJUYXJnZXRQcm9wcyB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5hdHRhY2hUb0VMQnYyKHRhcmdldEdyb3VwKTtcblxuICAgIC8vIE9wZW4gdXAgc2VjdXJpdHkgZ3JvdXBzLiBGb3IgZHluYW1pYyBwb3J0IG1hcHBpbmcsIHdlIHdvbid0IGtub3cgdGhlIHBvcnQgcmFuZ2VcbiAgICAvLyBpbiBhZHZhbmNlIHNvIHdlIG5lZWQgdG8gb3BlbiB1cCBhbGwgcG9ydHMuXG4gICAgY29uc3QgcG9ydCA9IHRoaXMudGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lciEuaW5ncmVzc1BvcnQ7XG4gICAgY29uc3QgcG9ydFJhbmdlID0gcG9ydCA9PT0gMCA/IEVQSEVNRVJBTF9QT1JUX1JBTkdFIDogbmV3IGVjMi5UY3BQb3J0KHBvcnQpO1xuICAgIHRhcmdldEdyb3VwLnJlZ2lzdGVyQ29ubmVjdGFibGUodGhpcywgcG9ydFJhbmdlKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgYXR0YWNoZWQgdG8gYW4gTkxCXG4gICAqXG4gICAqIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4gSW5zdGVhZCwgY2FsbCBsaXN0ZW5lci5hZGRUYXJnZXQoKVxuICAgKiB0byBhZGQgdGhpcyBzZXJ2aWNlIHRvIGEgbG9hZCBiYWxhbmNlci5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2hUb05ldHdvcmtUYXJnZXRHcm91cCh0YXJnZXRHcm91cDogZWxidjIuTmV0d29ya1RhcmdldEdyb3VwKTogZWxidjIuTG9hZEJhbGFuY2VyVGFyZ2V0UHJvcHMge1xuICAgIHJldHVybiB0aGlzLmF0dGFjaFRvRUxCdjIodGFyZ2V0R3JvdXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvc2NhbGluZyBmb3IgdGhlIG51bWJlciBvZiB0YXNrcyBpbiB0aGlzIHNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyBhdXRvU2NhbGVUYXNrQ291bnQocHJvcHM6IGFwcHNjYWxpbmcuRW5hYmxlU2NhbGluZ1Byb3BzKSB7XG4gICAgaWYgKHRoaXMuc2NhbGFibGVUYXNrQ291bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXV0b1NjYWxpbmcgb2YgdGFzayBjb3VudCBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgc2VydmljZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNjYWxhYmxlVGFza0NvdW50ID0gbmV3IFNjYWxhYmxlVGFza0NvdW50KHRoaXMsICdUYXNrQ291bnQnLCB7XG4gICAgICBzZXJ2aWNlTmFtZXNwYWNlOiBhcHBzY2FsaW5nLlNlcnZpY2VOYW1lc3BhY2UuRWNzLFxuICAgICAgcmVzb3VyY2VJZDogYHNlcnZpY2UvJHt0aGlzLmNsdXN0ZXJOYW1lfS8ke3RoaXMucmVzb3VyY2Uuc2VydmljZU5hbWV9YCxcbiAgICAgIGRpbWVuc2lvbjogJ2VjczpzZXJ2aWNlOkRlc2lyZWRDb3VudCcsXG4gICAgICByb2xlOiB0aGlzLm1ha2VBdXRvU2NhbGluZ1JvbGUoKSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgU2VydmljZVxuICAgKi9cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNDdXN0b21pemF0aW9uKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0VDUycsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uczogeyBTZXJ2aWNlTmFtZTogdGhpcy5zZXJ2aWNlTmFtZSB9LFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgQVdTVlBDIG5ldHdvcmtpbmcgZm9yIHRoaXMgY29uc3RydWN0XG4gICAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gIHByb3RlY3RlZCBjb25maWd1cmVBd3NWcGNOZXR3b3JraW5nKHZwYzogZWMyLlZwY05ldHdvcmtSZWYsIGFzc2lnblB1YmxpY0lwPzogYm9vbGVhbiwgdnBjUGxhY2VtZW50PzogZWMyLlZwY1BsYWNlbWVudFN0cmF0ZWd5LCBzZWN1cml0eUdyb3VwPzogZWMyLlNlY3VyaXR5R3JvdXBSZWYpIHtcbiAgICBpZiAodnBjUGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZwY1BsYWNlbWVudCA9IHsgc3VibmV0c1RvVXNlOiBhc3NpZ25QdWJsaWNJcCA/IGVjMi5TdWJuZXRUeXBlLlB1YmxpYyA6IGVjMi5TdWJuZXRUeXBlLlByaXZhdGUgfTtcbiAgICB9XG4gICAgaWYgKHNlY3VyaXR5R3JvdXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHsgdnBjIH0pO1xuICAgIH1cbiAgICBjb25zdCBzdWJuZXRzID0gdnBjLnN1Ym5ldHModnBjUGxhY2VtZW50KTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cCk7XG5cbiAgICB0aGlzLm5ldHdvcmtDb25maWd1cmF0aW9uID0ge1xuICAgICAgYXdzdnBjQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBhc3NpZ25QdWJsaWNJcDogYXNzaWduUHVibGljSXAgPyAnRU5BQkxFRCcgOiAnRElTQUJMRUQnLFxuICAgICAgICBzdWJuZXRzOiBzdWJuZXRzLm1hcCh4ID0+IHguc3VibmV0SWQpLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogbmV3IGNkay5Ub2tlbigoKSA9PiBbc2VjdXJpdHlHcm91cCEuc2VjdXJpdHlHcm91cElkXSksXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGFyZWQgbG9naWMgZm9yIGF0dGFjaGluZyB0byBhbiBFTEJ2MlxuICAgKi9cbiAgcHJpdmF0ZSBhdHRhY2hUb0VMQnYyKHRhcmdldEdyb3VwOiBlbGJ2Mi5JVGFyZ2V0R3JvdXApOiBlbGJ2Mi5Mb2FkQmFsYW5jZXJUYXJnZXRQcm9wcyB7XG4gICAgaWYgKHRoaXMudGFza0RlZmluaXRpb24ubmV0d29ya01vZGUgPT09IE5ldHdvcmtNb2RlLk5vbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2UgYSBsb2FkIGJhbGFuY2VyIGlmIE5ldHdvcmtNb2RlIGlzIE5vbmUuIFVzZSBCcmlkZ2UsIEhvc3Qgb3IgQXdzVnBjIGluc3RlYWQuXCIpO1xuICAgIH1cblxuICAgIHRoaXMubG9hZEJhbGFuY2Vycy5wdXNoKHtcbiAgICAgIHRhcmdldEdyb3VwQXJuOiB0YXJnZXRHcm91cC50YXJnZXRHcm91cEFybixcbiAgICAgIGNvbnRhaW5lck5hbWU6IHRoaXMudGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lciEuaWQsXG4gICAgICBjb250YWluZXJQb3J0OiB0aGlzLnRhc2tEZWZpbml0aW9uLmRlZmF1bHRDb250YWluZXIhLmNvbnRhaW5lclBvcnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlLmFkZERlcGVuZGVuY3kodGFyZ2V0R3JvdXAubG9hZEJhbGFuY2VyRGVwZW5kZW5jeSgpKTtcblxuICAgIGNvbnN0IHRhcmdldFR5cGUgPSB0aGlzLnRhc2tEZWZpbml0aW9uLm5ldHdvcmtNb2RlID09PSBOZXR3b3JrTW9kZS5Bd3NWcGMgPyBlbGJ2Mi5UYXJnZXRUeXBlLklwIDogZWxidjIuVGFyZ2V0VHlwZS5JbnN0YW5jZTtcbiAgICByZXR1cm4geyB0YXJnZXRUeXBlIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdGhlIHJvbGUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGF1dG9zY2FsaW5nIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBtYWtlQXV0b1NjYWxpbmdSb2xlKCk6IGlhbS5JUm9sZSB7XG4gICAgLy8gVXNlIGEgU2VydmljZSBMaW5rZWQgUm9sZS5cbiAgICByZXR1cm4gaWFtLlJvbGUuaW1wb3J0KHRoaXMsICdTY2FsaW5nUm9sZScsIHtcbiAgICAgIHJvbGVBcm46IGNkay5Bcm5VdGlscy5mcm9tQ29tcG9uZW50cyh7XG4gICAgICAgIHNlcnZpY2U6ICdpYW0nLFxuICAgICAgICByZXNvdXJjZTogJ3JvbGUvYXdzLXNlcnZpY2Utcm9sZS9lY3MuYXBwbGljYXRpb24tYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbScsXG4gICAgICAgIHJlc291cmNlTmFtZTogJ0FXU1NlcnZpY2VSb2xlRm9yQXBwbGljYXRpb25BdXRvU2NhbGluZ19FQ1NTZXJ2aWNlJyxcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcG9ydCByYW5nZSB0byBvcGVuIHVwIGZvciBkeW5hbWljIHBvcnQgbWFwcGluZ1xuICovXG5jb25zdCBFUEhFTUVSQUxfUE9SVF9SQU5HRSA9IG5ldyBlYzIuVGNwUG9ydFJhbmdlKDMyNzY4LCA2NTUzNSk7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYmFzZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0VBQW1FO0FBQ25FLHNEQUF1RDtBQUN2RCx3Q0FBeUM7QUFDekMsNkRBQThEO0FBQzlELHdDQUF5QztBQUN6QyxvQ0FBcUM7QUFDckMsNkRBQXNFO0FBQ3RFLG9EQUFrRDtBQUNsRCwrREFBMEQ7QUE4QzFEOztHQUVHO0FBQ0gsTUFBc0IsV0FBWSxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBc0NyRCxZQUFZLE1BQXFCLEVBQ3JCLElBQVksRUFDWixLQUF1QixFQUN2QixlQUFvQixFQUNwQixXQUFtQixFQUNuQixjQUE4QjtRQUN4QyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBcEN0Qjs7V0FFRztRQUNhLGdCQUFXLEdBQW9CLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBc0IzRCxrQkFBYSxHQUFHLElBQUksS0FBSyxFQUF1RCxDQUFDO1FBYXpGLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBRXJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw4QkFBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxrQkFDaEUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQ2hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUM5QixhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDdEQsdUJBQXVCLEVBQUU7Z0JBQ3ZCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxJQUFJLEdBQUc7Z0JBQzNDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxFQUFFO2FBQ3pELEVBQ0QsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLDZCQUE2QjtZQUNsRSw4REFBOEQ7WUFDOUQsb0JB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LEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsNkJBQTZCO1FBQzdCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMxQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxpRUFBaUU7Z0JBQzNFLFlBQVksRUFBRSxvREFBb0Q7YUFDbkUsQ0FBQztTQUNILENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXBMRCxrQ0FvTEM7QUFFRDs7R0FFRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcHBzY2FsaW5nID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWFwcGxpY2F0aW9uYXV0b3NjYWxpbmcnKTtcbmltcG9ydCBjbG91ZHdhdGNoID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gnKTtcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgZWxidjIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MicpO1xuaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IE5ldHdvcmtNb2RlLCBUYXNrRGVmaW5pdGlvbiB9IGZyb20gJy4uL2Jhc2UvdGFzay1kZWZpbml0aW9uJztcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi4vZWNzLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBTY2FsYWJsZVRhc2tDb3VudCB9IGZyb20gJy4vc2NhbGFibGUtdGFzay1jb3VudCc7XG5cbi8qKlxuICogQmFzaWMgc2VydmljZSBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVNlcnZpY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGVzaXJlZCBjb3BpZXMgb2YgcnVubmluZyB0YXNrc1xuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBkZXNpcmVkQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBmb3IgdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICBzZXJ2aWNlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzLCBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBBbWF6b24gRUNTXG4gICAqIHNlcnZpY2UncyBEZXNpcmVkQ291bnQgdmFsdWUsIHRoYXQgY2FuIHJ1biBpbiBhIHNlcnZpY2UgZHVyaW5nIGFcbiAgICogZGVwbG95bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgMjAwXG4gICAqL1xuICBtYXhpbXVtUGVyY2VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHRhc2tzLCBzcGVjaWZpZWQgYXMgYSBwZXJjZW50YWdlIG9mXG4gICAqIHRoZSBBbWF6b24gRUNTIHNlcnZpY2UncyBEZXNpcmVkQ291bnQgdmFsdWUsIHRoYXQgbXVzdFxuICAgKiBjb250aW51ZSB0byBydW4gYW5kIHJlbWFpbiBoZWFsdGh5IGR1cmluZyBhIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUwXG4gICAqL1xuICBtaW5pbXVtSGVhbHRoeVBlcmNlbnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWUgYWZ0ZXIgc3RhcnR1cCB0byBpZ25vcmUgdW5oZWFsdGh5IGxvYWQgYmFsYW5jZXIgY2hlY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA/Pz8gRklYTUVcbiAgICovXG4gIGhlYWx0aENoZWNrR3JhY2VQZXJpb2RTZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIEVjcyBhbmQgRmFyZ2F0ZSBzZXJ2aWNlc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVNlcnZpY2UgZXh0ZW5kcyBjZGsuQ29uc3RydWN0XG4gIGltcGxlbWVudHMgZWxidjIuSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyVGFyZ2V0LCBlbGJ2Mi5JTmV0d29ya0xvYWRCYWxhbmNlclRhcmdldCwgY2RrLklEZXBlbmRhYmxlIHtcblxuICAvKipcbiAgICogQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzIGdlbmVyYXRlZCBieSB0aGlzIHNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBlbmRlbmN5RWxlbWVudHM6IGNkay5JRGVwZW5kYWJsZVtdO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2UgYWxsb3dlZCBuZXR3b3JrIHRyYWZmaWMgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKCk7XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIHNlcnZpY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBzZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHNlcnZpY2UncyBjbHVzdGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGFzayBkZWZpbml0aW9uIHRoaXMgc2VydmljZSBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXNrRGVmaW5pdGlvbjogVGFza0RlZmluaXRpb247XG5cbiAgcHJvdGVjdGVkIGxvYWRCYWxhbmNlcnMgPSBuZXcgQXJyYXk8Y2xvdWRmb3JtYXRpb24uU2VydmljZVJlc291cmNlLkxvYWRCYWxhbmNlclByb3BlcnR5PigpO1xuICBwcm90ZWN0ZWQgbmV0d29ya0NvbmZpZ3VyYXRpb24/OiBjbG91ZGZvcm1hdGlvbi5TZXJ2aWNlUmVzb3VyY2UuTmV0d29ya0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogY2xvdWRmb3JtYXRpb24uU2VydmljZVJlc291cmNlO1xuICBwcml2YXRlIHNjYWxhYmxlVGFza0NvdW50PzogU2NhbGFibGVUYXNrQ291bnQ7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LFxuICAgICAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByb3BzOiBCYXNlU2VydmljZVByb3BzLFxuICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcHM6IGFueSxcbiAgICAgICAgICAgICAgY2x1c3Rlck5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgdGFza0RlZmluaXRpb246IFRhc2tEZWZpbml0aW9uKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSB0YXNrRGVmaW5pdGlvbjtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgY2xvdWRmb3JtYXRpb24uU2VydmljZVJlc291cmNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBkZXNpcmVkQ291bnQ6IHByb3BzLmRlc2lyZWRDb3VudCxcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGxvYWRCYWxhbmNlcnM6IG5ldyBjZGsuVG9rZW4oKCkgPT4gdGhpcy5sb2FkQmFsYW5jZXJzKSxcbiAgICAgIGRlcGxveW1lbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIG1heGltdW1QZXJjZW50OiBwcm9wcy5tYXhpbXVtUGVyY2VudCB8fCAyMDAsXG4gICAgICAgIG1pbmltdW1IZWFsdGh5UGVyY2VudDogcHJvcHMubWluaW11bUhlYWx0aHlQZXJjZW50IHx8IDUwXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZFNlY29uZHM6IHByb3BzLmhlYWx0aENoZWNrR3JhY2VQZXJpb2RTZWNvbmRzLFxuICAgICAgLyogcm9sZTogbmV2ZXIgc3BlY2lmaWVkLCBzdXBwbGFudGVkIGJ5IFNlcnZpY2UgTGlua2VkIFJvbGUgKi9cbiAgICAgIG5ldHdvcmtDb25maWd1cmF0aW9uOiBuZXcgY2RrLlRva2VuKCgpID0+IHRoaXMubmV0d29ya0NvbmZpZ3VyYXRpb24pLFxuICAgICAgLi4uYWRkaXRpb25hbFByb3BzXG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlQXJuID0gdGhpcy5yZXNvdXJjZS5zZXJ2aWNlQXJuO1xuICAgIHRoaXMuc2VydmljZU5hbWUgPSB0aGlzLnJlc291cmNlLnNlcnZpY2VOYW1lO1xuICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzID0gW3RoaXMucmVzb3VyY2VdO1xuICAgIHRoaXMuY2x1c3Rlck5hbWUgPSBjbHVzdGVyTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgc2VydmljZSBpcyBhdHRhY2hlZCB0byBhbiBBTEJcbiAgICpcbiAgICogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LiBJbnN0ZWFkLCBjYWxsIGxpc3RlbmVyLmFkZFRhcmdldCgpXG4gICAqIHRvIGFkZCB0aGlzIHNlcnZpY2UgdG8gYSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRvQXBwbGljYXRpb25UYXJnZXRHcm91cCh0YXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCk6IGVsYnYyLkxvYWRCYWxhbmNlclRhcmdldFByb3BzIHtcbiAgICBjb25zdCByZXQgPSB0aGlzLmF0dGFjaFRvRUxCdjIodGFyZ2V0R3JvdXApO1xuXG4gICAgLy8gT3BlbiB1cCBzZWN1cml0eSBncm91cHMuIEZvciBkeW5hbWljIHBvcnQgbWFwcGluZywgd2Ugd29uJ3Qga25vdyB0aGUgcG9ydCByYW5nZVxuICAgIC8vIGluIGFkdmFuY2Ugc28gd2UgbmVlZCB0byBvcGVuIHVwIGFsbCBwb3J0cy5cbiAgICBjb25zdCBwb3J0ID0gdGhpcy50YXNrRGVmaW5pdGlvbi5kZWZhdWx0Q29udGFpbmVyIS5pbmdyZXNzUG9ydDtcbiAgICBjb25zdCBwb3J0UmFuZ2UgPSBwb3J0ID09PSAwID8gRVBIRU1FUkFMX1BPUlRfUkFOR0UgOiBuZXcgZWMyLlRjcFBvcnQocG9ydCk7XG4gICAgdGFyZ2V0R3JvdXAucmVnaXN0ZXJDb25uZWN0YWJsZSh0aGlzLCBwb3J0UmFuZ2UpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgc2VydmljZSBpcyBhdHRhY2hlZCB0byBhbiBOTEJcbiAgICpcbiAgICogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LiBJbnN0ZWFkLCBjYWxsIGxpc3RlbmVyLmFkZFRhcmdldCgpXG4gICAqIHRvIGFkZCB0aGlzIHNlcnZpY2UgdG8gYSBsb2FkIGJhbGFuY2VyLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRvTmV0d29ya1RhcmdldEdyb3VwKHRhcmdldEdyb3VwOiBlbGJ2Mi5OZXR3b3JrVGFyZ2V0R3JvdXApOiBlbGJ2Mi5Mb2FkQmFsYW5jZXJUYXJnZXRQcm9wcyB7XG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoVG9FTEJ2Mih0YXJnZXRHcm91cCk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIGF1dG9zY2FsaW5nIGZvciB0aGUgbnVtYmVyIG9mIHRhc2tzIGluIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcHVibGljIGF1dG9TY2FsZVRhc2tDb3VudChwcm9wczogYXBwc2NhbGluZy5FbmFibGVTY2FsaW5nUHJvcHMpIHtcbiAgICBpZiAodGhpcy5zY2FsYWJsZVRhc2tDb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdXRvU2NhbGluZyBvZiB0YXNrIGNvdW50IGFscmVhZHkgZW5hYmxlZCBmb3IgdGhpcyBzZXJ2aWNlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2NhbGFibGVUYXNrQ291bnQgPSBuZXcgU2NhbGFibGVUYXNrQ291bnQodGhpcywgJ1Rhc2tDb3VudCcsIHtcbiAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IGFwcHNjYWxpbmcuU2VydmljZU5hbWVzcGFjZS5FY3MsXG4gICAgICByZXNvdXJjZUlkOiBgc2VydmljZS8ke3RoaXMuY2x1c3Rlck5hbWV9LyR7dGhpcy5yZXNvdXJjZS5zZXJ2aWNlTmFtZX1gLFxuICAgICAgZGltZW5zaW9uOiAnZWNzOnNlcnZpY2U6RGVzaXJlZENvdW50JyxcbiAgICAgIHJvbGU6IHRoaXMubWFrZUF1dG9TY2FsaW5nUm9sZSgpLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBTZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgcHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY0N1c3RvbWl6YXRpb24pOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRUNTJyxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zOiB7IFNlcnZpY2VOYW1lOiB0aGlzLnNlcnZpY2VOYW1lIH0sXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBBV1NWUEMgbmV0d29ya2luZyBmb3IgdGhpcyBjb25zdHJ1Y3RcbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgcHJvdGVjdGVkIGNvbmZpZ3VyZUF3c1ZwY05ldHdvcmtpbmcodnBjOiBlYzIuVnBjTmV0d29ya1JlZiwgYXNzaWduUHVibGljSXA/OiBib29sZWFuLCB2cGNQbGFjZW1lbnQ/OiBlYzIuVnBjUGxhY2VtZW50U3RyYXRlZ3ksIHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cFJlZikge1xuICAgIGlmICh2cGNQbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdnBjUGxhY2VtZW50ID0geyBzdWJuZXRzVG9Vc2U6IGFzc2lnblB1YmxpY0lwID8gZWMyLlN1Ym5ldFR5cGUuUHVibGljIDogZWMyLlN1Ym5ldFR5cGUuUHJpdmF0ZSB9O1xuICAgIH1cbiAgICBpZiAoc2VjdXJpdHlHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywgeyB2cGMgfSk7XG4gICAgfVxuICAgIGNvbnN0IHN1Ym5ldHMgPSB2cGMuc3VibmV0cyh2cGNQbGFjZW1lbnQpO1xuICAgIHRoaXMuY29ubmVjdGlvbnMuYWRkU2VjdXJpdHlHcm91cChzZWN1cml0eUdyb3VwKTtcblxuICAgIHRoaXMubmV0d29ya0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBhd3N2cGNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGFzc2lnblB1YmxpY0lwOiBhc3NpZ25QdWJsaWNJcCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcsXG4gICAgICAgIHN1Ym5ldHM6IHN1Ym5ldHMubWFwKHggPT4geC5zdWJuZXRJZCksXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBuZXcgY2RrLlRva2VuKCgpID0+IFtzZWN1cml0eUdyb3VwIS5zZWN1cml0eUdyb3VwSWRdKSxcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlZCBsb2dpYyBmb3IgYXR0YWNoaW5nIHRvIGFuIEVMQnYyXG4gICAqL1xuICBwcml2YXRlIGF0dGFjaFRvRUxCdjIodGFyZ2V0R3JvdXA6IGVsYnYyLklUYXJnZXRHcm91cCk6IGVsYnYyLkxvYWRCYWxhbmNlclRhcmdldFByb3BzIHtcbiAgICBpZiAodGhpcy50YXNrRGVmaW5pdGlvbi5uZXR3b3JrTW9kZSA9PT0gTmV0d29ya01vZGUuTm9uZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBhIGxvYWQgYmFsYW5jZXIgaWYgTmV0d29ya01vZGUgaXMgTm9uZS4gVXNlIEJyaWRnZSwgSG9zdCBvciBBd3NWcGMgaW5zdGVhZC5cIik7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkQmFsYW5jZXJzLnB1c2goe1xuICAgICAgdGFyZ2V0R3JvdXBBcm46IHRhcmdldEdyb3VwLnRhcmdldEdyb3VwQXJuLFxuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy50YXNrRGVmaW5pdGlvbi5kZWZhdWx0Q29udGFpbmVyIS5pZCxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHRoaXMudGFza0RlZmluaXRpb24uZGVmYXVsdENvbnRhaW5lciEuY29udGFpbmVyUG9ydCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UuYWRkRGVwZW5kZW5jeSh0YXJnZXRHcm91cC5sb2FkQmFsYW5jZXJEZXBlbmRlbmN5KCkpO1xuXG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IHRoaXMudGFza0RlZmluaXRpb24ubmV0d29ya01vZGUgPT09IE5ldHdvcmtNb2RlLkF3c1ZwYyA/IGVsYnYyLlRhcmdldFR5cGUuSXAgOiBlbGJ2Mi5UYXJnZXRUeXBlLkluc3RhbmNlO1xuICAgIHJldHVybiB7IHRhcmdldFR5cGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSB0aGUgcm9sZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgYXV0b3NjYWxpbmcgdGhpcyBzZXJ2aWNlXG4gICAqL1xuICBwcml2YXRlIG1ha2VBdXRvU2NhbGluZ1JvbGUoKTogaWFtLklSb2xlIHtcbiAgICAvLyBVc2UgYSBTZXJ2aWNlIExpbmtlZCBSb2xlLlxuICAgIHJldHVybiBpYW0uUm9sZS5pbXBvcnQodGhpcywgJ1NjYWxpbmdSb2xlJywge1xuICAgICAgcm9sZUFybjogY2RrLkFyblV0aWxzLmZyb21Db21wb25lbnRzKHtcbiAgICAgICAgc2VydmljZTogJ2lhbScsXG4gICAgICAgIHJlc291cmNlOiAncm9sZS9hd3Mtc2VydmljZS1yb2xlL2Vjcy5hcHBsaWNhdGlvbi1hdXRvc2NhbGluZy5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiAnQVdTU2VydmljZVJvbGVGb3JBcHBsaWNhdGlvbkF1dG9TY2FsaW5nX0VDU1NlcnZpY2UnLFxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBwb3J0IHJhbmdlIHRvIG9wZW4gdXAgZm9yIGR5bmFtaWMgcG9ydCBtYXBwaW5nXG4gKi9cbmNvbnN0IEVQSEVNRVJBTF9QT1JUX1JBTkdFID0gbmV3IGVjMi5UY3BQb3J0UmFuZ2UoMzI3NjgsIDY1NTM1KTtcbiJdfQ==

@@ -41,2 +41,5 @@ "use strict";

props.image.bind(this);
if (props.logging) {
props.logging.bind(this);
}
}

@@ -278,2 +281,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250YWluZXItZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLG9DQUFxQztBQUNyQyw0REFBcUU7QUFHckUseURBQXFEO0FBMEtyRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUE4Q3BELFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQUUsY0FBOEIsRUFBbUIsS0FBK0I7UUFDN0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUQ0RSxVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQTdDL0g7O1dBRUc7UUFDYSxvQkFBZSxHQUFHLElBQUksa0NBQWUsRUFBRSxDQUFDO1FBRXhEOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRXREOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXhEOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRXREOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFpQjlDOztXQUVHO1FBQ2MsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFJM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsY0FBYyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDO1FBRTNHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxD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WyJpbXBvcnQgaWFtID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWlhbScpO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgTmV0d29ya01vZGUsIFRhc2tEZWZpbml0aW9uIH0gZnJvbSAnLi9iYXNlL3Rhc2stZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBJQ29udGFpbmVySW1hZ2UgfSBmcm9tICcuL2NvbnRhaW5lci1pbWFnZSc7XG5pbXBvcnQgeyBjbG91ZGZvcm1hdGlvbiB9IGZyb20gJy4vZWNzLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBMaW51eFBhcmFtZXRlcnMgfSBmcm9tICcuL2xpbnV4LXBhcmFtZXRlcnMnO1xuaW1wb3J0IHsgTG9nRHJpdmVyIH0gZnJvbSAnLi9sb2ctZHJpdmVycy9sb2ctZHJpdmVyJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIGEgY29udGFpbmVyIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJEZWZpbml0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGltYWdlIHRvIHVzZSBmb3IgYSBjb250YWluZXIuXG4gICAqXG4gICAqIFlvdSBjYW4gdXNlIGltYWdlcyBpbiB0aGUgRG9ja2VyIEh1YiByZWdpc3RyeSBvciBzcGVjaWZ5IG90aGVyXG4gICAqIHJlcG9zaXRvcmllcyAocmVwb3NpdG9yeS11cmwvaW1hZ2U6dGFnKS5cbiAgICogVE9ETzogVXBkYXRlIHRoZXNlIHRvIHNwZWNpZnkgdXNpbmcgY2xhc3NlcyBvZiBJQ29udGFpbmVySW1hZ2VcbiAgICovXG4gIGltYWdlOiBJQ29udGFpbmVySW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBDTUQgdmFsdWUgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBhIHNoZWxsIGNvbW1hbmQgYXMgYSBzaW5nbGUgc3RyaW5nLCB5b3UgaGF2ZSB0byBxdW90ZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDTUQgdmFsdWUgYnVpbHQgaW50byBjb250YWluZXIgaW1hZ2VcbiAgICovXG4gIGNvbW1hbmQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIENQVSB1bml0cyB0byByZXNlcnZlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgY3B1PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBuZXR3b3JraW5nIGlzIGRpc2FibGVkIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZU5ldHdvcmtpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgRE5TIHNlYXJjaCBkb21haW5zIHRoYXQgYXJlIHByb3ZpZGVkIHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHNlYXJjaCBkb21haW5zXG4gICAqL1xuICBkbnNTZWFyY2hEb21haW5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBETlMgc2VydmVycyB0aGF0IEFtYXpvbiBFQ1MgcHJvdmlkZXMgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgRGVmYXVsdCBETlMgc2VydmVyc1xuICAgKi9cbiAgZG5zU2VydmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIGtleS12YWx1ZSBtYXAgb2YgbGFiZWxzIGZvciB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBsYWJlbHNcbiAgICovXG4gIGRvY2tlckxhYmVscz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGN1c3RvbSBsYWJlbHMgZm9yIFNFTGludXggYW5kIEFwcEFybW9yIG11bHRpLWxldmVsIHNlY3VyaXR5IHN5c3RlbXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHNlY3VyaXR5IGxhYmVsc1xuICAgKi9cbiAgZG9ja2VyU2VjdXJpdHlPcHRpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBFTlRSWVBPSU5UIHZhbHVlIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2J1aWxkZXIvI2VudHJ5cG9pbnRcbiAgICogQGRlZmF1bHQgRW50cnkgcG9pbnQgY29uZmlndXJlZCBpbiBjb250YWluZXJcbiAgICovXG4gIGVudHJ5UG9pbnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhc2sgc3RvcHMgaWYgdGhpcyBjb250YWluZXIgZmFpbHMuXG4gICAqXG4gICAqIElmIHlvdSBzcGVjaWZ5IHRydWUgYW5kIHRoZSBjb250YWluZXIgZmFpbHMsIGFsbCBvdGhlciBjb250YWluZXJzIGluIHRoZVxuICAgKiB0YXNrIHN0b3AuIElmIHlvdSBzcGVjaWZ5IGZhbHNlIGFuZCB0aGUgY29udGFpbmVyIGZhaWxzLCBub25lIG9mIHRoZSBvdGhlclxuICAgKiBjb250YWluZXJzIGluIHRoZSB0YXNrIGlzIGFmZmVjdGVkLlxuICAgKlxuICAgKiBZb3UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlc3NlbnRpYWwgY29udGFpbmVyIGluIGEgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZXNzZW50aWFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGhvc3RuYW1lcyBhbmQgSVAgYWRkcmVzcyBtYXBwaW5ncyB0byBhcHBlbmQgdG8gdGhlIC9ldGMvaG9zdHMgZmlsZSBvbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBleHRyYSBob3N0c1xuICAgKi9cbiAgZXh0cmFIb3N0cz86IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGhlYWx0aCBjaGVjay5cbiAgICpcbiAgICogQGRlZmF1bHQgSGVhbHRoIGNoZWNrIGNvbmZpZ3VyYXRpb24gZnJvbSBjb250YWluZXJcbiAgICovXG4gIGhlYWx0aENoZWNrPzogSGVhbHRoQ2hlY2s7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgRG9ja2VyIHVzZXMgZm9yIHRoZSBjb250YWluZXIgaG9zdG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF1dG9tYXRpYyBob3N0bmFtZVxuICAgKi9cbiAgaG9zdG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBoYXJkIGxpbWl0IChpbiBNaUIpIG9mIG1lbW9yeSB0byBwcmVzZW50IHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIElmIHlvdXIgY29udGFpbmVyIGF0dGVtcHRzIHRvIGV4Y2VlZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgdGhlIGNvbnRhaW5lclxuICAgKiBpcyB0ZXJtaW5hdGVkLlxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgbWVtb3J5TGltaXRNaUIgYW5kIG1lbW9yeVJlc2VydmF0aW9uTWlCIGlzIHJlcXVpcmVkIGZvciBub24tRmFyZ2F0ZSBzZXJ2aWNlcy5cbiAgICovXG4gIG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc29mdCBsaW1pdCAoaW4gTWlCKSBvZiBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogV2hlbiBzeXN0ZW0gbWVtb3J5IGlzIHVuZGVyIGNvbnRlbnRpb24sIERvY2tlciBhdHRlbXB0cyB0byBrZWVwIHRoZVxuICAgKiBjb250YWluZXIgbWVtb3J5IHdpdGhpbiB0aGUgbGltaXQuIElmIHRoZSBjb250YWluZXIgcmVxdWlyZXMgbW9yZSBtZW1vcnksXG4gICAqIGl0IGNhbiBjb25zdW1lIHVwIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIE1lbW9yeSBwcm9wZXJ0eSBvciBhbGwgb2ZcbiAgICogdGhlIGF2YWlsYWJsZSBtZW1vcnkgb24gdGhlIGNvbnRhaW5lciBpbnN0YW5jZeKAlHdoaWNoZXZlciBjb21lcyBmaXJzdC5cbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIG1lbW9yeUxpbWl0TWlCIGFuZCBtZW1vcnlSZXNlcnZhdGlvbk1pQiBpcyByZXF1aXJlZCBmb3Igbm9uLUZhcmdhdGUgc2VydmljZXMuXG4gICAqL1xuICBtZW1vcnlSZXNlcnZhdGlvbk1pQj86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBnaXZlbiBmdWxsIGFjY2VzcyB0byB0aGUgaG9zdCBjb250YWluZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbnRhaW5lcidzIHJvb3QgZmlsZSBzeXN0ZW0gaXMgbW91bnRlZCBhcyByZWFkIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seVJvb3RGaWxlc3lzdGVtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHVzZXIgbmFtZSB0byB1c2UgaW5zaWRlIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHJvb3RcbiAgICovXG4gIHVzZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBpbiB0aGUgY29udGFpbmVyIHRvIHJ1biBjb21tYW5kcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgL1xuICAgKi9cbiAgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBhIGN1c3RvbSBsb2cgZHJpdmVyIGZvciB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgbG9nZ2luZz86IExvZ0RyaXZlcjtcbn1cblxuLyoqXG4gKiBBIGRlZmluaXRpb24gZm9yIGEgc2luZ2xlIGNvbnRhaW5lciBpbiBhIFRhc2tcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRhaW5lckRlZmluaXRpb24gZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEFjY2VzcyBMaW51eCBQYXJhbWV0ZXJzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGludXhQYXJhbWV0ZXJzID0gbmV3IExpbnV4UGFyYW1ldGVycygpO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJlZCBtb3VudCBwb2ludHNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtb3VudFBvaW50cyA9IG5ldyBBcnJheTxNb3VudFBvaW50PigpO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJlZCBwb3J0IG1hcHBpbmdzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9ydE1hcHBpbmdzID0gbmV3IEFycmF5PFBvcnRNYXBwaW5nPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJlZCB2b2x1bWVzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdm9sdW1lc0Zyb20gPSBuZXcgQXJyYXk8Vm9sdW1lRnJvbT4oKTtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyZWQgdWxpbWl0c1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVsaW1pdHMgPSBuZXcgQXJyYXk8VWxpbWl0PigpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIGNvbnRhaW5lciBpcyBlc3NlbnRpYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlc3NlbnRpYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlcmUgd2FzIGF0IGxlYXN0IG9uZSBtZW1vcnkgbGltaXQgc3BlY2lmaWVkIGluIHRoaXMgZGVmaW5pdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lbW9yeUxpbWl0U3BlY2lmaWVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFzayBkZWZpbml0aW9uIHRoaXMgY29udGFpbmVyIGRlZmluaXRpb24gaXMgcGFydCBvZlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhc2tEZWZpbml0aW9uOiBUYXNrRGVmaW5pdGlvbjtcblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyZWQgY29udGFpbmVyIGxpbmtzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxpbmtzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHRhc2tEZWZpbml0aW9uOiBUYXNrRGVmaW5pdGlvbiwgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29udGFpbmVyRGVmaW5pdGlvblByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG4gICAgdGhpcy5lc3NlbnRpYWwgPSBwcm9wcy5lc3NlbnRpYWwgIT09IHVuZGVmaW5lZCA/IHByb3BzLmVzc2VudGlhbCA6IHRydWU7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IHRhc2tEZWZpbml0aW9uO1xuICAgIHRoaXMubWVtb3J5TGltaXRTcGVjaWZpZWQgPSBwcm9wcy5tZW1vcnlMaW1pdE1pQiAhPT0gdW5kZWZpbmVkIHx8IHByb3BzLm1lbW9yeVJlc2VydmF0aW9uTWlCICE9PSB1bmRlZmluZWQ7XG5cbiAgICBwcm9wcy5pbWFnZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpbmsgZnJvbSB0aGlzIGNvbnRhaW5lciB0byBhIGRpZmZlcmVudCBjb250YWluZXJcbiAgICogVGhlIGxpbmsgcGFyYW1ldGVyIGFsbG93cyBjb250YWluZXJzIHRvIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlciB3aXRob3V0IHRoZSBuZWVkIGZvciBwb3J0IG1hcHBpbmdzLlxuICAgKiBPbmx5IHN1cHBvcnRlZCBpZiB0aGUgbmV0d29yayBtb2RlIG9mIGEgdGFzayBkZWZpbml0aW9uIGlzIHNldCB0byBicmlkZ2UuXG4gICAqIFdhcm5pbmc6IFRoZSAtLWxpbmsgZmxhZyBpcyBhIGxlZ2FjeSBmZWF0dXJlIG9mIERvY2tlci4gSXQgbWF5IGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRMaW5rKGNvbnRhaW5lcjogQ29udGFpbmVyRGVmaW5pdGlvbiwgYWxpYXM/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy50YXNrRGVmaW5pdGlvbi5uZXR3b3JrTW9kZSAhPT0gTmV0d29ya01vZGUuQnJpZGdlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHVzZSBuZXR3b3JrIG1vZGUgQnJpZGdlIHRvIGFkZCBjb250YWluZXIgbGlua3MuYCk7XG4gICAgfVxuICAgIGlmIChhbGlhcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxpbmtzLnB1c2goYCR7Y29udGFpbmVyLmlkfToke2FsaWFzfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpbmtzLnB1c2goYCR7Y29udGFpbmVyLmlkfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgb25lIG9yIG1vcmUgbW91bnQgcG9pbnRzIHRvIHRoaXMgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIGFkZE1vdW50UG9pbnRzKC4uLm1vdW50UG9pbnRzOiBNb3VudFBvaW50W10pIHtcbiAgICB0aGlzLm1vdW50UG9pbnRzLnB1c2goLi4ubW91bnRQb2ludHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdW50IHRlbXBvcmFyeSBkaXNjIHNwYWNlIHRvIGEgY29udGFpbmVyLlxuICAgKiBUaGlzIGFkZHMgdGhlIGNvcnJlY3QgY29udGFpbmVyIG1vdW50UG9pbnQgYW5kIHRhc2sgZGVmaW5pdGlvbiB2b2x1bWUuXG4gICAqL1xuICBwdWJsaWMgYWRkU2NyYXRjaChzY3JhdGNoOiBTY3JhdGNoU3BhY2UpIHtcbiAgICBjb25zdCBtb3VudFBvaW50ID0ge1xuICAgICAgY29udGFpbmVyUGF0aDogc2NyYXRjaC5jb250YWluZXJQYXRoLFxuICAgICAgcmVhZE9ubHk6IHNjcmF0Y2gucmVhZE9ubHksXG4gICAgICBzb3VyY2VWb2x1bWU6IHNjcmF0Y2gubmFtZVxuICAgIH07XG5cbiAgICBjb25zdCB2b2x1bWUgPSB7XG4gICAgICBob3N0OiB7XG4gICAgICAgIHNvdXJjZVBhdGg6IHNjcmF0Y2guc291cmNlUGF0aFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHNjcmF0Y2gubmFtZVxuICAgIH07XG5cbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZFZvbHVtZSh2b2x1bWUpO1xuICAgIHRoaXMuYWRkTW91bnRQb2ludHMobW91bnRQb2ludCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9uZSBvciBtb3JlIHBvcnQgbWFwcGluZ3MgdG8gdGhpcyBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyBhZGRQb3J0TWFwcGluZ3MoLi4ucG9ydE1hcHBpbmdzOiBQb3J0TWFwcGluZ1tdKSB7XG4gICAgZm9yIChjb25zdCBwbSBvZiBwb3J0TWFwcGluZ3MpIHtcbiAgICAgIGlmICh0aGlzLnRhc2tEZWZpbml0aW9uLm5ldHdvcmtNb2RlID09PSBOZXR3b3JrTW9kZS5Bd3NWcGMgfHwgdGhpcy50YXNrRGVmaW5pdGlvbi5uZXR3b3JrTW9kZSA9PT0gTmV0d29ya01vZGUuSG9zdCkge1xuICAgICAgICBpZiAocG0uY29udGFpbmVyUG9ydCAhPT0gcG0uaG9zdFBvcnQgJiYgcG0uaG9zdFBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSG9zdCBwb3J0ICR7cG0uaG9zdFBvcnR9IGRvZXMgbm90IG1hdGNoIGNvbnRhaW5lciBwb3J0ICR7cG0uY29udGFpbmVyUG9ydH0uYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRhc2tEZWZpbml0aW9uLm5ldHdvcmtNb2RlID09PSBOZXR3b3JrTW9kZS5CcmlkZ2UpIHtcbiAgICAgICAgaWYgKHBtLmhvc3RQb3J0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwbS5ob3N0UG9ydCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wb3J0TWFwcGluZ3MucHVzaCguLi5wb3J0TWFwcGluZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSB1bGltaXRzIHRvIHRoaXMgY29udGFpbmVyXG4gICAqL1xuICBwdWJsaWMgYWRkVWxpbWl0cyguLi51bGltaXRzOiBVbGltaXRbXSkge1xuICAgIHRoaXMudWxpbWl0cy5wdXNoKC4uLnVsaW1pdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSB2b2x1bWVzIHRvIHRoaXMgY29udGFpbmVyXG4gICAqL1xuICBwdWJsaWMgYWRkVm9sdW1lc0Zyb20oLi4udm9sdW1lc0Zyb206IFZvbHVtZUZyb21bXSkge1xuICAgIHRoaXMudm9sdW1lc0Zyb20ucHVzaCguLi52b2x1bWVzRnJvbSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc3RhdGVtZW50IHRvIHRoZSBUYXNrIERlZmluaXRpb24ncyBFeGVjdXRpb24gcG9saWN5XG4gICAqL1xuICBwdWJsaWMgYWRkVG9FeGVjdXRpb25Qb2xpY3koc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KSB7XG4gICAgdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRUb0V4ZWN1dGlvblJvbGVQb2xpY3koc3RhdGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmdyZXNzIFBvcnQgaXMgbmVlZGVkIHRvIHNldCB0aGUgc2VjdXJpdHkgZ3JvdXAgaW5ncmVzcyBmb3IgdGhlIHRhc2svc2VydmljZVxuICAgKi9cbiAgcHVibGljIGdldCBpbmdyZXNzUG9ydCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnBvcnRNYXBwaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGFpbmVyICR7dGhpcy5pZH0gaGFzbid0IGRlZmluZWQgYW55IHBvcnRzLiBDYWxsIGFkZFBvcnRNYXBwaW5ncygpLmApO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UG9ydE1hcHBpbmcgPSB0aGlzLnBvcnRNYXBwaW5nc1swXTtcblxuICAgIGlmIChkZWZhdWx0UG9ydE1hcHBpbmcuaG9zdFBvcnQgIT09IHVuZGVmaW5lZCAmJiBkZWZhdWx0UG9ydE1hcHBpbmcuaG9zdFBvcnQgIT09IDApIHtcbiAgICAgIHJldHVybiBkZWZhdWx0UG9ydE1hcHBpbmcuaG9zdFBvcnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFza0RlZmluaXRpb24ubmV0d29ya01vZGUgPT09IE5ldHdvcmtNb2RlLkJyaWRnZSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0UG9ydE1hcHBpbmcuY29udGFpbmVyUG9ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHBvcnQgdGhhdCB0aGUgY29udGFpbmVyIHdpbGwgYmUgbGlzdGVuaW5nIG9uIGJ5IGRlZmF1bHRcbiAgICovXG4gIHB1YmxpYyBnZXQgY29udGFpbmVyUG9ydCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnBvcnRNYXBwaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGFpbmVyICR7dGhpcy5pZH0gaGFzbid0IGRlZmluZWQgYW55IHBvcnRzLiBDYWxsIGFkZFBvcnRNYXBwaW5ncygpLmApO1xuICAgIH1cbiAgICBjb25zdCBkZWZhdWx0UG9ydE1hcHBpbmcgPSB0aGlzLnBvcnRNYXBwaW5nc1swXTtcbiAgICByZXR1cm4gZGVmYXVsdFBvcnRNYXBwaW5nLmNvbnRhaW5lclBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoaXMgY29udGFpbmVyIGRlZmluaXRpb24gdG8gYSBDbG91ZEZvcm1hdGlvbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyByZW5kZXJDb250YWluZXJEZWZpbml0aW9uKCk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuQ29udGFpbmVyRGVmaW5pdGlvblByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tbWFuZDogdGhpcy5wcm9wcy5jb21tYW5kLFxuICAgICAgY3B1OiB0aGlzLnByb3BzLmNwdSxcbiAgICAgIGRpc2FibGVOZXR3b3JraW5nOiB0aGlzLnByb3BzLmRpc2FibGVOZXR3b3JraW5nLFxuICAgICAgZG5zU2VhcmNoRG9tYWluczogdGhpcy5wcm9wcy5kbnNTZWFyY2hEb21haW5zLFxuICAgICAgZG5zU2VydmVyczogdGhpcy5wcm9wcy5kbnNTZXJ2ZXJzLFxuICAgICAgZG9ja2VyTGFiZWxzOiB0aGlzLnByb3BzLmRvY2tlckxhYmVscyxcbiAgICAgIGRvY2tlclNlY3VyaXR5T3B0aW9uczogdGhpcy5wcm9wcy5kb2NrZXJTZWN1cml0eU9wdGlvbnMsXG4gICAgICBlbnRyeVBvaW50OiB0aGlzLnByb3BzLmVudHJ5UG9pbnQsXG4gICAgICBlc3NlbnRpYWw6IHRoaXMuZXNzZW50aWFsLFxuICAgICAgaG9zdG5hbWU6IHRoaXMucHJvcHMuaG9zdG5hbWUsXG4gICAgICBpbWFnZTogdGhpcy5wcm9wcy5pbWFnZS5pbWFnZU5hbWUsXG4gICAgICBtZW1vcnk6IHRoaXMucHJvcHMubWVtb3J5TGltaXRNaUIsXG4gICAgICBtZW1vcnlSZXNlcnZhdGlvbjogdGhpcy5wcm9wcy5tZW1vcnlSZXNlcnZhdGlvbk1pQixcbiAgICAgIG1vdW50UG9pbnRzOiB0aGlzLm1vdW50UG9pbnRzLm1hcChyZW5kZXJNb3VudFBvaW50KSxcbiAgICAgIG5hbWU6IHRoaXMuaWQsXG4gICAgICBwb3J0TWFwcGluZ3M6IHRoaXMucG9ydE1hcHBpbmdzLm1hcChyZW5kZXJQb3J0TWFwcGluZyksXG4gICAgICBwcml2aWxlZ2VkOiB0aGlzLnByb3BzLnByaXZpbGVnZWQsXG4gICAgICByZWFkb25seVJvb3RGaWxlc3lzdGVtOiB0aGlzLnByb3BzLnJlYWRvbmx5Um9vdEZpbGVzeXN0ZW0sXG4gICAgICByZXBvc2l0b3J5Q3JlZGVudGlhbHM6IHVuZGVmaW5lZCwgLy8gRklYTUVcbiAgICAgIHVsaW1pdHM6IHRoaXMudWxpbWl0cy5tYXAocmVuZGVyVWxpbWl0KSxcbiAgICAgIHVzZXI6IHRoaXMucHJvcHMudXNlcixcbiAgICAgIHZvbHVtZXNGcm9tOiB0aGlzLnZvbHVtZXNGcm9tLm1hcChyZW5kZXJWb2x1bWVGcm9tKSxcbiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHRoaXMucHJvcHMud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IHRoaXMucHJvcHMubG9nZ2luZyAmJiB0aGlzLnByb3BzLmxvZ2dpbmcucmVuZGVyTG9nRHJpdmVyKCksXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5wcm9wcy5lbnZpcm9ubWVudCAmJiByZW5kZXJLVih0aGlzLnByb3BzLmVudmlyb25tZW50LCAnbmFtZScsICd2YWx1ZScpLFxuICAgICAgZXh0cmFIb3N0czogdGhpcy5wcm9wcy5leHRyYUhvc3RzICYmIHJlbmRlcktWKHRoaXMucHJvcHMuZXh0cmFIb3N0cywgJ2hvc3RuYW1lJywgJ2lwQWRkcmVzcycpLFxuICAgICAgaGVhbHRoQ2hlY2s6IHRoaXMucHJvcHMuaGVhbHRoQ2hlY2sgJiYgcmVuZGVySGVhbHRoQ2hlY2sodGhpcy5wcm9wcy5oZWFsdGhDaGVjayksXG4gICAgICBsaW5rczogdGhpcy5saW5rcyxcbiAgICAgIGxpbnV4UGFyYW1ldGVyczogdGhpcy5saW51eFBhcmFtZXRlcnMucmVuZGVyTGludXhQYXJhbWV0ZXJzKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRhaW5lciBoZWFsdGggY2hlY2sgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWx0aENoZWNrIHtcbiAgLyoqXG4gICAqIENvbW1hbmQgdG8gcnVuLCBhcyB0aGUgYmluYXJ5IHBhdGggYW5kIGFyZ3VtZW50cy5cbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgYSBzaGVsbCBjb21tYW5kIGFzIGEgc2luZ2xlIHN0cmluZywgeW91IGhhdmUgdG8gcXVvdGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cbiAgICovXG4gIGNvbW1hbmQ6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaW1lIHBlcmlvZCBpbiBzZWNvbmRzIGJldHdlZW4gZWFjaCBoZWFsdGggY2hlY2sgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYmV0d2VlbiA1IGFuZCAzMDAgc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMzBcbiAgICovXG4gIGludGVydmFsU2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IGEgZmFpbGVkIGhlYWx0aCBjaGVjayBiZWZvcmUgdGhlIGNvbnRhaW5lciBpcyBjb25zaWRlcmVkIHVuaGVhbHRoeS5cbiAgICpcbiAgICogWW91IG1heSBzcGVjaWZ5IGJldHdlZW4gMSBhbmQgMTAgcmV0cmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgcmV0cmllcz86IG51bWJlcjtcblxuICAvKipcbiAgICogR3JhY2UgcGVyaW9kIGFmdGVyIHN0YXJ0dXAgYmVmb3JlIGZhaWxlZCBoZWFsdGggY2hlY2tzIGNvdW50LlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gc3RhcnQgcGVyaW9kXG4gICAqL1xuICBzdGFydFBlcmlvZD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRpbWUgcGVyaW9kIGluIHNlY29uZHMgdG8gd2FpdCBmb3IgYSBoZWFsdGggY2hlY2sgdG8gc3VjY2VlZCBiZWZvcmUgaXQgaXMgY29uc2lkZXJlZCBhIGZhaWx1cmUuXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBiZXR3ZWVuIDIgYW5kIDYwIHNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcktWKGVudjoge1trZXk6IHN0cmluZ106IHN0cmluZ30sIGtleU5hbWU6IHN0cmluZywgdmFsdWVOYW1lOiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCByZXQgPSBbXTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZW52KSkge1xuICAgIHJldC5wdXNoKHsgW2tleU5hbWVdOiBrZXksIFt2YWx1ZU5hbWVdOiB2YWx1ZSB9KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiByZW5kZXJIZWFsdGhDaGVjayhoYzogSGVhbHRoQ2hlY2spOiBjbG91ZGZvcm1hdGlvbi5UYXNrRGVmaW5pdGlvblJlc291cmNlLkhlYWx0aENoZWNrUHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIGNvbW1hbmQ6IGdldEhlYWx0aENoZWNrQ29tbWFuZChoYyksXG4gICAgaW50ZXJ2YWw6IGhjLmludGVydmFsU2Vjb25kcyAhPT0gdW5kZWZpbmVkID8gaGMuaW50ZXJ2YWxTZWNvbmRzIDogMzAsXG4gICAgcmV0cmllczogaGMucmV0cmllcyAhPT0gdW5kZWZpbmVkID8gaGMucmV0cmllcyA6IDMsXG4gICAgc3RhcnRQZXJpb2Q6IGhjLnN0YXJ0UGVyaW9kLFxuICAgIHRpbWVvdXQ6IGhjLnRpbWVvdXQgIT09IHVuZGVmaW5lZCA/IGhjLnRpbWVvdXQgOiA1LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRIZWFsdGhDaGVja0NvbW1hbmQoaGM6IEhlYWx0aENoZWNrKTogc3RyaW5nW10ge1xuICBjb25zdCBjbWQgPSBoYy5jb21tYW5kO1xuICBjb25zdCBoY0NvbW1hbmQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIGlmIChjbWQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBdCBsZWFzdCBvbmUgYXJndW1lbnQgbXVzdCBiZSBzdXBwbGllZCBmb3IgaGVhbHRoIGNoZWNrIGNvbW1hbmQuYCk7XG4gIH1cblxuICBpZiAoY21kLmxlbmd0aCA9PT0gMSkge1xuICAgIGhjQ29tbWFuZC5wdXNoKCdDTUQtU0hFTEwnLCBjbWRbMF0pO1xuICAgIHJldHVybiBoY0NvbW1hbmQ7XG4gIH1cblxuICBpZiAoY21kWzBdICE9PSBcIkNNRFwiIHx8IGNtZFswXSAhPT0gJ0NNRC1TSEVMTCcpIHtcbiAgICBoY0NvbW1hbmQucHVzaCgnQ01EJyk7XG4gIH1cblxuICByZXR1cm4gaGNDb21tYW5kLmNvbmNhdChjbWQpO1xufVxuXG4vKipcbiAqIENvbnRhaW5lciB1bGltaXRzLlxuICpcbiAqIENvcnJlc3BvbmQgdG8gdWxpbWl0cyBvcHRpb25zIG9uIGRvY2tlciBydW4uXG4gKlxuICogTk9URTogRG9lcyBub3Qgd29yayBmb3IgV2luZG93cyBjb250YWluZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVsaW1pdCB7XG4gIC8qKlxuICAgKiBXaGF0IHJlc291cmNlIHRvIGVuZm9yY2UgYSBsaW1pdCBvblxuICAgKi9cbiAgbmFtZTogVWxpbWl0TmFtZSxcblxuICAvKipcbiAgICogU29mdCBsaW1pdCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHNvZnRMaW1pdDogbnVtYmVyLFxuXG4gIC8qKlxuICAgKiBIYXJkIGxpbWl0IG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgaGFyZExpbWl0OiBudW1iZXIsXG59XG5cbi8qKlxuICogVHlwZSBvZiByZXNvdXJjZSB0byBzZXQgYSBsaW1pdCBvblxuICovXG5leHBvcnQgZW51bSBVbGltaXROYW1lIHtcbiAgQ29yZSA9IFwiY29yZVwiLFxuICBDcHUgPSBcImNwdVwiLFxuICBEYXRhID0gXCJkYXRhXCIsXG4gIEZzaXplID0gXCJmc2l6ZVwiLFxuICBMb2NrcyA9IFwibG9ja3NcIixcbiAgTWVtbG9jayA9IFwibWVtbG9ja1wiLFxuICBNc2dxdWV1ZSA9IFwibXNncXVldWVcIixcbiAgTmljZSA9IFwibmljZVwiLFxuICBOb2ZpbGUgPSBcIm5vZmlsZVwiLFxuICBOcHJvYyA9IFwibnByb2NcIixcbiAgUnNzID0gXCJyc3NcIixcbiAgUnRwcmlvID0gXCJydHByaW9cIixcbiAgUnR0aW1lID0gXCJydHRpbWVcIixcbiAgU2lncGVuZGluZyA9IFwic2lncGVuZGluZ1wiLFxuICBTdGFjayA9IFwic3RhY2tcIlxufVxuXG5mdW5jdGlvbiByZW5kZXJVbGltaXQodWxpbWl0OiBVbGltaXQpOiBjbG91ZGZvcm1hdGlvbi5UYXNrRGVmaW5pdGlvblJlc291cmNlLlVsaW1pdFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiB1bGltaXQubmFtZSxcbiAgICBzb2Z0TGltaXQ6IHVsaW1pdC5zb2Z0TGltaXQsXG4gICAgaGFyZExpbWl0OiB1bGltaXQuaGFyZExpbWl0LFxuICB9O1xufVxuXG4vKipcbiAqIE1hcCBhIGhvc3QgcG9ydCB0byBhIGNvbnRhaW5lciBwb3J0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydE1hcHBpbmcge1xuICAvKipcbiAgICogUG9ydCBpbnNpZGUgdGhlIGNvbnRhaW5lclxuICAgKi9cbiAgY29udGFpbmVyUG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQb3J0IG9uIHRoZSBob3N0XG4gICAqXG4gICAqIEluIEF3c1ZwYyBvciBIb3N0IG5ldHdvcmtpbmcgbW9kZSwgbGVhdmUgdGhpcyBvdXQgb3Igc2V0IGl0IHRvIHRoZVxuICAgKiBzYW1lIHZhbHVlIGFzIGNvbnRhaW5lclBvcnQuXG4gICAqXG4gICAqIEluIEJyaWRnZSBuZXR3b3JraW5nIG1vZGUsIGxlYXZlIHRoaXMgb3V0IG9yIHNldCBpdCB0byBub24tcmVzZXJ2ZWRcbiAgICogbm9uLWVwaGVtZXJhbCBwb3J0LlxuICAgKi9cbiAgaG9zdFBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFByb3RvY29sXG4gICAqXG4gICAqIEBkZWZhdWx0IFRjcFxuICAgKi9cbiAgcHJvdG9jb2w/OiBQcm90b2NvbFxufVxuXG4vKipcbiAqIE5ldHdvcmsgcHJvdG9jb2xcbiAqL1xuZXhwb3J0IGVudW0gUHJvdG9jb2wge1xuICAvKipcbiAgICogVENQXG4gICAqL1xuICBUY3AgPSBcInRjcFwiLFxuXG4gIC8qKlxuICAgKiBVRFBcbiAgICovXG4gIFVkcCA9IFwidWRwXCIsXG59XG5cbmZ1bmN0aW9uIHJlbmRlclBvcnRNYXBwaW5nKHBtOiBQb3J0TWFwcGluZyk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuUG9ydE1hcHBpbmdQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbmVyUG9ydDogcG0uY29udGFpbmVyUG9ydCxcbiAgICBob3N0UG9ydDogcG0uaG9zdFBvcnQsXG4gICAgcHJvdG9jb2w6IHBtLnByb3RvY29sIHx8IFByb3RvY29sLlRjcCxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JhdGNoU3BhY2Uge1xuICAgIGNvbnRhaW5lclBhdGg6IHN0cmluZyxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW91bnRQb2ludCB7XG4gICAgY29udGFpbmVyUGF0aDogc3RyaW5nLFxuICAgIHJlYWRPbmx5OiBib29sZWFuLFxuICAgIHNvdXJjZVZvbHVtZTogc3RyaW5nLFxufVxuXG5mdW5jdGlvbiByZW5kZXJNb3VudFBvaW50KG1wOiBNb3VudFBvaW50KTogY2xvdWRmb3JtYXRpb24uVGFza0RlZmluaXRpb25SZXNvdXJjZS5Nb3VudFBvaW50UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5lclBhdGg6IG1wLmNvbnRhaW5lclBhdGgsXG4gICAgcmVhZE9ubHk6IG1wLnJlYWRPbmx5LFxuICAgIHNvdXJjZVZvbHVtZTogbXAuc291cmNlVm9sdW1lLFxuICB9O1xufVxuXG4vKipcbiAqIEEgdm9sdW1lIGZyb20gYW5vdGhlciBjb250YWluZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWb2x1bWVGcm9tIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBjb250YWluZXJcbiAgICovXG4gIHNvdXJjZUNvbnRhaW5lcjogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB2b2x1bWUgaXMgcmVhZCBvbmx5XG4gICAqL1xuICByZWFkT25seTogYm9vbGVhbixcbn1cblxuZnVuY3Rpb24gcmVuZGVyVm9sdW1lRnJvbSh2ZjogVm9sdW1lRnJvbSk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuVm9sdW1lRnJvbVByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBzb3VyY2VDb250YWluZXI6IHZmLnNvdXJjZUNvbnRhaW5lcixcbiAgICByZWFkT25seTogdmYucmVhZE9ubHksXG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250YWluZXItZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLG9DQUFxQztBQUNyQyw0REFBcUU7QUFHckUseURBQXFEO0FBMEtyRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUE4Q3BELFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQUUsY0FBOEIsRUFBbUIsS0FBK0I7UUFDN0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUQ0RSxVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQTdDL0g7O1dBRUc7UUFDYSxvQkFBZSxHQUFHLElBQUksa0NBQWUsRUFBRSxDQUFDO1FBRXhEOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRXREOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXhEOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRXREOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFpQjlDOztXQUVHO1FBQ2MsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFJM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsY0FBYyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDO1FBRTNHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxD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LEVBQUUsQ0FBQyxlQUFlO1FBQ25DLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtLQUN0QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBOZXR3b3JrTW9kZSwgVGFza0RlZmluaXRpb24gfSBmcm9tICcuL2Jhc2UvdGFzay1kZWZpbml0aW9uJztcbmltcG9ydCB7IElDb250YWluZXJJbWFnZSB9IGZyb20gJy4vY29udGFpbmVyLWltYWdlJztcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lY3MuZ2VuZXJhdGVkJztcbmltcG9ydCB7IExpbnV4UGFyYW1ldGVycyB9IGZyb20gJy4vbGludXgtcGFyYW1ldGVycyc7XG5pbXBvcnQgeyBMb2dEcml2ZXIgfSBmcm9tICcuL2xvZy1kcml2ZXJzL2xvZy1kcml2ZXInO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgYSBjb250YWluZXIgZGVmaW5pdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckRlZmluaXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgdG8gdXNlIGZvciBhIGNvbnRhaW5lci5cbiAgICpcbiAgICogWW91IGNhbiB1c2UgaW1hZ2VzIGluIHRoZSBEb2NrZXIgSHViIHJlZ2lzdHJ5IG9yIHNwZWNpZnkgb3RoZXJcbiAgICogcmVwb3NpdG9yaWVzIChyZXBvc2l0b3J5LXVybC9pbWFnZTp0YWcpLlxuICAgKiBUT0RPOiBVcGRhdGUgdGhlc2UgdG8gc3BlY2lmeSB1c2luZyBjbGFzc2VzIG9mIElDb250YWluZXJJbWFnZVxuICAgKi9cbiAgaW1hZ2U6IElDb250YWluZXJJbWFnZTtcblxuICAvKipcbiAgICogVGhlIENNRCB2YWx1ZSB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIElmIHlvdSBwcm92aWRlIGEgc2hlbGwgY29tbWFuZCBhcyBhIHNpbmdsZSBzdHJpbmcsIHlvdSBoYXZlIHRvIHF1b3RlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IENNRCB2YWx1ZSBidWlsdCBpbnRvIGNvbnRhaW5lciBpbWFnZVxuICAgKi9cbiAgY29tbWFuZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVIHVuaXRzIHRvIHJlc2VydmUgZm9yIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBjcHU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG5ldHdvcmtpbmcgaXMgZGlzYWJsZWQgd2l0aGluIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlTmV0d29ya2luZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBETlMgc2VhcmNoIGRvbWFpbnMgdGhhdCBhcmUgcHJvdmlkZWQgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gc2VhcmNoIGRvbWFpbnNcbiAgICovXG4gIGRuc1NlYXJjaERvbWFpbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIEROUyBzZXJ2ZXJzIHRoYXQgQW1hem9uIEVDUyBwcm92aWRlcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEZWZhdWx0IEROUyBzZXJ2ZXJzXG4gICAqL1xuICBkbnNTZXJ2ZXJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEga2V5LXZhbHVlIG1hcCBvZiBsYWJlbHMgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGxhYmVsc1xuICAgKi9cbiAgZG9ja2VyTGFiZWxzPzoge1trZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgY3VzdG9tIGxhYmVscyBmb3IgU0VMaW51eCBhbmQgQXBwQXJtb3IgbXVsdGktbGV2ZWwgc2VjdXJpdHkgc3lzdGVtcy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gc2VjdXJpdHkgbGFiZWxzXG4gICAqL1xuICBkb2NrZXJTZWN1cml0eU9wdGlvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIEVOVFJZUE9JTlQgdmFsdWUgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2VuZ2luZS9yZWZlcmVuY2UvYnVpbGRlci8jZW50cnlwb2ludFxuICAgKiBAZGVmYXVsdCBFbnRyeSBwb2ludCBjb25maWd1cmVkIGluIGNvbnRhaW5lclxuICAgKi9cbiAgZW50cnlQb2ludD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdGFzayBzdG9wcyBpZiB0aGlzIGNvbnRhaW5lciBmYWlscy5cbiAgICpcbiAgICogSWYgeW91IHNwZWNpZnkgdHJ1ZSBhbmQgdGhlIGNvbnRhaW5lciBmYWlscywgYWxsIG90aGVyIGNvbnRhaW5lcnMgaW4gdGhlXG4gICAqIHRhc2sgc3RvcC4gSWYgeW91IHNwZWNpZnkgZmFsc2UgYW5kIHRoZSBjb250YWluZXIgZmFpbHMsIG5vbmUgb2YgdGhlIG90aGVyXG4gICAqIGNvbnRhaW5lcnMgaW4gdGhlIHRhc2sgaXMgYWZmZWN0ZWQuXG4gICAqXG4gICAqIFlvdSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGVzc2VudGlhbCBjb250YWluZXIgaW4gYSB0YXNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBlc3NlbnRpYWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaG9zdG5hbWVzIGFuZCBJUCBhZGRyZXNzIG1hcHBpbmdzIHRvIGFwcGVuZCB0byB0aGUgL2V0Yy9ob3N0cyBmaWxlIG9uIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGV4dHJhIGhvc3RzXG4gICAqL1xuICBleHRyYUhvc3RzPzoge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9O1xuXG4gIC8qKlxuICAgKiBDb250YWluZXIgaGVhbHRoIGNoZWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCBIZWFsdGggY2hlY2sgY29uZmlndXJhdGlvbiBmcm9tIGNvbnRhaW5lclxuICAgKi9cbiAgaGVhbHRoQ2hlY2s/OiBIZWFsdGhDaGVjaztcblxuICAvKipcbiAgICogVGhlIG5hbWUgdGhhdCBEb2NrZXIgdXNlcyBmb3IgdGhlIGNvbnRhaW5lciBob3N0bmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljIGhvc3RuYW1lXG4gICAqL1xuICBob3N0bmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhcmQgbGltaXQgKGluIE1pQikgb2YgbWVtb3J5IHRvIHByZXNlbnQgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogSWYgeW91ciBjb250YWluZXIgYXR0ZW1wdHMgdG8gZXhjZWVkIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCB0aGUgY29udGFpbmVyXG4gICAqIGlzIHRlcm1pbmF0ZWQuXG4gICAqXG4gICAqIEF0IGxlYXN0IG9uZSBvZiBtZW1vcnlMaW1pdE1pQiBhbmQgbWVtb3J5UmVzZXJ2YXRpb25NaUIgaXMgcmVxdWlyZWQgZm9yIG5vbi1GYXJnYXRlIHNlcnZpY2VzLlxuICAgKi9cbiAgbWVtb3J5TGltaXRNaUI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzb2Z0IGxpbWl0IChpbiBNaUIpIG9mIG1lbW9yeSB0byByZXNlcnZlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBXaGVuIHN5c3RlbSBtZW1vcnkgaXMgdW5kZXIgY29udGVudGlvbiwgRG9ja2VyIGF0dGVtcHRzIHRvIGtlZXAgdGhlXG4gICAqIGNvbnRhaW5lciBtZW1vcnkgd2l0aGluIHRoZSBsaW1pdC4gSWYgdGhlIGNvbnRhaW5lciByZXF1aXJlcyBtb3JlIG1lbW9yeSxcbiAgICogaXQgY2FuIGNvbnN1bWUgdXAgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgTWVtb3J5IHByb3BlcnR5IG9yIGFsbCBvZlxuICAgKiB0aGUgYXZhaWxhYmxlIG1lbW9yeSBvbiB0aGUgY29udGFpbmVyIGluc3RhbmNl4oCUd2hpY2hldmVyIGNvbWVzIGZpcnN0LlxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgbWVtb3J5TGltaXRNaUIgYW5kIG1lbW9yeVJlc2VydmF0aW9uTWlCIGlzIHJlcXVpcmVkIGZvciBub24tRmFyZ2F0ZSBzZXJ2aWNlcy5cbiAgICovXG4gIG1lbW9yeVJlc2VydmF0aW9uTWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIGdpdmVuIGZ1bGwgYWNjZXNzIHRvIHRoZSBob3N0IGNvbnRhaW5lciBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29udGFpbmVyJ3Mgcm9vdCBmaWxlIHN5c3RlbSBpcyBtb3VudGVkIGFzIHJlYWQgb25seS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5Um9vdEZpbGVzeXN0ZW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlciBuYW1lIHRvIHVzZSBpbnNpZGUgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgcm9vdFxuICAgKi9cbiAgdXNlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGluIHRoZSBjb250YWluZXIgdG8gcnVuIGNvbW1hbmRzIGluLlxuICAgKlxuICAgKiBAZGVmYXVsdCAvXG4gICAqL1xuICB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIGEgY3VzdG9tIGxvZyBkcml2ZXIgZm9yIHRoZSBjb250YWluZXIuXG4gICAqL1xuICBsb2dnaW5nPzogTG9nRHJpdmVyO1xufVxuXG4vKipcbiAqIEEgZGVmaW5pdGlvbiBmb3IgYSBzaW5nbGUgY29udGFpbmVyIGluIGEgVGFza1xuICovXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyRGVmaW5pdGlvbiBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogQWNjZXNzIExpbnV4IFBhcmFtZXRlcnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsaW51eFBhcmFtZXRlcnMgPSBuZXcgTGludXhQYXJhbWV0ZXJzKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIG1vdW50IHBvaW50c1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1vdW50UG9pbnRzID0gbmV3IEFycmF5PE1vdW50UG9pbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIHBvcnQgbWFwcGluZ3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb3J0TWFwcGluZ3MgPSBuZXcgQXJyYXk8UG9ydE1hcHBpbmc+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmVkIHZvbHVtZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2b2x1bWVzRnJvbSA9IG5ldyBBcnJheTxWb2x1bWVGcm9tPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJlZCB1bGltaXRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdWxpbWl0cyA9IG5ldyBBcnJheTxVbGltaXQ+KCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoaXMgY29udGFpbmVyIGlzIGVzc2VudGlhbFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVzc2VudGlhbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSB3YXMgYXQgbGVhc3Qgb25lIG1lbW9yeSBsaW1pdCBzcGVjaWZpZWQgaW4gdGhpcyBkZWZpbml0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5TGltaXRTcGVjaWZpZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0YXNrIGRlZmluaXRpb24gdGhpcyBjb250YWluZXIgZGVmaW5pdGlvbiBpcyBwYXJ0IG9mXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IFRhc2tEZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJlZCBjb250YWluZXIgbGlua3NcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlua3MgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgdGFza0RlZmluaXRpb246IFRhc2tEZWZpbml0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb250YWluZXJEZWZpbml0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcbiAgICB0aGlzLmVzc2VudGlhbCA9IHByb3BzLmVzc2VudGlhbCAhPT0gdW5kZWZpbmVkID8gcHJvcHMuZXNzZW50aWFsIDogdHJ1ZTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gdGFza0RlZmluaXRpb247XG4gICAgdGhpcy5tZW1vcnlMaW1pdFNwZWNpZmllZCA9IHByb3BzLm1lbW9yeUxpbWl0TWlCICE9PSB1bmRlZmluZWQgfHwgcHJvcHMubWVtb3J5UmVzZXJ2YXRpb25NaUIgIT09IHVuZGVmaW5lZDtcblxuICAgIHByb3BzLmltYWdlLmJpbmQodGhpcyk7XG4gICAgaWYgKHByb3BzLmxvZ2dpbmcpIHsgcHJvcHMubG9nZ2luZy5iaW5kKHRoaXMpOyB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbGluayBmcm9tIHRoaXMgY29udGFpbmVyIHRvIGEgZGlmZmVyZW50IGNvbnRhaW5lclxuICAgKiBUaGUgbGluayBwYXJhbWV0ZXIgYWxsb3dzIGNvbnRhaW5lcnMgdG8gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyIHdpdGhvdXQgdGhlIG5lZWQgZm9yIHBvcnQgbWFwcGluZ3MuXG4gICAqIE9ubHkgc3VwcG9ydGVkIGlmIHRoZSBuZXR3b3JrIG1vZGUgb2YgYSB0YXNrIGRlZmluaXRpb24gaXMgc2V0IHRvIGJyaWRnZS5cbiAgICogV2FybmluZzogVGhlIC0tbGluayBmbGFnIGlzIGEgbGVnYWN5IGZlYXR1cmUgb2YgRG9ja2VyLiBJdCBtYXkgZXZlbnR1YWxseSBiZSByZW1vdmVkLlxuICAgKi9cbiAgcHVibGljIGFkZExpbmsoY29udGFpbmVyOiBDb250YWluZXJEZWZpbml0aW9uLCBhbGlhcz86IHN0cmluZykge1xuICAgIGlmICh0aGlzLnRhc2tEZWZpbml0aW9uLm5ldHdvcmtNb2RlICE9PSBOZXR3b3JrTW9kZS5CcmlkZ2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgdXNlIG5ldHdvcmsgbW9kZSBCcmlkZ2UgdG8gYWRkIGNvbnRhaW5lciBsaW5rcy5gKTtcbiAgICB9XG4gICAgaWYgKGFsaWFzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubGlua3MucHVzaChgJHtjb250YWluZXIuaWR9OiR7YWxpYXN9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlua3MucHVzaChgJHtjb250YWluZXIuaWR9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBvbmUgb3IgbW9yZSBtb3VudCBwb2ludHMgdG8gdGhpcyBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgYWRkTW91bnRQb2ludHMoLi4ubW91bnRQb2ludHM6IE1vdW50UG9pbnRbXSkge1xuICAgIHRoaXMubW91bnRQb2ludHMucHVzaCguLi5tb3VudFBvaW50cyk7XG4gIH1cblxuICAvKipcbiAgICogTW91bnQgdGVtcG9yYXJ5IGRpc2Mgc3BhY2UgdG8gYSBjb250YWluZXIuXG4gICAqIFRoaXMgYWRkcyB0aGUgY29ycmVjdCBjb250YWluZXIgbW91bnRQb2ludCBhbmQgdGFzayBkZWZpbml0aW9uIHZvbHVtZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTY3JhdGNoKHNjcmF0Y2g6IFNjcmF0Y2hTcGFjZSkge1xuICAgIGNvbnN0IG1vdW50UG9pbnQgPSB7XG4gICAgICBjb250YWluZXJQYXRoOiBzY3JhdGNoLmNvbnRhaW5lclBhdGgsXG4gICAgICByZWFkT25seTogc2NyYXRjaC5yZWFkT25seSxcbiAgICAgIHNvdXJjZVZvbHVtZTogc2NyYXRjaC5uYW1lXG4gICAgfTtcblxuICAgIGNvbnN0IHZvbHVtZSA9IHtcbiAgICAgIGhvc3Q6IHtcbiAgICAgICAgc291cmNlUGF0aDogc2NyYXRjaC5zb3VyY2VQYXRoXG4gICAgICB9LFxuICAgICAgbmFtZTogc2NyYXRjaC5uYW1lXG4gICAgfTtcblxuICAgIHRoaXMudGFza0RlZmluaXRpb24uYWRkVm9sdW1lKHZvbHVtZSk7XG4gICAgdGhpcy5hZGRNb3VudFBvaW50cyhtb3VudFBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgb25lIG9yIG1vcmUgcG9ydCBtYXBwaW5ncyB0byB0aGlzIGNvbnRhaW5lclxuICAgKi9cbiAgcHVibGljIGFkZFBvcnRNYXBwaW5ncyguLi5wb3J0TWFwcGluZ3M6IFBvcnRNYXBwaW5nW10pIHtcbiAgICBmb3IgKGNvbnN0IHBtIG9mIHBvcnRNYXBwaW5ncykge1xuICAgICAgaWYgKHRoaXMudGFza0RlZmluaXRpb24ubmV0d29ya01vZGUgPT09IE5ldHdvcmtNb2RlLkF3c1ZwYyB8fCB0aGlzLnRhc2tEZWZpbml0aW9uLm5ldHdvcmtNb2RlID09PSBOZXR3b3JrTW9kZS5Ib3N0KSB7XG4gICAgICAgIGlmIChwbS5jb250YWluZXJQb3J0ICE9PSBwbS5ob3N0UG9ydCAmJiBwbS5ob3N0UG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIb3N0IHBvcnQgJHtwbS5ob3N0UG9ydH0gZG9lcyBub3QgbWF0Y2ggY29udGFpbmVyIHBvcnQgJHtwbS5jb250YWluZXJQb3J0fS5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGFza0RlZmluaXRpb24ubmV0d29ya01vZGUgPT09IE5ldHdvcmtNb2RlLkJyaWRnZSkge1xuICAgICAgICBpZiAocG0uaG9zdFBvcnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBtLmhvc3RQb3J0ID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBvcnRNYXBwaW5ncy5wdXNoKC4uLnBvcnRNYXBwaW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9uZSBvciBtb3JlIHVsaW1pdHMgdG8gdGhpcyBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyBhZGRVbGltaXRzKC4uLnVsaW1pdHM6IFVsaW1pdFtdKSB7XG4gICAgdGhpcy51bGltaXRzLnB1c2goLi4udWxpbWl0cyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9uZSBvciBtb3JlIHZvbHVtZXMgdG8gdGhpcyBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyBhZGRWb2x1bWVzRnJvbSguLi52b2x1bWVzRnJvbTogVm9sdW1lRnJvbVtdKSB7XG4gICAgdGhpcy52b2x1bWVzRnJvbS5wdXNoKC4uLnZvbHVtZXNGcm9tKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzdGF0ZW1lbnQgdG8gdGhlIFRhc2sgRGVmaW5pdGlvbidzIEV4ZWN1dGlvbiBwb2xpY3lcbiAgICovXG4gIHB1YmxpYyBhZGRUb0V4ZWN1dGlvblBvbGljeShzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uLmFkZFRvRXhlY3V0aW9uUm9sZVBvbGljeShzdGF0ZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZ3Jlc3MgUG9ydCBpcyBuZWVkZWQgdG8gc2V0IHRoZSBzZWN1cml0eSBncm91cCBpbmdyZXNzIGZvciB0aGUgdGFzay9zZXJ2aWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluZ3Jlc3NQb3J0KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMucG9ydE1hcHBpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250YWluZXIgJHt0aGlzLmlkfSBoYXNuJ3QgZGVmaW5lZCBhbnkgcG9ydHMuIENhbGwgYWRkUG9ydE1hcHBpbmdzKCkuYCk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQb3J0TWFwcGluZyA9IHRoaXMucG9ydE1hcHBpbmdzWzBdO1xuXG4gICAgaWYgKGRlZmF1bHRQb3J0TWFwcGluZy5ob3N0UG9ydCAhPT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQb3J0TWFwcGluZy5ob3N0UG9ydCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRQb3J0TWFwcGluZy5ob3N0UG9ydDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXNrRGVmaW5pdGlvbi5uZXR3b3JrTW9kZSA9PT0gTmV0d29ya01vZGUuQnJpZGdlKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRQb3J0TWFwcGluZy5jb250YWluZXJQb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgcG9ydCB0aGF0IHRoZSBjb250YWluZXIgd2lsbCBiZSBsaXN0ZW5pbmcgb24gYnkgZGVmYXVsdFxuICAgKi9cbiAgcHVibGljIGdldCBjb250YWluZXJQb3J0KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMucG9ydE1hcHBpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250YWluZXIgJHt0aGlzLmlkfSBoYXNuJ3QgZGVmaW5lZCBhbnkgcG9ydHMuIENhbGwgYWRkUG9ydE1hcHBpbmdzKCkuYCk7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRQb3J0TWFwcGluZyA9IHRoaXMucG9ydE1hcHBpbmdzWzBdO1xuICAgIHJldHVybiBkZWZhdWx0UG9ydE1hcHBpbmcuY29udGFpbmVyUG9ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhpcyBjb250YWluZXIgZGVmaW5pdGlvbiB0byBhIENsb3VkRm9ybWF0aW9uIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHJlbmRlckNvbnRhaW5lckRlZmluaXRpb24oKTogY2xvdWRmb3JtYXRpb24uVGFza0RlZmluaXRpb25SZXNvdXJjZS5Db250YWluZXJEZWZpbml0aW9uUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kOiB0aGlzLnByb3BzLmNvbW1hbmQsXG4gICAgICBjcHU6IHRoaXMucHJvcHMuY3B1LFxuICAgICAgZGlzYWJsZU5ldHdvcmtpbmc6IHRoaXMucHJvcHMuZGlzYWJsZU5ldHdvcmtpbmcsXG4gICAgICBkbnNTZWFyY2hEb21haW5zOiB0aGlzLnByb3BzLmRuc1NlYXJjaERvbWFpbnMsXG4gICAgICBkbnNTZXJ2ZXJzOiB0aGlzLnByb3BzLmRuc1NlcnZlcnMsXG4gICAgICBkb2NrZXJMYWJlbHM6IHRoaXMucHJvcHMuZG9ja2VyTGFiZWxzLFxuICAgICAgZG9ja2VyU2VjdXJpdHlPcHRpb25zOiB0aGlzLnByb3BzLmRvY2tlclNlY3VyaXR5T3B0aW9ucyxcbiAgICAgIGVudHJ5UG9pbnQ6IHRoaXMucHJvcHMuZW50cnlQb2ludCxcbiAgICAgIGVzc2VudGlhbDogdGhpcy5lc3NlbnRpYWwsXG4gICAgICBob3N0bmFtZTogdGhpcy5wcm9wcy5ob3N0bmFtZSxcbiAgICAgIGltYWdlOiB0aGlzLnByb3BzLmltYWdlLmltYWdlTmFtZSxcbiAgICAgIG1lbW9yeTogdGhpcy5wcm9wcy5tZW1vcnlMaW1pdE1pQixcbiAgICAgIG1lbW9yeVJlc2VydmF0aW9uOiB0aGlzLnByb3BzLm1lbW9yeVJlc2VydmF0aW9uTWlCLFxuICAgICAgbW91bnRQb2ludHM6IHRoaXMubW91bnRQb2ludHMubWFwKHJlbmRlck1vdW50UG9pbnQpLFxuICAgICAgbmFtZTogdGhpcy5pZCxcbiAgICAgIHBvcnRNYXBwaW5nczogdGhpcy5wb3J0TWFwcGluZ3MubWFwKHJlbmRlclBvcnRNYXBwaW5nKSxcbiAgICAgIHByaXZpbGVnZWQ6IHRoaXMucHJvcHMucHJpdmlsZWdlZCxcbiAgICAgIHJlYWRvbmx5Um9vdEZpbGVzeXN0ZW06IHRoaXMucHJvcHMucmVhZG9ubHlSb290RmlsZXN5c3RlbSxcbiAgICAgIHJlcG9zaXRvcnlDcmVkZW50aWFsczogdW5kZWZpbmVkLCAvLyBGSVhNRVxuICAgICAgdWxpbWl0czogdGhpcy51bGltaXRzLm1hcChyZW5kZXJVbGltaXQpLFxuICAgICAgdXNlcjogdGhpcy5wcm9wcy51c2VyLFxuICAgICAgdm9sdW1lc0Zyb206IHRoaXMudm9sdW1lc0Zyb20ubWFwKHJlbmRlclZvbHVtZUZyb20pLFxuICAgICAgd29ya2luZ0RpcmVjdG9yeTogdGhpcy5wcm9wcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgbG9nQ29uZmlndXJhdGlvbjogdGhpcy5wcm9wcy5sb2dnaW5nICYmIHRoaXMucHJvcHMubG9nZ2luZy5yZW5kZXJMb2dEcml2ZXIoKSxcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLnByb3BzLmVudmlyb25tZW50ICYmIHJlbmRlcktWKHRoaXMucHJvcHMuZW52aXJvbm1lbnQsICduYW1lJywgJ3ZhbHVlJyksXG4gICAgICBleHRyYUhvc3RzOiB0aGlzLnByb3BzLmV4dHJhSG9zdHMgJiYgcmVuZGVyS1YodGhpcy5wcm9wcy5leHRyYUhvc3RzLCAnaG9zdG5hbWUnLCAnaXBBZGRyZXNzJyksXG4gICAgICBoZWFsdGhDaGVjazogdGhpcy5wcm9wcy5oZWFsdGhDaGVjayAmJiByZW5kZXJIZWFsdGhDaGVjayh0aGlzLnByb3BzLmhlYWx0aENoZWNrKSxcbiAgICAgIGxpbmtzOiB0aGlzLmxpbmtzLFxuICAgICAgbGludXhQYXJhbWV0ZXJzOiB0aGlzLmxpbnV4UGFyYW1ldGVycy5yZW5kZXJMaW51eFBhcmFtZXRlcnMoKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29udGFpbmVyIGhlYWx0aCBjaGVjayBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhbHRoQ2hlY2sge1xuICAvKipcbiAgICogQ29tbWFuZCB0byBydW4sIGFzIHRoZSBiaW5hcnkgcGF0aCBhbmQgYXJndW1lbnRzLlxuICAgKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBhIHNoZWxsIGNvbW1hbmQgYXMgYSBzaW5nbGUgc3RyaW5nLCB5b3UgaGF2ZSB0byBxdW90ZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlxuICAgKi9cbiAgY29tbWFuZDogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRpbWUgcGVyaW9kIGluIHNlY29uZHMgYmV0d2VlbiBlYWNoIGhlYWx0aCBjaGVjayBleGVjdXRpb24uXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBiZXR3ZWVuIDUgYW5kIDMwMCBzZWNvbmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzMFxuICAgKi9cbiAgaW50ZXJ2YWxTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgYSBmYWlsZWQgaGVhbHRoIGNoZWNrIGJlZm9yZSB0aGUgY29udGFpbmVyIGlzIGNvbnNpZGVyZWQgdW5oZWFsdGh5LlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYmV0d2VlbiAxIGFuZCAxMCByZXRyaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzXG4gICAqL1xuICByZXRyaWVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHcmFjZSBwZXJpb2QgYWZ0ZXIgc3RhcnR1cCBiZWZvcmUgZmFpbGVkIGhlYWx0aCBjaGVja3MgY291bnQuXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBiZXR3ZWVuIDAgYW5kIDMwMCBzZWNvbmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBzdGFydCBwZXJpb2RcbiAgICovXG4gIHN0YXJ0UGVyaW9kPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBwZXJpb2QgaW4gc2Vjb25kcyB0byB3YWl0IGZvciBhIGhlYWx0aCBjaGVjayB0byBzdWNjZWVkIGJlZm9yZSBpdCBpcyBjb25zaWRlcmVkIGEgZmFpbHVyZS5cbiAgICpcbiAgICogWW91IG1heSBzcGVjaWZ5IGJldHdlZW4gMiBhbmQgNjAgc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcmVuZGVyS1YoZW52OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSwga2V5TmFtZTogc3RyaW5nLCB2YWx1ZU5hbWU6IHN0cmluZyk6IGFueSB7XG4gIGNvbnN0IHJldCA9IFtdO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhlbnYpKSB7XG4gICAgcmV0LnB1c2goeyBba2V5TmFtZV06IGtleSwgW3ZhbHVlTmFtZV06IHZhbHVlIH0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckhlYWx0aENoZWNrKGhjOiBIZWFsdGhDaGVjayk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuSGVhbHRoQ2hlY2tQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgY29tbWFuZDogZ2V0SGVhbHRoQ2hlY2tDb21tYW5kKGhjKSxcbiAgICBpbnRlcnZhbDogaGMuaW50ZXJ2YWxTZWNvbmRzICE9PSB1bmRlZmluZWQgPyBoYy5pbnRlcnZhbFNlY29uZHMgOiAzMCxcbiAgICByZXRyaWVzOiBoYy5yZXRyaWVzICE9PSB1bmRlZmluZWQgPyBoYy5yZXRyaWVzIDogMyxcbiAgICBzdGFydFBlcmlvZDogaGMuc3RhcnRQZXJpb2QsXG4gICAgdGltZW91dDogaGMudGltZW91dCAhPT0gdW5kZWZpbmVkID8gaGMudGltZW91dCA6IDUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEhlYWx0aENoZWNrQ29tbWFuZChoYzogSGVhbHRoQ2hlY2spOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGNtZCA9IGhjLmNvbW1hbmQ7XG4gIGNvbnN0IGhjQ29tbWFuZCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgaWYgKGNtZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEF0IGxlYXN0IG9uZSBhcmd1bWVudCBtdXN0IGJlIHN1cHBsaWVkIGZvciBoZWFsdGggY2hlY2sgY29tbWFuZC5gKTtcbiAgfVxuXG4gIGlmIChjbWQubGVuZ3RoID09PSAxKSB7XG4gICAgaGNDb21tYW5kLnB1c2goJ0NNRC1TSEVMTCcsIGNtZFswXSk7XG4gICAgcmV0dXJuIGhjQ29tbWFuZDtcbiAgfVxuXG4gIGlmIChjbWRbMF0gIT09IFwiQ01EXCIgfHwgY21kWzBdICE9PSAnQ01ELVNIRUxMJykge1xuICAgIGhjQ29tbWFuZC5wdXNoKCdDTUQnKTtcbiAgfVxuXG4gIHJldHVybiBoY0NvbW1hbmQuY29uY2F0KGNtZCk7XG59XG5cbi8qKlxuICogQ29udGFpbmVyIHVsaW1pdHMuXG4gKlxuICogQ29ycmVzcG9uZCB0byB1bGltaXRzIG9wdGlvbnMgb24gZG9ja2VyIHJ1bi5cbiAqXG4gKiBOT1RFOiBEb2VzIG5vdCB3b3JrIGZvciBXaW5kb3dzIGNvbnRhaW5lcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWxpbWl0IHtcbiAgLyoqXG4gICAqIFdoYXQgcmVzb3VyY2UgdG8gZW5mb3JjZSBhIGxpbWl0IG9uXG4gICAqL1xuICBuYW1lOiBVbGltaXROYW1lLFxuXG4gIC8qKlxuICAgKiBTb2Z0IGxpbWl0IG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgc29mdExpbWl0OiBudW1iZXIsXG5cbiAgLyoqXG4gICAqIEhhcmQgbGltaXQgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICBoYXJkTGltaXQ6IG51bWJlcixcbn1cblxuLyoqXG4gKiBUeXBlIG9mIHJlc291cmNlIHRvIHNldCBhIGxpbWl0IG9uXG4gKi9cbmV4cG9ydCBlbnVtIFVsaW1pdE5hbWUge1xuICBDb3JlID0gXCJjb3JlXCIsXG4gIENwdSA9IFwiY3B1XCIsXG4gIERhdGEgPSBcImRhdGFcIixcbiAgRnNpemUgPSBcImZzaXplXCIsXG4gIExvY2tzID0gXCJsb2Nrc1wiLFxuICBNZW1sb2NrID0gXCJtZW1sb2NrXCIsXG4gIE1zZ3F1ZXVlID0gXCJtc2dxdWV1ZVwiLFxuICBOaWNlID0gXCJuaWNlXCIsXG4gIE5vZmlsZSA9IFwibm9maWxlXCIsXG4gIE5wcm9jID0gXCJucHJvY1wiLFxuICBSc3MgPSBcInJzc1wiLFxuICBSdHByaW8gPSBcInJ0cHJpb1wiLFxuICBSdHRpbWUgPSBcInJ0dGltZVwiLFxuICBTaWdwZW5kaW5nID0gXCJzaWdwZW5kaW5nXCIsXG4gIFN0YWNrID0gXCJzdGFja1wiXG59XG5cbmZ1bmN0aW9uIHJlbmRlclVsaW1pdCh1bGltaXQ6IFVsaW1pdCk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuVWxpbWl0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHVsaW1pdC5uYW1lLFxuICAgIHNvZnRMaW1pdDogdWxpbWl0LnNvZnRMaW1pdCxcbiAgICBoYXJkTGltaXQ6IHVsaW1pdC5oYXJkTGltaXQsXG4gIH07XG59XG5cbi8qKlxuICogTWFwIGEgaG9zdCBwb3J0IHRvIGEgY29udGFpbmVyIHBvcnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3J0TWFwcGluZyB7XG4gIC8qKlxuICAgKiBQb3J0IGluc2lkZSB0aGUgY29udGFpbmVyXG4gICAqL1xuICBjb250YWluZXJQb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBvcnQgb24gdGhlIGhvc3RcbiAgICpcbiAgICogSW4gQXdzVnBjIG9yIEhvc3QgbmV0d29ya2luZyBtb2RlLCBsZWF2ZSB0aGlzIG91dCBvciBzZXQgaXQgdG8gdGhlXG4gICAqIHNhbWUgdmFsdWUgYXMgY29udGFpbmVyUG9ydC5cbiAgICpcbiAgICogSW4gQnJpZGdlIG5ldHdvcmtpbmcgbW9kZSwgbGVhdmUgdGhpcyBvdXQgb3Igc2V0IGl0IHRvIG5vbi1yZXNlcnZlZFxuICAgKiBub24tZXBoZW1lcmFsIHBvcnQuXG4gICAqL1xuICBob3N0UG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogUHJvdG9jb2xcbiAgICpcbiAgICogQGRlZmF1bHQgVGNwXG4gICAqL1xuICBwcm90b2NvbD86IFByb3RvY29sXG59XG5cbi8qKlxuICogTmV0d29yayBwcm90b2NvbFxuICovXG5leHBvcnQgZW51bSBQcm90b2NvbCB7XG4gIC8qKlxuICAgKiBUQ1BcbiAgICovXG4gIFRjcCA9IFwidGNwXCIsXG5cbiAgLyoqXG4gICAqIFVEUFxuICAgKi9cbiAgVWRwID0gXCJ1ZHBcIixcbn1cblxuZnVuY3Rpb24gcmVuZGVyUG9ydE1hcHBpbmcocG06IFBvcnRNYXBwaW5nKTogY2xvdWRmb3JtYXRpb24uVGFza0RlZmluaXRpb25SZXNvdXJjZS5Qb3J0TWFwcGluZ1Byb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluZXJQb3J0OiBwbS5jb250YWluZXJQb3J0LFxuICAgIGhvc3RQb3J0OiBwbS5ob3N0UG9ydCxcbiAgICBwcm90b2NvbDogcG0ucHJvdG9jb2wgfHwgUHJvdG9jb2wuVGNwLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmF0Y2hTcGFjZSB7XG4gICAgY29udGFpbmVyUGF0aDogc3RyaW5nLFxuICAgIHJlYWRPbmx5OiBib29sZWFuLFxuICAgIHNvdXJjZVBhdGg6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb3VudFBvaW50IHtcbiAgICBjb250YWluZXJQYXRoOiBzdHJpbmcsXG4gICAgcmVhZE9ubHk6IGJvb2xlYW4sXG4gICAgc291cmNlVm9sdW1lOiBzdHJpbmcsXG59XG5cbmZ1bmN0aW9uIHJlbmRlck1vdW50UG9pbnQobXA6IE1vdW50UG9pbnQpOiBjbG91ZGZvcm1hdGlvbi5UYXNrRGVmaW5pdGlvblJlc291cmNlLk1vdW50UG9pbnRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbmVyUGF0aDogbXAuY29udGFpbmVyUGF0aCxcbiAgICByZWFkT25seTogbXAucmVhZE9ubHksXG4gICAgc291cmNlVm9sdW1lOiBtcC5zb3VyY2VWb2x1bWUsXG4gIH07XG59XG5cbi8qKlxuICogQSB2b2x1bWUgZnJvbSBhbm90aGVyIGNvbnRhaW5lclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZvbHVtZUZyb20ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGNvbnRhaW5lclxuICAgKi9cbiAgc291cmNlQ29udGFpbmVyOiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZvbHVtZSBpcyByZWFkIG9ubHlcbiAgICovXG4gIHJlYWRPbmx5OiBib29sZWFuLFxufVxuXG5mdW5jdGlvbiByZW5kZXJWb2x1bWVGcm9tKHZmOiBWb2x1bWVGcm9tKTogY2xvdWRmb3JtYXRpb24uVGFza0RlZmluaXRpb25SZXNvdXJjZS5Wb2x1bWVGcm9tUHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIHNvdXJjZUNvbnRhaW5lcjogdmYuc291cmNlQ29udGFpbmVyLFxuICAgIHJlYWRPbmx5OiB2Zi5yZWFkT25seSxcbiAgfTtcbn1cbiJdfQ==
import logs = require('@aws-cdk/aws-logs');
import cdk = require('@aws-cdk/cdk');
import { ContainerDefinition } from '../container-definition';
import { cloudformation } from '../ecs.generated';

@@ -54,2 +55,6 @@ import { LogDriver } from "./log-driver";

/**
* Called when the log driver is configured on a container
*/
bind(containerDefinition: ContainerDefinition): void;
/**
* Return the log driver CloudFormation JSON

@@ -56,0 +61,0 @@ */

@@ -18,2 +18,8 @@ "use strict";

/**
* Called when the log driver is configured on a container
*/
bind(containerDefinition) {
this.logGroup.grantWrite(containerDefinition.taskDefinition.obtainExecutionRole());
}
/**
* Return the log driver CloudFormation JSON

@@ -46,2 +52,2 @@ */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWxvZy1kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtbG9nLWRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUEyQztBQUMzQyxvQ0FBcUM7QUFFckMsNkNBQXlDO0FBNEN6Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBTXpDLFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQW1CLEtBQXdCO1FBQ3RGLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFENEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFFdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xFLGFBQWEsRUFBRSxHQUFHO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDcEIsT0FBTztZQUNMLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE9BQU8sRUFBRSxXQUFXLENBQUM7Z0JBQ25CLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7Z0JBQzNDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtnQkFDaEQsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDMUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO2dCQUNwRCwyQkFBMkIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQjthQUN6RCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTVCRCxvQ0E0QkM7QUFFRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFJLENBQW1DO0lBQ3pELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDZjtLQUNGO0lBQ0QsT0FBTyxDQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2dzID0gcmVxdWlyZSgnQGF3cy1jZGsvYXdzLWxvZ3MnKTtcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi4vZWNzLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBMb2dEcml2ZXIgfSBmcm9tIFwiLi9sb2ctZHJpdmVyXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBuZXcgQVdTIExvZyBEcml2ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NMb2dEcml2ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBQcmVmaXggZm9yIHRoZSBsb2cgc3RyZWFtc1xuICAgKlxuICAgKiBUaGUgYXdzbG9ncy1zdHJlYW0tcHJlZml4IG9wdGlvbiBhbGxvd3MgeW91IHRvIGFzc29jaWF0ZSBhIGxvZyBzdHJlYW1cbiAgICogd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgdGhlIGNvbnRhaW5lciBuYW1lLCBhbmQgdGhlIElEIG9mIHRoZSBBbWF6b25cbiAgICogRUNTIHRhc2sgdG8gd2hpY2ggdGhlIGNvbnRhaW5lciBiZWxvbmdzLiBJZiB5b3Ugc3BlY2lmeSBhIHByZWZpeCB3aXRoXG4gICAqIHRoaXMgb3B0aW9uLCB0aGVuIHRoZSBsb2cgc3RyZWFtIHRha2VzIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiAgICAgcHJlZml4LW5hbWUvY29udGFpbmVyLW5hbWUvZWNzLXRhc2staWRcbiAgICovXG4gIHN0cmVhbVByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIGxvZyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIGxvZyBncm91cCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWRcbiAgICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cFJlZjtcblxuICAvKipcbiAgICogVGhpcyBvcHRpb24gZGVmaW5lcyBhIG11bHRpbGluZSBzdGFydCBwYXR0ZXJuIGluIFB5dGhvbiBzdHJmdGltZSBmb3JtYXQuXG4gICAqXG4gICAqIEEgbG9nIG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBsaW5lIHRoYXQgbWF0Y2hlcyB0aGUgcGF0dGVybiBhbmQgYW55XG4gICAqIGZvbGxvd2luZyBsaW5lcyB0aGF0IGRvbuKAmXQgbWF0Y2ggdGhlIHBhdHRlcm4uIFRodXMgdGhlIG1hdGNoZWQgbGluZSBpc1xuICAgKiB0aGUgZGVsaW1pdGVyIGJldHdlZW4gbG9nIG1lc3NhZ2VzLlxuICAgKi9cbiAgZGF0ZXRpbWVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIGRlZmluZXMgYSBtdWx0aWxpbmUgc3RhcnQgcGF0dGVybiB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogQSBsb2cgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxpbmUgdGhhdCBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFuZCBhbnlcbiAgICogZm9sbG93aW5nIGxpbmVzIHRoYXQgZG9u4oCZdCBtYXRjaCB0aGUgcGF0dGVybi4gVGh1cyB0aGUgbWF0Y2hlZCBsaW5lIGlzXG4gICAqIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBsb2cgbWVzc2FnZXMuXG4gICAqL1xuICBtdWx0aWxpbmVQYXR0ZXJuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbG9nIGRyaXZlciB0aGF0IHdpbGwgbG9nIHRvIGFuIEFXUyBMb2cgR3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0xvZ0RyaXZlciBleHRlbmRzIExvZ0RyaXZlciB7XG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRoYXQgdGhlIGxvZ3Mgd2lsbCBiZSBzZW50IHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXBSZWY7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBBd3NMb2dEcml2ZXJQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuICAgIHRoaXMubG9nR3JvdXAgPSBwcm9wcy5sb2dHcm91cCB8fCBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnTG9nR3JvdXAnLCB7XG4gICAgICAgIHJldGVudGlvbkRheXM6IDM2NSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxvZyBkcml2ZXIgQ2xvdWRGb3JtYXRpb24gSlNPTlxuICAgKi9cbiAgcHVibGljIHJlbmRlckxvZ0RyaXZlcigpOiBjbG91ZGZvcm1hdGlvbi5UYXNrRGVmaW5pdGlvblJlc291cmNlLkxvZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ0RyaXZlcjogJ2F3c2xvZ3MnLFxuICAgICAgb3B0aW9uczogcmVtb3ZlRW1wdHkoe1xuICAgICAgICAnYXdzbG9ncy1ncm91cCc6IHRoaXMubG9nR3JvdXAubG9nR3JvdXBOYW1lLFxuICAgICAgICAnYXdzbG9ncy1zdHJlYW0tcHJlZml4JzogdGhpcy5wcm9wcy5zdHJlYW1QcmVmaXgsXG4gICAgICAgICdhd3Nsb2dzLXJlZ2lvbic6IGAke25ldyBjZGsuQXdzUmVnaW9uKCl9YCxcbiAgICAgICAgJ2F3c2xvZ3MtZGF0ZXRpbWUtZm9ybWF0JzogdGhpcy5wcm9wcy5kYXRldGltZUZvcm1hdCxcbiAgICAgICAgJ2F3c2xvZ3MtbXVsdGlsaW5lLXBhdHRlcm4nOiB0aGlzLnByb3BzLm11bHRpbGluZVBhdHRlcm4sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIHVuZGVmaW5lZCB2YWx1ZXMgZnJvbSBhIGRpY3Rpb25hcnlcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRW1wdHk8VD4oeDoge1trZXk6IHN0cmluZ106IChUIHwgdW5kZWZpbmVkKX0pOiB7W2tleTogc3RyaW5nXTogVH0ge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh4KSkge1xuICAgIGlmICgheFtrZXldKSB7XG4gICAgICBkZWxldGUgeFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4geCBhcyBhbnk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWxvZy1kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtbG9nLWRyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUEyQztBQUMzQyxvQ0FBcUM7QUFHckMsNkNBQXlDO0FBNEN6Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBTXpDLFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQW1CLEtBQXdCO1FBQ3RGLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFENEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFFdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xFLGFBQWEsRUFBRSxHQUFHO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxtQkFBd0M7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU87WUFDTCxTQUFTLEVBQUUsU0FBUztZQUNwQixPQUFPLEVBQUUsV0FBVyxDQUFDO2dCQUNuQixlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUMzQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hELGdCQUFnQixFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQzFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztnQkFDcEQsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7YUFDekQsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuQ0Qsb0NBbUNDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBSSxDQUFtQztJQUN6RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNYLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2Y7S0FDRjtJQUNELE9BQU8sQ0FBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9ncyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1sb2dzJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBDb250YWluZXJEZWZpbml0aW9uIH0gZnJvbSAnLi4vY29udGFpbmVyLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgY2xvdWRmb3JtYXRpb24gfSBmcm9tICcuLi9lY3MuZ2VuZXJhdGVkJztcbmltcG9ydCB7IExvZ0RyaXZlciB9IGZyb20gXCIuL2xvZy1kcml2ZXJcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIG5ldyBBV1MgTG9nIERyaXZlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0xvZ0RyaXZlclByb3BzIHtcbiAgLyoqXG4gICAqIFByZWZpeCBmb3IgdGhlIGxvZyBzdHJlYW1zXG4gICAqXG4gICAqIFRoZSBhd3Nsb2dzLXN0cmVhbS1wcmVmaXggb3B0aW9uIGFsbG93cyB5b3UgdG8gYXNzb2NpYXRlIGEgbG9nIHN0cmVhbVxuICAgKiB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCB0aGUgY29udGFpbmVyIG5hbWUsIGFuZCB0aGUgSUQgb2YgdGhlIEFtYXpvblxuICAgKiBFQ1MgdGFzayB0byB3aGljaCB0aGUgY29udGFpbmVyIGJlbG9uZ3MuIElmIHlvdSBzcGVjaWZ5IGEgcHJlZml4IHdpdGhcbiAgICogdGhpcyBvcHRpb24sIHRoZW4gdGhlIGxvZyBzdHJlYW0gdGFrZXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqICAgICBwcmVmaXgtbmFtZS9jb250YWluZXItbmFtZS9lY3MtdGFzay1pZFxuICAgKi9cbiAgc3RyZWFtUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gbG9nIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbG9nIGdyb3VwIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZFxuICAgKi9cbiAgbG9nR3JvdXA/OiBsb2dzLkxvZ0dyb3VwUmVmO1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wdGlvbiBkZWZpbmVzIGEgbXVsdGlsaW5lIHN0YXJ0IHBhdHRlcm4gaW4gUHl0aG9uIHN0cmZ0aW1lIGZvcm1hdC5cbiAgICpcbiAgICogQSBsb2cgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxpbmUgdGhhdCBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFuZCBhbnlcbiAgICogZm9sbG93aW5nIGxpbmVzIHRoYXQgZG9u4oCZdCBtYXRjaCB0aGUgcGF0dGVybi4gVGh1cyB0aGUgbWF0Y2hlZCBsaW5lIGlzXG4gICAqIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBsb2cgbWVzc2FnZXMuXG4gICAqL1xuICBkYXRldGltZUZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBvcHRpb24gZGVmaW5lcyBhIG11bHRpbGluZSBzdGFydCBwYXR0ZXJuIHVzaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICAgKlxuICAgKiBBIGxvZyBtZXNzYWdlIGNvbnNpc3RzIG9mIGEgbGluZSB0aGF0IG1hdGNoZXMgdGhlIHBhdHRlcm4gYW5kIGFueVxuICAgKiBmb2xsb3dpbmcgbGluZXMgdGhhdCBkb27igJl0IG1hdGNoIHRoZSBwYXR0ZXJuLiBUaHVzIHRoZSBtYXRjaGVkIGxpbmUgaXNcbiAgICogdGhlIGRlbGltaXRlciBiZXR3ZWVuIGxvZyBtZXNzYWdlcy5cbiAgICovXG4gIG11bHRpbGluZVBhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBsb2cgZHJpdmVyIHRoYXQgd2lsbCBsb2cgdG8gYW4gQVdTIExvZyBHcm91cFxuICovXG5leHBvcnQgY2xhc3MgQXdzTG9nRHJpdmVyIGV4dGVuZHMgTG9nRHJpdmVyIHtcbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdGhhdCB0aGUgbG9ncyB3aWxsIGJlIHNlbnQgdG9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2dHcm91cDogbG9ncy5Mb2dHcm91cFJlZjtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEF3c0xvZ0RyaXZlclByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG4gICAgdGhpcy5sb2dHcm91cCA9IHByb3BzLmxvZ0dyb3VwIHx8IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdMb2dHcm91cCcsIHtcbiAgICAgICAgcmV0ZW50aW9uRGF5czogMzY1LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBsb2cgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgb24gYSBjb250YWluZXJcbiAgICovXG4gIHB1YmxpYyBiaW5kKGNvbnRhaW5lckRlZmluaXRpb246IENvbnRhaW5lckRlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ0dyb3VwLmdyYW50V3JpdGUoY29udGFpbmVyRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbi5vYnRhaW5FeGVjdXRpb25Sb2xlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbG9nIGRyaXZlciBDbG91ZEZvcm1hdGlvbiBKU09OXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyTG9nRHJpdmVyKCk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuTG9nQ29uZmlndXJhdGlvblByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9nRHJpdmVyOiAnYXdzbG9ncycsXG4gICAgICBvcHRpb25zOiByZW1vdmVFbXB0eSh7XG4gICAgICAgICdhd3Nsb2dzLWdyb3VwJzogdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgICdhd3Nsb2dzLXN0cmVhbS1wcmVmaXgnOiB0aGlzLnByb3BzLnN0cmVhbVByZWZpeCxcbiAgICAgICAgJ2F3c2xvZ3MtcmVnaW9uJzogYCR7bmV3IGNkay5Bd3NSZWdpb24oKX1gLFxuICAgICAgICAnYXdzbG9ncy1kYXRldGltZS1mb3JtYXQnOiB0aGlzLnByb3BzLmRhdGV0aW1lRm9ybWF0LFxuICAgICAgICAnYXdzbG9ncy1tdWx0aWxpbmUtcGF0dGVybic6IHRoaXMucHJvcHMubXVsdGlsaW5lUGF0dGVybixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZW1vdmUgdW5kZWZpbmVkIHZhbHVlcyBmcm9tIGEgZGljdGlvbmFyeVxuICovXG5mdW5jdGlvbiByZW1vdmVFbXB0eTxUPih4OiB7W2tleTogc3RyaW5nXTogKFQgfCB1bmRlZmluZWQpfSk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHgpKSB7XG4gICAgaWYgKCF4W2tleV0pIHtcbiAgICAgIGRlbGV0ZSB4W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiB4IGFzIGFueTtcbn1cbiJdfQ==
import cdk = require('@aws-cdk/cdk');
import { ContainerDefinition } from '../container-definition';
import { cloudformation } from '../ecs.generated';

@@ -11,2 +12,6 @@ /**

abstract renderLogDriver(): cloudformation.TaskDefinitionResource.LogConfigurationProperty;
/**
* Called when the log driver is configured on a container
*/
abstract bind(containerDefinition: ContainerDefinition): void;
}

@@ -10,2 +10,2 @@ "use strict";

exports.LogDriver = LogDriver;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWRyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZy1kcml2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBcUM7QUFHckM7O0dBRUc7QUFDSCxNQUFzQixTQUFVLFNBQVEsR0FBRyxDQUFDLFNBQVM7Q0FLcEQ7QUFMRCw4QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi4vZWNzLmdlbmVyYXRlZCc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgbG9nIGRyaXZlcnNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExvZ0RyaXZlciBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBsb2cgZHJpdmVyIENsb3VkRm9ybWF0aW9uIEpTT05cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZW5kZXJMb2dEcml2ZXIoKTogY2xvdWRmb3JtYXRpb24uVGFza0RlZmluaXRpb25SZXNvdXJjZS5Mb2dDb25maWd1cmF0aW9uUHJvcGVydHk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWRyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZy1kcml2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBcUM7QUFJckM7O0dBRUc7QUFDSCxNQUFzQixTQUFVLFNBQVEsR0FBRyxDQUFDLFNBQVM7Q0FVcEQ7QUFWRCw4QkFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IENvbnRhaW5lckRlZmluaXRpb24gfSBmcm9tICcuLi9jb250YWluZXItZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBjbG91ZGZvcm1hdGlvbiB9IGZyb20gJy4uL2Vjcy5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGxvZyBkcml2ZXJzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2dEcml2ZXIgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbG9nIGRyaXZlciBDbG91ZEZvcm1hdGlvbiBKU09OXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVuZGVyTG9nRHJpdmVyKCk6IGNsb3VkZm9ybWF0aW9uLlRhc2tEZWZpbml0aW9uUmVzb3VyY2UuTG9nQ29uZmlndXJhdGlvblByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgbG9nIGRyaXZlciBpcyBjb25maWd1cmVkIG9uIGEgY29udGFpbmVyXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChjb250YWluZXJEZWZpbml0aW9uOiBDb250YWluZXJEZWZpbml0aW9uKTogdm9pZDtcbn1cbiJdfQ==
{
"name": "@aws-cdk/aws-ecs",
"version": "0.19.0",
"version": "0.20.0",
"description": "The CDK Construct Library for AWS::ECS",

@@ -55,45 +55,45 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assert": "^0.19.0",
"@aws-cdk/assert": "^0.20.0",
"@types/proxyquire": "^1.3.28",
"cdk-build-tools": "^0.19.0",
"cdk-integ-tools": "^0.19.0",
"cfn2ts": "^0.19.0",
"pkglint": "^0.19.0",
"cdk-build-tools": "^0.20.0",
"cdk-integ-tools": "^0.20.0",
"cfn2ts": "^0.20.0",
"pkglint": "^0.20.0",
"proxyquire": "^2.1.0"
},
"dependencies": {
"@aws-cdk/assets-docker": "^0.19.0",
"@aws-cdk/aws-applicationautoscaling": "^0.19.0",
"@aws-cdk/aws-autoscaling": "^0.19.0",
"@aws-cdk/aws-certificatemanager": "^0.19.0",
"@aws-cdk/aws-cloudformation": "^0.19.0",
"@aws-cdk/aws-cloudwatch": "^0.19.0",
"@aws-cdk/aws-ec2": "^0.19.0",
"@aws-cdk/aws-ecr": "^0.19.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.19.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.19.0",
"@aws-cdk/aws-iam": "^0.19.0",
"@aws-cdk/aws-lambda": "^0.19.0",
"@aws-cdk/aws-logs": "^0.19.0",
"@aws-cdk/aws-route53": "^0.19.0",
"@aws-cdk/aws-sns": "^0.19.0",
"@aws-cdk/cdk": "^0.19.0",
"@aws-cdk/cx-api": "^0.19.0"
"@aws-cdk/assets-docker": "^0.20.0",
"@aws-cdk/aws-applicationautoscaling": "^0.20.0",
"@aws-cdk/aws-autoscaling": "^0.20.0",
"@aws-cdk/aws-certificatemanager": "^0.20.0",
"@aws-cdk/aws-cloudformation": "^0.20.0",
"@aws-cdk/aws-cloudwatch": "^0.20.0",
"@aws-cdk/aws-ec2": "^0.20.0",
"@aws-cdk/aws-ecr": "^0.20.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.20.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.20.0",
"@aws-cdk/aws-iam": "^0.20.0",
"@aws-cdk/aws-lambda": "^0.20.0",
"@aws-cdk/aws-logs": "^0.20.0",
"@aws-cdk/aws-route53": "^0.20.0",
"@aws-cdk/aws-sns": "^0.20.0",
"@aws-cdk/cdk": "^0.20.0",
"@aws-cdk/cx-api": "^0.20.0"
},
"homepage": "https://github.com/awslabs/aws-cdk",
"peerDependencies": {
"@aws-cdk/aws-applicationautoscaling": "^0.19.0",
"@aws-cdk/aws-autoscaling": "^0.19.0",
"@aws-cdk/aws-certificatemanager": "^0.19.0",
"@aws-cdk/aws-cloudwatch": "^0.19.0",
"@aws-cdk/aws-ec2": "^0.19.0",
"@aws-cdk/aws-ecr": "^0.19.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.19.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.19.0",
"@aws-cdk/aws-iam": "^0.19.0",
"@aws-cdk/aws-logs": "^0.19.0",
"@aws-cdk/aws-route53": "^0.19.0",
"@aws-cdk/cdk": "^0.19.0",
"@aws-cdk/assets-docker": "^0.19.0"
"@aws-cdk/assets-docker": "^0.20.0",
"@aws-cdk/aws-applicationautoscaling": "^0.20.0",
"@aws-cdk/aws-autoscaling": "^0.20.0",
"@aws-cdk/aws-certificatemanager": "^0.20.0",
"@aws-cdk/aws-cloudwatch": "^0.20.0",
"@aws-cdk/aws-ec2": "^0.20.0",
"@aws-cdk/aws-ecr": "^0.20.0",
"@aws-cdk/aws-elasticloadbalancing": "^0.20.0",
"@aws-cdk/aws-elasticloadbalancingv2": "^0.20.0",
"@aws-cdk/aws-iam": "^0.20.0",
"@aws-cdk/aws-logs": "^0.20.0",
"@aws-cdk/aws-route53": "^0.20.0",
"@aws-cdk/cdk": "^0.20.0"
}
}
}

@@ -869,3 +869,6 @@ {

"Type": "application"
}
},
"DependsOn": [
"VpcIGWD7BA715C"
]
},

@@ -872,0 +875,0 @@ "LBSecurityGroup8A41EA2B": {

@@ -832,3 +832,6 @@ {

"Type": "application"
}
},
"DependsOn": [
"VpcIGWD7BA715C"
]
},

@@ -835,0 +838,0 @@ "LBSecurityGroup8A41EA2B": {

@@ -10,4 +10,5 @@ import { Test } from 'nodeunit';

"correctly sets placement constraints"(test: Test): void;
"correctly sets taskRole"(test: Test): void;
};
};
export = _default;
"use strict";
const assert_1 = require("@aws-cdk/assert");
const aws_ec2_1 = require("@aws-cdk/aws-ec2");
// import iam = require('@aws-cdk/aws-iam'); // importing this is throwing a really weird error in line 11?
const iam = require("@aws-cdk/aws-iam");
const cdk = require("@aws-cdk/cdk");

@@ -102,3 +102,3 @@ const ecs = require("../../lib");

// THEN
assert_1.expect(stack).to(assert_1.haveResource("AWS::ECS::TaskDefinition", {
assert_1.expect(stack).to(assert_1.haveResourceLike("AWS::ECS::TaskDefinition", {
Family: "Ec2TaskDef",

@@ -147,3 +147,3 @@ ContainerDefinitions: [{

// THEN
assert_1.expect(stack).to(assert_1.haveResource("AWS::ECS::TaskDefinition", {
assert_1.expect(stack).to(assert_1.haveResourceLike("AWS::ECS::TaskDefinition", {
Family: "Ec2TaskDef",

@@ -192,4 +192,22 @@ ContainerDefinitions: [{

},
"correctly sets taskRole"(test) {
// GIVEN
const stack = new cdk.Stack();
const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', {
taskRole: new iam.Role(stack, 'TaskRole', {
assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'),
})
});
taskDefinition.addContainer("web", {
image: ecs.ContainerImage.fromDockerHub("amazon/amazon-ecs-sample"),
memoryLimitMiB: 512
});
// THEN
assert_1.expect(stack).to(assert_1.haveResourceLike("AWS::ECS::TaskDefinition", {
TaskRoleArn: cdk.resolve(taskDefinition.taskRole.roleArn)
}));
test.done();
},
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5lYzItdGFzay1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5lYzItdGFzay1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBdUQ7QUFDdkQsOENBQTRDO0FBQzVDLDJHQUEyRztBQUMzRyxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBRWxDLGlCQUFTO0lBQ1AscUNBQXFDLEVBQUU7UUFDckMseUVBQXlFLENBQUMsSUFBVTtZQUNsRixRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRS9DLE9BQU87WUFDUCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsMEJBQTBCLEVBQUU7Z0JBQ3hELE1BQU0sRUFBRSxZQUFZO2dCQUNwQixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixPQUFPLEVBQUUsRUFBRTtnQkFDWCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO2dCQUNuQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUNqQyxDQUFDLENBQUMsQ0FBQztZQUVKLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsNkJBQTZCLENBQUMsSUFBVTtZQUN0QyxRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDN0MsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTthQUNwQyxDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLDBCQUEwQixFQUFFO2dCQUN4RCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO2FBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELDJCQUEyQixDQUFDLElBQVU7WUFDcEMsUUFBUTtZQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRTlCLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUV0RSxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDbkQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDO2dCQUNuRSxjQUFjLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjthQUN2QyxDQUFDLENBQUM7WUFFSCw4Q0FBOEM7WUFDOUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztnQkFDeEIsYUFBYSxFQUFFLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFDbkIsU0FBUyxFQUFFLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRztnQkFDeEIsU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLDBCQUEwQixFQUFFO2dCQUN4RCxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDckIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsS0FBSyxFQUFFLDBCQUEwQjt3QkFDakMsS0FBSyxFQUFFLEVBQUU7d0JBQ1QsZUFBZSxFQUFFOzRCQUNmLFlBQVksRUFBRTtnQ0FDWixHQUFHLEVBQUUsRUFBRTtnQ0FDUCxJQUFJLEVBQUUsRUFBRTs2QkFDVDs0QkFDRCxPQUFPLEVBQUUsRUFBRTs0QkFDWCxLQUFLLEVBQUUsRUFBRTt5QkFDVjt3QkFDRCxXQUFXLEVBQUUsRUFBRTt3QkFDZixJQUFJLEVBQUUsS0FBSzt3QkFDWCxZQUFZLEVBQUUsQ0FBQztnQ0FDYixhQUFhLEVBQUUsSUFBSTtnQ0FDbkIsUUFBUSxFQUFFLENBQUM7Z0NBQ1gsUUFBUSxFQUFFLGtCQUFRLENBQUMsR0FBRzs2QkFDdkIsQ0FBQzt3QkFDRixPQUFPLEVBQUUsQ0FBQztnQ0FDUixTQUFTLEVBQUUsR0FBRztnQ0FDZCxJQUFJLEVBQUUsS0FBSztnQ0FDWCxTQUFTLEVBQUUsR0FBRzs2QkFDZixDQUFDO3dCQUNGLFdBQVcsRUFBRSxFQUFFO3FCQUNoQixDQUFDO2FBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsOEJBQThCLENBQUMsSUFBVTtZQUN2QyxRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRXRFLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUM7Z0JBQ25FLGNBQWMsRUFBRSxHQUFHO2FBQ3BCLENBQUMsQ0FBQztZQUVILFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLGFBQWEsRUFBRSxTQUFTO2dCQUN4QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsWUFBWTtnQkFDeEIsSUFBSSxFQUFFLFNBQVM7YUFDaEIsQ0FBQyxDQUFDO1lBRUgsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQywwQkFBMEIsRUFBRTtnQkFDeEQsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLG9CQUFvQixFQUFFLENBQUM7d0JBQ3JCLFdBQVcsRUFBRTs0QkFDWDtnQ0FDRSxhQUFhLEVBQUUsU0FBUztnQ0FDeEIsUUFBUSxFQUFFLElBQUk7Z0NBQ2QsWUFBWSxFQUFFLFNBQVM7NkJBQ3hCO3lCQUNGO3FCQUNGLENBQUM7Z0JBQ0YsT0FBTyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxFQUFFOzRCQUNKLFVBQVUsRUFBRSxZQUFZO3lCQUN6Qjt3QkFDRCxJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQzthQUNILENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELHdCQUF3QixDQUFDLElBQVU7WUFDakMsUUFBUTtZQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLE1BQU0sTUFBTSxHQUFHO2dCQUNiLElBQUksRUFBRTtvQkFDSixVQUFVLEVBQUUsWUFBWTtpQkFDekI7Z0JBQ0QsSUFBSSxFQUFFLFNBQVM7YUFDaEIsQ0FBQztZQUVGLDJDQUEyQztZQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNwRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDbEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQztnQkFDbkUsY0FBYyxFQUFFLEdBQUc7YUFDcEIsQ0FBQyxDQUFDO1lBRUgsMkRBQTJEO1lBQzNELFNBQVMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZCLGFBQWEsRUFBRSxTQUFTO2dCQUN4QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxZQUFZLEVBQUUsU0FBUzthQUN4QixDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLDBCQUEwQixFQUFFO2dCQUN4RCxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDckIsV0FBVyxFQUFFOzRCQUNYO2dDQUNFLGFBQWEsRUFBRSxTQUFTO2dDQUN4QixRQUFRLEVBQUUsSUFBSTtnQ0FDZCxZQUFZLEVBQUUsU0FBUzs2QkFDeEI7eUJBQ0Y7cUJBQ0YsQ0FBQztnQkFDRixPQUFPLEVBQUUsQ0FBQzt3QkFDUixJQUFJLEVBQUU7NEJBQ0osVUFBVSxFQUFFLFlBQVk7eUJBQ3pCO3dCQUNELElBQUksRUFBRSxTQUFTO3FCQUNoQixDQUFDO2FBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsc0NBQXNDLENBQUMsSUFBVTtZQUMvQyxRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDcEUsb0JBQW9CLEVBQUUsQ0FBQzt3QkFDckIsVUFBVSxFQUFFLHFDQUFxQzt3QkFDakQsSUFBSSxFQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRO3FCQUMzQyxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1lBRUgsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pDLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUM7YUFDcEUsQ0FBQyxDQUFDO1lBRUgsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQywwQkFBMEIsRUFBRTtnQkFDeEQsb0JBQW9CLEVBQUU7b0JBQ3BCO3dCQUNFLFVBQVUsRUFBRSxxQ0FBcUM7d0JBQ2pELElBQUksRUFBRSxVQUFVO3FCQUNqQjtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQTBDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBlY3QsIGhhdmVSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2Fzc2VydCc7XG5pbXBvcnQgeyBQcm90b2NvbCB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1lYzInO1xuLy8gaW1wb3J0IGlhbSA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1pYW0nKTsgLy8gaW1wb3J0aW5nIHRoaXMgaXMgdGhyb3dpbmcgYSByZWFsbHkgd2VpcmQgZXJyb3IgaW4gbGluZSAxMT9cbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgZWNzID0gcmVxdWlyZSgnLi4vLi4vbGliJyk7XG5cbmV4cG9ydCA9IHtcbiAgXCJXaGVuIGNyZWF0aW5nIGFuIEVDUyBUYXNrRGVmaW5pdGlvblwiOiB7XG4gICAgXCJ3aXRoIG9ubHkgcmVxdWlyZWQgcHJvcGVydGllcyBzZXQsIGl0IGNvcnJlY3RseSBzZXRzIGRlZmF1bHQgcHJvcGVydGllc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdFYzJUYXNrRGVmJyk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgRmFtaWx5OiBcIkVjMlRhc2tEZWZcIixcbiAgICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFtdLFxuICAgICAgICBQbGFjZW1lbnRDb25zdHJhaW50czogW10sXG4gICAgICAgIFZvbHVtZXM6IFtdLFxuICAgICAgICBOZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkJyaWRnZSxcbiAgICAgICAgUmVxdWlyZXNDb21wYXRpYmlsaXRpZXM6IFtcIkVDMlwiXVxuICAgICAgfSkpO1xuXG4gICAgICAvLyB0ZXN0IGVycm9yIGlmIG5vIGNvbnRhaW5lciBkZWZzP1xuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcblxuICAgIFwiY29ycmVjdGx5IHNldHMgbmV0d29yayBtb2RlXCIodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6VGFza0RlZmluaXRpb25cIiwge1xuICAgICAgICBOZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkF3c1ZwYyxcbiAgICAgIH0pKTtcblxuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcblxuICAgIFwiY29ycmVjdGx5IHNldHMgY29udGFpbmVyc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRWMyVGFza0RlZicpO1xuXG4gICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiA1MTIgLy8gYWRkIHZhbGlkYXRpb24/XG4gICAgICB9KTtcblxuICAgICAgLy8gVE9ETyB0ZXN0IG90aGVyIGNvbnRhaW5lckRlZmluaXRpb24gbWV0aG9kc1xuICAgICAgY29udGFpbmVyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IDMwMDBcbiAgICAgIH0pO1xuXG4gICAgICBjb250YWluZXIuYWRkVWxpbWl0cyh7XG4gICAgICAgIGhhcmRMaW1pdDogMTI4LFxuICAgICAgICBuYW1lOiBlY3MuVWxpbWl0TmFtZS5Sc3MsXG4gICAgICAgIHNvZnRMaW1pdDogMTI4XG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6VGFza0RlZmluaXRpb25cIiwge1xuICAgICAgICBGYW1pbHk6IFwiRWMyVGFza0RlZlwiLFxuICAgICAgICBDb250YWluZXJEZWZpbml0aW9uczogW3tcbiAgICAgICAgICBFc3NlbnRpYWw6IHRydWUsXG4gICAgICAgICAgTWVtb3J5OiA1MTIsXG4gICAgICAgICAgSW1hZ2U6IFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIsXG4gICAgICAgICAgTGlua3M6IFtdLFxuICAgICAgICAgIExpbnV4UGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQ2FwYWJpbGl0aWVzOiB7XG4gICAgICAgICAgICAgIEFkZDogW10sXG4gICAgICAgICAgICAgIERyb3A6IFtdXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRGV2aWNlczogW10sXG4gICAgICAgICAgICBUbXBmczogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIE1vdW50UG9pbnRzOiBbXSxcbiAgICAgICAgICBOYW1lOiBcIndlYlwiLFxuICAgICAgICAgIFBvcnRNYXBwaW5nczogW3tcbiAgICAgICAgICAgIENvbnRhaW5lclBvcnQ6IDMwMDAsXG4gICAgICAgICAgICBIb3N0UG9ydDogMCxcbiAgICAgICAgICAgIFByb3RvY29sOiBQcm90b2NvbC5UY3BcbiAgICAgICAgICB9XSxcbiAgICAgICAgICBVbGltaXRzOiBbe1xuICAgICAgICAgICAgSGFyZExpbWl0OiAxMjgsXG4gICAgICAgICAgICBOYW1lOiBcInJzc1wiLFxuICAgICAgICAgICAgU29mdExpbWl0OiAxMjhcbiAgICAgICAgICB9XSxcbiAgICAgICAgICBWb2x1bWVzRnJvbTogW11cbiAgICAgICAgfV0sXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIHNjcmF0Y2ggc3BhY2VcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdFYzJUYXNrRGVmJyk7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIndlYlwiLCB7XG4gICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiKSxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IDUxMlxuICAgICAgfSk7XG5cbiAgICAgIGNvbnRhaW5lci5hZGRTY3JhdGNoKHtcbiAgICAgICAgY29udGFpbmVyUGF0aDogXCIuL2NhY2hlXCIsXG4gICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICBzb3VyY2VQYXRoOiBcIi90bXAvY2FjaGVcIixcbiAgICAgICAgbmFtZTogXCJzY3JhdGNoXCJcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpUYXNrRGVmaW5pdGlvblwiLCB7XG4gICAgICAgIEZhbWlseTogXCJFYzJUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbe1xuICAgICAgICAgIE1vdW50UG9pbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIENvbnRhaW5lclBhdGg6IFwiLi9jYWNoZVwiLFxuICAgICAgICAgICAgICBSZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgU291cmNlVm9sdW1lOiBcInNjcmF0Y2hcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgIFZvbHVtZXM6IFt7XG4gICAgICAgICAgSG9zdDoge1xuICAgICAgICAgICAgU291cmNlUGF0aDogXCIvdG1wL2NhY2hlXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIE5hbWU6IFwic2NyYXRjaFwiXG4gICAgICAgIH1dXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIHZvbHVtZXNcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBjb25zdCB2b2x1bWUgPSB7XG4gICAgICAgIGhvc3Q6IHtcbiAgICAgICAgICBzb3VyY2VQYXRoOiBcIi90bXAvY2FjaGVcIixcbiAgICAgICAgfSxcbiAgICAgICAgbmFtZTogXCJzY3JhdGNoXCJcbiAgICAgIH07XG5cbiAgICAgIC8vIEFkZGluZyB2b2x1bWVzIHZpYSBwcm9wcyBpcyBhIGJpdCBjbHVua3lcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgICAgIHZvbHVtZXM6IFt2b2x1bWVdXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwid2ViXCIsIHtcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogNTEyXG4gICAgICB9KTtcblxuICAgICAgLy8gdGhpcyBuZWVkcyB0byBiZSBhIGJldHRlciBBUEkgLS0gc2hvdWxkIGF1dG8tYWRkIHZvbHVtZXNcbiAgICAgIGNvbnRhaW5lci5hZGRNb3VudFBvaW50cyh7XG4gICAgICAgIGNvbnRhaW5lclBhdGg6IFwiLi9jYWNoZVwiLFxuICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgc291cmNlVm9sdW1lOiBcInNjcmF0Y2hcIixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpUYXNrRGVmaW5pdGlvblwiLCB7XG4gICAgICAgIEZhbWlseTogXCJFYzJUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbe1xuICAgICAgICAgIE1vdW50UG9pbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIENvbnRhaW5lclBhdGg6IFwiLi9jYWNoZVwiLFxuICAgICAgICAgICAgICBSZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgU291cmNlVm9sdW1lOiBcInNjcmF0Y2hcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgIFZvbHVtZXM6IFt7XG4gICAgICAgICAgSG9zdDoge1xuICAgICAgICAgICAgU291cmNlUGF0aDogXCIvdG1wL2NhY2hlXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIE5hbWU6IFwic2NyYXRjaFwiXG4gICAgICAgIH1dXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIHBsYWNlbWVudCBjb25zdHJhaW50c1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgICAgIHBsYWNlbWVudENvbnN0cmFpbnRzOiBbe1xuICAgICAgICAgIGV4cHJlc3Npb246IFwiYXR0cmlidXRlOmVjcy5pbnN0YW5jZS10eXBlID1+IHQyLipcIixcbiAgICAgICAgICB0eXBlOiBlY3MuUGxhY2VtZW50Q29uc3RyYWludFR5cGUuTWVtYmVyT2ZcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6VGFza0RlZmluaXRpb25cIiwge1xuICAgICAgICBQbGFjZW1lbnRDb25zdHJhaW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEV4cHJlc3Npb246IFwiYXR0cmlidXRlOmVjcy5pbnN0YW5jZS10eXBlID1+IHQyLipcIixcbiAgICAgICAgICAgIFR5cGU6IFwibWVtYmVyT2ZcIlxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgLy8gXCJjb3JyZWN0bHkgc2V0cyB0YXNrUm9sZVwiKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyAgIC8vIEdJVkVOXG4gICAgLy8gICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAvLyAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgLy8gICAgIHRhc2tSb2xlOiBuZXcgaWFtLlJvbGUodGhpcywgJ1Rhc2tSb2xlJywge1xuICAgIC8vICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlY3MtdGFza3MuYW1hem9uYXdzLmNvbScpLFxuICAgIC8vICAgICB9KVxuICAgIC8vICAgfSk7XG5cbiAgICAvLyAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIndlYlwiLCB7XG4gICAgLy8gICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiKSxcbiAgICAvLyAgICAgbWVtb3J5TGltaXRNaUI6IDUxMlxuICAgIC8vICAgfSk7XG5cbiAgICAvLyAgIC8vIFRIRU5cbiAgICAvLyAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAvLyAgICAgVGFza1JvbGU6IFwicm9sZUFyblwiXG4gICAgLy8gICB9KSk7XG5cbiAgICAvLyAgIHRlc3QuZG9uZSgpO1xuICAgIC8vIH0sXG5cbiAgICAvLyBcImNvcnJlY3RseSBzZXRzIHRhc2tFeGVjdXRpb25Sb2xlIGlmIGNvbnRhaW5lckRlZiB1c2VzIEVDUlwiKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyAgIC8vIEdJVkVOXG4gICAgLy8gICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAvLyAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7fSk7XG4gICAgLy8gICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgIC8vICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgLy8gICAgIG1lbW9yeUxpbWl0TWlCOiA1MTIgLy8gYWRkIHZhbGlkYXRpb24/XG4gICAgLy8gICB9KTtcblxuICAgIC8vICAgY29udGFpbmVyLnVzZUVjckltYWdlKCk7XG5cbiAgICAvLyAgIC8vIFRIRU5cbiAgICAvLyAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAvLyAgICAgVGFza0V4ZWN1dGlvblJvbGU6IFwicm9sZUFyblwiXG4gICAgLy8gICB9KSk7XG5cbiAgICAvLyAgIHRlc3QuZG9uZSgpO1xuICAgIC8vIH0sXG4gIH1cbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5lYzItdGFzay1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5lYzItdGFzay1kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBeUU7QUFDekUsOENBQTRDO0FBQzVDLHdDQUF5QztBQUN6QyxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBRWxDLGlCQUFTO0lBQ1AscUNBQXFDLEVBQUU7UUFDckMseUVBQXlFLENBQUMsSUFBVTtZQUNsRixRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRS9DLE9BQU87WUFDUCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsMEJBQTBCLEVBQUU7Z0JBQ3hELE1BQU0sRUFBRSxZQUFZO2dCQUNwQixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixPQUFPLEVBQUUsRUFBRTtnQkFDWCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO2dCQUNuQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUNqQyxDQUFDLENBQUMsQ0FBQztZQUVKLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsNkJBQTZCLENBQUMsSUFBVTtZQUN0QyxRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDN0MsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTthQUNwQyxDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFD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O2dCQUN4RCxvQkFBb0IsRUFBRTtvQkFDcEI7d0JBQ0UsVUFBVSxFQUFFLHFDQUFxQzt3QkFDakQsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQseUJBQXlCLENBQUMsSUFBVTtZQUNsQyxRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDcEUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO29CQUN4QyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7aUJBQy9ELENBQUM7YUFDSCxDQUFDLENBQUM7WUFFSCxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDakMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDO2dCQUNuRSxjQUFjLEVBQUUsR0FBRzthQUNwQixDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyx5QkFBZ0IsQ0FBQywwQkFBMEIsRUFBRTtnQkFDNUQsV0FBVyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFDMUQsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCBoYXZlUmVzb3VyY2UsIGhhdmVSZXNvdXJjZUxpa2UgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IHsgUHJvdG9jb2wgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCBpYW0gPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtaWFtJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uLy4uL2xpYicpO1xuXG5leHBvcnQgPSB7XG4gIFwiV2hlbiBjcmVhdGluZyBhbiBFQ1MgVGFza0RlZmluaXRpb25cIjoge1xuICAgIFwid2l0aCBvbmx5IHJlcXVpcmVkIHByb3BlcnRpZXMgc2V0LCBpdCBjb3JyZWN0bHkgc2V0cyBkZWZhdWx0IHByb3BlcnRpZXNcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRWMyVGFza0RlZicpO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpUYXNrRGVmaW5pdGlvblwiLCB7XG4gICAgICAgIEZhbWlseTogXCJFYzJUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbXSxcbiAgICAgICAgUGxhY2VtZW50Q29uc3RyYWludHM6IFtdLFxuICAgICAgICBWb2x1bWVzOiBbXSxcbiAgICAgICAgTmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5CcmlkZ2UsXG4gICAgICAgIFJlcXVpcmVzQ29tcGF0aWJpbGl0aWVzOiBbXCJFQzJcIl1cbiAgICAgIH0pKTtcblxuICAgICAgLy8gdGVzdCBlcnJvciBpZiBubyBjb250YWluZXIgZGVmcz9cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIG5ldHdvcmsgbW9kZVwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdFYzJUYXNrRGVmJywge1xuICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkF3c1ZwY1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgTmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5Bd3NWcGMsXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIGNvbnRhaW5lcnNcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG5cbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnKTtcblxuICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwid2ViXCIsIHtcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogNTEyIC8vIGFkZCB2YWxpZGF0aW9uP1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFRPRE8gdGVzdCBvdGhlciBjb250YWluZXJEZWZpbml0aW9uIG1ldGhvZHNcbiAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICBjb250YWluZXJQb3J0OiAzMDAwXG4gICAgICB9KTtcblxuICAgICAgY29udGFpbmVyLmFkZFVsaW1pdHMoe1xuICAgICAgICBoYXJkTGltaXQ6IDEyOCxcbiAgICAgICAgbmFtZTogZWNzLlVsaW1pdE5hbWUuUnNzLFxuICAgICAgICBzb2Z0TGltaXQ6IDEyOFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgRmFtaWx5OiBcIkVjMlRhc2tEZWZcIixcbiAgICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFt7XG4gICAgICAgICAgRXNzZW50aWFsOiB0cnVlLFxuICAgICAgICAgIE1lbW9yeTogNTEyLFxuICAgICAgICAgIEltYWdlOiBcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiLFxuICAgICAgICAgIExpbmtzOiBbXSxcbiAgICAgICAgICBMaW51eFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIENhcGFiaWxpdGllczoge1xuICAgICAgICAgICAgICBBZGQ6IFtdLFxuICAgICAgICAgICAgICBEcm9wOiBbXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIERldmljZXM6IFtdLFxuICAgICAgICAgICAgVG1wZnM6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNb3VudFBvaW50czogW10sXG4gICAgICAgICAgTmFtZTogXCJ3ZWJcIixcbiAgICAgICAgICBQb3J0TWFwcGluZ3M6IFt7XG4gICAgICAgICAgICBDb250YWluZXJQb3J0OiAzMDAwLFxuICAgICAgICAgICAgSG9zdFBvcnQ6IDAsXG4gICAgICAgICAgICBQcm90b2NvbDogUHJvdG9jb2wuVGNwXG4gICAgICAgICAgfV0sXG4gICAgICAgICAgVWxpbWl0czogW3tcbiAgICAgICAgICAgIEhhcmRMaW1pdDogMTI4LFxuICAgICAgICAgICAgTmFtZTogXCJyc3NcIixcbiAgICAgICAgICAgIFNvZnRMaW1pdDogMTI4XG4gICAgICAgICAgfV0sXG4gICAgICAgICAgVm9sdW1lc0Zyb206IFtdXG4gICAgICAgIH1dLFxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgXCJjb3JyZWN0bHkgc2V0cyBzY3JhdGNoIHNwYWNlXCIodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRWMyVGFza0RlZicpO1xuXG4gICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiA1MTJcbiAgICAgIH0pO1xuXG4gICAgICBjb250YWluZXIuYWRkU2NyYXRjaCh7XG4gICAgICAgIGNvbnRhaW5lclBhdGg6IFwiLi9jYWNoZVwiLFxuICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgc291cmNlUGF0aDogXCIvdG1wL2NhY2hlXCIsXG4gICAgICAgIG5hbWU6IFwic2NyYXRjaFwiXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgRmFtaWx5OiBcIkVjMlRhc2tEZWZcIixcbiAgICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFt7XG4gICAgICAgICAgTW91bnRQb2ludHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQ29udGFpbmVyUGF0aDogXCIuL2NhY2hlXCIsXG4gICAgICAgICAgICAgIFJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgICBTb3VyY2VWb2x1bWU6IFwic2NyYXRjaFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XSxcbiAgICAgICAgVm9sdW1lczogW3tcbiAgICAgICAgICBIb3N0OiB7XG4gICAgICAgICAgICBTb3VyY2VQYXRoOiBcIi90bXAvY2FjaGVcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgTmFtZTogXCJzY3JhdGNoXCJcbiAgICAgICAgfV1cbiAgICAgIH0pKTtcblxuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcblxuICAgIFwiY29ycmVjdGx5IHNldHMgdm9sdW1lc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHZvbHVtZSA9IHtcbiAgICAgICAgaG9zdDoge1xuICAgICAgICAgIHNvdXJjZVBhdGg6IFwiL3RtcC9jYWNoZVwiLFxuICAgICAgICB9LFxuICAgICAgICBuYW1lOiBcInNjcmF0Y2hcIlxuICAgICAgfTtcblxuICAgICAgLy8gQWRkaW5nIHZvbHVtZXMgdmlhIHByb3BzIGlzIGEgYml0IGNsdW5reVxuICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRWMyVGFza0RlZicsIHtcbiAgICAgICAgdm9sdW1lczogW3ZvbHVtZV1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiA1MTJcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0aGlzIG5lZWRzIHRvIGJlIGEgYmV0dGVyIEFQSSAtLSBzaG91bGQgYXV0by1hZGQgdm9sdW1lc1xuICAgICAgY29udGFpbmVyLmFkZE1vdW50UG9pbnRzKHtcbiAgICAgICAgY29udGFpbmVyUGF0aDogXCIuL2NhY2hlXCIsXG4gICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICBzb3VyY2VWb2x1bWU6IFwic2NyYXRjaFwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZShcIkFXUzo6RUNTOjpUYXNrRGVmaW5pdGlvblwiLCB7XG4gICAgICAgIEZhbWlseTogXCJFYzJUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbe1xuICAgICAgICAgIE1vdW50UG9pbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIENvbnRhaW5lclBhdGg6IFwiLi9jYWNoZVwiLFxuICAgICAgICAgICAgICBSZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgU291cmNlVm9sdW1lOiBcInNjcmF0Y2hcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfV0sXG4gICAgICAgIFZvbHVtZXM6IFt7XG4gICAgICAgICAgSG9zdDoge1xuICAgICAgICAgICAgU291cmNlUGF0aDogXCIvdG1wL2NhY2hlXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIE5hbWU6IFwic2NyYXRjaFwiXG4gICAgICAgIH1dXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImNvcnJlY3RseSBzZXRzIHBsYWNlbWVudCBjb25zdHJhaW50c1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgICAgIHBsYWNlbWVudENvbnN0cmFpbnRzOiBbe1xuICAgICAgICAgIGV4cHJlc3Npb246IFwiYXR0cmlidXRlOmVjcy5pbnN0YW5jZS10eXBlID1+IHQyLipcIixcbiAgICAgICAgICB0eXBlOiBlY3MuUGxhY2VtZW50Q29uc3RyYWludFR5cGUuTWVtYmVyT2ZcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6VGFza0RlZmluaXRpb25cIiwge1xuICAgICAgICBQbGFjZW1lbnRDb25zdHJhaW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEV4cHJlc3Npb246IFwiYXR0cmlidXRlOmVjcy5pbnN0YW5jZS10eXBlID1+IHQyLipcIixcbiAgICAgICAgICAgIFR5cGU6IFwibWVtYmVyT2ZcIlxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgXCJjb3JyZWN0bHkgc2V0cyB0YXNrUm9sZVwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0VjMlRhc2tEZWYnLCB7XG4gICAgICAgIHRhc2tSb2xlOiBuZXcgaWFtLlJvbGUoc3RhY2ssICdUYXNrUm9sZScsIHtcbiAgICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWNzLXRhc2tzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiA1MTJcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkVDUzo6VGFza0RlZmluaXRpb25cIiwge1xuICAgICAgICBUYXNrUm9sZUFybjogY2RrLnJlc29sdmUodGFza0RlZmluaXRpb24udGFza1JvbGUucm9sZUFybilcbiAgICAgIH0pKTtcblxuICAgICAgdGVzdC5kb25lKCk7XG4gICAgfSxcbiAgfVxufTtcbiJdfQ==

@@ -762,2 +762,15 @@ {

"Resource": "*"
},
{
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow",
"Resource": {
"Fn::GetAtt": [
"FargateServiceLoggingLogGroup9B16742A",
"Arn"
]
}
}

@@ -892,3 +905,6 @@ ],

"Type": "application"
}
},
"DependsOn": [
"VpcIGWD7BA715C"
]
},

@@ -895,0 +911,0 @@ "FargateServiceLBSecurityGroup5F444C78": {

@@ -70,5 +70,2 @@ {

"Type": "AWS::EC2::Route",
"DependsOn": [
"VpcVPCGWBF912B6E"
],
"Properties": {

@@ -82,3 +79,6 @@ "RouteTableId": {

}
}
},
"DependsOn": [
"VpcVPCGWBF912B6E"
]
},

@@ -163,5 +163,2 @@ "VpcPublicSubnet1EIPD7E02669": {

"Type": "AWS::EC2::Route",
"DependsOn": [
"VpcVPCGWBF912B6E"
],
"Properties": {

@@ -175,3 +172,6 @@ "RouteTableId": {

}
}
},
"DependsOn": [
"VpcVPCGWBF912B6E"
]
},

@@ -588,3 +588,6 @@ "VpcPublicSubnet2EIP3C605A87": {

"Type": "application"
}
},
"DependsOn": [
"VpcIGWD7BA715C"
]
},

@@ -677,2 +680,2 @@ "LBSecurityGroup8A41EA2B": {

}
}
}

@@ -8,3 +8,6 @@ import { Test } from 'nodeunit';

};
"When setting up a health check": {
'grace period is respected'(test: Test): void;
};
};
export = _default;

@@ -6,2 +6,3 @@ "use strict";

const ecs = require("../../lib");
const lib_1 = require("../../lib");
module.exports = {

@@ -108,3 +109,3 @@ "When creating a Fargate Service": {

// THEN
assert_1.expect(stack).to(assert_1.haveResource("AWS::ECS::Service", {
assert_1.expect(stack).to(assert_1.haveResourceLike("AWS::ECS::Service", {
NetworkConfiguration: {

@@ -118,4 +119,27 @@ AwsvpcConfiguration: {

},
}
},
"When setting up a health check": {
'grace period is respected'(test) {
// GIVEN
const stack = new cdk.Stack();
const vpc = new ec2.VpcNetwork(stack, 'MyVpc', {});
const cluster = new ecs.Cluster(stack, 'EcsCluster', { vpc });
const taskDefinition = new ecs.FargateTaskDefinition(stack, 'FargateTaskDef');
taskDefinition.addContainer('MainContainer', {
image: lib_1.ContainerImage.fromDockerHub('hello'),
});
// WHEN
new ecs.FargateService(stack, 'Svc', {
cluster,
taskDefinition,
healthCheckGracePeriodSeconds: 10
});
// THEN
assert_1.expect(stack).to(assert_1.haveResource('AWS::ECS::Service', {
HealthCheckGracePeriodSeconds: 10
}));
test.done();
},
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5mYXJnYXRlLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0LmZhcmdhdGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQXVEO0FBQ3ZELHdDQUF5QztBQUN6QyxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBRWxDLGlCQUFTO0lBQ1AsaUNBQWlDLEVBQUU7UUFDakMseUVBQXlFLENBQUMsSUFBVTtZQUNsRixRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTlFLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUM7YUFDcEUsQ0FBQyxDQUFDO1lBRUgsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDOUMsT0FBTztnQkFDUCxjQUFjO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDakQsY0FBYyxFQUFFO29CQUNkLEdBQUcsRUFBRSx3QkFBd0I7aUJBQzlCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxHQUFHLEVBQUUsb0JBQW9CO2lCQUMx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Q1AsY0FBYztnQkFDZCxjQUFjLEVBQUUsSUFBSTthQUNyQixDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLG1CQUFtQixFQUFFO2dCQUNqRCxvQkFBb0IsRUFBRTtvQkFDcEIsbUJBQW1CLEVBQUU7d0JBQ25CLGNBQWMsRUFBRSxTQUFTO3FCQUMxQjtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uLy4uL2xpYicpO1xuXG5leHBvcnQgPSB7XG4gIFwiV2hlbiBjcmVhdGluZyBhIEZhcmdhdGUgU2VydmljZVwiOiB7XG4gICAgXCJ3aXRoIG9ubHkgcmVxdWlyZWQgcHJvcGVydGllcyBzZXQsIGl0IGNvcnJlY3RseSBzZXRzIGRlZmF1bHQgcHJvcGVydGllc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ015VnBjJywge30pO1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0Vjc0NsdXN0ZXInLCB7IHZwYyB9KTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oc3RhY2ssICdGYXJnYXRlVGFza0RlZicpO1xuXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICB9KTtcblxuICAgICAgbmV3IGVjcy5GYXJnYXRlU2VydmljZShzdGFjaywgXCJGYXJnYXRlU2VydmljZVwiLCB7XG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIHRhc2tEZWZpbml0aW9uXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6U2VydmljZVwiLCB7XG4gICAgICAgIFRhc2tEZWZpbml0aW9uOiB7XG4gICAgICAgICAgUmVmOiBcIkZhcmdhdGVUYXNrRGVmQzZGQjYwQjRcIlxuICAgICAgICB9LFxuICAgICAgICBDbHVzdGVyOiB7XG4gICAgICAgICAgUmVmOiBcIkVjc0NsdXN0ZXI5NzI0MkI4NFwiXG4gICAgICAgIH0sXG4gICAgICAgIERlcGxveW1lbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgTWF4aW11bVBlcmNlbnQ6IDIwMCxcbiAgICAgICAgICBNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IDUwXG4gICAgICAgIH0sXG4gICAgICAgIERlc2lyZWRDb3VudDogMSxcbiAgICAgICAgTGF1bmNoVHlwZTogXCJGQVJHQVRFXCIsXG4gICAgICAgIExvYWRCYWxhbmNlcnM6IFtdLFxuICAgICAgICBOZXR3b3JrQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIEF3c3ZwY0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIEFzc2lnblB1YmxpY0lwOiBcIkRJU0FCTEVEXCIsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIFwiRmFyZ2F0ZVNlcnZpY2VTZWN1cml0eUdyb3VwMEEwRTc5Q0JcIixcbiAgICAgICAgICAgICAgICAgIFwiR3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgU3VibmV0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgUmVmOiBcIk15VnBjUHJpdmF0ZVN1Ym5ldDFTdWJuZXQ1MDU3Q0Y3RVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBSZWY6IFwiTXlWcGNQcml2YXRlU3VibmV0MlN1Ym5ldDAwNDBDOTgzXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFJlZjogXCJNeVZwY1ByaXZhdGVTdWJuZXQzU3VibmV0NzcyRDZBRDdcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgICBHcm91cERlc2NyaXB0aW9uOiBcIkZhcmdhdGVTZXJ2aWNlL1NlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgU2VjdXJpdHlHcm91cEVncmVzczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIENpZHJJcDogXCIwLjAuMC4wLzBcIixcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiBcIkFsbG93IGFsbCBvdXRib3VuZCB0cmFmZmljIGJ5IGRlZmF1bHRcIixcbiAgICAgICAgICAgIElwUHJvdG9jb2w6IFwiLTFcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgU2VjdXJpdHlHcm91cEluZ3Jlc3M6IFtdLFxuICAgICAgICBWcGNJZDoge1xuICAgICAgICAgIFJlZjogXCJNeVZwY0Y5RjBDQTZGXCJcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgXCJlcnJvcnMgd2hlbiBubyBjb250YWluZXIgc3BlY2lmaWVkIG9uIHRhc2sgZGVmaW5pdGlvblwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ015VnBjJywge30pO1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0Vjc0NsdXN0ZXInLCB7IHZwYyB9KTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oc3RhY2ssICdGYXJnYXRlVGFza0RlZicpO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICB0ZXN0LnRocm93cygoKSA9PiB7XG4gICAgICAgIG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssIFwiRmFyZ2F0ZVNlcnZpY2VcIiwge1xuICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImFsbG93cyBzcGVjaWZ5aW5nIGFzc2lnblB1YmxpY0lQIGFzIGVuYWJsZWRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdNeVZwYycsIHt9KTtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIoc3RhY2ssICdFY3NDbHVzdGVyJywgeyB2cGMgfSk7XG4gICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRmFyZ2F0ZVRhc2tEZWYnKTtcblxuICAgICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwid2ViXCIsIHtcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssIFwiRmFyZ2F0ZVNlcnZpY2VcIiwge1xuICAgICAgICBjbHVzdGVyLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbixcbiAgICAgICAgYXNzaWduUHVibGljSXA6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgICAgTmV0d29ya0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBBd3N2cGNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBBc3NpZ25QdWJsaWNJcDogXCJFTkFCTEVEXCIsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG4gIH1cbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5mYXJnYXRlLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0LmZhcmdhdGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQXlFO0FBQ3pFLHdDQUF5QztBQUN6QyxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBQ2xDLG1DQUEyQztBQUUzQyxpQkFBUztJQUNQLGlDQUFpQyxFQUFFO1FBQ2pDLHlFQUF5RSxDQUFDLElBQVU7WUFDbEYsUUFBUTtZQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUU5RSxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDakMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDO2FBQ3BFLENBQUMsQ0FBQztZQUVILElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzlDLE9BQU87Z0JBQ1AsY0FBYzthQUNmLENBQUMsQ0FBQztZQUVILE9BQU87WUFDUCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ2pELGNBQWMsRUFBRTtvQkFDZCxHQUFHLEVBQUUsd0JBQXdCO2lCQUM5QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxFQUFFLG9CQUFvQjtpQkFDMUI7Z0JBQ0QsdUJBQXVCLEVBQUU7b0JBQ3ZCLGNBQWMsRUFBRSxHQUFHO29CQUNuQixxQkFBcUIsRUFBRSxFQUFFO2lCQUMxQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQztnQkFDZixVQUFVLEVBQUUsU0FBUztnQkFDckIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFO29CQUNwQixtQkFBbUIsRUFBRTt3QkFDbkIsY0FBYyxFQUFFLFVBQVU7d0JBQzFCLGNBQWMsRUFBRTs0QkFDZDtnQ0FDRSxZQUFZLEVBQUU7b0NBQ1oscUNBQXFDO29DQUNyQyxTQUFTO2lDQUNWOzZCQUNGO3lCQUNGO3dCQUNELE9BQU8sRUFBRTs0QkFDUDtnQ0FDRSxHQUFHLEVBQUUsbUNBQW1DOzZCQUN6Qzs0QkFDRDtnQ0FDRSxHQUFHLEVBQUUsbUNBQW1DOzZCQUN6Qzs0QkFDRDtnQ0FDRSxHQUFHLEVBQUUsbUNBQW1DOzZCQUN6Qzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1lBRUosZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLHlCQUF5QixFQUFFO2dCQUN2RCxnQkFBZ0IsRUFBRSw4QkFBOEI7Z0JBQ2hELG1CQUFtQixFQUFFO29CQUNuQjt3QkFDRSxNQUFNLEVBQUUsV0FBVzt3QkFDbkIsV0FBVyxFQUFFLHVDQUF1Qzt3QkFDcEQsVUFBVSxFQUFFLElBQUk7cUJBQ2pCO2lCQUNGO2dCQUNELG9CQUFvQixFQUFFLEVBQUU7Z0JBQ3hCLEtBQUssRUFBRTtvQkFDTCxHQUFHLEVBQUUsZUFBZTtpQkFDckI7YUFDRixDQUFDLENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCx1REFBdUQsQ0FBQyxJQUFVO1lBQ2hFLFFBQVE7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFOUUsT0FBTztZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7b0JBQzlDLE9BQU87b0JBQ1AsY0FBYztpQkFDZixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCw2Q0FBNkMsQ0FBQyxJQUFVO1lBQ3RELFFBQVE7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFOUUsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBQzthQUNwRSxDQUFDLENBQUM7WUFFSCxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO2dCQUM5QyxPQUFPO2dCQUNQLGNBQWM7Z0JBQ2QsY0FBYyxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFDO1lBRUgsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQWdCLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3JELG9CQUFvQixFQUFFO29CQUNwQixtQkFBbUIsRUFBRTt3QkFDbkIsY0FBYyxFQUFFLFNBQVM7cUJBQzFCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0tBQ0Y7SUFFRCxnQ0FBZ0MsRUFBRTtRQUNoQywyQkFBMkIsQ0FBQyxJQUFVO1lBQ3BDLFFBQVE7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDOUUsY0FBYyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUU7Z0JBQzNDLEtBQUssRUFBRSxvQkFBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7YUFDN0MsQ0FBQyxDQUFDO1lBRUgsT0FBTztZQUNQLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUNuQyxPQUFPO2dCQUNQLGNBQWM7Z0JBQ2QsNkJBQTZCLEVBQUUsRUFBRTthQUNsQyxDQUFDLENBQUM7WUFFSCxPQUFPO1lBQ1AsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLG1CQUFtQixFQUFFO2dCQUNqRCw2QkFBNkIsRUFBRSxFQUFFO2FBQ2xDLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uLy4uL2xpYicpO1xuaW1wb3J0IHsgQ29udGFpbmVySW1hZ2UgfSBmcm9tICcuLi8uLi9saWInO1xuXG5leHBvcnQgPSB7XG4gIFwiV2hlbiBjcmVhdGluZyBhIEZhcmdhdGUgU2VydmljZVwiOiB7XG4gICAgXCJ3aXRoIG9ubHkgcmVxdWlyZWQgcHJvcGVydGllcyBzZXQsIGl0IGNvcnJlY3RseSBzZXRzIGRlZmF1bHQgcHJvcGVydGllc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ015VnBjJywge30pO1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0Vjc0NsdXN0ZXInLCB7IHZwYyB9KTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oc3RhY2ssICdGYXJnYXRlVGFza0RlZicpO1xuXG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJ3ZWJcIiwge1xuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCJhbWF6b24vYW1hem9uLWVjcy1zYW1wbGVcIiksXG4gICAgICB9KTtcblxuICAgICAgbmV3IGVjcy5GYXJnYXRlU2VydmljZShzdGFjaywgXCJGYXJnYXRlU2VydmljZVwiLCB7XG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIHRhc2tEZWZpbml0aW9uXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6U2VydmljZVwiLCB7XG4gICAgICAgIFRhc2tEZWZpbml0aW9uOiB7XG4gICAgICAgICAgUmVmOiBcIkZhcmdhdGVUYXNrRGVmQzZGQjYwQjRcIlxuICAgICAgICB9LFxuICAgICAgICBDbHVzdGVyOiB7XG4gICAgICAgICAgUmVmOiBcIkVjc0NsdXN0ZXI5NzI0MkI4NFwiXG4gICAgICAgIH0sXG4gICAgICAgIERlcGxveW1lbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgTWF4aW11bVBlcmNlbnQ6IDIwMCxcbiAgICAgICAgICBNaW5pbXVtSGVhbHRoeVBlcmNlbnQ6IDUwXG4gICAgICAgIH0sXG4gICAgICAgIERlc2lyZWRDb3VudDogMSxcbiAgICAgICAgTGF1bmNoVHlwZTogXCJGQVJHQVRFXCIsXG4gICAgICAgIExvYWRCYWxhbmNlcnM6IFtdLFxuICAgICAgICBOZXR3b3JrQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIEF3c3ZwY0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIEFzc2lnblB1YmxpY0lwOiBcIkRJU0FCTEVEXCIsXG4gICAgICAgICAgICBTZWN1cml0eUdyb3VwczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgICAgIFwiRmFyZ2F0ZVNlcnZpY2VTZWN1cml0eUdyb3VwMEEwRTc5Q0JcIixcbiAgICAgICAgICAgICAgICAgIFwiR3JvdXBJZFwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgU3VibmV0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgUmVmOiBcIk15VnBjUHJpdmF0ZVN1Ym5ldDFTdWJuZXQ1MDU3Q0Y3RVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBSZWY6IFwiTXlWcGNQcml2YXRlU3VibmV0MlN1Ym5ldDAwNDBDOTgzXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFJlZjogXCJNeVZwY1ByaXZhdGVTdWJuZXQzU3VibmV0NzcyRDZBRDdcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgICBHcm91cERlc2NyaXB0aW9uOiBcIkZhcmdhdGVTZXJ2aWNlL1NlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgU2VjdXJpdHlHcm91cEVncmVzczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIENpZHJJcDogXCIwLjAuMC4wLzBcIixcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiBcIkFsbG93IGFsbCBvdXRib3VuZCB0cmFmZmljIGJ5IGRlZmF1bHRcIixcbiAgICAgICAgICAgIElwUHJvdG9jb2w6IFwiLTFcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgU2VjdXJpdHlHcm91cEluZ3Jlc3M6IFtdLFxuICAgICAgICBWcGNJZDoge1xuICAgICAgICAgIFJlZjogXCJNeVZwY0Y5RjBDQTZGXCJcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuXG4gICAgXCJlcnJvcnMgd2hlbiBubyBjb250YWluZXIgc3BlY2lmaWVkIG9uIHRhc2sgZGVmaW5pdGlvblwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ015VnBjJywge30pO1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0Vjc0NsdXN0ZXInLCB7IHZwYyB9KTtcbiAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oc3RhY2ssICdGYXJnYXRlVGFza0RlZicpO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICB0ZXN0LnRocm93cygoKSA9PiB7XG4gICAgICAgIG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssIFwiRmFyZ2F0ZVNlcnZpY2VcIiwge1xuICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICBcImFsbG93cyBzcGVjaWZ5aW5nIGFzc2lnblB1YmxpY0lQIGFzIGVuYWJsZWRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdNeVZwYycsIHt9KTtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIoc3RhY2ssICdFY3NDbHVzdGVyJywgeyB2cGMgfSk7XG4gICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRmFyZ2F0ZVRhc2tEZWYnKTtcblxuICAgICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwid2ViXCIsIHtcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIpLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssIFwiRmFyZ2F0ZVNlcnZpY2VcIiwge1xuICAgICAgICBjbHVzdGVyLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbixcbiAgICAgICAgYXNzaWduUHVibGljSXA6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OkVDUzo6U2VydmljZVwiLCB7XG4gICAgICAgIE5ldHdvcmtDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgQXdzdnBjQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgQXNzaWduUHVibGljSXA6IFwiRU5BQkxFRFwiLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuICB9LFxuXG4gIFwiV2hlbiBzZXR0aW5nIHVwIGEgaGVhbHRoIGNoZWNrXCI6IHtcbiAgICAnZ3JhY2UgcGVyaW9kIGlzIHJlc3BlY3RlZCcodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGNOZXR3b3JrKHN0YWNrLCAnTXlWcGMnLCB7fSk7XG4gICAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnRWNzQ2x1c3RlcicsIHsgdnBjIH0pO1xuICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0ZhcmdhdGVUYXNrRGVmJyk7XG4gICAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoJ01haW5Db250YWluZXInLCB7XG4gICAgICAgIGltYWdlOiBDb250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKCdoZWxsbycpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssICdTdmMnLCB7XG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgICBoZWFsdGhDaGVja0dyYWNlUGVyaW9kU2Vjb25kczogMTBcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFQ1M6OlNlcnZpY2UnLCB7XG4gICAgICAgIEhlYWx0aENoZWNrR3JhY2VQZXJpb2RTZWNvbmRzOiAxMFxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==

@@ -12,3 +12,3 @@ "use strict";

// THEN
assert_1.expect(stack).to(assert_1.haveResource("AWS::ECS::TaskDefinition", {
assert_1.expect(stack).to(assert_1.haveResourceLike("AWS::ECS::TaskDefinition", {
Family: "FargateTaskDef",

@@ -27,2 +27,2 @@ ContainerDefinitions: [],

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5mYXJnYXRlLXRhc2stZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuZmFyZ2F0ZS10YXNrLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF1RDtBQUN2RCxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBRWxDLGlCQUFTO0lBQ1AseUNBQXlDLEVBQUU7UUFDekMseUVBQXlFLENBQUMsSUFBVTtZQUNsRixRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFdkQsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQywwQkFBMEIsRUFBRTtnQkFDeEQsTUFBTSxFQUFFLGdCQUFnQjtnQkFDeEIsb0JBQW9CLEVBQUUsRUFBRTtnQkFDeEIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtnQkFDbkMsdUJBQXVCLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLEdBQUcsRUFBRSxLQUFLO2dCQUNWLE1BQU0sRUFBRSxLQUFLO2FBQ2QsQ0FBQyxDQUFDLENBQUM7WUFFSixtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgZWNzID0gcmVxdWlyZSgnLi4vLi4vbGliJyk7XG5cbmV4cG9ydCA9IHtcbiAgXCJXaGVuIGNyZWF0aW5nIGFuIEZhcmdhdGUgVGFza0RlZmluaXRpb25cIjoge1xuICAgIFwid2l0aCBvbmx5IHJlcXVpcmVkIHByb3BlcnRpZXMgc2V0LCBpdCBjb3JyZWN0bHkgc2V0cyBkZWZhdWx0IHByb3BlcnRpZXNcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbihzdGFjaywgJ0ZhcmdhdGVUYXNrRGVmJyk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgRmFtaWx5OiBcIkZhcmdhdGVUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbXSxcbiAgICAgICAgVm9sdW1lczogW10sXG4gICAgICAgIE5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICBSZXF1aXJlc0NvbXBhdGliaWxpdGllczogW1wiRkFSR0FURVwiXSxcbiAgICAgICAgQ3B1OiBcIjI1NlwiLFxuICAgICAgICBNZW1vcnk6IFwiNTEyXCIsXG4gICAgICB9KSk7XG5cbiAgICAgIC8vIHRlc3QgZXJyb3IgaWYgbm8gY29udGFpbmVyIGRlZnM/XG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5mYXJnYXRlLXRhc2stZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuZmFyZ2F0ZS10YXNrLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUEyRDtBQUMzRCxvQ0FBcUM7QUFFckMsaUNBQWtDO0FBRWxDLGlCQUFTO0lBQ1AseUNBQXlDLEVBQUU7UUFDekMseUVBQXlFLENBQUMsSUFBVTtZQUNsRixRQUFRO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFdkQsT0FBTztZQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQWdCLENBQUMsMEJBQTBCLEVBQUU7Z0JBQzVELE1BQU0sRUFBRSxnQkFBZ0I7Z0JBQ3hCLG9CQUFvQixFQUFFLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07Z0JBQ25DLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxHQUFHLEVBQUUsS0FBSztnQkFDVixNQUFNLEVBQUUsS0FBSzthQUNkLENBQUMsQ0FBQyxDQUFDO1lBRUosbUNBQW1DO1lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBlY3QsIGhhdmVSZXNvdXJjZUxpa2UgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCBlY3MgPSByZXF1aXJlKCcuLi8uLi9saWInKTtcblxuZXhwb3J0ID0ge1xuICBcIldoZW4gY3JlYXRpbmcgYW4gRmFyZ2F0ZSBUYXNrRGVmaW5pdGlvblwiOiB7XG4gICAgXCJ3aXRoIG9ubHkgcmVxdWlyZWQgcHJvcGVydGllcyBzZXQsIGl0IGNvcnJlY3RseSBzZXRzIGRlZmF1bHQgcHJvcGVydGllc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgIG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHN0YWNrLCAnRmFyZ2F0ZVRhc2tEZWYnKTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uXCIsIHtcbiAgICAgICAgRmFtaWx5OiBcIkZhcmdhdGVUYXNrRGVmXCIsXG4gICAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbXSxcbiAgICAgICAgVm9sdW1lczogW10sXG4gICAgICAgIE5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICBSZXF1aXJlc0NvbXBhdGliaWxpdGllczogW1wiRkFSR0FURVwiXSxcbiAgICAgICAgQ3B1OiBcIjI1NlwiLFxuICAgICAgICBNZW1vcnk6IFwiNTEyXCIsXG4gICAgICB9KSk7XG5cbiAgICAgIC8vIHRlc3QgZXJyb3IgaWYgbm8gY29udGFpbmVyIGRlZnM/XG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9LFxuICB9XG59O1xuIl19

@@ -225,3 +225,3 @@ "use strict";

// THEN
assert_1.expect(stack).to(assert_1.haveResource('AWS::ECS::TaskDefinition', {
assert_1.expect(stack).to(assert_1.haveResourceLike('AWS::ECS::TaskDefinition', {
ContainerDefinitions: [

@@ -240,2 +240,14 @@ {

}));
assert_1.expect(stack).to(assert_1.haveResource('AWS::IAM::Policy', {
PolicyDocument: {
Statement: [
{
Action: ["logs:CreateLogStream", "logs:PutLogEvents"],
Effect: "Allow",
Resource: { "Fn::GetAtt": ["LoggingLogGroupC6B8E20B", "Arn"] }
}
],
Version: "2012-10-17"
}
}));
test.done();

@@ -257,3 +269,3 @@ },

// THEN
assert_1.expect(stack).to(assert_1.haveResource('AWS::ECS::TaskDefinition', {
assert_1.expect(stack).to(assert_1.haveResourceLike('AWS::ECS::TaskDefinition', {
ContainerDefinitions: [

@@ -289,3 +301,3 @@ {

// THEN
assert_1.expect(stack).to(assert_1.haveResource('AWS::ECS::TaskDefinition', {
assert_1.expect(stack).to(assert_1.haveResourceLike('AWS::ECS::TaskDefinition', {
ContainerDefinitions: [

@@ -306,2 +318,2 @@ {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb250YWluZXItZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuY29udGFpbmVyLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF1RDtBQUN2RCxvQ0FBcUM7QUFFckMsOEJBQStCO0FBRS9CLGlCQUFTO0lBQ1AsaUNBQWlDLEVBQUU7UUFDakMsZ0NBQWdDO1FBQ2hDLDBCQUEwQixFQUFFO1lBQzFCLGdEQUFnRCxDQUFDLElBQVU7Z0JBQ3pELFFBQVE7Z0JBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7b0JBQ2pFLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07aUJBQ3BDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtvQkFDekQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDO29CQUMvRCxjQUFjLEVBQUUsSUFBSTtpQkFDckIsQ0FBQyxDQUFDO2dCQUVILE9BQU87Z0JBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsU0FBUyxDQUFDLGVBQWUsQ0FBQzt3QkFDeEIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1lBRUQseUJBQXlCLENBQUMsSUFBVTtnQkFDbEMsUUFBUTtnQkFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxjQUFjLEdBQUcsSUFB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QUVILE9BQU87UUFDUCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsMEJBQTBCLEVBQUU7WUFDeEQsb0JBQW9CLEVBQUU7Z0JBQ3BCO29CQUNFLFdBQVcsRUFBRTt3QkFDWCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO3dCQUNqQyxRQUFRLEVBQUUsRUFBRTt3QkFDWixPQUFPLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsQ0FBQzt3QkFDVixXQUFXLEVBQUUsRUFBRTtxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBlY3QsIGhhdmVSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2Fzc2VydCc7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uL2xpYicpO1xuXG5leHBvcnQgPSB7XG4gIFwiV2hlbiBjcmVhdGluZyBhIFRhc2sgRGVmaW5pdGlvblwiOiB7XG4gICAgLy8gVmFsaWRhdGluZyBwb3J0TWFwcGluZyBpbnB1dHNcbiAgICBcIldpdGggbmV0d29yayBtb2RlIEF3c1ZwY1wiOiB7XG4gICAgICBcIkhvc3QgcG9ydCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgY29udGFpbmVyIHBvcnRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgICAgICBob3N0UG9ydDogODA4MVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG5cbiAgICAgIFwiSG9zdCBwb3J0IGNhbiBiZSBlbXB0eSBcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU4gbm8gZXhjZXB0aW9uIHJhaXNlZFxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgSG9zdCBcIjoge1xuICAgICAgXCJIb3N0IHBvcnQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbnRhaW5lciBwb3J0XCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkhvc3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgdGVzdC50aHJvd3MoKCkgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgICAgY29udGFpbmVyUG9ydDogODA4MCxcbiAgICAgICAgICAgIGhvc3RQb3J0OiA4MDgxXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3QuZG9uZSgpO1xuICAgICAgfSxcblxuICAgICAgXCJIb3N0IHBvcnQgY2FuIGJlIGVtcHR5IFwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgICAgLy8gR0lWRU5cbiAgICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ1Rhc2tEZWYnLCB7XG4gICAgICAgICAgbmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5Ib3N0LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU4gbm8gZXhjZXB0aW9uIHJhaXNlZFxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG5cbiAgICAgIFwiZXJyb3JzIHdoZW4gYWRkaW5nIGxpbmtzXCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkhvc3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkxvZ2dpbmdDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIm15TG9nZ2VyXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAxMDI0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICBjb250YWluZXIuYWRkTGluayhsb2dnZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgQnJpZGdlXCI6IHtcbiAgICAgIFwiYWxsb3dzIGFkZGluZyBsaW5rc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgICAgLy8gR0lWRU5cbiAgICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ1Rhc2tEZWYnLCB7XG4gICAgICAgICAgbmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5CcmlkZ2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkxvZ2dpbmdDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIm15TG9nZ2VyXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAxMDI0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRMaW5rKGxvZ2dlcik7XG5cbiAgICAgICAgdGVzdC5kb25lKCk7XG4gICAgICB9LFxuICAgIH1cblxuICB9LFxuICBcIkluZ3Jlc3MgUG9ydFwiOiB7XG4gICAgXCJXaXRoIG5ldHdvcmsgbW9kZSBBd3NWcGNcIjoge1xuICAgICAgXCJJbmdyZXNzIHBvcnQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbnRhaW5lciBwb3J0XCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkF3c1ZwYyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgwLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSA4MDgwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFwiSW5ncmVzcyBwb3J0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBjb250YWluZXIgcG9ydFwiKTtcbiAgICAgICAgdGVzdC5kb25lKCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgXCJXaXRoIG5ldHdvcmsgbW9kZSBIb3N0IFwiOiB7XG4gICAgICBcIkluZ3Jlc3MgcG9ydCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgY29udGFpbmVyIHBvcnRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuSG9zdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgwLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSA4MDgwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgQnJpZGdlXCI6IHtcbiAgICAgIFwiSW5ncmVzcyBwb3J0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBob3N0IHBvcnQgaWYgc3VwcGxpZWRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQnJpZGdlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgICAgaG9zdFBvcnQ6IDgwODEsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhY3R1YWwgPSBjb250YWluZXIuaW5ncmVzc1BvcnQ7XG5cbiAgICAgICAgLy8gVEhFTlxuICAgICAgICBjb25zdCBleHBlY3RlZCA9IDgwODE7XG4gICAgICAgIHRlc3QuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCk7XG4gICAgICAgIHRlc3QuZG9uZSgpO1xuICAgICAgfSxcblxuICAgICAgXCJJbmdyZXNzIHBvcnQgc2hvdWxkIGJlIDAgaWYgbm90IHN1cHBsaWVkXCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkJyaWRnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgxLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSAwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcblxuICAnY2FuIGFkZCBBV1MgbG9nZ2luZyB0byBjb250YWluZXIgZGVmaW5pdGlvbicodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicpO1xuXG4gICAgLy8gV0hFTlxuICAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udCcsIHtcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDEwMjQsXG4gICAgICBsb2dnaW5nOiBuZXcgZWNzLkF3c0xvZ0RyaXZlcihzdGFjaywgJ0xvZ2dpbmcnLCB7IHN0cmVhbVByZWZpeDogJ3ByZWZpeCcgfSlcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uJywge1xuICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIExvZ0RyaXZlcjogXCJhd3Nsb2dzXCIsXG4gICAgICAgICAgICBPcHRpb25zOiB7XG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1ncm91cFwiOiB7IFJlZjogXCJMb2dnaW5nTG9nR3JvdXBDNkI4RTIwQlwiIH0sXG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1zdHJlYW0tcHJlZml4XCI6IFwicHJlZml4XCIsXG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1yZWdpb25cIjogeyBSZWY6IFwiQVdTOjpSZWdpb25cIiB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuICAnY2FuIHNldCBIZWFsdGggQ2hlY2sgd2l0aCBkZWZhdWx0cycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicpO1xuICAgIGNvbnN0IGhjQ29tbWFuZCA9IFwiY3VybCBsb2NhbGhvc3Q6ODAwMFwiO1xuXG4gICAgLy8gV0hFTlxuICAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udCcsIHtcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDEwMjQsXG4gICAgICBoZWFsdGhDaGVjazoge1xuICAgICAgICBjb21tYW5kOiBbaGNDb21tYW5kXVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nLCB7XG4gICAgICBDb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgSGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgICAgIENvbW1hbmQ6IFtcIkNNRC1TSEVMTFwiLCBoY0NvbW1hbmRdLFxuICAgICAgICAgICAgSW50ZXJ2YWw6IDMwLFxuICAgICAgICAgICAgUmV0cmllczogMyxcbiAgICAgICAgICAgIFRpbWVvdXQ6IDVcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2NhbiBzcGVjaWZ5IEhlYWx0aCBDaGVjayB2YWx1ZXMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ1Rhc2tEZWYnKTtcbiAgICBjb25zdCBoY0NvbW1hbmQgPSBcImN1cmwgbG9jYWxob3N0OjgwMDBcIjtcblxuICAgIC8vIFdIRU5cbiAgICB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoJ2NvbnQnLCB7XG4gICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoJ3Rlc3QnKSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiAxMDI0LFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgY29tbWFuZDogW2hjQ29tbWFuZF0sXG4gICAgICAgIGludGVydmFsU2Vjb25kczogMjAsXG4gICAgICAgIHJldHJpZXM6IDUsXG4gICAgICAgIHN0YXJ0UGVyaW9kOiAxMFxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nLCB7XG4gICAgICBDb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgSGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgICAgIENvbW1hbmQ6IFtcIkNNRC1TSEVMTFwiLCBoY0NvbW1hbmRdLFxuICAgICAgICAgICAgSW50ZXJ2YWw6IDIwLFxuICAgICAgICAgICAgUmV0cmllczogNSxcbiAgICAgICAgICAgIFRpbWVvdXQ6IDUsXG4gICAgICAgICAgICBTdGFydFBlcmlvZDogMTBcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgLy8gcmVuZGVyIGV4dHJhIGhvc3RzIHRlc3Rcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb250YWluZXItZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuY29udGFpbmVyLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF5RTtBQUN6RSxvQ0FBcUM7QUFFckMsOEJBQStCO0FBRS9CLGlCQUFTO0lBQ1AsaUNBQWlDLEVBQUU7UUFDakMsZ0NBQWdDO1FBQ2hDLDBCQUEwQixFQUFFO1lBQzFCLGdEQUFnRCxDQUFDLElBQVU7Z0JBQ3pELFFBQVE7Z0JBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7b0JBQ2pFLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07aUJBQ3BDLENBQUMsQ0FBQztnQkFFSCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRTtvQkFDekQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDO29CQUMvRCxjQUFjLEVBQUUsSUFBSTtpQkFDckIsQ0FBQyxDQUFDO2dCQUVILE9BQU87Z0JBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsU0FBUyxDQUFDLGVBQWUsQ0FBQzt3QkFDeEIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1lBRUQseUJBQXlCLENBQUMsSUFBVTtnQkFDbEMsUUFBUTtnQkFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxjQUFjLEdBQUcsSUFB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QUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUM7UUFFeEMsT0FBTztRQUNQLGNBQWMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ2xDLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDL0MsY0FBYyxFQUFFLElBQUk7WUFDcEIsV0FBVyxFQUFFO2dCQUNYLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDcEIsZUFBZSxFQUFFLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxDQUFDO2dCQUNWLFdBQVcsRUFBRSxFQUFFO2FBQ2hCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMseUJBQWdCLENBQUMsMEJBQTBCLEVBQUU7WUFDNUQsb0JBQW9CLEVBQUU7Z0JBQ3BCO29CQUNFLFdBQVcsRUFBRTt3QkFDWCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO3dCQUNqQyxRQUFRLEVBQUUsRUFBRTt3QkFDWixPQUFPLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUsQ0FBQzt3QkFDVixXQUFXLEVBQUUsRUFBRTtxQkFDaEI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBlY3QsIGhhdmVSZXNvdXJjZSwgaGF2ZVJlc291cmNlTGlrZSB9IGZyb20gJ0Bhd3MtY2RrL2Fzc2VydCc7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uL2xpYicpO1xuXG5leHBvcnQgPSB7XG4gIFwiV2hlbiBjcmVhdGluZyBhIFRhc2sgRGVmaW5pdGlvblwiOiB7XG4gICAgLy8gVmFsaWRhdGluZyBwb3J0TWFwcGluZyBpbnB1dHNcbiAgICBcIldpdGggbmV0d29yayBtb2RlIEF3c1ZwY1wiOiB7XG4gICAgICBcIkhvc3QgcG9ydCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgY29udGFpbmVyIHBvcnRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgICAgICBob3N0UG9ydDogODA4MVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG5cbiAgICAgIFwiSG9zdCBwb3J0IGNhbiBiZSBlbXB0eSBcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQXdzVnBjLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU4gbm8gZXhjZXB0aW9uIHJhaXNlZFxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgSG9zdCBcIjoge1xuICAgICAgXCJIb3N0IHBvcnQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbnRhaW5lciBwb3J0XCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkhvc3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgdGVzdC50aHJvd3MoKCkgPT4ge1xuICAgICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgICAgY29udGFpbmVyUG9ydDogODA4MCxcbiAgICAgICAgICAgIGhvc3RQb3J0OiA4MDgxXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3QuZG9uZSgpO1xuICAgICAgfSxcblxuICAgICAgXCJIb3N0IHBvcnQgY2FuIGJlIGVtcHR5IFwiKHRlc3Q6IFRlc3QpIHtcbiAgICAgICAgLy8gR0lWRU5cbiAgICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ1Rhc2tEZWYnLCB7XG4gICAgICAgICAgbmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5Ib3N0LFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRIRU4gbm8gZXhjZXB0aW9uIHJhaXNlZFxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG5cbiAgICAgIFwiZXJyb3JzIHdoZW4gYWRkaW5nIGxpbmtzXCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkhvc3QsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkxvZ2dpbmdDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIm15TG9nZ2VyXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAxMDI0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgICAgICBjb250YWluZXIuYWRkTGluayhsb2dnZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgQnJpZGdlXCI6IHtcbiAgICAgIFwiYWxsb3dzIGFkZGluZyBsaW5rc1wiKHRlc3Q6IFRlc3QpIHtcbiAgICAgICAgLy8gR0lWRU5cbiAgICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5FYzJUYXNrRGVmaW5pdGlvbihzdGFjaywgJ1Rhc2tEZWYnLCB7XG4gICAgICAgICAgbmV0d29ya01vZGU6IGVjcy5OZXR3b3JrTW9kZS5CcmlkZ2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkNvbnRhaW5lclwiLCB7XG4gICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKFwiL2F3cy9hd3MtZXhhbXBsZS1hcHBcIiksXG4gICAgICAgICAgbWVtb3J5TGltaXRNaUI6IDIwNDgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcihcIkxvZ2dpbmdDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIm15TG9nZ2VyXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAxMDI0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRMaW5rKGxvZ2dlcik7XG5cbiAgICAgICAgdGVzdC5kb25lKCk7XG4gICAgICB9LFxuICAgIH1cblxuICB9LFxuICBcIkluZ3Jlc3MgUG9ydFwiOiB7XG4gICAgXCJXaXRoIG5ldHdvcmsgbW9kZSBBd3NWcGNcIjoge1xuICAgICAgXCJJbmdyZXNzIHBvcnQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbnRhaW5lciBwb3J0XCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkF3c1ZwYyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgwLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSA4MDgwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFwiSW5ncmVzcyBwb3J0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBjb250YWluZXIgcG9ydFwiKTtcbiAgICAgICAgdGVzdC5kb25lKCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgXCJXaXRoIG5ldHdvcmsgbW9kZSBIb3N0IFwiOiB7XG4gICAgICBcIkluZ3Jlc3MgcG9ydCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgY29udGFpbmVyIHBvcnRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuSG9zdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgwLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSA4MDgwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFwiV2l0aCBuZXR3b3JrIG1vZGUgQnJpZGdlXCI6IHtcbiAgICAgIFwiSW5ncmVzcyBwb3J0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBob3N0IHBvcnQgaWYgc3VwcGxpZWRcIih0ZXN0OiBUZXN0KSB7XG4gICAgICAgIC8vIEdJVkVOXG4gICAgICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJywge1xuICAgICAgICAgIG5ldHdvcmtNb2RlOiBlY3MuTmV0d29ya01vZGUuQnJpZGdlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoXCJDb250YWluZXJcIiwge1xuICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YihcIi9hd3MvYXdzLWV4YW1wbGUtYXBwXCIpLFxuICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiAyMDQ4LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXSEVOXG4gICAgICAgIGNvbnRhaW5lci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IDgwODAsXG4gICAgICAgICAgaG9zdFBvcnQ6IDgwODEsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhY3R1YWwgPSBjb250YWluZXIuaW5ncmVzc1BvcnQ7XG5cbiAgICAgICAgLy8gVEhFTlxuICAgICAgICBjb25zdCBleHBlY3RlZCA9IDgwODE7XG4gICAgICAgIHRlc3QuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCk7XG4gICAgICAgIHRlc3QuZG9uZSgpO1xuICAgICAgfSxcblxuICAgICAgXCJJbmdyZXNzIHBvcnQgc2hvdWxkIGJlIDAgaWYgbm90IHN1cHBsaWVkXCIodGVzdDogVGVzdCkge1xuICAgICAgICAvLyBHSVZFTlxuICAgICAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICAgICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicsIHtcbiAgICAgICAgICBuZXR3b3JrTW9kZTogZWNzLk5ldHdvcmtNb2RlLkJyaWRnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFwiQ29udGFpbmVyXCIsIHtcbiAgICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoXCIvYXdzL2F3cy1leGFtcGxlLWFwcFwiKSxcbiAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogMjA0OCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gV0hFTlxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgxLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWN0dWFsID0gY29udGFpbmVyLmluZ3Jlc3NQb3J0O1xuXG4gICAgICAgIC8vIFRIRU5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSAwO1xuICAgICAgICB0ZXN0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgICAgICB0ZXN0LmRvbmUoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcblxuICAnY2FuIGFkZCBBV1MgbG9nZ2luZyB0byBjb250YWluZXIgZGVmaW5pdGlvbicodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicpO1xuXG4gICAgLy8gV0hFTlxuICAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udCcsIHtcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDEwMjQsXG4gICAgICBsb2dnaW5nOiBuZXcgZWNzLkF3c0xvZ0RyaXZlcihzdGFjaywgJ0xvZ2dpbmcnLCB7IHN0cmVhbVByZWZpeDogJ3ByZWZpeCcgfSlcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6RUNTOjpUYXNrRGVmaW5pdGlvbicsIHtcbiAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBMb2dDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBMb2dEcml2ZXI6IFwiYXdzbG9nc1wiLFxuICAgICAgICAgICAgT3B0aW9uczoge1xuICAgICAgICAgICAgICBcImF3c2xvZ3MtZ3JvdXBcIjogeyBSZWY6IFwiTG9nZ2luZ0xvZ0dyb3VwQzZCOEUyMEJcIiB9LFxuICAgICAgICAgICAgICBcImF3c2xvZ3Mtc3RyZWFtLXByZWZpeFwiOiBcInByZWZpeFwiLFxuICAgICAgICAgICAgICBcImF3c2xvZ3MtcmVnaW9uXCI6IHsgUmVmOiBcIkFXUzo6UmVnaW9uXCIgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFjdGlvbjogWyBcImxvZ3M6Q3JlYXRlTG9nU3RyZWFtXCIsIFwibG9nczpQdXRMb2dFdmVudHNcIiBdLFxuICAgICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgICBSZXNvdXJjZTogeyBcIkZuOjpHZXRBdHRcIjogWyBcIkxvZ2dpbmdMb2dHcm91cEM2QjhFMjBCXCIsIFwiQXJuXCIgXSB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuICAnY2FuIHNldCBIZWFsdGggQ2hlY2sgd2l0aCBkZWZhdWx0cycodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkVjMlRhc2tEZWZpbml0aW9uKHN0YWNrLCAnVGFza0RlZicpO1xuICAgIGNvbnN0IGhjQ29tbWFuZCA9IFwiY3VybCBsb2NhbGhvc3Q6ODAwMFwiO1xuXG4gICAgLy8gV0hFTlxuICAgIHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udCcsIHtcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDEwMjQsXG4gICAgICBoZWFsdGhDaGVjazoge1xuICAgICAgICBjb21tYW5kOiBbaGNDb21tYW5kXVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uJywge1xuICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIEhlYWx0aENoZWNrOiB7XG4gICAgICAgICAgICBDb21tYW5kOiBbXCJDTUQtU0hFTExcIiwgaGNDb21tYW5kXSxcbiAgICAgICAgICAgIEludGVydmFsOiAzMCxcbiAgICAgICAgICAgIFJldHJpZXM6IDMsXG4gICAgICAgICAgICBUaW1lb3V0OiA1XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdjYW4gc3BlY2lmeSBIZWFsdGggQ2hlY2sgdmFsdWVzJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRWMyVGFza0RlZmluaXRpb24oc3RhY2ssICdUYXNrRGVmJyk7XG4gICAgY29uc3QgaGNDb21tYW5kID0gXCJjdXJsIGxvY2FsaG9zdDo4MDAwXCI7XG5cbiAgICAvLyBXSEVOXG4gICAgdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdjb250Jywge1xuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKCd0ZXN0JyksXG4gICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIGNvbW1hbmQ6IFtoY0NvbW1hbmRdLFxuICAgICAgICBpbnRlcnZhbFNlY29uZHM6IDIwLFxuICAgICAgICByZXRyaWVzOiA1LFxuICAgICAgICBzdGFydFBlcmlvZDogMTBcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZUxpa2UoJ0FXUzo6RUNTOjpUYXNrRGVmaW5pdGlvbicsIHtcbiAgICAgIENvbnRhaW5lckRlZmluaXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBIZWFsdGhDaGVjazoge1xuICAgICAgICAgICAgQ29tbWFuZDogW1wiQ01ELVNIRUxMXCIsIGhjQ29tbWFuZF0sXG4gICAgICAgICAgICBJbnRlcnZhbDogMjAsXG4gICAgICAgICAgICBSZXRyaWVzOiA1LFxuICAgICAgICAgICAgVGltZW91dDogNSxcbiAgICAgICAgICAgIFN0YXJ0UGVyaW9kOiAxMFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAvLyByZW5kZXIgZXh0cmEgaG9zdHMgdGVzdFxufTtcbiJdfQ==

@@ -43,3 +43,3 @@ "use strict";

assert_1.expect(stack).to(assert_1.haveResource('AWS::ElasticLoadBalancingV2::LoadBalancer'));
assert_1.expect(stack).to(assert_1.haveResource('AWS::ECS::TaskDefinition', {
assert_1.expect(stack).to(assert_1.haveResourceLike('AWS::ECS::TaskDefinition', {
ContainerDefinitions: [

@@ -209,2 +209,2 @@ {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5sM3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0Lmwzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQXVEO0FBQ3ZELDRFQUFpRTtBQUNqRSx3Q0FBeUM7QUFDekMsc0RBQXdEO0FBQ3hELG9DQUFxQztBQUVyQyw4QkFBK0I7QUFFL0IsaUJBQVM7SUFDUCxpQ0FBaUMsQ0FBQyxJQUFVO1FBQzFDLFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsa0NBQWtDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvRixPQUFPO1FBQ1AsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUMvQyxPQUFPO1lBQ1AsY0FBYyxFQUFFLElBQUk7WUFDcEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUMvQyxZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDLENBQUM7UUFFSCx3REFBd0Q7UUFDeEQsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztRQUU1RSxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsbUJBQW1CLEVBQUU7WUFDakQsWUFBWSxFQUFFLENBQUM7WUFDZixVQUFVLEVBQUUs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QzlCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleHBlY3QsIGhhdmVSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2Fzc2VydCc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZVJlZiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0IGVjMiA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2F3cy1lYzInKTtcbmltcG9ydCB7IFB1YmxpY0hvc3RlZFpvbmUgfSBmcm9tICdAYXdzLWNkay9hd3Mtcm91dGU1Myc7XG5pbXBvcnQgY2RrID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrJyk7XG5pbXBvcnQgeyBUZXN0IH0gZnJvbSAnbm9kZXVuaXQnO1xuaW1wb3J0IGVjcyA9IHJlcXVpcmUoJy4uL2xpYicpO1xuXG5leHBvcnQgPSB7XG4gICd0ZXN0IEVDUyBsb2FkYmFsYW5jZWQgY29uc3RydWN0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnQ2x1c3RlcicsIHsgdnBjIH0pO1xuICAgIGNsdXN0ZXIuYWRkRGVmYXVsdEF1dG9TY2FsaW5nR3JvdXBDYXBhY2l0eSh7IGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGUoJ3QyLm1pY3JvJykgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGVjcy5Mb2FkQmFsYW5jZWRFYzJTZXJ2aWNlKHN0YWNrLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXIsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogMTAyNCxcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgZGVzaXJlZENvdW50OiAyXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOIC0gc3RhY2sgY29udGFpbmVycyBhIGxvYWQgYmFsYW5jZXIgYW5kIGEgc2VydmljZVxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6OkxvYWRCYWxhbmNlcicpKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlNlcnZpY2VcIiwge1xuICAgICAgRGVzaXJlZENvdW50OiAyLFxuICAgICAgTGF1bmNoVHlwZTogXCJFQzJcIixcbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAndGVzdCBGYXJnYXRlIGxvYWRiYWxhbmNlZCBjb25zdHJ1Y3QnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ1ZQQycpO1xuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIoc3RhY2ssICdDbHVzdGVyJywgeyB2cGMgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGVjcy5Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZShzdGFjaywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKCd0ZXN0JyksXG4gICAgICBkZXNpcmVkQ291bnQ6IDJcbiAgICB9KTtcblxuICAgIC8vIFRIRU4gLSBzdGFjayBjb250YWlucyBhIGxvYWQgYmFsYW5jZXIgYW5kIGEgc2VydmljZVxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6OkxvYWRCYWxhbmNlcicpKTtcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uJywge1xuICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIExvZ0RyaXZlcjogXCJhd3Nsb2dzXCIsXG4gICAgICAgICAgICBPcHRpb25zOiB7XG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1ncm91cFwiOiB7IFJlZjogXCJTZXJ2aWNlTG9nZ2luZ0xvZ0dyb3VwQzNENkE1ODFcIiB9LFxuICAgICAgICAgICAgICBcImF3c2xvZ3Mtc3RyZWFtLXByZWZpeFwiOiBcIlNlcnZpY2VcIixcbiAgICAgICAgICAgICAgXCJhd3Nsb2dzLXJlZ2lvblwiOiB7IFJlZjogXCJBV1M6OlJlZ2lvblwiIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSkpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6U2VydmljZVwiLCB7XG4gICAgICBEZXNpcmVkQ291bnQ6IDIsXG4gICAgICBMYXVuY2hUeXBlOiBcIkZBUkdBVEVcIixcbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMaXN0ZW5lcicsIHtcbiAgICAgIFBvcnQ6IDgwXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3Rlc3QgRmFyZ2F0ZSBsb2FkYmFsYW5jZWQgY29uc3RydWN0IG9wdGluZyBvdXQgb2YgbG9nIGRyaXZlciBjcmVhdGlvbicodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0NsdXN0ZXInLCB7IHZwYyB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgZWNzLkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlKHN0YWNrLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXIsXG4gICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoJ3Rlc3QnKSxcbiAgICAgIGRlc2lyZWRDb3VudDogMixcbiAgICAgIGNyZWF0ZUxvZ3M6IGZhbHNlXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOIC0gc3RhY2sgY29udGFpbnMgYSBsb2FkIGJhbGFuY2VyIGFuZCBhIHNlcnZpY2VcbiAgICBleHBlY3Qoc3RhY2spLm5vdFRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uJywge1xuICAgICAgQ29udGFpbmVyRGVmaW5pdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIExvZ0RyaXZlcjogXCJhd3Nsb2dzXCIsXG4gICAgICAgICAgICBPcHRpb25zOiB7XG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1ncm91cFwiOiB7IFJlZjogXCJTZXJ2aWNlTG9nZ2luZ0xvZ0dyb3VwQzNENkE1ODFcIiB9LFxuICAgICAgICAgICAgICBcImF3c2xvZ3Mtc3RyZWFtLXByZWZpeFwiOiBcIlNlcnZpY2VcIixcbiAgICAgICAgICAgICAgXCJhd3Nsb2dzLXJlZ2lvblwiOiB7IFJlZjogXCJBV1M6OlJlZ2lvblwiIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG4gICd0ZXN0IEZhcmdhdGVsb2FkYmFsYW5jZWQgY29uc3RydWN0IHdpdGggVExTJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnQ2x1c3RlcicsIHsgdnBjIH0pO1xuICAgIGNvbnN0IHpvbmUgPSBuZXcgUHVibGljSG9zdGVkWm9uZShzdGFjaywgJ0hvc3RlZFpvbmUnLCB7IHpvbmVOYW1lOiAnZXhhbXBsZS5jb20nIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcixcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgZG9tYWluTmFtZTogJ2FwaS5leGFtcGxlLmNvbScsXG4gICAgICBkb21haW5ab25lOiB6b25lLFxuICAgICAgY2VydGlmaWNhdGU6IENlcnRpZmljYXRlUmVmLmltcG9ydChzdGFjaywgJ0NlcnQnLCB7IGNlcnRpZmljYXRlQXJuOiAnaGVsbG93b3JsZCcgfSlcbiAgICB9KTtcblxuICAgIC8vIFRIRU4gLSBzdGFjayBjb250YWlucyBhIGxvYWQgYmFsYW5jZXIgYW5kIGEgc2VydmljZVxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6OkxvYWRCYWxhbmNlcicpKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6Okxpc3RlbmVyJywge1xuICAgICAgUG9ydDogNDQzLFxuICAgICAgQ2VydGlmaWNhdGVzOiBbe1xuICAgICAgICBDZXJ0aWZpY2F0ZUFybjogXCJoZWxsb3dvcmxkXCJcbiAgICAgIH1dXG4gICAgfSkpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDUzo6U2VydmljZVwiLCB7XG4gICAgICBEZXNpcmVkQ291bnQ6IDEsXG4gICAgICBMYXVuY2hUeXBlOiBcIkZBUkdBVEVcIixcbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpSb3V0ZTUzOjpSZWNvcmRTZXQnLCB7XG4gICAgICBOYW1lOiAnYXBpLmV4YW1wbGUuY29tLicsXG4gICAgICBIb3N0ZWRab25lSWQ6IHtcbiAgICAgICAgUmVmOiBcIkhvc3RlZFpvbmVEQjk5Rjg2NlwiXG4gICAgICB9LFxuICAgICAgVHlwZTogJ0EnLFxuICAgICAgQWxpYXNUYXJnZXQ6IHtcbiAgICAgICAgSG9zdGVkWm9uZUlkOiB7ICdGbjo6R2V0QXR0JzogWyAnU2VydmljZUxCRTlBMUFEQkMnLCAnQ2Fub25pY2FsSG9zdGVkWm9uZUlEJyBdIH0sXG4gICAgICAgIEROU05hbWU6IHsgJ0ZuOjpHZXRBdHQnOiBbICdTZXJ2aWNlTEJFOUExQURCQycsICdETlNOYW1lJyBdIH0sXG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgXCJlcnJvcnMgd2hlbiBzZXR0aW5nIGRvbWFpbk5hbWUgYnV0IG5vdCBkb21haW5ab25lXCIodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0NsdXN0ZXInLCB7IHZwYyB9KTtcblxuICAgIC8vIFRIRU5cbiAgICB0ZXN0LnRocm93cygoKSA9PiB7XG4gICAgICBuZXcgZWNzLkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlKHN0YWNrLCAnU2VydmljZScsIHtcbiAgICAgICAgY2x1c3RlcixcbiAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKCd0ZXN0JyksXG4gICAgICAgIGRvbWFpbk5hbWU6ICdhcGkuZXhhbXBsZS5jb20nXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICd0ZXN0IEZhcmdhdGVsb2FkYmFsYW5jZWQgYXBwbGV0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgZWNzLkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlQXBwbGV0KGFwcCwgJ1NlcnZpY2UnLCB7XG4gICAgICBpbWFnZTogJ3Rlc3QnLFxuICAgICAgZGVzaXJlZENvdW50OiAyXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOIC0gc3RhY2sgY29udGFpbnMgYSBsb2FkIGJhbGFuY2VyIGFuZCBhIHNlcnZpY2VcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInKSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgIERlc2lyZWRDb3VudDogMixcbiAgICAgIExhdW5jaFR5cGU6IFwiRkFSR0FURVwiLFxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICd0ZXN0IEZhcmdhdGVsb2FkYmFsYW5jZWQgYXBwbGV0IHdpdGggVExTJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gV0hFTlxuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgZWNzLkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlQXBwbGV0KGFwcCwgJ1NlcnZpY2UnLCB7XG4gICAgICBpbWFnZTogJ3Rlc3QnLFxuICAgICAgZGVzaXJlZENvdW50OiAyLFxuICAgICAgZG9tYWluTmFtZTogJ2FwaS5leGFtcGxlLmNvbScsXG4gICAgICBkb21haW5ab25lOiAnZXhhbXBsZS5jb20nLFxuICAgICAgY2VydGlmaWNhdGU6ICdoZWxsb3dvcmxkJ1xuICAgIH0pO1xuXG4gICAgLy8gVEhFTiAtIHN0YWNrIGNvbnRhaW5zIGEgbG9hZCBiYWxhbmNlciBhbmQgYSBzZXJ2aWNlXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TG9hZEJhbGFuY2VyJykpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXInLCB7XG4gICAgICBQb3J0OiA0NDMsXG4gICAgICBDZXJ0aWZpY2F0ZXM6IFt7XG4gICAgICAgIENlcnRpZmljYXRlQXJuOiBcImhlbGxvd29ybGRcIlxuICAgICAgfV1cbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgIERlc2lyZWRDb3VudDogMixcbiAgICAgIExhdW5jaFR5cGU6IFwiRkFSR0FURVwiLFxuICAgIH0pKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OlJvdXRlNTM6OlJlY29yZFNldCcsIHtcbiAgICAgIE5hbWU6ICdhcGkuZXhhbXBsZS5jb20uJyxcbiAgICAgIEhvc3RlZFpvbmVJZDogXCIvaG9zdGVkem9uZS9EVU1NWVwiLFxuICAgICAgVHlwZTogJ0EnLFxuICAgICAgQWxpYXNUYXJnZXQ6IHtcbiAgICAgICAgSG9zdGVkWm9uZUlkOiB7ICdGbjo6R2V0QXR0JzogWyAnRmFyZ2F0ZVNlcnZpY2VMQkIzNTNFMTU1JywgJ0Nhbm9uaWNhbEhvc3RlZFpvbmVJRCcgXSB9LFxuICAgICAgICBETlNOYW1lOiB7ICdGbjo6R2V0QXR0JzogWyAnRmFyZ2F0ZVNlcnZpY2VMQkIzNTNFMTU1JywgJ0ROU05hbWUnIF0gfSxcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICBcImVycm9ycyB3aGVuIHNldHRpbmcgZG9tYWluTmFtZSBidXQgbm90IGRvbWFpblpvbmUgb24gYXBwbGV0XCIodGVzdDogVGVzdCkge1xuICAgIC8vIFRIRU5cbiAgICB0ZXN0LnRocm93cygoKSA9PiB7XG4gICAgICBuZXcgZWNzLkxvYWRCYWxhbmNlZEZhcmdhdGVTZXJ2aWNlQXBwbGV0KG5ldyBjZGsuQXBwKCksICdTZXJ2aWNlJywge1xuICAgICAgICBpbWFnZTogJ3Rlc3QnLFxuICAgICAgICBkb21haW5OYW1lOiAnYXBpLmV4YW1wbGUuY29tJ1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5sM3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0Lmwzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNENBQXlFO0FBQ3pFLDRFQUFpRTtBQUNqRSx3Q0FBeUM7QUFDekMsc0RBQXdEO0FBQ3hELG9DQUFxQztBQUVyQyw4QkFBK0I7QUFFL0IsaUJBQVM7SUFDUCxpQ0FBaUMsQ0FBQyxJQUFVO1FBQzFDLFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRCxPQUFPLENBQUMsa0NBQWtDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUvRixPQUFPO1FBQ1AsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUMvQyxPQUFPO1lBQ1AsY0FBYyxFQUFFLElBQUk7WUFDcEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUMvQyxZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDLENBQUM7UUFFSCx3REFBd0Q7UUFDeEQsZUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBWSxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FBQztRQUU1RSxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsbUJBQW1CLEVBQUU7WUFDakQsWUFBWSxFQUFFLENBQUM7WUFDZixVQUFVLEVBQUUs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QUM5QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCBoYXZlUmVzb3VyY2UsIGhhdmVSZXNvdXJjZUxpa2UgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVSZWYgfSBmcm9tICdAYXdzLWNkay9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCBlYzIgPSByZXF1aXJlKCdAYXdzLWNkay9hd3MtZWMyJyk7XG5pbXBvcnQgeyBQdWJsaWNIb3N0ZWRab25lIH0gZnJvbSAnQGF3cy1jZGsvYXdzLXJvdXRlNTMnO1xuaW1wb3J0IGNkayA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2NkaycpO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCBlY3MgPSByZXF1aXJlKCcuLi9saWInKTtcblxuZXhwb3J0ID0ge1xuICAndGVzdCBFQ1MgbG9hZGJhbGFuY2VkIGNvbnN0cnVjdCcodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3QgY2x1c3RlciA9IG5ldyBlY3MuQ2x1c3RlcihzdGFjaywgJ0NsdXN0ZXInLCB7IHZwYyB9KTtcbiAgICBjbHVzdGVyLmFkZERlZmF1bHRBdXRvU2NhbGluZ0dyb3VwQ2FwYWNpdHkoeyBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKCd0Mi5taWNybycpIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRWMyU2VydmljZShzdGFjaywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDEwMjQsXG4gICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoJ3Rlc3QnKSxcbiAgICAgIGRlc2lyZWRDb3VudDogMlxuICAgIH0pO1xuXG4gICAgLy8gVEhFTiAtIHN0YWNrIGNvbnRhaW5lcnMgYSBsb2FkIGJhbGFuY2VyIGFuZCBhIHNlcnZpY2VcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInKSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgIERlc2lyZWRDb3VudDogMixcbiAgICAgIExhdW5jaFR5cGU6IFwiRUMyXCIsXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3Rlc3QgRmFyZ2F0ZSBsb2FkYmFsYW5jZWQgY29uc3RydWN0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnQ2x1c3RlcicsIHsgdnBjIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcixcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgZGVzaXJlZENvdW50OiAyXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOIC0gc3RhY2sgY29udGFpbnMgYSBsb2FkIGJhbGFuY2VyIGFuZCBhIHNlcnZpY2VcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInKSk7XG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nLCB7XG4gICAgICBDb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgTG9nRHJpdmVyOiBcImF3c2xvZ3NcIixcbiAgICAgICAgICAgIE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgXCJhd3Nsb2dzLWdyb3VwXCI6IHsgUmVmOiBcIlNlcnZpY2VMb2dnaW5nTG9nR3JvdXBDM0Q2QTU4MVwiIH0sXG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1zdHJlYW0tcHJlZml4XCI6IFwiU2VydmljZVwiLFxuICAgICAgICAgICAgICBcImF3c2xvZ3MtcmVnaW9uXCI6IHsgUmVmOiBcIkFXUzo6UmVnaW9uXCIgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgIERlc2lyZWRDb3VudDogMixcbiAgICAgIExhdW5jaFR5cGU6IFwiRkFSR0FURVwiLFxuICAgIH0pKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6Okxpc3RlbmVyJywge1xuICAgICAgUG9ydDogODBcbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAndGVzdCBGYXJnYXRlIGxvYWRiYWxhbmNlZCBjb25zdHJ1Y3Qgb3B0aW5nIG91dCBvZiBsb2cgZHJpdmVyIGNyZWF0aW9uJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnQ2x1c3RlcicsIHsgdnBjIH0pO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcixcbiAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckh1YigndGVzdCcpLFxuICAgICAgZGVzaXJlZENvdW50OiAyLFxuICAgICAgY3JlYXRlTG9nczogZmFsc2VcbiAgICB9KTtcblxuICAgIC8vIFRIRU4gLSBzdGFjayBjb250YWlucyBhIGxvYWQgYmFsYW5jZXIgYW5kIGEgc2VydmljZVxuICAgIGV4cGVjdChzdGFjaykubm90VG8oaGF2ZVJlc291cmNlKCdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nLCB7XG4gICAgICBDb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgTG9nRHJpdmVyOiBcImF3c2xvZ3NcIixcbiAgICAgICAgICAgIE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgXCJhd3Nsb2dzLWdyb3VwXCI6IHsgUmVmOiBcIlNlcnZpY2VMb2dnaW5nTG9nR3JvdXBDM0Q2QTU4MVwiIH0sXG4gICAgICAgICAgICAgIFwiYXdzbG9ncy1zdHJlYW0tcHJlZml4XCI6IFwiU2VydmljZVwiLFxuICAgICAgICAgICAgICBcImF3c2xvZ3MtcmVnaW9uXCI6IHsgUmVmOiBcIkFXUzo6UmVnaW9uXCIgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcbiAgJ3Rlc3QgRmFyZ2F0ZWxvYWRiYWxhbmNlZCBjb25zdHJ1Y3Qgd2l0aCBUTFMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG5ldyBlYzIuVnBjTmV0d29yayhzdGFjaywgJ1ZQQycpO1xuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIoc3RhY2ssICdDbHVzdGVyJywgeyB2cGMgfSk7XG4gICAgY29uc3Qgem9uZSA9IG5ldyBQdWJsaWNIb3N0ZWRab25lKHN0YWNrLCAnSG9zdGVkWm9uZScsIHsgem9uZU5hbWU6ICdleGFtcGxlLmNvbScgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgbmV3IGVjcy5Mb2FkQmFsYW5jZWRGYXJnYXRlU2VydmljZShzdGFjaywgJ1NlcnZpY2UnLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySHViKCd0ZXN0JyksXG4gICAgICBkb21haW5OYW1lOiAnYXBpLmV4YW1wbGUuY29tJyxcbiAgICAgIGRvbWFpblpvbmU6IHpvbmUsXG4gICAgICBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGVSZWYuaW1wb3J0KHN0YWNrLCAnQ2VydCcsIHsgY2VydGlmaWNhdGVBcm46ICdoZWxsb3dvcmxkJyB9KVxuICAgIH0pO1xuXG4gICAgLy8gVEhFTiAtIHN0YWNrIGNvbnRhaW5zIGEgbG9hZCBiYWxhbmNlciBhbmQgYSBzZXJ2aWNlXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TG9hZEJhbGFuY2VyJykpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXInLCB7XG4gICAgICBQb3J0OiA0NDMsXG4gICAgICBDZXJ0aWZpY2F0ZXM6IFt7XG4gICAgICAgIENlcnRpZmljYXRlQXJuOiBcImhlbGxvd29ybGRcIlxuICAgICAgfV1cbiAgICB9KSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUNTOjpTZXJ2aWNlXCIsIHtcbiAgICAgIERlc2lyZWRDb3VudDogMSxcbiAgICAgIExhdW5jaFR5cGU6IFwiRkFSR0FURVwiLFxuICAgIH0pKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OlJvdXRlNTM6OlJlY29yZFNldCcsIHtcbiAgICAgIE5hbWU6ICdhcGkuZXhhbXBsZS5jb20uJyxcbiAgICAgIEhvc3RlZFpvbmVJZDoge1xuICAgICAgICBSZWY6IFwiSG9zdGVkWm9uZURCOTlGODY2XCJcbiAgICAgIH0sXG4gICAgICBUeXBlOiAnQScsXG4gICAgICBBbGlhc1RhcmdldDoge1xuICAgICAgICBIb3N0ZWRab25lSWQ6IHsgJ0ZuOjpHZXRBdHQnOiBbICdTZXJ2aWNlTEJFOUExQURCQycsICdDYW5vbmljYWxIb3N0ZWRab25lSUQnIF0gfSxcbiAgICAgICAgRE5TTmFtZTogeyAnRm46OkdldEF0dCc6IFsgJ1NlcnZpY2VMQkU5QTFBREJDJywgJ0ROU05hbWUnIF0gfSxcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICBcImVycm9ycyB3aGVuIHNldHRpbmcgZG9tYWluTmFtZSBidXQgbm90IGRvbWFpblpvbmVcIih0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCB2cGMgPSBuZXcgZWMyLlZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHN0YWNrLCAnQ2x1c3RlcicsIHsgdnBjIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2Uoc3RhY2ssICdTZXJ2aWNlJywge1xuICAgICAgICBjbHVzdGVyLFxuICAgICAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Eb2NrZXJIdWIoJ3Rlc3QnKSxcbiAgICAgICAgZG9tYWluTmFtZTogJ2FwaS5leGFtcGxlLmNvbSdcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3Rlc3QgRmFyZ2F0ZWxvYWRiYWxhbmNlZCBhcHBsZXQnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBXSEVOXG4gICAgY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VBcHBsZXQoYXBwLCAnU2VydmljZScsIHtcbiAgICAgIGltYWdlOiAndGVzdCcsXG4gICAgICBkZXNpcmVkQ291bnQ6IDJcbiAgICB9KTtcblxuICAgIC8vIFRIRU4gLSBzdGFjayBjb250YWlucyBhIGxvYWQgYmFsYW5jZXIgYW5kIGEgc2VydmljZVxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKCdBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6OkxvYWRCYWxhbmNlcicpKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlNlcnZpY2VcIiwge1xuICAgICAgRGVzaXJlZENvdW50OiAyLFxuICAgICAgTGF1bmNoVHlwZTogXCJGQVJHQVRFXCIsXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3Rlc3QgRmFyZ2F0ZWxvYWRiYWxhbmNlZCBhcHBsZXQgd2l0aCBUTFMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBXSEVOXG4gICAgY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VBcHBsZXQoYXBwLCAnU2VydmljZScsIHtcbiAgICAgIGltYWdlOiAndGVzdCcsXG4gICAgICBkZXNpcmVkQ291bnQ6IDIsXG4gICAgICBkb21haW5OYW1lOiAnYXBpLmV4YW1wbGUuY29tJyxcbiAgICAgIGRvbWFpblpvbmU6ICdleGFtcGxlLmNvbScsXG4gICAgICBjZXJ0aWZpY2F0ZTogJ2hlbGxvd29ybGQnXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOIC0gc3RhY2sgY29udGFpbnMgYSBsb2FkIGJhbGFuY2VyIGFuZCBhIHNlcnZpY2VcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXInKSk7XG5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMaXN0ZW5lcicsIHtcbiAgICAgIFBvcnQ6IDQ0MyxcbiAgICAgIENlcnRpZmljYXRlczogW3tcbiAgICAgICAgQ2VydGlmaWNhdGVBcm46IFwiaGVsbG93b3JsZFwiXG4gICAgICB9XVxuICAgIH0pKTtcblxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQ1M6OlNlcnZpY2VcIiwge1xuICAgICAgRGVzaXJlZENvdW50OiAyLFxuICAgICAgTGF1bmNoVHlwZTogXCJGQVJHQVRFXCIsXG4gICAgfSkpO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6Um91dGU1Mzo6UmVjb3JkU2V0Jywge1xuICAgICAgTmFtZTogJ2FwaS5leGFtcGxlLmNvbS4nLFxuICAgICAgSG9zdGVkWm9uZUlkOiBcIi9ob3N0ZWR6b25lL0RVTU1ZXCIsXG4gICAgICBUeXBlOiAnQScsXG4gICAgICBBbGlhc1RhcmdldDoge1xuICAgICAgICBIb3N0ZWRab25lSWQ6IHsgJ0ZuOjpHZXRBdHQnOiBbICdGYXJnYXRlU2VydmljZUxCQjM1M0UxNTUnLCAnQ2Fub25pY2FsSG9zdGVkWm9uZUlEJyBdIH0sXG4gICAgICAgIEROU05hbWU6IHsgJ0ZuOjpHZXRBdHQnOiBbICdGYXJnYXRlU2VydmljZUxCQjM1M0UxNTUnLCAnRE5TTmFtZScgXSB9LFxuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gIFwiZXJyb3JzIHdoZW4gc2V0dGluZyBkb21haW5OYW1lIGJ1dCBub3QgZG9tYWluWm9uZSBvbiBhcHBsZXRcIih0ZXN0OiBUZXN0KSB7XG4gICAgLy8gVEhFTlxuICAgIHRlc3QudGhyb3dzKCgpID0+IHtcbiAgICAgIG5ldyBlY3MuTG9hZEJhbGFuY2VkRmFyZ2F0ZVNlcnZpY2VBcHBsZXQobmV3IGNkay5BcHAoKSwgJ1NlcnZpY2UnLCB7XG4gICAgICAgIGltYWdlOiAndGVzdCcsXG4gICAgICAgIGRvbWFpbk5hbWU6ICdhcGkuZXhhbXBsZS5jb20nXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9XG59O1xuIl19

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

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