Socket
Socket
Sign inDemoInstall

@aws-cdk/aws-ec2

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-ec2 - npm Package Compare versions

Comparing version 0.10.0 to 0.11.0

8

lib/instance-types.d.ts

@@ -108,2 +108,10 @@ /**

/**
* Burstable instances, 3rd generation
*/
Burstable3 = "t3",
/**
* Burstable instances, 3rd generation
*/
T3 = "t3",
/**
* Memory-intensive instances, 1st generation

@@ -110,0 +118,0 @@ */

10

lib/instance-types.js

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

/**
* Burstable instances, 3rd generation
*/
InstanceClass["Burstable3"] = "t3";
/**
* Burstable instances, 3rd generation
*/
InstanceClass["T3"] = "t3";
/**
* Memory-intensive instances, 1st generation

@@ -216,2 +224,2 @@ */

exports.InstanceTypePair = InstanceTypePair;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnN0YW5jZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsSUFBWSxhQW9MWDtBQXBMRCxXQUFZLGFBQWE7SUFDdkI7O09BRUc7SUFDSCxpQ0FBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGlDQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsaUNBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCwrQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCwrQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCx1Q0FBc0IsQ0FBQTtJQUV0Qjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILDJCQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGtDQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsd0NBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxpREFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDRCQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDZCQUFZLENBQUE7SUFFWjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGlDQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsaUNBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxpQ0FBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILDBCQUFTLENBQUE7QUFDWCxDQUFDLEVBcExXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBb0x4QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxZQWlCWDtBQWpCRCxXQUFZLFlBQVk7SUFDdEIsNkJBQWEsQ0FBQTtJQUNiLCtCQUFlLENBQUE7SUFDZiwrQkFBZSxDQUFBO0lBQ2YsaUNBQWlCLENBQUE7SUFDakIsK0JBQWUsQ0FBQTtJQUNmLGlDQUFpQixDQUFBO0lBQ2pCLG1DQUFtQixDQUFBO0lBQ25CLG1DQUFtQixDQUFBO0lBQ25CLG1DQUFtQixDQUFBO0lBQ25CLG1DQUFtQixDQUFBO0lBQ25CLHFDQUFxQixDQUFBO0lBQ3JCLHFDQUFxQixDQUFBO0lBQ3JCLHFDQUFxQixDQUFBO0lBQ3JCLHFDQUFxQixDQUFBO0lBQ3JCLHFDQUFxQixDQUFBO0lBQ3JCLHFDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqQlcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFpQnZCO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBNkIsc0JBQThCO1FBQTlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBUTtJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBVkQsb0NBVUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxZQUFZO0lBQ2hELFlBQTRCLGFBQTRCLEVBQzVCLFlBQTBCO1FBQ3BELEtBQUssQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxDQUFDO1FBRmhCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXRELENBQUM7Q0FDRjtBQUxELDRDQUtDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXaGF0IGNsYXNzIGFuZCBnZW5lcmF0aW9uIG9mIGluc3RhbmNlIHRvIHVzZVxuICpcbiAqIFdlIGhhdmUgYm90aCBzeW1ib2xpYyBhbmQgY29uY3JldGUgZW51bXMgZm9yIGV2ZXJ5IHR5cGUuXG4gKlxuICogVGhlIGZpcnN0IGFyZSBmb3IgcGVvcGxlIHRoYXQgd2FudCB0byBzcGVjaWZ5IGJ5IHB1cnBvc2UsXG4gKiB0aGUgc2Vjb25kIG9uZSBhcmUgZm9yIHBlb3BsZSB3aG8gYWxyZWFkeSBrbm93IGV4YWN0bHkgd2hhdFxuICogJ1I0JyBtZWFucy5cbiAqL1xuZXhwb3J0IGVudW0gSW5zdGFuY2VDbGFzcyB7XG4gIC8qKlxuICAgKiBTdGFuZGFyZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBTdGFuZGFyZDMgPSAnbTMnLFxuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBNMyA9ICdtMycsXG5cbiAgLyoqXG4gICAqIFN0YW5kYXJkIGluc3RhbmNlcywgNHRoIGdlbmVyYXRpb25cbiAgICovXG4gIFN0YW5kYXJkNCA9ICdtNCcsXG5cbiAgLyoqXG4gICAqIFN0YW5kYXJkIGluc3RhbmNlcywgNHRoIGdlbmVyYXRpb25cbiAgICovXG4gIE00ID0gJ200JyxcblxuICAvKipcbiAgICogU3RhbmRhcmQgaW5zdGFuY2VzLCA1dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgU3RhbmRhcmQ1ID0gJ201JyxcblxuICAvKipcbiAgICogU3RhbmRhcmQgaW5zdGFuY2VzLCA1dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgTTUgPSAnbTUnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnkgb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIE1lbW9yeTMgPSAncjMnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnkgb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIFIzID0gJ3IzJyxcblxuICAvKipcbiAgICogTWVtb3J5IG9wdGltaXplZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBNZW1vcnk0ID0gJ3I0JyxcblxuICAvKipcbiAgICogTWVtb3J5IG9wdGltaXplZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBSNCA9ICdyNCcsXG5cbiAgLyoqXG4gICAqIENvbXB1dGUgb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIENvbXB1dGUzID0gJ2MzJyxcblxuICAvKipcbiAgICogQ29tcHV0ZSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgQzMgPSAnYzMnLFxuXG4gIC8qKlxuICAgKiBDb21wdXRlIG9wdGltaXplZCBpbnN0YW5jZXMsIDR0aCBnZW5lcmF0aW9uXG4gICAqL1xuICBDb21wdXRlNCA9ICdjNCcsXG5cbiAgLyoqXG4gICAqIENvbXB1dGUgb3B0aW1pemVkIGluc3RhbmNlcywgNHRoIGdlbmVyYXRpb25cbiAgICovXG4gIEM0ID0gJ2M0JyxcblxuICAvKipcbiAgICogQ29tcHV0ZSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCA1dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgQ29tcHV0ZTUgPSAnYzUnLFxuXG4gIC8qKlxuICAgKiBDb21wdXRlIG9wdGltaXplZCBpbnN0YW5jZXMsIDV0aCBnZW5lcmF0aW9uXG4gICAqL1xuICBDNSA9ICdjNScsXG5cbiAgLyoqXG4gICAqIFN0b3JhZ2Utb3B0aW1pemVkIGluc3RhbmNlcywgMm5kIGdlbmVyYXRpb25cbiAgICovXG4gIFN0b3JhZ2UyID0gJ2QyJyxcblxuICAvKipcbiAgICogU3RvcmFnZS1vcHRpbWl6ZWQgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgRDIgPSAnZDInLFxuXG4gIC8qKlxuICAgKiBTdG9yYWdlL2NvbXB1dGUgYmFsYW5jZWQgaW5zdGFuY2VzLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgU3RvcmFnZUNvbXB1dGUxID0gJ2gxJyxcblxuICAvKipcbiAgICogU3RvcmFnZS9jb21wdXRlIGJhbGFuY2VkIGluc3RhbmNlcywgMXN0IGdlbmVyYXRpb25cbiAgICovXG4gIEgxID0gJ2gxJyxcblxuICAvKipcbiAgICogSS9PLW9wdGltaXplZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBJbzMgPSAnaTMnLFxuXG4gIC8qKlxuICAgKiBJL08tb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIEkzID0gJ2kzJyxcblxuICAvKipcbiAgICogQnVyc3RhYmxlIGluc3RhbmNlcywgMm5kIGdlbmVyYXRpb25cbiAgICovXG4gIEJ1cnN0YWJsZTIgPSAndDInLFxuXG4gIC8qKlxuICAgKiBCdXJzdGFibGUgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgVDIgPSAndDInLFxuXG4gIC8qKlxuICAgKiBNZW1vcnktaW50ZW5zaXZlIGluc3RhbmNlcywgMXN0IGdlbmVyYXRpb25cbiAgICovXG4gIE1lbW9yeUludGVuc2l2ZTEgPSAneDEnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnktaW50ZW5zaXZlIGluc3RhbmNlcywgMXN0IGdlbmVyYXRpb25cbiAgICovXG4gIFgxID0gJ3gxJyxcblxuICAvKipcbiAgICogTWVtb3J5LWludGVuc2l2ZSBpbnN0YW5jZXMsIGV4dGVuZGVkLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgTWVtb3J5SW50ZW5zaXZlMUV4dGVuZGVkID0gJ3gxZScsXG5cbiAgLyoqXG4gICAqIE1lbW9yeS1pbnRlbnNpdmUgaW5zdGFuY2VzLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgWDFlID0gJ3gxZScsXG5cbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aXRoIGN1c3RvbWl6YWJsZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIDFzdCBnZW5lcmF0aW9uXG4gICAqL1xuICBGcGdhMSA9ICdmMScsXG5cbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aXRoIGN1c3RvbWl6YWJsZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIDFzdCBnZW5lcmF0aW9uXG4gICAqL1xuICBGMSA9ICdmMScsXG5cbiAgLyoqXG4gICAqIEdyYXBoaWNzLW9wdGltaXplZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBHcmFwaGljczMgPSAnZzMnLFxuXG4gIC8qKlxuICAgKiBHcmFwaGljcy1vcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgRzMgPSAnZzMnLFxuXG4gIC8qKlxuICAgKiBQYXJhbGxlbC1wcm9jZXNzaW5nIG9wdGltaXplZCBpbnN0YW5jZXMsIDJuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBQYXJhbGxlbDIgPSAncDInLFxuXG4gIC8qKlxuICAgKiBQYXJhbGxlbC1wcm9jZXNzaW5nIG9wdGltaXplZCBpbnN0YW5jZXMsIDJuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBQMiA9ICdwMicsXG5cbiAgLyoqXG4gICAqIFBhcmFsbGVsLXByb2Nlc3Npbmcgb3B0aW1pemVkIGluc3RhbmNlcywgM25kIGdlbmVyYXRpb25cbiAgICovXG4gIFBhcmFsbGVsMyA9ICdwMycsXG5cbiAgLyoqXG4gICAqIFBhcmFsbGVsLXByb2Nlc3Npbmcgb3B0aW1pemVkIGluc3RhbmNlcywgM25kIGdlbmVyYXRpb25cbiAgICovXG4gIFAzID0gJ3AzJyxcbn1cblxuLyoqXG4gKiBXaGF0IHNpemUgb2YgaW5zdGFuY2UgdG8gdXNlXG4gKi9cbmV4cG9ydCBlbnVtIEluc3RhbmNlU2l6ZSB7XG4gIE5vbmUgPSAnbmFubycsXG4gIE1pY3JvID0gJ21pY3JvJyxcbiAgU21hbGwgPSAnc21hbGwnLFxuICBNZWRpdW0gPSAnbWVkaXVtJyxcbiAgTGFyZ2UgPSAnbGFyZ2UnLFxuICBYTGFyZ2UgPSAneGxhcmdlJyxcbiAgWExhcmdlMiA9ICcyeGxhcmdlJyxcbiAgWExhcmdlNCA9ICc0eGxhcmdlJyxcbiAgWExhcmdlOCA9ICc4eGxhcmdlJyxcbiAgWExhcmdlOSA9ICc5eGxhcmdlJyxcbiAgWExhcmdlMTAgPSAnMTB4bGFyZ2UnLFxuICBYTGFyZ2UxMiA9ICcxMnhsYXJnZScsXG4gIFhMYXJnZTE2ID0gJzE2eGxhcmdlJyxcbiAgWExhcmdlMTggPSAnMTh4bGFyZ2UnLFxuICBYTGFyZ2UyNCA9ICcyNHhsYXJnZScsXG4gIFhMYXJnZTMyID0gJzMyeGxhcmdlJyxcbn1cblxuLyoqXG4gKiBJbnN0YW5jZSB0eXBlIGZvciBFQzIgaW5zdGFuY2VzXG4gKlxuICogVGhpcyBjbGFzcyB0YWtlcyBhIGxpdGVyYWwgc3RyaW5nLCBnb29kIGlmIHlvdSBhbHJlYWR5XG4gKiBrbm93IHRoZSBpZGVudGlmaWVyIG9mIHRoZSB0eXBlIHlvdSB3YW50LlxuICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VUeXBlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZVR5cGVJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGluc3RhbmNlIHR5cGUgYXMgYSBkb3R0ZWQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZVR5cGVJZGVudGlmaWVyO1xuICB9XG59XG5cbi8qKlxuICogSW5zdGFuY2UgdHlwZSBmb3IgRUMyIGluc3RhbmNlc1xuICpcbiAqIFRoaXMgY2xhc3MgdGFrZXMgYSBjb21iaW5hdGlvbiBvZiBhIGNsYXNzIGFuZCBzaXplLlxuICpcbiAqIEJlIGF3YXJlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgb2YgY2xhc3MgYW5kIHNpemUgYXJlIGF2YWlsYWJsZSwgYW5kIG5vdCBhbGxcbiAqIGNsYXNzZXMgYXJlIGF2YWlsYWJsZSBpbiBhbGwgcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RhbmNlVHlwZVBhaXIgZXh0ZW5kcyBJbnN0YW5jZVR5cGUge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VDbGFzczogSW5zdGFuY2VDbGFzcyxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlU2l6ZTogSW5zdGFuY2VTaXplKSB7XG4gICAgc3VwZXIoaW5zdGFuY2VDbGFzcyArICcuJyArIGluc3RhbmNlU2l6ZSk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbnN0YW5jZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsSUFBWSxhQThMWDtBQTlMRCxXQUFZLGFBQWE7SUFDdkI7O09BRUc7SUFDSCxpQ0FBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGlDQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsaUNBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCwrQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCwrQkFBYyxDQUFBO0lBRWQ7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxnQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCx1Q0FBc0IsQ0FBQTtJQUV0Qjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILDJCQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGtDQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsa0NBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCx3Q0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGlEQUFnQyxDQUFBO0lBRWhDOztPQUVHO0lBQ0gsNEJBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsNkJBQVksQ0FBQTtJQUVaOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtJQUVUOztPQUVHO0lBQ0gsaUNBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCxpQ0FBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILDBCQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILGlDQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMEJBQVMsQ0FBQTtBQUNYLENBQUMsRUE5TFcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUE4THhCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFlBaUJYO0FBakJELFdBQVksWUFBWTtJQUN0Qiw2QkFBYSxDQUFBO0lBQ2IsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBZSxDQUFBO0lBQ2YsaUNBQWlCLENBQUE7SUFDakIsbUNBQW1CLENBQUE7SUFDbkIsbUNBQW1CLENBQUE7SUFDbkIsbUNBQW1CLENBQUE7SUFDbkIsbUNBQW1CLENBQUE7SUFDbkIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7SUFDckIscUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWpCVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQWlCdkI7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsWUFBWTtJQUN2QixZQUE2QixzQkFBOEI7UUFBOUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFRO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFWRCxvQ0FVQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGdCQUFpQixTQUFRLFlBQVk7SUFDaEQsWUFBNEIsYUFBNEIsRUFDNUIsWUFBMEI7UUFDcEQsS0FBSyxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFGaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFFdEQsQ0FBQztDQUNGO0FBTEQsNENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdoYXQgY2xhc3MgYW5kIGdlbmVyYXRpb24gb2YgaW5zdGFuY2UgdG8gdXNlXG4gKlxuICogV2UgaGF2ZSBib3RoIHN5bWJvbGljIGFuZCBjb25jcmV0ZSBlbnVtcyBmb3IgZXZlcnkgdHlwZS5cbiAqXG4gKiBUaGUgZmlyc3QgYXJlIGZvciBwZW9wbGUgdGhhdCB3YW50IHRvIHNwZWNpZnkgYnkgcHVycG9zZSxcbiAqIHRoZSBzZWNvbmQgb25lIGFyZSBmb3IgcGVvcGxlIHdobyBhbHJlYWR5IGtub3cgZXhhY3RseSB3aGF0XG4gKiAnUjQnIG1lYW5zLlxuICovXG5leHBvcnQgZW51bSBJbnN0YW5jZUNsYXNzIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIFN0YW5kYXJkMyA9ICdtMycsXG5cbiAgLyoqXG4gICAqIFN0YW5kYXJkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIE0zID0gJ20zJyxcblxuICAvKipcbiAgICogU3RhbmRhcmQgaW5zdGFuY2VzLCA0dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgU3RhbmRhcmQ0ID0gJ200JyxcblxuICAvKipcbiAgICogU3RhbmRhcmQgaW5zdGFuY2VzLCA0dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgTTQgPSAnbTQnLFxuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCBpbnN0YW5jZXMsIDV0aCBnZW5lcmF0aW9uXG4gICAqL1xuICBTdGFuZGFyZDUgPSAnbTUnLFxuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCBpbnN0YW5jZXMsIDV0aCBnZW5lcmF0aW9uXG4gICAqL1xuICBNNSA9ICdtNScsXG5cbiAgLyoqXG4gICAqIE1lbW9yeSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgTWVtb3J5MyA9ICdyMycsXG5cbiAgLyoqXG4gICAqIE1lbW9yeSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgUjMgPSAncjMnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnkgb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIE1lbW9yeTQgPSAncjQnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnkgb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIFI0ID0gJ3I0JyxcblxuICAvKipcbiAgICogQ29tcHV0ZSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgQ29tcHV0ZTMgPSAnYzMnLFxuXG4gIC8qKlxuICAgKiBDb21wdXRlIG9wdGltaXplZCBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBDMyA9ICdjMycsXG5cbiAgLyoqXG4gICAqIENvbXB1dGUgb3B0aW1pemVkIGluc3RhbmNlcywgNHRoIGdlbmVyYXRpb25cbiAgICovXG4gIENvbXB1dGU0ID0gJ2M0JyxcblxuICAvKipcbiAgICogQ29tcHV0ZSBvcHRpbWl6ZWQgaW5zdGFuY2VzLCA0dGggZ2VuZXJhdGlvblxuICAgKi9cbiAgQzQgPSAnYzQnLFxuXG4gIC8qKlxuICAgKiBDb21wdXRlIG9wdGltaXplZCBpbnN0YW5jZXMsIDV0aCBnZW5lcmF0aW9uXG4gICAqL1xuICBDb21wdXRlNSA9ICdjNScsXG5cbiAgLyoqXG4gICAqIENvbXB1dGUgb3B0aW1pemVkIGluc3RhbmNlcywgNXRoIGdlbmVyYXRpb25cbiAgICovXG4gIEM1ID0gJ2M1JyxcblxuICAvKipcbiAgICogU3RvcmFnZS1vcHRpbWl6ZWQgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgU3RvcmFnZTIgPSAnZDInLFxuXG4gIC8qKlxuICAgKiBTdG9yYWdlLW9wdGltaXplZCBpbnN0YW5jZXMsIDJuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBEMiA9ICdkMicsXG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UvY29tcHV0ZSBiYWxhbmNlZCBpbnN0YW5jZXMsIDFzdCBnZW5lcmF0aW9uXG4gICAqL1xuICBTdG9yYWdlQ29tcHV0ZTEgPSAnaDEnLFxuXG4gIC8qKlxuICAgKiBTdG9yYWdlL2NvbXB1dGUgYmFsYW5jZWQgaW5zdGFuY2VzLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgSDEgPSAnaDEnLFxuXG4gIC8qKlxuICAgKiBJL08tb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIElvMyA9ICdpMycsXG5cbiAgLyoqXG4gICAqIEkvTy1vcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgSTMgPSAnaTMnLFxuXG4gIC8qKlxuICAgKiBCdXJzdGFibGUgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgQnVyc3RhYmxlMiA9ICd0MicsXG5cbiAgLyoqXG4gICAqIEJ1cnN0YWJsZSBpbnN0YW5jZXMsIDJuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBUMiA9ICd0MicsXG5cbiAgLyoqXG4gICAqIEJ1cnN0YWJsZSBpbnN0YW5jZXMsIDNyZCBnZW5lcmF0aW9uXG4gICAqL1xuICBCdXJzdGFibGUzID0gJ3QzJyxcblxuICAvKipcbiAgICogQnVyc3RhYmxlIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIFQzID0gJ3QzJyxcblxuICAvKipcbiAgICogTWVtb3J5LWludGVuc2l2ZSBpbnN0YW5jZXMsIDFzdCBnZW5lcmF0aW9uXG4gICAqL1xuICBNZW1vcnlJbnRlbnNpdmUxID0gJ3gxJyxcblxuICAvKipcbiAgICogTWVtb3J5LWludGVuc2l2ZSBpbnN0YW5jZXMsIDFzdCBnZW5lcmF0aW9uXG4gICAqL1xuICBYMSA9ICd4MScsXG5cbiAgLyoqXG4gICAqIE1lbW9yeS1pbnRlbnNpdmUgaW5zdGFuY2VzLCBleHRlbmRlZCwgMXN0IGdlbmVyYXRpb25cbiAgICovXG4gIE1lbW9yeUludGVuc2l2ZTFFeHRlbmRlZCA9ICd4MWUnLFxuXG4gIC8qKlxuICAgKiBNZW1vcnktaW50ZW5zaXZlIGluc3RhbmNlcywgMXN0IGdlbmVyYXRpb25cbiAgICovXG4gIFgxZSA9ICd4MWUnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2l0aCBjdXN0b21pemFibGUgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgRnBnYTEgPSAnZjEnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2l0aCBjdXN0b21pemFibGUgaGFyZHdhcmUgYWNjZWxlcmF0aW9uLCAxc3QgZ2VuZXJhdGlvblxuICAgKi9cbiAgRjEgPSAnZjEnLFxuXG4gIC8qKlxuICAgKiBHcmFwaGljcy1vcHRpbWl6ZWQgaW5zdGFuY2VzLCAzcmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgR3JhcGhpY3MzID0gJ2czJyxcblxuICAvKipcbiAgICogR3JhcGhpY3Mtb3B0aW1pemVkIGluc3RhbmNlcywgM3JkIGdlbmVyYXRpb25cbiAgICovXG4gIEczID0gJ2czJyxcblxuICAvKipcbiAgICogUGFyYWxsZWwtcHJvY2Vzc2luZyBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgUGFyYWxsZWwyID0gJ3AyJyxcblxuICAvKipcbiAgICogUGFyYWxsZWwtcHJvY2Vzc2luZyBvcHRpbWl6ZWQgaW5zdGFuY2VzLCAybmQgZ2VuZXJhdGlvblxuICAgKi9cbiAgUDIgPSAncDInLFxuXG4gIC8qKlxuICAgKiBQYXJhbGxlbC1wcm9jZXNzaW5nIG9wdGltaXplZCBpbnN0YW5jZXMsIDNuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBQYXJhbGxlbDMgPSAncDMnLFxuXG4gIC8qKlxuICAgKiBQYXJhbGxlbC1wcm9jZXNzaW5nIG9wdGltaXplZCBpbnN0YW5jZXMsIDNuZCBnZW5lcmF0aW9uXG4gICAqL1xuICBQMyA9ICdwMycsXG59XG5cbi8qKlxuICogV2hhdCBzaXplIG9mIGluc3RhbmNlIHRvIHVzZVxuICovXG5leHBvcnQgZW51bSBJbnN0YW5jZVNpemUge1xuICBOb25lID0gJ25hbm8nLFxuICBNaWNybyA9ICdtaWNybycsXG4gIFNtYWxsID0gJ3NtYWxsJyxcbiAgTWVkaXVtID0gJ21lZGl1bScsXG4gIExhcmdlID0gJ2xhcmdlJyxcbiAgWExhcmdlID0gJ3hsYXJnZScsXG4gIFhMYXJnZTIgPSAnMnhsYXJnZScsXG4gIFhMYXJnZTQgPSAnNHhsYXJnZScsXG4gIFhMYXJnZTggPSAnOHhsYXJnZScsXG4gIFhMYXJnZTkgPSAnOXhsYXJnZScsXG4gIFhMYXJnZTEwID0gJzEweGxhcmdlJyxcbiAgWExhcmdlMTIgPSAnMTJ4bGFyZ2UnLFxuICBYTGFyZ2UxNiA9ICcxNnhsYXJnZScsXG4gIFhMYXJnZTE4ID0gJzE4eGxhcmdlJyxcbiAgWExhcmdlMjQgPSAnMjR4bGFyZ2UnLFxuICBYTGFyZ2UzMiA9ICczMnhsYXJnZScsXG59XG5cbi8qKlxuICogSW5zdGFuY2UgdHlwZSBmb3IgRUMyIGluc3RhbmNlc1xuICpcbiAqIFRoaXMgY2xhc3MgdGFrZXMgYSBsaXRlcmFsIHN0cmluZywgZ29vZCBpZiB5b3UgYWxyZWFkeVxuICoga25vdyB0aGUgaWRlbnRpZmllciBvZiB0aGUgdHlwZSB5b3Ugd2FudC5cbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RhbmNlVHlwZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VUeXBlSWRlbnRpZmllcjogc3RyaW5nKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbnN0YW5jZSB0eXBlIGFzIGEgZG90dGVkIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VUeXBlSWRlbnRpZmllcjtcbiAgfVxufVxuXG4vKipcbiAqIEluc3RhbmNlIHR5cGUgZm9yIEVDMiBpbnN0YW5jZXNcbiAqXG4gKiBUaGlzIGNsYXNzIHRha2VzIGEgY29tYmluYXRpb24gb2YgYSBjbGFzcyBhbmQgc2l6ZS5cbiAqXG4gKiBCZSBhd2FyZSB0aGF0IG5vdCBhbGwgY29tYmluYXRpb25zIG9mIGNsYXNzIGFuZCBzaXplIGFyZSBhdmFpbGFibGUsIGFuZCBub3QgYWxsXG4gKiBjbGFzc2VzIGFyZSBhdmFpbGFibGUgaW4gYWxsIHJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZVR5cGVQYWlyIGV4dGVuZHMgSW5zdGFuY2VUeXBlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGluc3RhbmNlQ2xhc3M6IEluc3RhbmNlQ2xhc3MsXG4gICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZVNpemU6IEluc3RhbmNlU2l6ZSkge1xuICAgIHN1cGVyKGluc3RhbmNlQ2xhc3MgKyAnLicgKyBpbnN0YW5jZVNpemUpO1xuICB9XG59XG4iXX0=

@@ -28,3 +28,3 @@ import { Connections, IConnectable } from "./connections";

private readonly cidrIp;
readonly canInlineRule: boolean;
readonly canInlineRule = true;
readonly connections: Connections;

@@ -53,3 +53,3 @@ readonly uniqueId: string;

private readonly cidrIpv6;
readonly canInlineRule: boolean;
readonly canInlineRule = true;
readonly connections: Connections;

@@ -84,3 +84,3 @@ readonly uniqueId: string;

private readonly prefixListId;
readonly canInlineRule: boolean;
readonly canInlineRule = true;
readonly connections: Connections;

@@ -120,3 +120,3 @@ readonly uniqueId: string;

private readonly port;
readonly canInlineRule: boolean;
readonly canInlineRule = true;
constructor(port: number);

@@ -131,3 +131,3 @@ toRuleJSON(): any;

private readonly port;
readonly canInlineRule: boolean;
readonly canInlineRule = false;
constructor(port: string);

@@ -143,3 +143,3 @@ toRuleJSON(): any;

private readonly endPort;
readonly canInlineRule: boolean;
readonly canInlineRule = true;
constructor(startPort: number, endPort: number);

@@ -153,3 +153,3 @@ toRuleJSON(): any;

export declare class TcpAllPorts implements IPortRange {
readonly canInlineRule: boolean;
readonly canInlineRule = true;
toRuleJSON(): any;

@@ -159,8 +159,76 @@ toString(): string;

/**
* All TCP Ports
* A single UDP port
*/
export declare class UdpPort implements IPortRange {
private readonly port;
readonly canInlineRule = true;
constructor(port: number);
toRuleJSON(): any;
toString(): string;
}
/**
* A single UDP port that is provided by a resource attribute
*/
export declare class UdpPortFromAttribute implements IPortRange {
private readonly port;
readonly canInlineRule = false;
constructor(port: string);
toRuleJSON(): any;
toString(): string;
}
/**
* A UDP port range
*/
export declare class UdpPortRange implements IPortRange {
private readonly startPort;
private readonly endPort;
readonly canInlineRule = true;
constructor(startPort: number, endPort: number);
toRuleJSON(): any;
toString(): string;
}
/**
* All UDP Ports
*/
export declare class UdpAllPorts implements IPortRange {
readonly canInlineRule = true;
toRuleJSON(): any;
toString(): string;
}
/**
* A set of matching ICMP Type & Code
*/
export declare class IcmpTypeAndCode implements IPortRange {
private readonly type;
private readonly code;
readonly canInlineRule = true;
constructor(type: number, code: number);
toRuleJSON(): any;
toString(): string;
}
/**
* All ICMP Codes for a given ICMP Type
*/
export declare class IcmpAllTypeCodes implements IPortRange {
private readonly type;
readonly canInlineRule = true;
constructor(type: number);
toRuleJSON(): any;
toString(): string;
}
/**
* All ICMP Types & Codes
*/
export declare class IcmpAllTypesAndCodes implements IPortRange {
readonly canInlineRule = true;
toRuleJSON(): any;
toString(): string;
}
/**
* All Traffic
*/
export declare class AllConnections implements IPortRange {
readonly canInlineRule: boolean;
readonly canInlineRule = true;
toRuleJSON(): any;
toString(): string;
}

@@ -186,4 +186,144 @@ "use strict";

/**
* All TCP Ports
* A single UDP port
*/
class UdpPort {
constructor(port) {
this.port = port;
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Udp,
fromPort: this.port,
toPort: this.port
};
}
toString() {
return `UDP ${this.port}`;
}
}
exports.UdpPort = UdpPort;
/**
* A single UDP port that is provided by a resource attribute
*/
class UdpPortFromAttribute {
constructor(port) {
this.port = port;
this.canInlineRule = false;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Udp,
fromPort: this.port,
toPort: this.port
};
}
toString() {
return 'UDP {IndirectPort}';
}
}
exports.UdpPortFromAttribute = UdpPortFromAttribute;
/**
* A UDP port range
*/
class UdpPortRange {
constructor(startPort, endPort) {
this.startPort = startPort;
this.endPort = endPort;
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Udp,
fromPort: this.startPort,
toPort: this.endPort
};
}
toString() {
return `UDP ${this.startPort}-${this.endPort}`;
}
}
exports.UdpPortRange = UdpPortRange;
/**
* All UDP Ports
*/
class UdpAllPorts {
constructor() {
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Udp,
fromPort: 0,
toPort: 65535
};
}
toString() {
return 'UDP ALL PORTS';
}
}
exports.UdpAllPorts = UdpAllPorts;
/**
* A set of matching ICMP Type & Code
*/
class IcmpTypeAndCode {
constructor(type, code) {
this.type = type;
this.code = code;
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Icmp,
fromPort: this.type,
toPort: this.code
};
}
toString() {
return `ICMP Type ${this.type} Code ${this.code}`;
}
}
exports.IcmpTypeAndCode = IcmpTypeAndCode;
/**
* All ICMP Codes for a given ICMP Type
*/
class IcmpAllTypeCodes {
constructor(type) {
this.type = type;
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Icmp,
fromPort: this.type,
toPort: -1
};
}
toString() {
return `ICMP Type ${this.type}`;
}
}
exports.IcmpAllTypeCodes = IcmpAllTypeCodes;
/**
* All ICMP Types & Codes
*/
class IcmpAllTypesAndCodes {
constructor() {
this.canInlineRule = true;
}
toRuleJSON() {
return {
ipProtocol: Protocol.Icmp,
fromPort: -1,
toPort: -1
};
}
toString() {
return 'ALL ICMP';
}
}
exports.IcmpAllTypesAndCodes = IcmpAllTypesAndCodes;
/**
* All Traffic
*/
class AllConnections {

@@ -205,2 +345,2 @@ constructor() {

exports.AllConnections = AllConnections;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBMEQ7QUEyQjFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBS25CLFlBQTZCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSjNCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQWdCLElBQUkseUJBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFJdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFyQkQsNEJBcUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxRQUFRO0lBQ25DO1FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQUpELDBCQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFLbkIsWUFBNkIsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUo3QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixnQkFBVyxHQUFnQixJQUFJLHlCQUFXLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBSXRGLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBckJELDRCQXFCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsUUFBUTtJQUNuQztRQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCwwQkFJQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxVQUFVO0lBS3JCLFlBQTZCLFlBQW9CO1FBQXBCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBSmpDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQWdCLElBQUkseUJBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFJdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELENBQUM7Q0FDRjtBQWhCRCxnQ0FnQkM7QUFpQkQ7O0dBRUc7QUFDSCxJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsc0JBQVUsQ0FBQTtJQUNWLHVCQUFXLENBQUE7SUFDWCx1QkFBVyxDQUFBO0lBQ1gseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7QUFDZixDQUFDLEVBTlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFNbkI7QUFFRDs7R0FFRztBQUNILE1BQWEsT0FBTztJQUdsQixZQUE2QixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUZ6QixrQkFBYSxHQUFHLElBQUksQ0FBQztJQUdyQyxDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxVQUFVLEVBQUUsUUFBUSxDQUFDLEdBQUc7WUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQWpCRCwwQkFpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBRy9CLFlBQTZCLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRnpCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBR3RDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRztZQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBakJELG9EQWlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxZQUFZO0lBR3ZCLFlBQTZCLFNBQWlCLEVBQW1CLE9BQWU7UUFBbkQsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUFtQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRmhFLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBR3JDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLFVBQVUsRUFBRSxRQUFRLENBQUMsR0FBRztZQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFqQkQsb0NBaUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFBeEI7UUFDa0Isa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFhdkMsQ0FBQztJQVhRLFVBQVU7UUFDZixPQUFPO1lBQ0wsVUFBVSxFQUFFLFFBQVEsQ0FBQyxHQUFHO1lBQ3hCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFkRCxrQ0FjQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBQTNCO1FBQ2tCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBYXZDLENBQUM7SUFYUSxVQUFVO1FBQ2YsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBZEQsd0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9ucywgSUNvbm5lY3RhYmxlIH0gZnJvbSBcIi4vY29ubmVjdGlvbnNcIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSBwZWVyLXNwZWNpZmljYXRpb24gcGFydHMgb2YgYSBzZWN1cml0eSBncm91cCBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNlY3VyaXR5R3JvdXBSdWxlIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJ1bGUgY2FuIGJlIGlubGluZWQgaW50byBhIFNlY3VyaXR5R3JvdXAgb3Igbm90XG4gICAqL1xuICByZWFkb25seSBjYW5JbmxpbmVSdWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGNvbm5lY3Rpb24gcGVlclxuICAgKi9cbiAgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgaW5ncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b0luZ3Jlc3NSdWxlSlNPTigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIGVncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b0VncmVzc1J1bGVKU09OKCk6IGFueTtcbn1cblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdG8gYW5kIGZyb20gYSBnaXZlbiBJUCByYW5nZVxuICovXG5leHBvcnQgY2xhc3MgQ2lkcklQdjQgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFJ1bGUsIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXBSdWxlOiB0aGlzIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNpZHJJcDogc3RyaW5nKSB7XG4gICAgdGhpcy51bmlxdWVJZCA9IGNpZHJJcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBpbmdyZXNzIHJ1bGUgSlNPTiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyB0b0luZ3Jlc3NSdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7IGNpZHJJcDogdGhpcy5jaWRySXAgfTtcbiAgfVxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgZWdyZXNzIHJ1bGUgSlNPTiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyB0b0VncmVzc1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHsgY2lkcklwOiB0aGlzLmNpZHJJcCB9O1xuICB9XG59XG5cbi8qKlxuICogQW55IElQdjQgYWRkcmVzc1xuICovXG5leHBvcnQgY2xhc3MgQW55SVB2NCBleHRlbmRzIENpZHJJUHY0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCIwLjAuMC4wLzBcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdG8gYSBmcm9tIGEgZ2l2ZW4gSVB2NiByYW5nZVxuICovXG5leHBvcnQgY2xhc3MgQ2lkcklQdjYgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFJ1bGUsIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXBSdWxlOiB0aGlzIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNpZHJJcHY2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXF1ZUlkID0gY2lkcklwdjY7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgaW5ncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICBwdWJsaWMgdG9JbmdyZXNzUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4geyBjaWRySXB2NjogdGhpcy5jaWRySXB2NiB9O1xuICB9XG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBlZ3Jlc3MgcnVsZSBKU09OIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvblxuICAgKi9cbiAgcHVibGljIHRvRWdyZXNzUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4geyBjaWRySXB2NjogdGhpcy5jaWRySXB2NiB9O1xuICB9XG59XG5cbi8qKlxuICogQW55IElQdjYgYWRkcmVzc1xuICovXG5leHBvcnQgY2xhc3MgQW55SVB2NiBleHRlbmRzIENpZHJJUHY2IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCI6OjAvMFwiKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcHJlZml4IGxpc3RcbiAqXG4gKiBQcmVmaXggbGlzdHMgYXJlIHVzZWQgdG8gYWxsb3cgdHJhZmZpYyB0byBWUEMtbG9jYWwgc2VydmljZSBlbmRwb2ludHMuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGlzIHBhZ2U6XG4gKlxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblZQQy9sYXRlc3QvVXNlckd1aWRlL3ZwYy1lbmRwb2ludHMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4TGlzdCBpbXBsZW1lbnRzIElTZWN1cml0eUdyb3VwUnVsZSwgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cFJ1bGU6IHRoaXMgfSk7XG4gIHB1YmxpYyByZWFkb25seSB1bmlxdWVJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJlZml4TGlzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXF1ZUlkID0gcHJlZml4TGlzdElkO1xuICB9XG5cbiAgcHVibGljIHRvSW5ncmVzc1J1bGVKU09OKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcmVmaXggbGlzdHMgY2FuIG9ubHkgYmUgdXNlZCBmb3IgZWdyZXNzIHJ1bGVzJyk7XG4gIH1cblxuICBwdWJsaWMgdG9FZ3Jlc3NSdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7IGRlc3RpbmF0aW9uUHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCB9O1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgY29ubmVjdGlvbi1zcGVjaWZpY2F0aW9uIHBhcnRzIG9mIGEgc2VjdXJpdHkgZ3JvdXAgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQb3J0UmFuZ2Uge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcnVsZSBjb250YWluaW5nIHRoaXMgcG9ydCByYW5nZSBjYW4gYmUgaW5saW5lZCBpbnRvIGEgc2VjdXJpdHlncm91cCBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBjYW5JbmxpbmVSdWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBpbmdyZXNzL2VncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b1J1bGVKU09OKCk6IGFueTtcbn1cblxuLyoqXG4gKiBQcm90b2NvbCBmb3IgdXNlIGluIENvbm5lY3Rpb24gUnVsZXNcbiAqL1xuZXhwb3J0IGVudW0gUHJvdG9jb2wge1xuICBBbGwgPSAnLTEnLFxuICBUY3AgPSAndGNwJyxcbiAgVWRwID0gJ3VkcCcsXG4gIEljbXAgPSAnaWNtcCcsXG4gIEljbXB2NiA9ICc1OCcsXG59XG5cbi8qKlxuICogQSBzaW5nbGUgVENQIHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIFRjcFBvcnQgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5UY3AsXG4gICAgICBmcm9tUG9ydDogdGhpcy5wb3J0LFxuICAgICAgdG9Qb3J0OiB0aGlzLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnBvcnR9YDtcbiAgfVxufVxuXG4vKipcbiAqIEEgc2luZ2xlIFRDUCBwb3J0IHRoYXQgaXMgcHJvdmlkZWQgYnkgYSByZXNvdXJjZSBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRjcFBvcnRGcm9tQXR0cmlidXRlIGltcGxlbWVudHMgSVBvcnRSYW5nZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb3J0OiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlRjcCxcbiAgICAgIGZyb21Qb3J0OiB0aGlzLnBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMucG9ydFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICd7SW5kaXJlY3RQb3J0fSc7XG4gIH1cbn1cblxuLyoqXG4gKiBBIFRDUCBwb3J0IHJhbmdlXG4gKi9cbmV4cG9ydCBjbGFzcyBUY3BQb3J0UmFuZ2UgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RhcnRQb3J0OiBudW1iZXIsIHByaXZhdGUgcmVhZG9ubHkgZW5kUG9ydDogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5UY3AsXG4gICAgICBmcm9tUG9ydDogdGhpcy5zdGFydFBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMuZW5kUG9ydFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3RhcnRQb3J0fS0ke3RoaXMuZW5kUG9ydH1gO1xuICB9XG59XG5cbi8qKlxuICogQWxsIFRDUCBQb3J0c1xuICovXG5leHBvcnQgY2xhc3MgVGNwQWxsUG9ydHMgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlRjcCxcbiAgICAgIGZyb21Qb3J0OiAwLFxuICAgICAgdG9Qb3J0OiA2NTUzNVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBTEwgUE9SVFMnO1xuICB9XG59XG5cbi8qKlxuICogQWxsIFRDUCBQb3J0c1xuICovXG5leHBvcnQgY2xhc3MgQWxsQ29ubmVjdGlvbnMgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6ICctMScsXG4gICAgICBmcm9tUG9ydDogLTEsXG4gICAgICB0b1BvcnQ6IC0xLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBTEwgVFJBRkZJQyc7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQ0FBMEQ7QUEyQjFEOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBS25CLFlBQTZCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBSjNCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQWdCLElBQUkseUJBQVcsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFJdEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFDRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFyQkQsNEJBcUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxRQUFRO0lBQ25DO1FBQ0UsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQUpELDBCQUlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFLbkIsWUFBNkIsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUo3QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixnQkFBVyxHQUFnQixJQUFJLHlCQUFXLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBSXRGLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLEVBQUUsUUFBUSxFQUFF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bSBcIi4vY29ubmVjdGlvbnNcIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSBwZWVyLXNwZWNpZmljYXRpb24gcGFydHMgb2YgYSBzZWN1cml0eSBncm91cCBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNlY3VyaXR5R3JvdXBSdWxlIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJ1bGUgY2FuIGJlIGlubGluZWQgaW50byBhIFNlY3VyaXR5R3JvdXAgb3Igbm90XG4gICAqL1xuICByZWFkb25seSBjYW5JbmxpbmVSdWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGNvbm5lY3Rpb24gcGVlclxuICAgKi9cbiAgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgaW5ncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b0luZ3Jlc3NSdWxlSlNPTigpOiBhbnk7XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgdGhlIGVncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b0VncmVzc1J1bGVKU09OKCk6IGFueTtcbn1cblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdG8gYW5kIGZyb20gYSBnaXZlbiBJUCByYW5nZVxuICovXG5leHBvcnQgY2xhc3MgQ2lkcklQdjQgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFJ1bGUsIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXBSdWxlOiB0aGlzIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNpZHJJcDogc3RyaW5nKSB7XG4gICAgdGhpcy51bmlxdWVJZCA9IGNpZHJJcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBpbmdyZXNzIHJ1bGUgSlNPTiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyB0b0luZ3Jlc3NSdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7IGNpZHJJcDogdGhpcy5jaWRySXAgfTtcbiAgfVxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgZWdyZXNzIHJ1bGUgSlNPTiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb25cbiAgICovXG4gIHB1YmxpYyB0b0VncmVzc1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHsgY2lkcklwOiB0aGlzLmNpZHJJcCB9O1xuICB9XG59XG5cbi8qKlxuICogQW55IElQdjQgYWRkcmVzc1xuICovXG5leHBvcnQgY2xhc3MgQW55SVB2NCBleHRlbmRzIENpZHJJUHY0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCIwLjAuMC4wLzBcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdG8gYSBmcm9tIGEgZ2l2ZW4gSVB2NiByYW5nZVxuICovXG5leHBvcnQgY2xhc3MgQ2lkcklQdjYgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFJ1bGUsIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXBSdWxlOiB0aGlzIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pcXVlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNpZHJJcHY2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXF1ZUlkID0gY2lkcklwdjY7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgaW5ncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICBwdWJsaWMgdG9JbmdyZXNzUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4geyBjaWRySXB2NjogdGhpcy5jaWRySXB2NiB9O1xuICB9XG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBlZ3Jlc3MgcnVsZSBKU09OIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvblxuICAgKi9cbiAgcHVibGljIHRvRWdyZXNzUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4geyBjaWRySXB2NjogdGhpcy5jaWRySXB2NiB9O1xuICB9XG59XG5cbi8qKlxuICogQW55IElQdjYgYWRkcmVzc1xuICovXG5leHBvcnQgY2xhc3MgQW55SVB2NiBleHRlbmRzIENpZHJJUHY2IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCI6OjAvMFwiKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcHJlZml4IGxpc3RcbiAqXG4gKiBQcmVmaXggbGlzdHMgYXJlIHVzZWQgdG8gYWxsb3cgdHJhZmZpYyB0byBWUEMtbG9jYWwgc2VydmljZSBlbmRwb2ludHMuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGlzIHBhZ2U6XG4gKlxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblZQQy9sYXRlc3QvVXNlckd1aWRlL3ZwYy1lbmRwb2ludHMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4TGlzdCBpbXBsZW1lbnRzIElTZWN1cml0eUdyb3VwUnVsZSwgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cFJ1bGU6IHRoaXMgfSk7XG4gIHB1YmxpYyByZWFkb25seSB1bmlxdWVJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJlZml4TGlzdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVuaXF1ZUlkID0gcHJlZml4TGlzdElkO1xuICB9XG5cbiAgcHVibGljIHRvSW5ncmVzc1J1bGVKU09OKCk6IGFueSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQcmVmaXggbGlzdHMgY2FuIG9ubHkgYmUgdXNlZCBmb3IgZWdyZXNzIHJ1bGVzJyk7XG4gIH1cblxuICBwdWJsaWMgdG9FZ3Jlc3NSdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7IGRlc3RpbmF0aW9uUHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCB9O1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgY29ubmVjdGlvbi1zcGVjaWZpY2F0aW9uIHBhcnRzIG9mIGEgc2VjdXJpdHkgZ3JvdXAgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQb3J0UmFuZ2Uge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcnVsZSBjb250YWluaW5nIHRoaXMgcG9ydCByYW5nZSBjYW4gYmUgaW5saW5lZCBpbnRvIGEgc2VjdXJpdHlncm91cCBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBjYW5JbmxpbmVSdWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSBpbmdyZXNzL2VncmVzcyBydWxlIEpTT04gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uXG4gICAqL1xuICB0b1J1bGVKU09OKCk6IGFueTtcbn1cblxuLyoqXG4gKiBQcm90b2NvbCBmb3IgdXNlIGluIENvbm5lY3Rpb24gUnVsZXNcbiAqL1xuZXhwb3J0IGVudW0gUHJvdG9jb2wge1xuICBBbGwgPSAnLTEnLFxuICBUY3AgPSAndGNwJyxcbiAgVWRwID0gJ3VkcCcsXG4gIEljbXAgPSAnaWNtcCcsXG4gIEljbXB2NiA9ICc1OCcsXG59XG5cbi8qKlxuICogQSBzaW5nbGUgVENQIHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIFRjcFBvcnQgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5UY3AsXG4gICAgICBmcm9tUG9ydDogdGhpcy5wb3J0LFxuICAgICAgdG9Qb3J0OiB0aGlzLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgJHt0aGlzLnBvcnR9YDtcbiAgfVxufVxuXG4vKipcbiAqIEEgc2luZ2xlIFRDUCBwb3J0IHRoYXQgaXMgcHJvdmlkZWQgYnkgYSByZXNvdXJjZSBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRjcFBvcnRGcm9tQXR0cmlidXRlIGltcGxlbWVudHMgSVBvcnRSYW5nZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb3J0OiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlRjcCxcbiAgICAgIGZyb21Qb3J0OiB0aGlzLnBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMucG9ydFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICd7SW5kaXJlY3RQb3J0fSc7XG4gIH1cbn1cblxuLyoqXG4gKiBBIFRDUCBwb3J0IHJhbmdlXG4gKi9cbmV4cG9ydCBjbGFzcyBUY3BQb3J0UmFuZ2UgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RhcnRQb3J0OiBudW1iZXIsIHByaXZhdGUgcmVhZG9ubHkgZW5kUG9ydDogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5UY3AsXG4gICAgICBmcm9tUG9ydDogdGhpcy5zdGFydFBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMuZW5kUG9ydFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3RhcnRQb3J0fS0ke3RoaXMuZW5kUG9ydH1gO1xuICB9XG59XG5cbi8qKlxuICogQWxsIFRDUCBQb3J0c1xuICovXG5leHBvcnQgY2xhc3MgVGNwQWxsUG9ydHMgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlRjcCxcbiAgICAgIGZyb21Qb3J0OiAwLFxuICAgICAgdG9Qb3J0OiA2NTUzNVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdBTEwgUE9SVFMnO1xuICB9XG59XG5cbi8qKlxuICogQSBzaW5nbGUgVURQIHBvcnRcbiAqL1xuZXhwb3J0IGNsYXNzIFVkcFBvcnQgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9ydDogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5VZHAsXG4gICAgICBmcm9tUG9ydDogdGhpcy5wb3J0LFxuICAgICAgdG9Qb3J0OiB0aGlzLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgVURQICR7dGhpcy5wb3J0fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBVRFAgcG9ydCB0aGF0IGlzIHByb3ZpZGVkIGJ5IGEgcmVzb3VyY2UgYXR0cmlidXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBVZHBQb3J0RnJvbUF0dHJpYnV0ZSBpbXBsZW1lbnRzIElQb3J0UmFuZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuSW5saW5lUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9ydDogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5VZHAsXG4gICAgICBmcm9tUG9ydDogdGhpcy5wb3J0LFxuICAgICAgdG9Qb3J0OiB0aGlzLnBvcnRcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnVURQIHtJbmRpcmVjdFBvcnR9JztcbiAgfVxufVxuXG4vKipcbiAqIEEgVURQIHBvcnQgcmFuZ2VcbiAqL1xuZXhwb3J0IGNsYXNzIFVkcFBvcnRSYW5nZSBpbXBsZW1lbnRzIElQb3J0UmFuZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuSW5saW5lUnVsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGFydFBvcnQ6IG51bWJlciwgcHJpdmF0ZSByZWFkb25seSBlbmRQb3J0OiBudW1iZXIpIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlVkcCxcbiAgICAgIGZyb21Qb3J0OiB0aGlzLnN0YXJ0UG9ydCxcbiAgICAgIHRvUG9ydDogdGhpcy5lbmRQb3J0XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFVEUCAke3RoaXMuc3RhcnRQb3J0fS0ke3RoaXMuZW5kUG9ydH1gO1xuICB9XG59XG5cbi8qKlxuICogQWxsIFVEUCBQb3J0c1xuICovXG5leHBvcnQgY2xhc3MgVWRwQWxsUG9ydHMgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLlVkcCxcbiAgICAgIGZyb21Qb3J0OiAwLFxuICAgICAgdG9Qb3J0OiA2NTUzNVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdVRFAgQUxMIFBPUlRTJztcbiAgfVxufVxuXG4vKipcbiAqIEEgc2V0IG9mIG1hdGNoaW5nIElDTVAgVHlwZSAmIENvZGVcbiAqL1xuZXhwb3J0IGNsYXNzIEljbXBUeXBlQW5kQ29kZSBpbXBsZW1lbnRzIElQb3J0UmFuZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuSW5saW5lUnVsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlOiBudW1iZXIsIHByaXZhdGUgcmVhZG9ubHkgY29kZTogbnVtYmVyKSB7XG4gIH1cblxuICBwdWJsaWMgdG9SdWxlSlNPTigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBpcFByb3RvY29sOiBQcm90b2NvbC5JY21wLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMudHlwZSxcbiAgICAgIHRvUG9ydDogdGhpcy5jb2RlXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYElDTVAgVHlwZSAke3RoaXMudHlwZX0gQ29kZSAke3RoaXMuY29kZX1gO1xuICB9XG59XG5cbi8qKlxuICogQWxsIElDTVAgQ29kZXMgZm9yIGEgZ2l2ZW4gSUNNUCBUeXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBJY21wQWxsVHlwZUNvZGVzIGltcGxlbWVudHMgSVBvcnRSYW5nZSB7XG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IG51bWJlcikge1xuICB9XG5cbiAgcHVibGljIHRvUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXBQcm90b2NvbDogUHJvdG9jb2wuSWNtcCxcbiAgICAgIGZyb21Qb3J0OiB0aGlzLnR5cGUsXG4gICAgICB0b1BvcnQ6IC0xXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYElDTVAgVHlwZSAke3RoaXMudHlwZX1gO1xuICB9XG59XG5cbi8qKlxuICogQWxsIElDTVAgVHlwZXMgJiBDb2Rlc1xuICovXG5leHBvcnQgY2xhc3MgSWNtcEFsbFR5cGVzQW5kQ29kZXMgaW1wbGVtZW50cyBJUG9ydFJhbmdlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbklubGluZVJ1bGUgPSB0cnVlO1xuXG4gIHB1YmxpYyB0b1J1bGVKU09OKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwUHJvdG9jb2w6IFByb3RvY29sLkljbXAsXG4gICAgICBmcm9tUG9ydDogLTEsXG4gICAgICB0b1BvcnQ6IC0xXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ0FMTCBJQ01QJztcbiAgfVxufVxuXG4vKipcbiAqIEFsbCBUcmFmZmljXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGxDb25uZWN0aW9ucyBpbXBsZW1lbnRzIElQb3J0UmFuZ2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuSW5saW5lUnVsZSA9IHRydWU7XG5cbiAgcHVibGljIHRvUnVsZUpTT04oKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXBQcm90b2NvbDogJy0xJyxcbiAgICAgIGZyb21Qb3J0OiAtMSxcbiAgICAgIHRvUG9ydDogLTEsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ0FMTCBUUkFGRklDJztcbiAgfVxufVxuIl19

2

lib/security-group.d.ts

@@ -20,3 +20,3 @@ import { Construct, ITaggable, TagManager, Tags } from '@aws-cdk/cdk';

abstract readonly securityGroupId: string;
readonly canInlineRule: boolean;
readonly canInlineRule = false;
readonly connections: Connections;

@@ -23,0 +23,0 @@ /**

import cdk = require('@aws-cdk/cdk');
import { SubnetType, VpcNetworkRef, VpcSubnetRef } from './vpc-ref';
import { SubnetType, VpcNetworkRef, VpcPlacementStrategy, VpcSubnetRef } from './vpc-ref';
/**

@@ -48,9 +48,6 @@ * VpcNetworkProps allows you to specify configuration options for a VPC

/**
* Define the maximum number of NAT Gateways for this VPC
* The number of NAT Gateways to create.
*
* Setting this number enables a VPC to trade availability for the cost of
* running a NAT Gateway. For example, if set this to 1 and your subnet
* configuration is for 3 Public subnets with natGateway = `true` then only
* one of the Public subnets will have a gateway and all Private subnets
* will route to this NAT Gateway.
* For example, if set this to 1 and your subnet configuration is for 3 Public subnets then only
* one of the Public subnets will have a gateway and all Private subnets will route to this NAT Gateway.
* @default maxAZs

@@ -60,2 +57,11 @@ */

/**
* Configures the subnets which will have NAT Gateways
*
* You can pick a specific group of subnets by specifying the group name;
* the picked subnets must be public subnets.
*
* @default All public subnets
*/
natGatewayPlacement?: VpcPlacementStrategy;
/**
* Configure the subnets to build for each AZ

@@ -195,8 +201,2 @@ *

/**
* Maximum Number of NAT Gateways used to control cost
*
* @default {VpcNetworkProps.maxAZs}
*/
private readonly natGateways;
/**
* The VPC resource

@@ -228,2 +228,3 @@ */

readonly cidr: string;
private createNatGateways;
/**

@@ -230,0 +231,0 @@ * createSubnets creates the subnets specified by the subnet configuration

@@ -102,4 +102,2 @@ "use strict";

this.subnetConfiguration = ifUndefined(props.subnetConfiguration, VpcNetwork.DEFAULT_SUBNETS);
const useNatGateway = this.subnetConfiguration.filter(subnet => (subnet.subnetType === vpc_ref_1.SubnetType.Private)).length > 0;
this.natGateways = ifUndefined(props.natGateways, useNatGateway ? this.availabilityZones.length : 0);
// subnetConfiguration and natGateways must be set before calling createSubnets

@@ -117,6 +115,8 @@ this.createSubnets();

});
this.dependencyElements.push(igw, att);
this.publicSubnets.forEach(publicSubnet => {
publicSubnet.addDefaultIGWRouteEntry(igw.ref);
});
this.dependencyElements.push(igw, att);
// if gateways are needed create them
this.createNatGateways(props.natGateways, props.natGatewayPlacement);
this.privateSubnets.forEach((privateSubnet, i) => {

@@ -139,2 +139,23 @@ let ngwId = this.natGatewayByAZ[privateSubnet.availabilityZone];

}
createNatGateways(gateways, placement) {
const useNatGateway = this.subnetConfiguration.filter(subnet => (subnet.subnetType === vpc_ref_1.SubnetType.Private)).length > 0;
const natCount = ifUndefined(gateways, useNatGateway ? this.availabilityZones.length : 0);
let natSubnets;
if (placement) {
const subnets = this.subnets(placement);
for (const sub of subnets) {
if (!this.isPublicSubnet(sub)) {
throw new Error(`natGatewayPlacement ${placement} contains non public subnet ${sub}`);
}
}
natSubnets = subnets;
}
else {
natSubnets = this.publicSubnets;
}
natSubnets = natSubnets.slice(0, natCount);
for (const sub of natSubnets) {
this.natGatewayByAZ[sub.availabilityZone] = sub.addNatGateway();
}
}
/**

@@ -175,8 +196,2 @@ * createSubnets creates the subnets specified by the subnet configuration

const publicSubnet = new VpcPublicSubnet(this, name, subnetProps);
if (this.natGateways > 0) {
const ngwArray = Array.from(Object.values(this.natGatewayByAZ));
if (ngwArray.length < this.natGateways) {
this.natGatewayByAZ[zone] = publicSubnet.addNatGateway();
}
}
this.publicSubnets.push(publicSubnet);

@@ -241,3 +256,3 @@ break;

// Associate the public route table for this subnet, to this subnet
const routeAssoc = new ec2_generated_1.cloudformation.SubnetRouteTableAssociationResource(this, 'RouteTableAssociatioin', {
const routeAssoc = new ec2_generated_1.cloudformation.SubnetRouteTableAssociationResource(this, 'RouteTableAssociation', {
subnetId: this.subnetId,

@@ -313,2 +328,2 @@ routeTableId: table.ref

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG1EQUFpRDtBQUNqRCxpREFBZ0Q7QUFDaEQsaUNBQXVEO0FBQ3ZELHVDQUFvRTtBQUVwRTs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQXFHaEM7O0dBRUc7QUFDSCxJQUFZLHNCQVVYO0FBVkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCw2Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFWVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQVVqQztBQW1DRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsVUFBVyxTQUFRLHVCQUFhO0lBa0YzQzs7Ozs7T0FLRztJQUNILFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsUUFBeUIsRUFBRTtRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBM0R0Qjs7V0FFRztRQUNhLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNhLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwRDs7V0FFRztRQUNhLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQTZCckQ7O1dBRUc7UUFDSyxtQkFBYyxHQUE2QixFQUFFLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBMEIsRUFBRSxDQUFDO1FBV3RELDBEQUEwRDtRQUMxRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7U0FDNUc7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFX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b0IsRUFBRSxZQUFlO0lBQ3hELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lYzIuZ2VuZXJhdGVkJztcbmltcG9ydCB7IE5ldHdvcmtCdWlsZGVyIH0gZnJvbSAnLi9uZXR3b3JrLXV0aWwnO1xuaW1wb3J0IHsgREVGQVVMVF9TVUJORVRfTkFNRSwgc3VibmV0SWQgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgU3VibmV0VHlwZSwgVnBjTmV0d29ya1JlZiwgVnBjU3VibmV0UmVmIH0gZnJvbSAnLi92cGMtcmVmJztcblxuLyoqXG4gKiBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBOQU1FX1RBRzogc3RyaW5nID0gJ05hbWUnO1xuXG4vKipcbiAqIFZwY05ldHdvcmtQcm9wcyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY05ldHdvcmtQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBDSURSIHJhbmdlIHRvIHVzZSBmb3IgdGhlIFZQQyAoZS5nLiAnMTAuMC4wLjAvMTYnKS4gU2hvdWxkIGJlIGEgbWluaW11bSBvZiAvMjggYW5kIG1heGltdW0gc2l6ZSBvZiAvMTYuXG4gICAqIFRoZSByYW5nZSB3aWxsIGJlIHNwbGl0IGV2ZW5seSBpbnRvIHR3byBzdWJuZXRzIHBlciBBdmFpbGFiaWxpdHkgWm9uZSAob25lIHB1YmxpYywgb25lIHByaXZhdGUpLlxuICAgKi9cbiAgY2lkcj86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGUgVlBDIGdldCBwdWJsaWMgRE5TIGhvc3RuYW1lcy5cbiAgICogSWYgdGhpcyBhdHRyaWJ1dGUgaXMgdHJ1ZSwgaW5zdGFuY2VzIGluIHRoZSBWUEMgZ2V0IHB1YmxpYyBETlMgaG9zdG5hbWVzLFxuICAgKiBidXQgb25seSBpZiB0aGUgZW5hYmxlRG5zU3VwcG9ydCBhdHRyaWJ1dGUgaXMgYWxzbyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGVuYWJsZURuc0hvc3RuYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBETlMgcmVzb2x1dGlvbiBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBWUEMuIElmIHRoaXMgYXR0cmlidXRlXG4gICAqIGlzIGZhbHNlLCB0aGUgQW1hem9uLXByb3ZpZGVkIEROUyBzZXJ2ZXIgaW4gdGhlIFZQQyB0aGF0IHJlc29sdmVzIHB1YmxpYyBETlMgaG9zdG5hbWVzXG4gICAqIHRvIElQIGFkZHJlc3NlcyBpcyBub3QgZW5hYmxlZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgdHJ1ZSwgcXVlcmllcyB0byB0aGUgQW1hem9uXG4gICAqIHByb3ZpZGVkIEROUyBzZXJ2ZXIgYXQgdGhlIDE2OS4yNTQuMTY5LjI1MyBJUCBhZGRyZXNzLCBvciB0aGUgcmVzZXJ2ZWQgSVAgYWRkcmVzc1xuICAgKiBhdCB0aGUgYmFzZSBvZiB0aGUgVlBDIElQdjQgbmV0d29yayByYW5nZSBwbHVzIHR3byB3aWxsIHN1Y2NlZWQuXG4gICAqL1xuICBlbmFibGVEbnNTdXBwb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICAgKiBCeSBkZWZhdWx0LCBpbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCB3aXRoIGRlZmF1bHQgKHNoYXJlZCkgdGVuYW5jeS5cbiAgICogQnkgc2V0dGluZyB0aGlzIHRvIGRlZGljYXRlZCB0ZW5hbmN5LCBpbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCBvbiBoYXJkd2FyZSBkZWRpY2F0ZWRcbiAgICogdG8gYSBzaW5nbGUgQVdTIGN1c3RvbWVyLCB1bmxlc3Mgc3BlY2lmaWNhbGx5IHNwZWNpZmllZCBhdCBpbnN0YW5jZSBsYXVuY2ggdGltZS5cbiAgICogUGxlYXNlIG5vdGUsIG5vdCBhbGwgaW5zdGFuY2UgdHlwZXMgYXJlIHVzYWJsZSB3aXRoIERlZGljYXRlZCB0ZW5hbmN5LlxuICAgKi9cbiAgZGVmYXVsdEluc3RhbmNlVGVuYW5jeT86IERlZmF1bHRJbnN0YW5jZVRlbmFuY3k7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgcmVzb3VyY2UgdGFncyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgVlBDLlxuICAgKi9cbiAgdGFncz86IGNkay5UYWdzO1xuXG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIEFacyB0byB1c2UgaW4gdGhpcyByZWdpb25cbiAgICpcbiAgICogSWYgdGhlIHJlZ2lvbiBoYXMgbW9yZSBBWnMgdGhhbiB5b3Ugd2FudCB0byB1c2UgKGZvciBleGFtcGxlLCBiZWNhdXNlIG9mIEVJUCBsaW1pdHMpLFxuICAgKiBwaWNrIGEgbG93ZXIgbnVtYmVyIGhlcmUuIFRoZSBBWnMgd2lsbCBiZSBzb3J0ZWQgYW5kIHBpY2tlZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQWxsIEFacyBpbiB0aGUgcmVnaW9uXG4gICAqL1xuICBtYXhBWnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgTkFUIEdhdGV3YXlzIGZvciB0aGlzIFZQQ1xuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgbnVtYmVyIGVuYWJsZXMgYSBWUEMgdG8gdHJhZGUgYXZhaWxhYmlsaXR5IGZvciB0aGUgY29zdCBvZlxuICAgKiBydW5uaW5nIGEgTkFUIEdhdGV3YXkuIEZvciBleGFtcGxlLCBpZiBzZXQgdGhpcyB0byAxIGFuZCB5b3VyIHN1Ym5ldFxuICAgKiBjb25maWd1cmF0aW9uIGlzIGZvciAzIFB1YmxpYyBzdWJuZXRzIHdpdGggbmF0R2F0ZXdheSA9IGB0cnVlYCB0aGVuIG9ubHlcbiAgICogb25lIG9mIHRoZSBQdWJsaWMgc3VibmV0cyB3aWxsIGhhdmUgYSBnYXRld2F5IGFuZCBhbGwgUHJpdmF0ZSBzdWJuZXRzXG4gICAqIHdpbGwgcm91dGUgdG8gdGhpcyBOQVQgR2F0ZXdheS5cbiAgICogQGRlZmF1bHQgbWF4QVpzXG4gICAqL1xuICBuYXRHYXRld2F5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBzdWJuZXRzIHRvIGJ1aWxkIGZvciBlYWNoIEFaXG4gICAqXG4gICAqIFRoZSBzdWJuZXRzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgVlBDIHNvIHlvdSBvbmx5IG5lZWRcbiAgICogc3BlY2lmeSB0aGUgY29uZmlndXJhdGlvbi4gVGhlIFZQQyBkZXRhaWxzIChWUEMgSUQsIHNwZWNpZmljIENJRFIsXG4gICAqIHNwZWNpZmljIEFaIHdpbGwgYmUgY2FsY3VsYXRlZCBkdXJpbmcgY3JlYXRpb24pXG4gICAqXG4gICAqIEZvciBleGFtcGxlIGlmIHlvdSB3YW50IDEgcHVibGljIHN1Ym5ldCwgMSBwcml2YXRlIHN1Ym5ldCwgYW5kIDEgaXNvbGF0ZWRcbiAgICogc3VibmV0IGluIGVhY2ggQVogcHJvdmlkZSB0aGUgZm9sbG93aW5nOlxuICAgKiBzdWJuZXRDb25maWd1cmF0aW9uOiBbXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjQsXG4gICAqICAgICAgbmFtZTogJ2luZ3Jlc3MnLFxuICAgKiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUHVibGljLFxuICAgKiAgICB9LFxuICAgKiAgICB7XG4gICAqICAgICAgY2lkck1hc2s6IDI0LFxuICAgKiAgICAgIG5hbWU6ICdhcHBsaWNhdGlvbicsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5Qcml2YXRlLFxuICAgKiAgICB9LFxuICAgKiAgICB7XG4gICAqICAgICAgY2lkck1hc2s6IDI4LFxuICAgKiAgICAgIG5hbWU6ICdyZHMnLFxuICAgKiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuSXNvbGF0ZWQsXG4gICAqICAgIH1cbiAgICogXVxuICAgKlxuICAgKiBgY2lkck1hc2tgIGlzIG9wdGlvbmFsIGFuZCBpZiBub3QgcHJvdmlkZWQgdGhlIElQIHNwYWNlIGluIHRoZSBWUEMgd2lsbCBiZVxuICAgKiBldmVubHkgZGl2aWRlZCBiZXR3ZWVuIHRoZSByZXF1ZXN0ZWQgc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIFZQQyBDSURSIHdpbGwgYmUgZXZlbmx5IGRpdmlkZWQgYmV0d2VlbiAxIHB1YmxpYyBhbmQgMVxuICAgKiBwcml2YXRlIHN1Ym5ldCBwZXIgQVpcbiAgICovXG4gIHN1Ym5ldENvbmZpZ3VyYXRpb24/OiBTdWJuZXRDb25maWd1cmF0aW9uW107XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICovXG5leHBvcnQgZW51bSBEZWZhdWx0SW5zdGFuY2VUZW5hbmN5IHtcbiAgLyoqXG4gICAqIEluc3RhbmNlcyBjYW4gYmUgbGF1bmNoZWQgd2l0aCBhbnkgdGVuYW5jeS5cbiAgICovXG4gIERlZmF1bHQgPSAnZGVmYXVsdCcsXG5cbiAgLyoqXG4gICAqIEFueSBpbnN0YW5jZSBsYXVuY2hlZCBpbnRvIHRoZSBWUEMgYXV0b21hdGljYWxseSBoYXMgZGVkaWNhdGVkIHRlbmFuY3ksIHVubGVzcyB5b3UgbGF1bmNoIGl0IHdpdGggdGhlIGRlZmF1bHQgdGVuYW5jeS5cbiAgICovXG4gIERlZGljYXRlZCA9ICdkZWRpY2F0ZWQnXG59XG5cbi8qKlxuICogU3BlY2lmeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgVlBDIHRvIGJlIGJ1aWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQ0lEUiBNYXNrIG9yIHRoZSBudW1iZXIgb2YgbGVhZGluZyAxIGJpdHMgaW4gdGhlIHJvdXRpbmcgbWFza1xuICAgKlxuICAgKiBWYWxpZCB2YWx1ZXMgYXJlIDE2IC0gMjhcbiAgICovXG4gIGNpZHJNYXNrPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBTdWJuZXQgdG8gY29uZmlndXJlLlxuICAgKlxuICAgKiBUaGUgU3VibmV0IHR5cGUgd2lsbCBjb250cm9sIHRoZSBhYmlsaXR5IHRvIHJvdXRlIGFuZCBjb25uZWN0IHRvIHRoZVxuICAgKiBJbnRlcm5ldC5cbiAgICovXG4gIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tb24gTG9naWNhbCBOYW1lIGZvciB0aGUgYFZwY1N1Ym5ldGBcbiAgICpcbiAgICogVGhpIG5hbWUgd2lsbCBiZSBzdWZmaXhlZCB3aXRoIGFuIGludGVnZXIgY29ycmVsYXRpbmcgdG8gYSBzcGVjaWZpY1xuICAgKiBhdmFpbGFiaWxpdHkgem9uZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHRhZ3M/OiBjZGsuVGFncztcbn1cblxuLyoqXG4gKiBWcGNOZXR3b3JrIGRlcGxveXMgYW4gQVdTIFZQQywgd2l0aCBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBpbXBvcnQgeyBWcGNOZXR3b3JrIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWVjMidcbiAqXG4gKiBjb25zdCB2cGMgPSBuZXcgVnBjTmV0d29yayh0aGlzLCB7XG4gKiAgIGNpZHI6IFwiMTAuMC4wLjAvMTZcIlxuICogfSlcbiAqXG4gKiAvLyBJdGVyYXRlIHRoZSBwdWJsaWMgc3VibmV0c1xuICogZm9yIChsZXQgc3VibmV0IG9mIHZwYy5wdWJsaWNTdWJuZXRzKSB7XG4gKlxuICogfVxuICpcbiAqIC8vIEl0ZXJhdGUgdGhlIHByaXZhdGUgc3VibmV0c1xuICogZm9yIChsZXQgc3VibmV0IG9mIHZwYy5wcml2YXRlU3VibmV0cykge1xuICpcbiAqIH1cbiAqL1xuZXhwb3J0IGNsYXNzIFZwY05ldHdvcmsgZXh0ZW5kcyBWcGNOZXR3b3JrUmVmIGltcGxlbWVudHMgY2RrLklUYWdnYWJsZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IENJRFIgcmFuZ2UgdXNlZCB3aGVuIGNyZWF0aW5nIFZQQ3MuXG4gICAqIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgVnBjTmV0d29ya1Byb3BzIHdoZW4gY3JlYXRpbmcgYSBWUENOZXR3b3JrIHJlc291cmNlLlxuICAgKiBlLmcuIG5ldyBWcGNSZXNvdXJjZSh0aGlzLCB7IGNpZHI6ICcxOTIuMTY4LjAuMC4vMTYnIH0pXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ0lEUl9SQU5HRTogc3RyaW5nID0gJzEwLjAuMC4wLzE2JztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgc3VibmV0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogMSBQdWJsaWMgYW5kIDEgUHJpdmF0ZSBzdWJuZXQgcGVyIEFaIGV2ZW5seSBzcGxpdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1NVQk5FVFM6IFN1Ym5ldENvbmZpZ3VyYXRpb25bXSA9IFtcbiAgICB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlB1YmxpYyxcbiAgICAgIG5hbWU6IERFRkFVTFRfU1VCTkVUX05BTUVbU3VibmV0VHlwZS5QdWJsaWNdLFxuICAgIH0sXG4gICAge1xuICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5Qcml2YXRlLFxuICAgICAgbmFtZTogREVGQVVMVF9TVUJORVRfTkFNRVtTdWJuZXRUeXBlLlByaXZhdGVdLFxuICAgIH1cbiAgXTtcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogVnBjU3VibmV0UmVmW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBwcml2YXRlIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogVnBjU3VibmV0UmVmW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdCBvZiBpc29sYXRlZCBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBBWnMgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2UgdGFncyBmb3IgdGhpcyBjb25zdHJ1Y3QgYW5kIGNoaWxkcmVuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnczogY2RrLlRhZ01hbmFnZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gTnVtYmVyIG9mIE5BVCBHYXRld2F5cyB1c2VkIHRvIGNvbnRyb2wgY29zdFxuICAgKlxuICAgKiBAZGVmYXVsdCB7VnBjTmV0d29ya1Byb3BzLm1heEFac31cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF0R2F0ZXdheXM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIFZQQyByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZTogY2xvdWRmb3JtYXRpb24uVlBDUmVzb3VyY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrQnVpbGRlclxuICAgKi9cbiAgcHJpdmF0ZSBuZXR3b3JrQnVpbGRlcjogTmV0d29ya0J1aWxkZXI7XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgb2YgTmF0R2F0ZXdheSBieSBBWlxuICAgKi9cbiAgcHJpdmF0ZSBuYXRHYXRld2F5QnlBWjogeyBbYXo6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHByaXZhdGUgc3VibmV0Q29uZmlndXJhdGlvbjogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW107XG5cbiAgLyoqXG4gICAqIFZwY05ldHdvcmsgY3JlYXRlcyBhIFZQQyB0aGF0IHNwYW5zIGEgd2hvbGUgcmVnaW9uLlxuICAgKiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGl2aWRlIHRoZSBwcm92aWRlZCBWUEMgQ0lEUiByYW5nZSwgYW5kIGNyZWF0ZSBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHB1YmxpYyBzdWJuZXRzIHdpbGwgYmUgY29uZmlndXJlZCB0byBhbGxvdyBvdXRib3VuZCBhY2Nlc3MgZGlyZWN0bHkgdmlhIGFuIEludGVybmV0IEdhdGV3YXkuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHByaXZhdGUgc3VibmV0cyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgb3V0Ym91bmQgYWNjZXNzIHZpYSBhIHNldCBvZiByZXNpbGllbnQgTkFUIEdhdGV3YXlzIChvbmUgcGVyIEFaKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgLy8gQ2FuJ3QgaGF2ZSBlbmFibGVkRG5zSG9zdG5hbWVzIHdpdGhvdXQgZW5hYmxlRG5zU3VwcG9ydFxuICAgIGlmIChwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgJiYgIXByb3BzLmVuYWJsZURuc1N1cHBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG8gdXNlIEROUyBIb3N0bmFtZXMsIEROUyBTdXBwb3J0IG11c3QgYmUgZW5hYmxlZCwgaG93ZXZlciwgaXQgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHsgaW5pdGlhbFRhZ3M6IHByb3BzLnRhZ3N9KTtcbiAgICB0aGlzLnRhZ3Muc2V0VGFnKE5BTUVfVEFHLCB0aGlzLnBhdGgsIHsgb3ZlcndyaXRlOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGNpZHJCbG9jayA9IGlmVW5kZWZpbmVkKHByb3BzLmNpZHIsIFZwY05ldHdvcmsuREVGQVVMVF9DSURSX1JBTkdFKTtcbiAgICB0aGlzLm5ldHdvcmtCdWlsZGVyID0gbmV3IE5ldHdvcmtCdWlsZGVyKGNpZHJCbG9jayk7XG5cbiAgICBjb25zdCBlbmFibGVEbnNIb3N0bmFtZXMgPSBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXM7XG4gICAgY29uc3QgZW5hYmxlRG5zU3VwcG9ydCA9IHByb3BzLmVuYWJsZURuc1N1cHBvcnQgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNTdXBwb3J0O1xuICAgIGNvbnN0IGluc3RhbmNlVGVuYW5jeSA9IHByb3BzLmRlZmF1bHRJbnN0YW5jZVRlbmFuY3kgfHwgJ2RlZmF1bHQnO1xuXG4gICAgLy8gRGVmaW5lIGEgVlBDIHVzaW5nIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZvcm1hdGlvbi5WUENSZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjaWRyQmxvY2ssXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXMsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0LFxuICAgICAgaW5zdGFuY2VUZW5hbmN5LFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuc29ydCgpO1xuICAgIGlmIChwcm9wcy5tYXhBWnMgIT0gbnVsbCkge1xuICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIHByb3BzLm1heEFacyk7XG4gICAgfVxuXG4gICAgdGhpcy52cGNJZCA9IHRoaXMucmVzb3VyY2UudnBjSWQ7XG4gICAgdGhpcy5kZXBlbmRlbmN5RWxlbWVudHMucHVzaCh0aGlzLnJlc291cmNlKTtcblxuICAgIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbiA9IGlmVW5kZWZpbmVkKHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24sIFZwY05ldHdvcmsuREVGQVVMVF9TVUJORVRTKTtcbiAgICBjb25zdCB1c2VOYXRHYXRld2F5ID0gdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uLmZpbHRlcihcbiAgICAgIHN1Ym5ldCA9PiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUHJpdmF0ZSkpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5uYXRHYXRld2F5cyA9IGlmVW5kZWZpbmVkKHByb3BzLm5hdEdhdGV3YXlzLFxuICAgICAgdXNlTmF0R2F0ZXdheSA/IHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoIDogMCk7XG5cbiAgICAvLyBzdWJuZXRDb25maWd1cmF0aW9uIGFuZCBuYXRHYXRld2F5cyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZyBjcmVhdGVTdWJuZXRzXG4gICAgdGhpcy5jcmVhdGVTdWJuZXRzKCk7XG5cbiAgICBjb25zdCBhbGxvd091dGJvdW5kID0gdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uLmZpbHRlcihcbiAgICAgIHN1Ym5ldCA9PiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuSXNvbGF0ZWQpKS5sZW5ndGggPiAwO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEludGVybmV0IEdhdGV3YXkgYW5kIGF0dGFjaCBpdCBpZiBuZWNlc3NhcnlcbiAgICBpZiAoYWxsb3dPdXRib3VuZCkge1xuICAgICAgY29uc3QgaWd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlKHRoaXMsICdJR1cnLCB7XG4gICAgICAgIHRhZ3M6IG5ldyBjZGsuVGFnTWFuYWdlcih0aGlzKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYXR0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlZQQ0dhdGV3YXlBdHRhY2htZW50UmVzb3VyY2UodGhpcywgJ1ZQQ0dXJywge1xuICAgICAgICBpbnRlcm5ldEdhdGV3YXlJZDogaWd3LnJlZixcbiAgICAgICAgdnBjSWQ6IHRoaXMucmVzb3VyY2UucmVmXG4gICAgICB9KTtcbiAgICAgICh0aGlzLnB1YmxpY1N1Ym5ldHMgYXMgVnBjUHVibGljU3VibmV0W10pLmZvckVhY2gocHVibGljU3VibmV0ID0+IHtcbiAgICAgICAgcHVibGljU3VibmV0LmFkZERlZmF1bHRJR1dSb3V0ZUVudHJ5KGlndy5yZWYpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goaWd3LCBhdHQpO1xuXG4gICAgICAodGhpcy5wcml2YXRlU3VibmV0cyBhcyBWcGNQcml2YXRlU3VibmV0W10pLmZvckVhY2goKHByaXZhdGVTdWJuZXQsIGkpID0+IHtcbiAgICAgICAgbGV0IG5nd0lkID0gdGhpcy5uYXRHYXRld2F5QnlBWltwcml2YXRlU3VibmV0LmF2YWlsYWJpbGl0eVpvbmVdO1xuICAgICAgICBpZiAobmd3SWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IG5nd0FycmF5ID0gQXJyYXkuZnJvbShPYmplY3QudmFsdWVzKHRoaXMubmF0R2F0ZXdheUJ5QVopKTtcbiAgICAgICAgICAvLyByb3VuZCByb2JpbiB0aGUgYXZhaWxhYmxlIE5hdEdXIHNpbmNlIG9uZSBpcyBub3QgaW4geW91ciBBWlxuICAgICAgICAgIG5nd0lkID0gbmd3QXJyYXlbaSAlIG5nd0FycmF5Lmxlbmd0aF07XG4gICAgICAgIH1cbiAgICAgICAgcHJpdmF0ZVN1Ym5ldC5hZGREZWZhdWx0TmF0Um91dGVFbnRyeShuZ3dJZCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIElQdjQgQ2lkckJsb2NrIGFzIHJldHVybmVkIGJ5IHRoZSBWUENcbiAgICovXG4gIHB1YmxpYyBnZXQgY2lkcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmdldEF0dChcIkNpZHJCbG9ja1wiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNyZWF0ZVN1Ym5ldHMgY3JlYXRlcyB0aGUgc3VibmV0cyBzcGVjaWZpZWQgYnkgdGhlIHN1Ym5ldCBjb25maWd1cmF0aW9uXG4gICAqIGFycmF5IG9yIGNyZWF0ZXMgdGhlIGBERUZBVUxUX1NVQk5FVFNgIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0cygpIHtcbiAgICBjb25zdCByZW1haW5pbmdTcGFjZVN1Ym5ldHM6IFN1Ym5ldENvbmZpZ3VyYXRpb25bXSA9IFtdO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBwdWJsaWMvcHJpdmF0ZSBzdWJuZXRzIGJhc2VkIG9uIG51bWJlciBvZiBBWnNcbiAgICBjb25zdCB6b25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHpvbmVzLnNvcnQoKTtcblxuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbikge1xuICAgICAgaWYgKHN1Ym5ldC5jaWRyTWFzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlbWFpbmluZ1NwYWNlU3VibmV0cy5wdXNoKHN1Ym5ldCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBzdWJuZXQuY2lkck1hc2spO1xuICAgIH1cblxuICAgIGNvbnN0IHRvdGFsUmVtYWluaW5nID0gcmVtYWluaW5nU3BhY2VTdWJuZXRzLmxlbmd0aCAqIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoO1xuICAgIGNvbnN0IGNpZHJNYXNrRm9yUmVtYWluZyA9IHRoaXMubmV0d29ya0J1aWxkZXIubWFza0ZvclJlbWFpbmluZ1N1Ym5ldHModG90YWxSZW1haW5pbmcpO1xuICAgIGZvciAoY29uc3Qgc3VibmV0IG9mIHJlbWFpbmluZ1NwYWNlU3VibmV0cykge1xuICAgICAgdGhpcy5jcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0LCBjaWRyTWFza0ZvclJlbWFpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VibmV0UmVzb3VyY2VzKHN1Ym5ldENvbmZpZzogU3VibmV0Q29uZmlndXJhdGlvbiwgY2lkck1hc2s6IG51bWJlcikge1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoem9uZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBzdWJuZXRJZChzdWJuZXRDb25maWcubmFtZSwgaW5kZXgpO1xuICAgICAgY29uc3Qgc3VibmV0UHJvcHM6IFZwY1N1Ym5ldFByb3BzID0ge1xuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiB6b25lLFxuICAgICAgICB2cGNJZDogdGhpcy52cGNJZCxcbiAgICAgICAgY2lkckJsb2NrOiB0aGlzLm5ldHdvcmtCdWlsZGVyLmFkZFN1Ym5ldChjaWRyTWFzayksXG4gICAgICAgIG1hcFB1YmxpY0lwT25MYXVuY2g6IChzdWJuZXRDb25maWcuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QdWJsaWMpLFxuICAgICAgICB0YWdzOiBzdWJuZXRDb25maWcudGFncyxcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAoc3VibmV0Q29uZmlnLnN1Ym5ldFR5cGUpIHtcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLlB1YmxpYzpcbiAgICAgICAgICBjb25zdCBwdWJsaWNTdWJuZXQgPSBuZXcgVnBjUHVibGljU3VibmV0KHRoaXMsIG5hbWUsIHN1Ym5ldFByb3BzKTtcbiAgICAgICAgICBpZiAodGhpcy5uYXRHYXRld2F5cyA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG5nd0FycmF5ID0gQXJyYXkuZnJvbShPYmplY3QudmFsdWVzKHRoaXMubmF0R2F0ZXdheUJ5QVopKTtcbiAgICAgICAgICAgIGlmIChuZ3dBcnJheS5sZW5ndGggPCB0aGlzLm5hdEdhdGV3YXlzKSB7XG4gICAgICAgICAgICAgIHRoaXMubmF0R2F0ZXdheUJ5QVpbem9uZV0gPSBwdWJsaWNTdWJuZXQuYWRkTmF0R2F0ZXdheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnB1YmxpY1N1Ym5ldHMucHVzaChwdWJsaWNTdWJuZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFN1Ym5ldFR5cGUuUHJpdmF0ZTpcbiAgICAgICAgICBjb25zdCBwcml2YXRlU3VibmV0ID0gbmV3IFZwY1ByaXZhdGVTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIHRoaXMucHJpdmF0ZVN1Ym5ldHMucHVzaChwcml2YXRlU3VibmV0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTdWJuZXRUeXBlLklzb2xhdGVkOlxuICAgICAgICAgIGNvbnN0IGlzb2xhdGVkU3VibmV0ID0gbmV3IFZwY1ByaXZhdGVTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIHRoaXMuaXNvbGF0ZWRTdWJuZXRzLnB1c2goaXNvbGF0ZWRTdWJuZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogU3BlY2lmeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgVlBDIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZwY1N1Ym5ldFByb3BzIHtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lIGZvciB0aGUgc3VibmV0XG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgd2hpY2ggdGhpcyBzdWJuZXQgaXMgcGFydCBvZlxuICAgKi9cbiAgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENJRFIgbm90YXRpb24gZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBjaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgYSBwdWJsaWMgSVAgaXMgYXNzb2NpYXRlZCB0byBhbiBpbnN0YW5jZSBhdCBsYXVuY2hcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBpbiBTdWJuZXQuUHVibGljLCBmYWxzZSBpbiBTdWJuZXQuUHJpdmF0ZSBvciBTdWJuZXQuSXNvbGF0ZWQuXG4gICAqL1xuICBtYXBQdWJsaWNJcE9uTGF1bmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBTdWJuZXRcbiAgICovXG4gIHRhZ3M/OiBjZGsuVGFncztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbmV3IFZQQyBzdWJuZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1N1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldFJlZiBpbXBsZW1lbnRzIGNkay5JVGFnZ2FibGUge1xuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2UgdGFncyBmb3IgQ29uc3RydWN0IGFuZCBwcm9wYWdhdGUgdG8gY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIHJvdXRlVGFibGVJZCBhdHRhY2hlZCB0byB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVUYWJsZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSk7XG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHtpbml0aWFsVGFnczogcHJvcHMudGFnc30pO1xuICAgIHRoaXMudGFncy5zZXRUYWcoTkFNRV9UQUcsIHRoaXMucGF0aCwge292ZXJ3cml0ZTogZmFsc2V9KTtcblxuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZSA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmU7XG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlN1Ym5ldFJlc291cmNlKHRoaXMsICdTdWJuZXQnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IHByb3BzLmNpZHJCbG9jayxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICBtYXBQdWJsaWNJcE9uTGF1bmNoOiBwcm9wcy5tYXBQdWJsaWNJcE9uTGF1bmNoLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuICAgIHRoaXMuc3VibmV0SWQgPSBzdWJuZXQuc3VibmV0SWQ7XG4gICAgY29uc3QgdGFibGUgPSBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVUYWJsZVJlc291cmNlKHRoaXMsICdSb3V0ZVRhYmxlJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuICAgICAgdGFnczogbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMpLFxuICAgIH0pO1xuICAgIHRoaXMucm91dGVUYWJsZUlkID0gdGFibGUucmVmO1xuXG4gICAgLy8gQXNzb2NpYXRlIHRoZSBwdWJsaWMgcm91dGUgdGFibGUgZm9yIHRoaXMgc3VibmV0LCB0byB0aGlzIHN1Ym5ldFxuICAgIGNvbnN0IHJvdXRlQXNzb2MgPSBuZXcgY2xvdWRmb3JtYXRpb24uU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uUmVzb3VyY2UodGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvaW4nLCB7XG4gICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICAgIHJvdXRlVGFibGVJZDogdGFibGUucmVmXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcGVuZGVuY3lFbGVtZW50cy5wdXNoKHN1Ym5ldCwgdGFibGUsIHJvdXRlQXNzb2MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZERlZmF1bHRSb3V0ZVRvTkFUKG5hdEdhdGV3YXlJZDogc3RyaW5nKSB7XG4gICAgbmV3IGNsb3VkZm9ybWF0aW9uLlJvdXRlUmVzb3VyY2UodGhpcywgYERlZmF1bHRSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGVJZDogdGhpcy5yb3V0ZVRhYmxlSWQsXG4gICAgICBkZXN0aW5hdGlvbkNpZHJCbG9jazogJzAuMC4wLjAvMCcsXG4gICAgICBuYXRHYXRld2F5SWRcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGREZWZhdWx0Um91dGVUb0lHVyhnYXRld2F5SWQ6IHN0cmluZykge1xuICAgIG5ldyBjbG91ZGZvcm1hdGlvbi5Sb3V0ZVJlc291cmNlKHRoaXMsIGBEZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZUlkLFxuICAgICAgZGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgZ2F0ZXdheUlkXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHVibGljIFZQQyBzdWJuZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1B1YmxpY1N1Ym5ldCBleHRlbmRzIFZwY1N1Ym5ldCB7XG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjU3VibmV0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkZWZhdWx0IHJvdXRlIHRoYXQgcG9pbnRzIHRvIGEgcGFzc2VkIElHV1xuICAgKi9cbiAgcHVibGljIGFkZERlZmF1bHRJR1dSb3V0ZUVudHJ5KGdhdGV3YXlJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGREZWZhdWx0Um91dGVUb0lHVyhnYXRld2F5SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbWFuYWdlZCBOQVQgZ2F0ZXdheSBhdHRhY2hlZCB0byB0aGlzIHB1YmxpYyBzdWJuZXQuXG4gICAqIEFsc28gYWRkcyB0aGUgRUlQIGZvciB0aGUgbWFuYWdlZCBOQVQuXG4gICAqIEByZXR1cm5zIEEgcmVmIHRvIHRoZSB0aGUgTkFUIEdhdGV3YXkgSURcbiAgICovXG4gIHB1YmxpYyBhZGROYXRHYXRld2F5KCkge1xuICAgIC8vIENyZWF0ZSBhIE5BVCBHYXRld2F5IGluIHRoaXMgcHVibGljIHN1Ym5ldFxuICAgIGNvbnN0IG5ndyA9IG5ldyBjbG91ZGZvcm1hdGlvbi5OYXRHYXRld2F5UmVzb3VyY2UodGhpcywgYE5BVEdhdGV3YXlgLCB7XG4gICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogbmV3IGNsb3VkZm9ybWF0aW9uLkVJUFJlc291cmNlKHRoaXMsIGBFSVBgLCB7XG4gICAgICAgIGRvbWFpbjogJ3ZwYydcbiAgICAgIH0pLmVpcEFsbG9jYXRpb25JZCxcbiAgICAgIHRhZ3M6IG5ldyBjZGsuVGFnTWFuYWdlcih0aGlzKSxcbiAgICB9KTtcbiAgICByZXR1cm4gbmd3Lm5hdEdhdGV3YXlJZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwcml2YXRlIFZQQyBzdWJuZXQgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1ByaXZhdGVTdWJuZXQgZXh0ZW5kcyBWcGNTdWJuZXQge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY1N1Ym5ldFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBlbnRyeSB0byB0aGlzIHN1Ym5ldHMgcm91dGUgdGFibGUgdGhhdCBwb2ludHMgdG8gdGhlIHBhc3NlZCBOQVRHYXR3YXlJZFxuICAgKi9cbiAgcHVibGljIGFkZERlZmF1bHROYXRSb3V0ZUVudHJ5KG5hdEdhdGV3YXlJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGREZWZhdWx0Um91dGVUb05BVChuYXRHYXRld2F5SWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlmVW5kZWZpbmVkPFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBkZWZhdWx0VmFsdWU6IFQpOiBUIHtcbiAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG1EQUFpRDtBQUNqRCxpREFBZ0Q7QUFDaEQsaUNBQXdEO0FBQ3hELHVDQUEwRjtBQUUxRjs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQTRHaEM7O0dBRUc7QUFDSCxJQUFZLHNCQVVYO0FBVkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCw2Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFWVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQVVqQztBQW1DRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQWEsVUFBVyxTQUFRLHVCQUFhO0lBMkUzQzs7Ozs7T0FLRztJQUNILFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsUUFBeUIsRUFBRTtRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBcER0Qjs7V0FFRztRQUNhLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUVuRDs7V0FFRztRQUNhLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwRDs7V0FFRztRQUNhLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQXNCckQ7O1dBRUc7UUFDSyxtQkFBYyxHQUE2QixFQUFFLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyx3QkFBbUIsR0FBMEIsRUFBRSxDQUFDO1FBV3RELDBEQUEwRDtRQUMxRCxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHlGQUF5RixDQUFDLENBQUM7U0FDNUc7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUU1RCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksNkJBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQzlGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDeEYsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixJQUFJLFNBQVMsQ0FBQztRQUVsRSw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFjLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDL0QsU0FBUztZQUNULGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFDbEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6RTtRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlGLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFcEUsd0RBQXdEO1FBQ3hELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksOEJBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUNsRSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzthQUMvQixDQUFDLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLDhCQUFjLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtnQkFDekUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLGFBQW1DLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUMvRCxZQUFZLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1lBRUgscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxjQUFxQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO29CQUN2QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLDhEQUE4RDtvQkFDOUQsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFFBQWlCLEVBQUUsU0FBZ0M7UUFDM0UsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDbkQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFbkUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFDbkMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLFVBQTZCLENBQUM7UUFDbEMsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsU0FBUywrQkFBK0IsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDdkY7YUFDRjtZQUNELFVBQVUsR0FBRyxPQUE0QixDQUFDO1NBQzNDO2FBQU07WUFDTCxVQUFVLEdBQUksSUFBSSxDQUFDLGFBQWtDLENBQUM7U0FDdkQ7UUFFRCxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDakU7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNuQixNQUFNLHFCQUFxQixHQUEwQixFQUFFLENBQUM7UUFFeEQsb0VBQW9FO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUViLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdDLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkMsU0FBUzthQUNWO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckQ7UUFFRCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUNwRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkYsS0FBSyxNQUFNLE1BQU0sSUFBSSxxQkFBcUIsRUFBRTtZQUMxQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDeEQ7SUFDSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsWUFBaUMsRUFBRSxRQUFnQjtRQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzdDLE1BQU0sSUFBSSxHQUFHLGVBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE1BQU0sV0FBVyxHQUFtQjtnQkFDbEMsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO2dCQUNsRCxtQkFBbUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BFLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTthQUN4QixDQUFDO1lBRUYsUUFBUSxZQUFZLENBQUMsVUFBVSxFQUFFO2dCQUMvQixLQUFLLG9CQUFVLENBQUMsTUFBTTtvQkFDcEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3RDLE1BQU07Z0JBQ1IsS0FBSyxvQkFBVSxDQUFDLE9BQU87b0JBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3hDLE1BQU07Z0JBQ1IsS0FBSyxvQkFBVSxDQUFDLFFBQVE7b0JBQ3RCLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDckUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFDLE1BQU07YUFDVDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3T0Q7Ozs7R0FJRztBQUNvQiw2QkFBa0IsR0FBVyxhQUFhLENBQUM7QUFFbEU7Ozs7R0FJRztBQUNvQiwwQkFBZSxHQUEwQjtJQUM5RDtRQUNFLFVBQVUsRUFBRSxvQkFBVSxDQUFDLE1BQU07UUFDN0IsSUFBSSxFQUFFLDBCQUFtQixDQUFDLG9CQUFVLENBQUMsTUFBTSxDQUFDO0tBQzdDO0lBQ0Q7UUFDRSxVQUFVLEVBQUUsb0JBQVUsQ0FBQyxPQUFPO1FBQzlCLElBQUksRUFBRSwwQkFBbUIsQ0FBQyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztLQUM5QztDQUNGLENBQUM7QUF2QkosZ0NBZ1BDO0FBbUNEOztHQUVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVk7SUFzQnpDLFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsS0FBcUI7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksOEJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUMvRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksOEJBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3RFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFOUIsbUVBQW1FO1FBQ25FLE1BQU0sVUFBVSxHQUFHLElBQUksOEJBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7WUFDdkcsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxLQUFLLENBQUMsR0FBRztTQUN4QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLG9CQUFvQixDQUFDLFlBQW9CO1FBQ2pELElBQUksOEJBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0Isb0JBQW9CLEVBQUUsV0FBVztZQUNqQyxZQUFZO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLG9CQUFvQixDQUFDLFNBQWlCO1FBQzlDLElBQUksOEJBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0Isb0JBQW9CLEVBQUUsV0FBVztZQUNqQyxTQUFTO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbEVELDhCQWtFQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLFNBQVM7SUFDNUMsWUFBWSxNQUFxQixFQUFFLElBQVksRUFBRSxLQUFxQjtRQUNwRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSSx1QkFBdUIsQ0FBQyxTQUFpQjtRQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhO1FBQ2xCLDZDQUE2QztRQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDhCQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNwRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsWUFBWSxFQUFFLElBQUksOEJBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDeEQsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUMsZUFBZTtZQUNsQixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBNUJELDBDQTRCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQVksTUFBcUIsRUFBRSxJQUFZLEVBQUUsS0FBcUI7UUFDcEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQXVCLENBQUMsWUFBb0I7UUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVhELDRDQVdDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBb0IsRUFBRSxZQUFlO0lBQzNELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IGNsb3VkZm9ybWF0aW9uIH0gZnJvbSAnLi9lYzIuZ2VuZXJhdGVkJztcbmltcG9ydCB7IE5ldHdvcmtCdWlsZGVyIH0gZnJvbSAnLi9uZXR3b3JrLXV0aWwnO1xuaW1wb3J0IHsgREVGQVVMVF9TVUJORVRfTkFNRSwgc3VibmV0SWQgIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFN1Ym5ldFR5cGUsIFZwY05ldHdvcmtSZWYsIFZwY1BsYWNlbWVudFN0cmF0ZWd5LCBWcGNTdWJuZXRSZWYgfSBmcm9tICcuL3ZwYy1yZWYnO1xuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSAnTmFtZSc7XG5cbi8qKlxuICogVnBjTmV0d29ya1Byb3BzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjTmV0d29ya1Byb3BzIHtcblxuICAvKipcbiAgICogVGhlIENJRFIgcmFuZ2UgdG8gdXNlIGZvciB0aGUgVlBDIChlLmcuICcxMC4wLjAuMC8xNicpLiBTaG91bGQgYmUgYSBtaW5pbXVtIG9mIC8yOCBhbmQgbWF4aW11bSBzaXplIG9mIC8xNi5cbiAgICogVGhlIHJhbmdlIHdpbGwgYmUgc3BsaXQgZXZlbmx5IGludG8gdHdvIHN1Ym5ldHMgcGVyIEF2YWlsYWJpbGl0eSBab25lIChvbmUgcHVibGljLCBvbmUgcHJpdmF0ZSkuXG4gICAqL1xuICBjaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5zdGFuY2VzIGxhdW5jaGVkIGluIHRoZSBWUEMgZ2V0IHB1YmxpYyBETlMgaG9zdG5hbWVzLlxuICAgKiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBpbnN0YW5jZXMgaW4gdGhlIFZQQyBnZXQgcHVibGljIEROUyBob3N0bmFtZXMsXG4gICAqIGJ1dCBvbmx5IGlmIHRoZSBlbmFibGVEbnNTdXBwb3J0IGF0dHJpYnV0ZSBpcyBhbHNvIHNldCB0byB0cnVlLlxuICAgKi9cbiAgZW5hYmxlRG5zSG9zdG5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIEROUyByZXNvbHV0aW9uIGlzIHN1cHBvcnRlZCBmb3IgdGhlIFZQQy4gSWYgdGhpcyBhdHRyaWJ1dGVcbiAgICogaXMgZmFsc2UsIHRoZSBBbWF6b24tcHJvdmlkZWQgRE5TIHNlcnZlciBpbiB0aGUgVlBDIHRoYXQgcmVzb2x2ZXMgcHVibGljIEROUyBob3N0bmFtZXNcbiAgICogdG8gSVAgYWRkcmVzc2VzIGlzIG5vdCBlbmFibGVkLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlLCBxdWVyaWVzIHRvIHRoZSBBbWF6b25cbiAgICogcHJvdmlkZWQgRE5TIHNlcnZlciBhdCB0aGUgMTY5LjI1NC4xNjkuMjUzIElQIGFkZHJlc3MsIG9yIHRoZSByZXNlcnZlZCBJUCBhZGRyZXNzXG4gICAqIGF0IHRoZSBiYXNlIG9mIHRoZSBWUEMgSVB2NCBuZXR3b3JrIHJhbmdlIHBsdXMgdHdvIHdpbGwgc3VjY2VlZC5cbiAgICovXG4gIGVuYWJsZURuc1N1cHBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gICAqIEJ5IGRlZmF1bHQsIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5LlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uIGhhcmR3YXJlIGRlZGljYXRlZFxuICAgKiB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLlxuICAgKiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqL1xuICBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogVGhlIEFXUyByZXNvdXJjZSB0YWdzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBWUEMuXG4gICAqL1xuICB0YWdzPzogY2RrLlRhZ3M7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgQVpzIHRvIHVzZSBpbiB0aGlzIHJlZ2lvblxuICAgKlxuICAgKiBJZiB0aGUgcmVnaW9uIGhhcyBtb3JlIEFacyB0aGFuIHlvdSB3YW50IHRvIHVzZSAoZm9yIGV4YW1wbGUsIGJlY2F1c2Ugb2YgRUlQIGxpbWl0cyksXG4gICAqIHBpY2sgYSBsb3dlciBudW1iZXIgaGVyZS4gVGhlIEFacyB3aWxsIGJlIHNvcnRlZCBhbmQgcGlja2VkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGwgQVpzIGluIHRoZSByZWdpb25cbiAgICovXG4gIG1heEFacz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBOQVQgR2F0ZXdheXMgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgc2V0IHRoaXMgdG8gMSBhbmQgeW91ciBzdWJuZXQgY29uZmlndXJhdGlvbiBpcyBmb3IgMyBQdWJsaWMgc3VibmV0cyB0aGVuIG9ubHlcbiAgICogb25lIG9mIHRoZSBQdWJsaWMgc3VibmV0cyB3aWxsIGhhdmUgYSBnYXRld2F5IGFuZCBhbGwgUHJpdmF0ZSBzdWJuZXRzIHdpbGwgcm91dGUgdG8gdGhpcyBOQVQgR2F0ZXdheS5cbiAgICogQGRlZmF1bHQgbWF4QVpzXG4gICAqL1xuICBuYXRHYXRld2F5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgc3VibmV0cyB3aGljaCB3aWxsIGhhdmUgTkFUIEdhdGV3YXlzXG4gICAqXG4gICAqIFlvdSBjYW4gcGljayBhIHNwZWNpZmljIGdyb3VwIG9mIHN1Ym5ldHMgYnkgc3BlY2lmeWluZyB0aGUgZ3JvdXAgbmFtZTtcbiAgICogdGhlIHBpY2tlZCBzdWJuZXRzIG11c3QgYmUgcHVibGljIHN1Ym5ldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFsbCBwdWJsaWMgc3VibmV0c1xuICAgKi9cbiAgbmF0R2F0ZXdheVBsYWNlbWVudD86IFZwY1BsYWNlbWVudFN0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlIHN1Ym5ldHMgdG8gYnVpbGQgZm9yIGVhY2ggQVpcbiAgICpcbiAgICogVGhlIHN1Ym5ldHMgYXJlIGNvbnN0cnVjdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBWUEMgc28geW91IG9ubHkgbmVlZFxuICAgKiBzcGVjaWZ5IHRoZSBjb25maWd1cmF0aW9uLiBUaGUgVlBDIGRldGFpbHMgKFZQQyBJRCwgc3BlY2lmaWMgQ0lEUixcbiAgICogc3BlY2lmaWMgQVogd2lsbCBiZSBjYWxjdWxhdGVkIGR1cmluZyBjcmVhdGlvbilcbiAgICpcbiAgICogRm9yIGV4YW1wbGUgaWYgeW91IHdhbnQgMSBwdWJsaWMgc3VibmV0LCAxIHByaXZhdGUgc3VibmV0LCBhbmQgMSBpc29sYXRlZFxuICAgKiBzdWJuZXQgaW4gZWFjaCBBWiBwcm92aWRlIHRoZSBmb2xsb3dpbmc6XG4gICAqIHN1Ym5ldENvbmZpZ3VyYXRpb246IFtcbiAgICogICAge1xuICAgKiAgICAgIGNpZHJNYXNrOiAyNCxcbiAgICogICAgICBuYW1lOiAnaW5ncmVzcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QdWJsaWMsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjQsXG4gICAqICAgICAgbmFtZTogJ2FwcGxpY2F0aW9uJyxcbiAgICogICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAqICAgIH0sXG4gICAqICAgIHtcbiAgICogICAgICBjaWRyTWFzazogMjgsXG4gICAqICAgICAgbmFtZTogJ3JkcycsXG4gICAqICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5Jc29sYXRlZCxcbiAgICogICAgfVxuICAgKiBdXG4gICAqXG4gICAqIGBjaWRyTWFza2AgaXMgb3B0aW9uYWwgYW5kIGlmIG5vdCBwcm92aWRlZCB0aGUgSVAgc3BhY2UgaW4gdGhlIFZQQyB3aWxsIGJlXG4gICAqIGV2ZW5seSBkaXZpZGVkIGJldHdlZW4gdGhlIHJlcXVlc3RlZCBzdWJuZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgVlBDIENJRFIgd2lsbCBiZSBldmVubHkgZGl2aWRlZCBiZXR3ZWVuIDEgcHVibGljIGFuZCAxXG4gICAqIHByaXZhdGUgc3VibmV0IHBlciBBWlxuICAgKi9cbiAgc3VibmV0Q29uZmlndXJhdGlvbj86IFN1Ym5ldENvbmZpZ3VyYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCB0ZW5hbmN5IG9mIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoZSBWUEMuXG4gKi9cbmV4cG9ydCBlbnVtIERlZmF1bHRJbnN0YW5jZVRlbmFuY3kge1xuICAvKipcbiAgICogSW5zdGFuY2VzIGNhbiBiZSBsYXVuY2hlZCB3aXRoIGFueSB0ZW5hbmN5LlxuICAgKi9cbiAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcblxuICAvKipcbiAgICogQW55IGluc3RhbmNlIGxhdW5jaGVkIGludG8gdGhlIFZQQyBhdXRvbWF0aWNhbGx5IGhhcyBkZWRpY2F0ZWQgdGVuYW5jeSwgdW5sZXNzIHlvdSBsYXVuY2ggaXQgd2l0aCB0aGUgZGVmYXVsdCB0ZW5hbmN5LlxuICAgKi9cbiAgRGVkaWNhdGVkID0gJ2RlZGljYXRlZCdcbn1cblxuLyoqXG4gKiBTcGVjaWZ5IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYSBWUEMgdG8gYmUgYnVpbHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBDSURSIE1hc2sgb3IgdGhlIG51bWJlciBvZiBsZWFkaW5nIDEgYml0cyBpbiB0aGUgcm91dGluZyBtYXNrXG4gICAqXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgMTYgLSAyOFxuICAgKi9cbiAgY2lkck1hc2s/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKi9cbiAgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGNvbW1vbiBMb2dpY2FsIE5hbWUgZm9yIHRoZSBgVnBjU3VibmV0YFxuICAgKlxuICAgKiBUaGkgbmFtZSB3aWxsIGJlIHN1ZmZpeGVkIHdpdGggYW4gaW50ZWdlciBjb3JyZWxhdGluZyB0byBhIHNwZWNpZmljXG4gICAqIGF2YWlsYWJpbGl0eSB6b25lLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlc291cmNlIHRhZ3MgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlc291cmNlLlxuICAgKi9cbiAgdGFncz86IGNkay5UYWdzO1xufVxuXG4vKipcbiAqIFZwY05ldHdvcmsgZGVwbG95cyBhbiBBV1MgVlBDLCB3aXRoIHB1YmxpYyBhbmQgcHJpdmF0ZSBzdWJuZXRzIHBlciBBdmFpbGFiaWxpdHkgWm9uZS5cbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGltcG9ydCB7IFZwY05ldHdvcmsgfSBmcm9tICdAYXdzLWNkay9hd3MtZWMyJ1xuICpcbiAqIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHRoaXMsIHtcbiAqICAgY2lkcjogXCIxMC4wLjAuMC8xNlwiXG4gKiB9KVxuICpcbiAqIC8vIEl0ZXJhdGUgdGhlIHB1YmxpYyBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnB1YmxpY1N1Ym5ldHMpIHtcbiAqXG4gKiB9XG4gKlxuICogLy8gSXRlcmF0ZSB0aGUgcHJpdmF0ZSBzdWJuZXRzXG4gKiBmb3IgKGxldCBzdWJuZXQgb2YgdnBjLnByaXZhdGVTdWJuZXRzKSB7XG4gKlxuICogfVxuICovXG5leHBvcnQgY2xhc3MgVnBjTmV0d29yayBleHRlbmRzIFZwY05ldHdvcmtSZWYgaW1wbGVtZW50cyBjZGsuSVRhZ2dhYmxlIHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgQ0lEUiByYW5nZSB1c2VkIHdoZW4gY3JlYXRpbmcgVlBDcy5cbiAgICogVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyBWcGNOZXR3b3JrUHJvcHMgd2hlbiBjcmVhdGluZyBhIFZQQ05ldHdvcmsgcmVzb3VyY2UuXG4gICAqIGUuZy4gbmV3IFZwY1Jlc291cmNlKHRoaXMsIHsgY2lkcjogJzE5Mi4xNjguMC4wLi8xNicgfSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9DSURSX1JBTkdFOiBzdHJpbmcgPSAnMTAuMC4wLjAvMTYnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzdWJuZXQgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiAxIFB1YmxpYyBhbmQgMSBQcml2YXRlIHN1Ym5ldCBwZXIgQVogZXZlbmx5IHNwbGl0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfU1VCTkVUUzogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW1xuICAgIHtcbiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUHVibGljLFxuICAgICAgbmFtZTogREVGQVVMVF9TVUJORVRfTkFNRVtTdWJuZXRUeXBlLlB1YmxpY10sXG4gICAgfSxcbiAgICB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlByaXZhdGUsXG4gICAgICBuYW1lOiBERUZBVUxUX1NVQk5FVF9OQU1FW1N1Ym5ldFR5cGUuUHJpdmF0ZV0sXG4gICAgfVxuICBdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHVibGljIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwdWJsaWNTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHByaXZhdGUgc3VibmV0cyBpbiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBWcGNTdWJuZXRSZWZbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IFZwY1N1Ym5ldFJlZltdID0gW107XG5cbiAgLyoqXG4gICAqIEFacyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hbmFnZSB0YWdzIGZvciB0aGlzIGNvbnN0cnVjdCBhbmQgY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzOiBjZGsuVGFnTWFuYWdlcjtcblxuICAvKipcbiAgICogVGhlIFZQQyByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZXNvdXJjZTogY2xvdWRmb3JtYXRpb24uVlBDUmVzb3VyY2U7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrQnVpbGRlclxuICAgKi9cbiAgcHJpdmF0ZSBuZXR3b3JrQnVpbGRlcjogTmV0d29ya0J1aWxkZXI7XG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgb2YgTmF0R2F0ZXdheSBieSBBWlxuICAgKi9cbiAgcHJpdmF0ZSBuYXRHYXRld2F5QnlBWjogeyBbYXo6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBWUENcbiAgICovXG4gIHByaXZhdGUgc3VibmV0Q29uZmlndXJhdGlvbjogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW107XG5cbiAgLyoqXG4gICAqIFZwY05ldHdvcmsgY3JlYXRlcyBhIFZQQyB0aGF0IHNwYW5zIGEgd2hvbGUgcmVnaW9uLlxuICAgKiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGl2aWRlIHRoZSBwcm92aWRlZCBWUEMgQ0lEUiByYW5nZSwgYW5kIGNyZWF0ZSBwdWJsaWMgYW5kIHByaXZhdGUgc3VibmV0cyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHB1YmxpYyBzdWJuZXRzIHdpbGwgYmUgY29uZmlndXJlZCB0byBhbGxvdyBvdXRib3VuZCBhY2Nlc3MgZGlyZWN0bHkgdmlhIGFuIEludGVybmV0IEdhdGV3YXkuXG4gICAqIE5ldHdvcmsgcm91dGluZyBmb3IgdGhlIHByaXZhdGUgc3VibmV0cyB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgb3V0Ym91bmQgYWNjZXNzIHZpYSBhIHNldCBvZiByZXNpbGllbnQgTkFUIEdhdGV3YXlzIChvbmUgcGVyIEFaKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogVnBjTmV0d29ya1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgLy8gQ2FuJ3QgaGF2ZSBlbmFibGVkRG5zSG9zdG5hbWVzIHdpdGhvdXQgZW5hYmxlRG5zU3VwcG9ydFxuICAgIGlmIChwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgJiYgIXByb3BzLmVuYWJsZURuc1N1cHBvcnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG8gdXNlIEROUyBIb3N0bmFtZXMsIEROUyBTdXBwb3J0IG11c3QgYmUgZW5hYmxlZCwgaG93ZXZlciwgaXQgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy50YWdzID0gbmV3IGNkay5UYWdNYW5hZ2VyKHRoaXMsIHsgaW5pdGlhbFRhZ3M6IHByb3BzLnRhZ3N9KTtcbiAgICB0aGlzLnRhZ3Muc2V0VGFnKE5BTUVfVEFHLCB0aGlzLnBhdGgsIHsgb3ZlcndyaXRlOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IGNpZHJCbG9jayA9IGlmVW5kZWZpbmVkKHByb3BzLmNpZHIsIFZwY05ldHdvcmsuREVGQVVMVF9DSURSX1JBTkdFKTtcbiAgICB0aGlzLm5ldHdvcmtCdWlsZGVyID0gbmV3IE5ldHdvcmtCdWlsZGVyKGNpZHJCbG9jayk7XG5cbiAgICBjb25zdCBlbmFibGVEbnNIb3N0bmFtZXMgPSBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXMgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNIb3N0bmFtZXM7XG4gICAgY29uc3QgZW5hYmxlRG5zU3VwcG9ydCA9IHByb3BzLmVuYWJsZURuc1N1cHBvcnQgPT0gbnVsbCA/IHRydWUgOiBwcm9wcy5lbmFibGVEbnNTdXBwb3J0O1xuICAgIGNvbnN0IGluc3RhbmNlVGVuYW5jeSA9IHByb3BzLmRlZmF1bHRJbnN0YW5jZVRlbmFuY3kgfHwgJ2RlZmF1bHQnO1xuXG4gICAgLy8gRGVmaW5lIGEgVlBDIHVzaW5nIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZvcm1hdGlvbi5WUENSZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjaWRyQmxvY2ssXG4gICAgICBlbmFibGVEbnNIb3N0bmFtZXMsXG4gICAgICBlbmFibGVEbnNTdXBwb3J0LFxuICAgICAgaW5zdGFuY2VUZW5hbmN5LFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcyA9IG5ldyBjZGsuQXZhaWxhYmlsaXR5Wm9uZVByb3ZpZGVyKHRoaXMpLmF2YWlsYWJpbGl0eVpvbmVzO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMuc29ydCgpO1xuICAgIGlmIChwcm9wcy5tYXhBWnMgIT0gbnVsbCkge1xuICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZXMgPSB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLnNsaWNlKDAsIHByb3BzLm1heEFacyk7XG4gICAgfVxuXG4gICAgdGhpcy52cGNJZCA9IHRoaXMucmVzb3VyY2UudnBjSWQ7XG4gICAgdGhpcy5kZXBlbmRlbmN5RWxlbWVudHMucHVzaCh0aGlzLnJlc291cmNlKTtcblxuICAgIHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbiA9IGlmVW5kZWZpbmVkKHByb3BzLnN1Ym5ldENvbmZpZ3VyYXRpb24sIFZwY05ldHdvcmsuREVGQVVMVF9TVUJORVRTKTtcbiAgICAvLyBzdWJuZXRDb25maWd1cmF0aW9uIGFuZCBuYXRHYXRld2F5cyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZyBjcmVhdGVTdWJuZXRzXG4gICAgdGhpcy5jcmVhdGVTdWJuZXRzKCk7XG5cbiAgICBjb25zdCBhbGxvd091dGJvdW5kID0gdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uLmZpbHRlcihcbiAgICAgIHN1Ym5ldCA9PiAoc3VibmV0LnN1Ym5ldFR5cGUgIT09IFN1Ym5ldFR5cGUuSXNvbGF0ZWQpKS5sZW5ndGggPiAwO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEludGVybmV0IEdhdGV3YXkgYW5kIGF0dGFjaCBpdCBpZiBuZWNlc3NhcnlcbiAgICBpZiAoYWxsb3dPdXRib3VuZCkge1xuICAgICAgY29uc3QgaWd3ID0gbmV3IGNsb3VkZm9ybWF0aW9uLkludGVybmV0R2F0ZXdheVJlc291cmNlKHRoaXMsICdJR1cnLCB7XG4gICAgICAgIHRhZ3M6IG5ldyBjZGsuVGFnTWFuYWdlcih0aGlzKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgYXR0ID0gbmV3IGNsb3VkZm9ybWF0aW9uLlZQQ0dhdGV3YXlBdHRhY2htZW50UmVzb3VyY2UodGhpcywgJ1ZQQ0dXJywge1xuICAgICAgICBpbnRlcm5ldEdhdGV3YXlJZDogaWd3LnJlZixcbiAgICAgICAgdnBjSWQ6IHRoaXMucmVzb3VyY2UucmVmXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGVwZW5kZW5jeUVsZW1lbnRzLnB1c2goaWd3LCBhdHQpO1xuXG4gICAgICAodGhpcy5wdWJsaWNTdWJuZXRzIGFzIFZwY1B1YmxpY1N1Ym5ldFtdKS5mb3JFYWNoKHB1YmxpY1N1Ym5ldCA9PiB7XG4gICAgICAgIHB1YmxpY1N1Ym5ldC5hZGREZWZhdWx0SUdXUm91dGVFbnRyeShpZ3cucmVmKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBpZiBnYXRld2F5cyBhcmUgbmVlZGVkIGNyZWF0ZSB0aGVtXG4gICAgICB0aGlzLmNyZWF0ZU5hdEdhdGV3YXlzKHByb3BzLm5hdEdhdGV3YXlzLCBwcm9wcy5uYXRHYXRld2F5UGxhY2VtZW50KTtcblxuICAgICAgKHRoaXMucHJpdmF0ZVN1Ym5ldHMgYXMgVnBjUHJpdmF0ZVN1Ym5ldFtdKS5mb3JFYWNoKChwcml2YXRlU3VibmV0LCBpKSA9PiB7XG4gICAgICAgIGxldCBuZ3dJZCA9IHRoaXMubmF0R2F0ZXdheUJ5QVpbcHJpdmF0ZVN1Ym5ldC5hdmFpbGFiaWxpdHlab25lXTtcbiAgICAgICAgaWYgKG5nd0lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBuZ3dBcnJheSA9IEFycmF5LmZyb20oT2JqZWN0LnZhbHVlcyh0aGlzLm5hdEdhdGV3YXlCeUFaKSk7XG4gICAgICAgICAgLy8gcm91bmQgcm9iaW4gdGhlIGF2YWlsYWJsZSBOYXRHVyBzaW5jZSBvbmUgaXMgbm90IGluIHlvdXIgQVpcbiAgICAgICAgICBuZ3dJZCA9IG5nd0FycmF5W2kgJSBuZ3dBcnJheS5sZW5ndGhdO1xuICAgICAgICB9XG4gICAgICAgIHByaXZhdGVTdWJuZXQuYWRkRGVmYXVsdE5hdFJvdXRlRW50cnkobmd3SWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBJUHY0IENpZHJCbG9jayBhcyByZXR1cm5lZCBieSB0aGUgVlBDXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNpZHIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5nZXRBdHQoXCJDaWRyQmxvY2tcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmF0R2F0ZXdheXMoZ2F0ZXdheXM/OiBudW1iZXIsIHBsYWNlbWVudD86IFZwY1BsYWNlbWVudFN0cmF0ZWd5KTogdm9pZCB7XG4gICAgY29uc3QgdXNlTmF0R2F0ZXdheSA9IHRoaXMuc3VibmV0Q29uZmlndXJhdGlvbi5maWx0ZXIoXG4gICAgICBzdWJuZXQgPT4gKHN1Ym5ldC5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlByaXZhdGUpKS5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgbmF0Q291bnQgPSBpZlVuZGVmaW5lZChnYXRld2F5cyxcbiAgICAgIHVzZU5hdEdhdGV3YXkgPyB0aGlzLmF2YWlsYWJpbGl0eVpvbmVzLmxlbmd0aCA6IDApO1xuXG4gICAgbGV0IG5hdFN1Ym5ldHM6IFZwY1B1YmxpY1N1Ym5ldFtdO1xuICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnN1Ym5ldHMocGxhY2VtZW50KTtcbiAgICAgIGZvciAoY29uc3Qgc3ViIG9mIHN1Ym5ldHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUHVibGljU3VibmV0KHN1YikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5hdEdhdGV3YXlQbGFjZW1lbnQgJHtwbGFjZW1lbnR9IGNvbnRhaW5zIG5vbiBwdWJsaWMgc3VibmV0ICR7c3VifWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuYXRTdWJuZXRzID0gc3VibmV0cyBhcyBWcGNQdWJsaWNTdWJuZXRbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmF0U3VibmV0cyA9ICB0aGlzLnB1YmxpY1N1Ym5ldHMgYXMgVnBjUHVibGljU3VibmV0W107XG4gICAgfVxuXG4gICAgbmF0U3VibmV0cyA9IG5hdFN1Ym5ldHMuc2xpY2UoMCwgbmF0Q291bnQpO1xuICAgIGZvciAoY29uc3Qgc3ViIG9mIG5hdFN1Ym5ldHMpIHtcbiAgICAgIHRoaXMubmF0R2F0ZXdheUJ5QVpbc3ViLmF2YWlsYWJpbGl0eVpvbmVdID0gc3ViLmFkZE5hdEdhdGV3YXkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlU3VibmV0cyBjcmVhdGVzIHRoZSBzdWJuZXRzIHNwZWNpZmllZCBieSB0aGUgc3VibmV0IGNvbmZpZ3VyYXRpb25cbiAgICogYXJyYXkgb3IgY3JlYXRlcyB0aGUgYERFRkFVTFRfU1VCTkVUU2AgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTdWJuZXRzKCkge1xuICAgIGNvbnN0IHJlbWFpbmluZ1NwYWNlU3VibmV0czogU3VibmV0Q29uZmlndXJhdGlvbltdID0gW107XG5cbiAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIHB1YmxpYy9wcml2YXRlIHN1Ym5ldHMgYmFzZWQgb24gbnVtYmVyIG9mIEFac1xuICAgIGNvbnN0IHpvbmVzID0gbmV3IGNkay5BdmFpbGFiaWxpdHlab25lUHJvdmlkZXIodGhpcykuYXZhaWxhYmlsaXR5Wm9uZXM7XG4gICAgem9uZXMuc29ydCgpO1xuXG4gICAgZm9yIChjb25zdCBzdWJuZXQgb2YgdGhpcy5zdWJuZXRDb25maWd1cmF0aW9uKSB7XG4gICAgICBpZiAoc3VibmV0LmNpZHJNYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVtYWluaW5nU3BhY2VTdWJuZXRzLnB1c2goc3VibmV0KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB0aGlzLmNyZWF0ZVN1Ym5ldFJlc291cmNlcyhzdWJuZXQsIHN1Ym5ldC5jaWRyTWFzayk7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxSZW1haW5pbmcgPSByZW1haW5pbmdTcGFjZVN1Ym5ldHMubGVuZ3RoICogdGhpcy5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGg7XG4gICAgY29uc3QgY2lkck1hc2tGb3JSZW1haW5nID0gdGhpcy5uZXR3b3JrQnVpbGRlci5tYXNrRm9yUmVtYWluaW5nU3VibmV0cyh0b3RhbFJlbWFpbmluZyk7XG4gICAgZm9yIChjb25zdCBzdWJuZXQgb2YgcmVtYWluaW5nU3BhY2VTdWJuZXRzKSB7XG4gICAgICB0aGlzLmNyZWF0ZVN1Ym5ldFJlc291cmNlcyhzdWJuZXQsIGNpZHJNYXNrRm9yUmVtYWluZyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdWJuZXRSZXNvdXJjZXMoc3VibmV0Q29uZmlnOiBTdWJuZXRDb25maWd1cmF0aW9uLCBjaWRyTWFzazogbnVtYmVyKSB7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKCh6b25lLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHN1Ym5ldElkKHN1Ym5ldENvbmZpZy5uYW1lLCBpbmRleCk7XG4gICAgICBjb25zdCBzdWJuZXRQcm9wczogVnBjU3VibmV0UHJvcHMgPSB7XG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHpvbmUsXG4gICAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgICBjaWRyQmxvY2s6IHRoaXMubmV0d29ya0J1aWxkZXIuYWRkU3VibmV0KGNpZHJNYXNrKSxcbiAgICAgICAgbWFwUHVibGljSXBPbkxhdW5jaDogKHN1Ym5ldENvbmZpZy5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlB1YmxpYyksXG4gICAgICAgIHRhZ3M6IHN1Ym5ldENvbmZpZy50YWdzLFxuICAgICAgfTtcblxuICAgICAgc3dpdGNoIChzdWJuZXRDb25maWcuc3VibmV0VHlwZSkge1xuICAgICAgICBjYXNlIFN1Ym5ldFR5cGUuUHVibGljOlxuICAgICAgICAgIGNvbnN0IHB1YmxpY1N1Ym5ldCA9IG5ldyBWcGNQdWJsaWNTdWJuZXQodGhpcywgbmFtZSwgc3VibmV0UHJvcHMpO1xuICAgICAgICAgIHRoaXMucHVibGljU3VibmV0cy5wdXNoKHB1YmxpY1N1Ym5ldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU3VibmV0VHlwZS5Qcml2YXRlOlxuICAgICAgICAgIGNvbnN0IHByaXZhdGVTdWJuZXQgPSBuZXcgVnBjUHJpdmF0ZVN1Ym5ldCh0aGlzLCBuYW1lLCBzdWJuZXRQcm9wcyk7XG4gICAgICAgICAgdGhpcy5wcml2YXRlU3VibmV0cy5wdXNoKHByaXZhdGVTdWJuZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFN1Ym5ldFR5cGUuSXNvbGF0ZWQ6XG4gICAgICAgICAgY29uc3QgaXNvbGF0ZWRTdWJuZXQgPSBuZXcgVnBjUHJpdmF0ZVN1Ym5ldCh0aGlzLCBuYW1lLCBzdWJuZXRQcm9wcyk7XG4gICAgICAgICAgdGhpcy5pc29sYXRlZFN1Ym5ldHMucHVzaChpc29sYXRlZFN1Ym5ldCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBTcGVjaWZ5IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgYSBWUEMgc3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjU3VibmV0UHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgZm9yIHRoZSBzdWJuZXRcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQQyB3aGljaCB0aGlzIHN1Ym5ldCBpcyBwYXJ0IG9mXG4gICAqL1xuICB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0lEUiBub3RhdGlvbiBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIGNpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhIHB1YmxpYyBJUCBpcyBhc3NvY2lhdGVkIHRvIGFuIGluc3RhbmNlIGF0IGxhdW5jaFxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlIGluIFN1Ym5ldC5QdWJsaWMsIGZhbHNlIGluIFN1Ym5ldC5Qcml2YXRlIG9yIFN1Ym5ldC5Jc29sYXRlZC5cbiAgICovXG4gIG1hcFB1YmxpY0lwT25MYXVuY2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHJlc291cmNlIHRhZ3MgdG8gYXNzb2NpYXRlIHdpdGggdGhlIFN1Ym5ldFxuICAgKi9cbiAgdGFncz86IGNkay5UYWdzO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBuZXcgVlBDIHN1Ym5ldCByZXNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgVnBjU3VibmV0IGV4dGVuZHMgVnBjU3VibmV0UmVmIGltcGxlbWVudHMgY2RrLklUYWdnYWJsZSB7XG5cbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSB0aGUgc3VibmV0IGlzIGxvY2F0ZWQgaW5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hbmFnZSB0YWdzIGZvciBDb25zdHJ1Y3QgYW5kIHByb3BhZ2F0ZSB0byBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M6IGNkay5UYWdNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGVUYWJsZUlkIGF0dGFjaGVkIHRvIHRoaXMgc3VibmV0LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZVRhYmxlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY1N1Ym5ldFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcbiAgICB0aGlzLnRhZ3MgPSBuZXcgY2RrLlRhZ01hbmFnZXIodGhpcywge2luaXRpYWxUYWdzOiBwcm9wcy50YWdzfSk7XG4gICAgdGhpcy50YWdzLnNldFRhZyhOQU1FX1RBRywgdGhpcy5wYXRoLCB7b3ZlcndyaXRlOiBmYWxzZX0pO1xuXG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZTtcbiAgICBjb25zdCBzdWJuZXQgPSBuZXcgY2xvdWRmb3JtYXRpb24uU3VibmV0UmVzb3VyY2UodGhpcywgJ1N1Ym5ldCcsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGNJZCxcbiAgICAgIGNpZHJCbG9jazogcHJvcHMuY2lkckJsb2NrLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgIG1hcFB1YmxpY0lwT25MYXVuY2g6IHByb3BzLm1hcFB1YmxpY0lwT25MYXVuY2gsXG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgfSk7XG4gICAgdGhpcy5zdWJuZXRJZCA9IHN1Ym5ldC5zdWJuZXRJZDtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBjbG91ZGZvcm1hdGlvbi5Sb3V0ZVRhYmxlUmVzb3VyY2UodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjSWQsXG4gICAgICB0YWdzOiBuZXcgY2RrLlRhZ01hbmFnZXIodGhpcyksXG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZVRhYmxlSWQgPSB0YWJsZS5yZWY7XG5cbiAgICAvLyBBc3NvY2lhdGUgdGhlIHB1YmxpYyByb3V0ZSB0YWJsZSBmb3IgdGhpcyBzdWJuZXQsIHRvIHRoaXMgc3VibmV0XG4gICAgY29uc3Qgcm91dGVBc3NvYyA9IG5ldyBjbG91ZGZvcm1hdGlvbi5TdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb25SZXNvdXJjZSh0aGlzLCAnUm91dGVUYWJsZUFzc29jaWF0aW9uJywge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgICByb3V0ZVRhYmxlSWQ6IHRhYmxlLnJlZlxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXBlbmRlbmN5RWxlbWVudHMucHVzaChzdWJuZXQsIHRhYmxlLCByb3V0ZUFzc29jKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGREZWZhdWx0Um91dGVUb05BVChuYXRHYXRld2F5SWQ6IHN0cmluZykge1xuICAgIG5ldyBjbG91ZGZvcm1hdGlvbi5Sb3V0ZVJlc291cmNlKHRoaXMsIGBEZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZUlkLFxuICAgICAgZGVzdGluYXRpb25DaWRyQmxvY2s6ICcwLjAuMC4wLzAnLFxuICAgICAgbmF0R2F0ZXdheUlkXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkRGVmYXVsdFJvdXRlVG9JR1coZ2F0ZXdheUlkOiBzdHJpbmcpIHtcbiAgICBuZXcgY2xvdWRmb3JtYXRpb24uUm91dGVSZXNvdXJjZSh0aGlzLCBgRGVmYXVsdFJvdXRlYCwge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiAnMC4wLjAuMC8wJyxcbiAgICAgIGdhdGV3YXlJZFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHB1YmxpYyBWUEMgc3VibmV0IHJlc291cmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBWcGNQdWJsaWNTdWJuZXQgZXh0ZW5kcyBWcGNTdWJuZXQge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IFZwY1N1Ym5ldFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZGVmYXVsdCByb3V0ZSB0aGF0IHBvaW50cyB0byBhIHBhc3NlZCBJR1dcbiAgICovXG4gIHB1YmxpYyBhZGREZWZhdWx0SUdXUm91dGVFbnRyeShnYXRld2F5SWQ6IHN0cmluZykge1xuICAgIHRoaXMuYWRkRGVmYXVsdFJvdXRlVG9JR1coZ2F0ZXdheUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG1hbmFnZWQgTkFUIGdhdGV3YXkgYXR0YWNoZWQgdG8gdGhpcyBwdWJsaWMgc3VibmV0LlxuICAgKiBBbHNvIGFkZHMgdGhlIEVJUCBmb3IgdGhlIG1hbmFnZWQgTkFULlxuICAgKiBAcmV0dXJucyBBIHJlZiB0byB0aGUgdGhlIE5BVCBHYXRld2F5IElEXG4gICAqL1xuICBwdWJsaWMgYWRkTmF0R2F0ZXdheSgpIHtcbiAgICAvLyBDcmVhdGUgYSBOQVQgR2F0ZXdheSBpbiB0aGlzIHB1YmxpYyBzdWJuZXRcbiAgICBjb25zdCBuZ3cgPSBuZXcgY2xvdWRmb3JtYXRpb24uTmF0R2F0ZXdheVJlc291cmNlKHRoaXMsIGBOQVRHYXRld2F5YCwge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgICBhbGxvY2F0aW9uSWQ6IG5ldyBjbG91ZGZvcm1hdGlvbi5FSVBSZXNvdXJjZSh0aGlzLCBgRUlQYCwge1xuICAgICAgICBkb21haW46ICd2cGMnXG4gICAgICB9KS5laXBBbGxvY2F0aW9uSWQsXG4gICAgICB0YWdzOiBuZXcgY2RrLlRhZ01hbmFnZXIodGhpcyksXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ndy5uYXRHYXRld2F5SWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcHJpdmF0ZSBWUEMgc3VibmV0IHJlc291cmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBWcGNQcml2YXRlU3VibmV0IGV4dGVuZHMgVnBjU3VibmV0IHtcbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBWcGNTdWJuZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgbmFtZSwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZW50cnkgdG8gdGhpcyBzdWJuZXRzIHJvdXRlIHRhYmxlIHRoYXQgcG9pbnRzIHRvIHRoZSBwYXNzZWQgTkFUR2F0d2F5SWRcbiAgICovXG4gIHB1YmxpYyBhZGREZWZhdWx0TmF0Um91dGVFbnRyeShuYXRHYXRld2F5SWQ6IHN0cmluZykge1xuICAgIHRoaXMuYWRkRGVmYXVsdFJvdXRlVG9OQVQobmF0R2F0ZXdheUlkKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpZlVuZGVmaW5lZDxUPih2YWx1ZTogVCB8IHVuZGVmaW5lZCwgZGVmYXVsdFZhbHVlOiBUKTogVCB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG59XG4iXX0=
{
"name": "@aws-cdk/aws-ec2",
"version": "0.10.0",
"version": "0.11.0",
"description": "CDK Constructs for AWS EC2",

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

"devDependencies": {
"@aws-cdk/assert": "^0.10.0",
"cdk-build-tools": "^0.10.0",
"cdk-integ-tools": "^0.10.0",
"cfn2ts": "^0.10.0",
"pkglint": "^0.10.0"
"@aws-cdk/assert": "^0.11.0",
"cdk-build-tools": "^0.11.0",
"cdk-integ-tools": "^0.11.0",
"cfn2ts": "^0.11.0",
"pkglint": "^0.11.0"
},
"dependencies": {
"@aws-cdk/aws-iam": "^0.10.0",
"@aws-cdk/cdk": "^0.10.0"
"@aws-cdk/aws-iam": "^0.11.0",
"@aws-cdk/cdk": "^0.11.0"
},
"homepage": "https://github.com/awslabs/aws-cdk"
}

@@ -49,3 +49,3 @@ {

},
"MyVpcPublicSubnet1RouteTableAssociatioin3562612E": {
"MyVpcPublicSubnet1RouteTableAssociation2ECEE1CB": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -130,3 +130,3 @@ "Properties": {

},
"MyVpcPublicSubnet2RouteTableAssociatioin8E74FB35": {
"MyVpcPublicSubnet2RouteTableAssociation227DE78D": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -211,3 +211,3 @@ "Properties": {

},
"MyVpcPublicSubnet3RouteTableAssociatioinA3FD1B71": {
"MyVpcPublicSubnet3RouteTableAssociation5C27DDA4": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -292,3 +292,3 @@ "Properties": {

},
"MyVpcPrivateSubnet1RouteTableAssociatioin90CF6BAB": {
"MyVpcPrivateSubnet1RouteTableAssociation56D38C7E": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -347,3 +347,3 @@ "Properties": {

},
"MyVpcPrivateSubnet2RouteTableAssociatioin803693C0": {
"MyVpcPrivateSubnet2RouteTableAssociation86A610DA": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -402,3 +402,3 @@ "Properties": {

},
"MyVpcPrivateSubnet3RouteTableAssociatioinFB4A6FE6": {
"MyVpcPrivateSubnet3RouteTableAssociationD951741C": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",

@@ -405,0 +405,0 @@ "Properties": {

@@ -5,6 +5,6 @@ "use strict";

const lib_1 = require("../lib");
const app = new cdk_1.App(process.argv);
const app = new cdk_1.App();
const stack = new cdk_1.Stack(app, 'aws-cdk-ec2-vpc');
new lib_1.VpcNetwork(stack, 'MyVpc');
process.stdout.write(app.run());
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcudnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcudnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQTBDO0FBQzFDLGdDQUFvQztBQUVwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFFaEQsSUFBSSxnQkFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUvQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCwgU3RhY2sgfSBmcm9tICdAYXdzLWNkay9jZGsnO1xuaW1wb3J0IHsgVnBjTmV0d29yayB9IGZyb20gJy4uL2xpYic7XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAocHJvY2Vzcy5hcmd2KTtcblxuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCAnYXdzLWNkay1lYzItdnBjJyk7XG5cbm5ldyBWcGNOZXR3b3JrKHN0YWNrLCAnTXlWcGMnKTtcblxucHJvY2Vzcy5zdGRvdXQud3JpdGUoYXBwLnJ1bigpKTtcbiJdfQ==
app.run();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcudnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcudnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQTBDO0FBQzFDLGdDQUFvQztBQUVwQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQU0sS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBRWhELElBQUksZ0JBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFL0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2Nkayc7XG5pbXBvcnQgeyBWcGNOZXR3b3JrIH0gZnJvbSAnLi4vbGliJztcblxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuXG5jb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsICdhd3MtY2RrLWVjMi12cGMnKTtcblxubmV3IFZwY05ldHdvcmsoc3RhY2ssICdNeVZwYycpO1xuXG5hcHAucnVuKCk7XG4iXX0=

@@ -66,5 +66,12 @@ "use strict";

new lib_1.TcpPort(1234),
new lib_1.TcpPortFromAttribute("port!"),
new lib_1.TcpPortFromAttribute("tcp-test-port!"),
new lib_1.TcpAllPorts(),
new lib_1.TcpPortRange(80, 90),
new lib_1.UdpPort(2345),
new lib_1.UdpPortFromAttribute("udp-test-port!"),
new lib_1.UdpAllPorts(),
new lib_1.UdpPortRange(85, 95),
new lib_1.IcmpTypeAndCode(5, 1),
new lib_1.IcmpAllTypeCodes(8),
new lib_1.IcmpAllTypesAndCodes(),
new lib_1.AllConnections()

@@ -82,2 +89,2 @@ ];

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb25uZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF1RDtBQUN2RCxzQ0FBcUM7QUFFckMsZ0NBQ3VGO0FBMEZ2RixNQUFNLG9CQUFvQjtJQUN4QixZQUE0QixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUNwRCxDQUFDO0NBQ0Y7QUEzRkQsaUJBQVM7SUFDUCxtRUFBbUUsQ0FBQyxJQUFVO1FBQzVFLFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLFdBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBRWxHLE1BQU0sR0FBRyxHQUFHLElBQUksZ0JBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxtQkFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVyRCxNQUFNLEtBQUssR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksaUJBQVcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLGlCQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhGLE9BQU87UUFDUCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxhQUFPLENBQUMsRUFBRSxD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LENBQUM7UUFFRixPQUFPO1FBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7Z0JBQ3hCLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNwQztTQUNGO1FBRUQsbUJBQW1CO1FBRW5CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCBoYXZlUmVzb3VyY2UgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdAYXdzLWNkay9jZGsnO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCB7IEFsbENvbm5lY3Rpb25zLCBBbnlJUHY0LCBBbnlJUHY2LCBDb25uZWN0aW9ucywgSUNvbm5lY3RhYmxlLCBQcmVmaXhMaXN0LCBTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwUmVmLFxuICBUY3BBbGxQb3J0cywgVGNwUG9ydCwgVGNwUG9ydEZyb21BdHRyaWJ1dGUsIFRjcFBvcnRSYW5nZSwgVnBjTmV0d29yayB9IGZyb20gJy4uL2xpYic7XG5cbmV4cG9ydCA9IHtcbiAgJ3BlZXJpbmcgYmV0d2VlbiB0d28gc2VjdXJpdHkgZ3JvdXBzIGRvZXMgbm90IHJlY3Vyc2l2ZSBpbmZpbml0ZWx5Jyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDU2NzgnLCByZWdpb246ICdkdW1teScgfX0pO1xuXG4gICAgY29uc3QgdnBjID0gbmV3IFZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBzZzEgPSBuZXcgU2VjdXJpdHlHcm91cChzdGFjaywgJ1NHMScsIHsgdnBjIH0pO1xuICAgIGNvbnN0IHNnMiA9IG5ldyBTZWN1cml0eUdyb3VwKHN0YWNrLCAnU0cyJywgeyB2cGMgfSk7XG5cbiAgICBjb25zdCBjb25uMSA9IG5ldyBTb21ldGhpbmdDb25uZWN0YWJsZShuZXcgQ29ubmVjdGlvbnMoeyBzZWN1cml0eUdyb3VwOiBzZzEgfSkpO1xuICAgIGNvbnN0IGNvbm4yID0gbmV3IFNvbWV0aGluZ0Nvbm5lY3RhYmxlKG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXA6IHNnMiB9KSk7XG5cbiAgICAvLyBXSEVOXG4gICAgY29ubjEuY29ubmVjdGlvbnMuYWxsb3dUbyhjb25uMiwgbmV3IFRjcFBvcnQoODApLCAnVGVzdCcpO1xuXG4gICAgLy8gVEhFTlxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICcoaW1wb3J0ZWQpIFNlY3VyaXR5R3JvdXAgY2FuIGJlIHVzZWQgYXMgdGFyZ2V0IG9mIC5hbGxvd1RvKCknKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgY29uc3QgdnBjID0gbmV3IFZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBzZzEgPSBuZXcgU2VjdXJpdHlHcm91cChzdGFjaywgJ1NvbWVTZWN1cml0eUdyb3VwJywgeyB2cGMgfSk7XG4gICAgY29uc3Qgc29tZXRoaW5nQ29ubmVjdGFibGUgPSBuZXcgU29tZXRoaW5nQ29ubmVjdGFibGUobmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cDogc2cxIH0pKTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBTZWN1cml0eUdyb3VwUmVmLmltcG9ydChzdGFjaywgJ0ltcG9ydGVkU0cnLCB7IHNlY3VyaXR5R3JvdXBJZDogJ3NnLTEyMzQ1JyB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBzb21ldGhpbmdDb25uZWN0YWJsZS5jb25uZWN0aW9ucy5hbGxvd1RvKHNlY3VyaXR5R3JvdXAsIG5ldyBUY3BBbGxQb3J0cygpLCAnQ29ubmVjdCB0aGVyZScpO1xuXG4gICAgLy8gVEhFTjogcnVsZSB0byBnZW5lcmF0ZWQgc2VjdXJpdHkgZ3JvdXAgdG8gY29ubmVjdCB0byBpbXBvcnRlZFxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBFZ3Jlc3NcIiwge1xuICAgICAgICBHcm91cElkOiB7IFwiRm46OkdldEF0dFwiOiBbIFwiU29tZVNlY3VyaXR5R3JvdXBFRjIxOUFENlwiLCBcIkdyb3VwSWRcIiBdIH0sXG4gICAgICAgIElwUHJvdG9jb2w6IFwidGNwXCIsXG4gICAgICAgIERlc2NyaXB0aW9uOiBcIkNvbm5lY3QgdGhlcmVcIixcbiAgICAgICAgRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQ6IFwic2ctMTIzNDVcIixcbiAgICAgICAgRnJvbVBvcnQ6IDAsXG4gICAgICAgIFRvUG9ydDogNjU1MzVcbiAgICB9KSk7XG5cbiAgICAvLyBUSEVOOiBydWxlIHRvIGltcG9ydGVkIHNlY3VyaXR5IGdyb3VwIHRvIGFsbG93IGNvbm5lY3Rpb25zIGZyb20gZ2VuZXJhdGVkXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoXCJBV1M6OkVDMjo6U2VjdXJpdHlHcm91cEluZ3Jlc3NcIiwge1xuICAgICAgSXBQcm90b2NvbDogXCJ0Y3BcIixcbiAgICAgIERlc2NyaXB0aW9uOiBcIkNvbm5lY3QgdGhlcmVcIixcbiAgICAgIEZyb21Qb3J0OiAwLFxuICAgICAgR3JvdXBJZDogXCJzZy0xMjM0NVwiLFxuICAgICAgU291cmNlU2VjdXJpdHlHcm91cElkOiB7IFwiRm46OkdldEF0dFwiOiBbIFwiU29tZVNlY3VyaXR5R3JvdXBFRjIxOUFENlwiLCBcIkdyb3VwSWRcIiBdIH0sXG4gICAgICBUb1BvcnQ6IDY1NTM1XG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3BlZXIgYmV0d2VlbiBhbGwgdHlwZXMgb2YgcGVlcnMgYW5kIHBvcnQgcmFuZ2UgdHlwZXMnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKHVuZGVmaW5lZCwgJ1Rlc3RTdGFjaycsIHsgZW52OiB7IGFjY291bnQ6ICcxMjM0NTY3OCcsIHJlZ2lvbjogJ2R1bW15JyB9fSk7XG4gICAgY29uc3QgdnBjID0gbmV3IFZwY05ldHdvcmsoc3RhY2ssICdWUEMnKTtcbiAgICBjb25zdCBzZyA9IG5ldyBTZWN1cml0eUdyb3VwKHN0YWNrLCAnU0cnLCB7IHZwYyB9KTtcblxuICAgIGNvbnN0IHBlZXJzID0gW1xuICAgICAgbmV3IFNlY3VyaXR5R3JvdXAoc3RhY2ssICdQZWVyR3JvdXAnLCB7IHZwYyB9KSxcbiAgICAgIG5ldyBBbnlJUHY0KCksXG4gICAgICBuZXcgQW55SVB2NigpLFxuICAgICAgbmV3IFByZWZpeExpc3QoJ3BsLTAxMjM0NScpLFxuICAgIF07XG5cbiAgICBjb25zdCBwb3J0cyA9IFtcbiAgICAgIG5ldyBUY3BQb3J0KDEyMzQpLFxuICAgICAgbmV3IFRjcFBvcnRGcm9tQXR0cmlidXRlKFwicG9ydCFcIiksXG4gICAgICBuZXcgVGNwQWxsUG9ydHMoKSxcbiAgICAgIG5ldyBUY3BQb3J0UmFuZ2UoODAsIDkwKSxcbiAgICAgIG5ldyBBbGxDb25uZWN0aW9ucygpXG4gICAgXTtcblxuICAgIC8vIFdIRU5cbiAgICBmb3IgKGNvbnN0IHBlZXIgb2YgcGVlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgcG9ydCBvZiBwb3J0cykge1xuICAgICAgICBzZy5jb25uZWN0aW9ucy5hbGxvd1RvKHBlZXIsIHBvcnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRIRU4gLS0gbm8gY3Jhc2hcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9XG59O1xuXG5jbGFzcyBTb21ldGhpbmdDb25uZWN0YWJsZSBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogQ29ubmVjdGlvbnMpIHtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5jb25uZWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QuY29ubmVjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUF1RDtBQUN2RCxzQ0FBcUM7QUFFckMsZ0NBcUJnQjtBQWlHaEIsTUFBTSxvQkFBb0I7SUFDeEIsWUFBNEIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDcEQsQ0FBQztDQUNGO0FBbEdELGlCQUFTO0lBQ1AsbUVBQW1FLENBQUMsSUFBVTtRQUM1RSxRQUFRO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQztRQUVsRyxNQUFNLEdBQUcsR0FBRyxJQUFJLGdCQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLGlCQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sS0FBSyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxpQkFBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoRixPQUFPO1FBQ1AsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksYUFBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFELE9BQU87UUFDUCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsOERBQThELENBQUMsSUFBVTtRQUN2RSxRQUFRO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLGdCQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sR0FBRyxHQUFHLElBQUksbUJBQWEsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLGlCQUFXLENBQUMsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9GLE1BQU0sYUFBYSxHQUFHLHNCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFcEcsT0FBTztRQUNQLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksaUJBQVcsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRTVGLGdFQUFnRTtRQUNoRSxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFZLENBQUMsK0JBQStCLEVBQUU7WUFDM0QsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUUsMkJBQTJCLEVBQUUsU0FBUyxDQUFFLEVBQUU7WUFDckUsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLGVBQWU7WUFDNUIsMEJBQTBCLEVBQUUsVUFBVTtZQUN0QyxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUosNEVBQTRFO1FBQzVFLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQyxnQ0FBZ0MsRUFBRTtZQUM5RCxVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsZUFBZTtZQUM1QixRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxVQUFVO1lBQ25CLHFCQUFxQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUUsMkJBQTJCLEVBQUUsU0FBUyxDQUFFLEVBQUU7WUFDbkYsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxzREFBc0QsQ0FBQyxJQUFVO1FBQy9ELFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLFdBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sR0FBRyxHQUFHLElBQUksZ0JBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLEdBQUcsSUFBSSxtQkFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELE1BQU0sS0FBSyxHQUFHO1lBQ1osSUFBSSxtQkFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUM5QyxJQUFJLGFBQU8sRUFBRTtZQUNiLElBQUksYUFBTyxFQUFFO1lBQ2IsSUFBSSxnQkFBVSxDQUFDLFdBQVcsQ0FBQztTQUM1QixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUc7WUFDWixJQUFJLGFBQU8sQ0FBQyxJQUFJLENBQUM7WUFDakIsSUFBSSwwQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQyxJQUFJLGlCQUFXLEVBQUU7WUFDakIsSUFBSSxrQkFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxhQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pCLElBQUksMEJBQW9CLENBQUMsZ0JBQWdCLENBQUM7WUFDMUMsSUFBSSxpQkFBVyxFQUFFO1lBQ2pCLElBQUksa0JBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUkscUJBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLElBQUksc0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksMEJBQW9CLEVBQUU7WUFDMUIsSUFBSSxvQkFBYyxFQUFFO1NBQ3JCLENBQUM7UUFFRixPQUFPO1FBQ1AsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7Z0JBQ3hCLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNwQztTQUNGO1FBRUQsbUJBQW1CO1FBRW5CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0LCBoYXZlUmVzb3VyY2UgfSBmcm9tICdAYXdzLWNkay9hc3NlcnQnO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdAYXdzLWNkay9jZGsnO1xuaW1wb3J0IHsgVGVzdCB9IGZyb20gJ25vZGV1bml0JztcbmltcG9ydCB7XG4gIEFsbENvbm5lY3Rpb25zLFxuICBBbnlJUHY0LFxuICBBbnlJUHY2LFxuICBDb25uZWN0aW9ucyxcbiAgSWNtcEFsbFR5cGVDb2RlcyxcbiAgSWNtcEFsbFR5cGVzQW5kQ29kZXMsXG4gIEljbXBUeXBlQW5kQ29kZSxcbiAgSUNvbm5lY3RhYmxlLFxuICBQcmVmaXhMaXN0LFxuICBTZWN1cml0eUdyb3VwLFxuICBTZWN1cml0eUdyb3VwUmVmLFxuICBUY3BBbGxQb3J0cyxcbiAgVGNwUG9ydCxcbiAgVGNwUG9ydEZyb21BdHRyaWJ1dGUsXG4gIFRjcFBvcnRSYW5nZSxcbiAgVWRwQWxsUG9ydHMsXG4gIFVkcFBvcnQsXG4gIFVkcFBvcnRGcm9tQXR0cmlidXRlLFxuICBVZHBQb3J0UmFuZ2UsXG4gIFZwY05ldHdvcmtcbn0gZnJvbSBcIi4uL2xpYlwiO1xuXG5leHBvcnQgPSB7XG4gICdwZWVyaW5nIGJldHdlZW4gdHdvIHNlY3VyaXR5IGdyb3VwcyBkb2VzIG5vdCByZWN1cnNpdmUgaW5maW5pdGVseScodGVzdDogVGVzdCkge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2sodW5kZWZpbmVkLCAnVGVzdFN0YWNrJywgeyBlbnY6IHsgYWNjb3VudDogJzEyMzQ1Njc4JywgcmVnaW9uOiAnZHVtbXknIH19KTtcblxuICAgIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3Qgc2cxID0gbmV3IFNlY3VyaXR5R3JvdXAoc3RhY2ssICdTRzEnLCB7IHZwYyB9KTtcbiAgICBjb25zdCBzZzIgPSBuZXcgU2VjdXJpdHlHcm91cChzdGFjaywgJ1NHMicsIHsgdnBjIH0pO1xuXG4gICAgY29uc3QgY29ubjEgPSBuZXcgU29tZXRoaW5nQ29ubmVjdGFibGUobmV3IENvbm5lY3Rpb25zKHsgc2VjdXJpdHlHcm91cDogc2cxIH0pKTtcbiAgICBjb25zdCBjb25uMiA9IG5ldyBTb21ldGhpbmdDb25uZWN0YWJsZShuZXcgQ29ubmVjdGlvbnMoeyBzZWN1cml0eUdyb3VwOiBzZzIgfSkpO1xuXG4gICAgLy8gV0hFTlxuICAgIGNvbm4xLmNvbm5lY3Rpb25zLmFsbG93VG8oY29ubjIsIG5ldyBUY3BQb3J0KDgwKSwgJ1Rlc3QnKTtcblxuICAgIC8vIFRIRU5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnKGltcG9ydGVkKSBTZWN1cml0eUdyb3VwIGNhbiBiZSB1c2VkIGFzIHRhcmdldCBvZiAuYWxsb3dUbygpJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3Qgc2cxID0gbmV3IFNlY3VyaXR5R3JvdXAoc3RhY2ssICdTb21lU2VjdXJpdHlHcm91cCcsIHsgdnBjIH0pO1xuICAgIGNvbnN0IHNvbWV0aGluZ0Nvbm5lY3RhYmxlID0gbmV3IFNvbWV0aGluZ0Nvbm5lY3RhYmxlKG5ldyBDb25uZWN0aW9ucyh7IHNlY3VyaXR5R3JvdXA6IHNnMSB9KSk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwID0gU2VjdXJpdHlHcm91cFJlZi5pbXBvcnQoc3RhY2ssICdJbXBvcnRlZFNHJywgeyBzZWN1cml0eUdyb3VwSWQ6ICdzZy0xMjM0NScgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgc29tZXRoaW5nQ29ubmVjdGFibGUuY29ubmVjdGlvbnMuYWxsb3dUbyhzZWN1cml0eUdyb3VwLCBuZXcgVGNwQWxsUG9ydHMoKSwgJ0Nvbm5lY3QgdGhlcmUnKTtcblxuICAgIC8vIFRIRU46IHJ1bGUgdG8gZ2VuZXJhdGVkIHNlY3VyaXR5IGdyb3VwIHRvIGNvbm5lY3QgdG8gaW1wb3J0ZWRcbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZShcIkFXUzo6RUMyOjpTZWN1cml0eUdyb3VwRWdyZXNzXCIsIHtcbiAgICAgICAgR3JvdXBJZDogeyBcIkZuOjpHZXRBdHRcIjogWyBcIlNvbWVTZWN1cml0eUdyb3VwRUYyMTlBRDZcIiwgXCJHcm91cElkXCIgXSB9LFxuICAgICAgICBJcFByb3RvY29sOiBcInRjcFwiLFxuICAgICAgICBEZXNjcmlwdGlvbjogXCJDb25uZWN0IHRoZXJlXCIsXG4gICAgICAgIERlc3RpbmF0aW9uU2VjdXJpdHlHcm91cElkOiBcInNnLTEyMzQ1XCIsXG4gICAgICAgIEZyb21Qb3J0OiAwLFxuICAgICAgICBUb1BvcnQ6IDY1NTM1XG4gICAgfSkpO1xuXG4gICAgLy8gVEhFTjogcnVsZSB0byBpbXBvcnRlZCBzZWN1cml0eSBncm91cCB0byBhbGxvdyBjb25uZWN0aW9ucyBmcm9tIGdlbmVyYXRlZFxuICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlKFwiQVdTOjpFQzI6OlNlY3VyaXR5R3JvdXBJbmdyZXNzXCIsIHtcbiAgICAgIElwUHJvdG9jb2w6IFwidGNwXCIsXG4gICAgICBEZXNjcmlwdGlvbjogXCJDb25uZWN0IHRoZXJlXCIsXG4gICAgICBGcm9tUG9ydDogMCxcbiAgICAgIEdyb3VwSWQ6IFwic2ctMTIzNDVcIixcbiAgICAgIFNvdXJjZVNlY3VyaXR5R3JvdXBJZDogeyBcIkZuOjpHZXRBdHRcIjogWyBcIlNvbWVTZWN1cml0eUdyb3VwRUYyMTlBRDZcIiwgXCJHcm91cElkXCIgXSB9LFxuICAgICAgVG9Qb3J0OiA2NTUzNVxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdwZWVyIGJldHdlZW4gYWxsIHR5cGVzIG9mIHBlZXJzIGFuZCBwb3J0IHJhbmdlIHR5cGVzJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayh1bmRlZmluZWQsICdUZXN0U3RhY2snLCB7IGVudjogeyBhY2NvdW50OiAnMTIzNDU2NzgnLCByZWdpb246ICdkdW1teScgfX0pO1xuICAgIGNvbnN0IHZwYyA9IG5ldyBWcGNOZXR3b3JrKHN0YWNrLCAnVlBDJyk7XG4gICAgY29uc3Qgc2cgPSBuZXcgU2VjdXJpdHlHcm91cChzdGFjaywgJ1NHJywgeyB2cGMgfSk7XG5cbiAgICBjb25zdCBwZWVycyA9IFtcbiAgICAgIG5ldyBTZWN1cml0eUdyb3VwKHN0YWNrLCAnUGVlckdyb3VwJywgeyB2cGMgfSksXG4gICAgICBuZXcgQW55SVB2NCgpLFxuICAgICAgbmV3IEFueUlQdjYoKSxcbiAgICAgIG5ldyBQcmVmaXhMaXN0KCdwbC0wMTIzNDUnKSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9ydHMgPSBbXG4gICAgICBuZXcgVGNwUG9ydCgxMjM0KSxcbiAgICAgIG5ldyBUY3BQb3J0RnJvbUF0dHJpYnV0ZShcInRjcC10ZXN0LXBvcnQhXCIpLFxuICAgICAgbmV3IFRjcEFsbFBvcnRzKCksXG4gICAgICBuZXcgVGNwUG9ydFJhbmdlKDgwLCA5MCksXG4gICAgICBuZXcgVWRwUG9ydCgyMzQ1KSxcbiAgICAgIG5ldyBVZHBQb3J0RnJvbUF0dHJpYnV0ZShcInVkcC10ZXN0LXBvcnQhXCIpLFxuICAgICAgbmV3IFVkcEFsbFBvcnRzKCksXG4gICAgICBuZXcgVWRwUG9ydFJhbmdlKDg1LCA5NSksXG4gICAgICBuZXcgSWNtcFR5cGVBbmRDb2RlKDUsIDEpLFxuICAgICAgbmV3IEljbXBBbGxUeXBlQ29kZXMoOCksXG4gICAgICBuZXcgSWNtcEFsbFR5cGVzQW5kQ29kZXMoKSxcbiAgICAgIG5ldyBBbGxDb25uZWN0aW9ucygpXG4gICAgXTtcblxuICAgIC8vIFdIRU5cbiAgICBmb3IgKGNvbnN0IHBlZXIgb2YgcGVlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgcG9ydCBvZiBwb3J0cykge1xuICAgICAgICBzZy5jb25uZWN0aW9ucy5hbGxvd1RvKHBlZXIsIHBvcnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRIRU4gLS0gbm8gY3Jhc2hcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9XG59O1xuXG5jbGFzcyBTb21ldGhpbmdDb25uZWN0YWJsZSBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogQ29ubmVjdGlvbnMpIHtcbiAgfVxufVxuIl19

@@ -20,2 +20,4 @@ import { Test } from 'nodeunit';

"with natGateway set to 1"(test: Test): void;
'with natGateway subnets defined'(test: Test): void;
'with mis-matched nat and subnet configs it throws'(test: Test): void;
};

@@ -22,0 +24,0 @@ "When creating a VPC with a custom CIDR range": {

@@ -9,4 +9,2 @@ {

"inlineSources": true,
"jsx": "react",
"jsxFactory": "jsx.create",
"lib": [

@@ -13,0 +11,0 @@ "es2016",

Sorry, the diff of this file is not supported yet

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

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

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