Socket
Socket
Sign inDemoInstall

@atlas.js/atlas

Package Overview
Dependencies
Maintainers
2
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@atlas.js/atlas - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

12

CHANGELOG.md

@@ -6,2 +6,14 @@ # Change Log

<a name="1.2.1"></a>
## [1.2.1](https://github.com/strvcom/atlas.js/compare/@atlas.js/atlas@1.2.0...@atlas.js/atlas@1.2.1) (2018-01-30)
### Bug Fixes
* **atlas:** Log about the config provided to the component ([861c3b4](https://github.com/strvcom/atlas.js/commit/861c3b4))
* **atlas:** Lower log level to trace for some log messages ([cd6c52f](https://github.com/strvcom/atlas.js/commit/cd6c52f))
<a name="1.2.0"></a>

@@ -8,0 +20,0 @@ # [1.2.0](https://github.com/strvcom/atlas.js/compare/@atlas.js/atlas@1.1.2...@atlas.js/atlas@1.2.0) (2017-12-13)

2

package.json
{
"name": "@atlas.js/atlas",
"description": "The main package containing the core functionality of @atlas.js",
"version": "1.2.0",
"version": "1.2.1",
"author": "Robert Rossmann <robert.rossmann@strv.com>",

@@ -6,0 +6,0 @@ "bugs": "https://github.com/strvcom/atlas.js/issues",

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

async prepare(alias, service) {
this.log.debug({
this.log.trace({
service: alias

@@ -283,3 +283,3 @@ }, 'service:prepare:before');

this.log.debug({
this.log.trace({
service: alias

@@ -290,7 +290,7 @@ }, 'service:prepare:after');

async start(alias, service) {
this.log.debug({
this.log.trace({
service: alias
}, 'service:start:before');
await service.start(this.services[alias]);
this.log.debug({
this.log.trace({
service: alias

@@ -301,3 +301,3 @@ }, 'service:start:after');

async stop(alias, service) {
this.log.debug({
this.log.trace({
service: alias

@@ -308,3 +308,3 @@ }, 'service:stop:before');

await service.stop(instance);
this.log.debug({
this.log.trace({
service: alias

@@ -318,2 +318,2 @@ }, 'service:stop:after');

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJvcHRpb25hbCIsImxvZyIsImRlYnVnIiwiY29tcG9uZW50cyIsIk9iamVjdCIsImtleXMiLCJhbGlhcyIsIkhvb2siLCJlbnRyaWVzIiwiaG9vayIsIlNlcnZpY2UiLCJzZXJ2aWNlIiwiQWN0aW9uIiwiYWN0aW9uIiwicHJlcGFyZWQiLCJzdGFydGVkIiwiY29uc3RydWN0b3IiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJjYXRhbG9nIiwiTWFwIiwiZGVmYXVsdHMiLCJsb2NhdGlvbiIsImFic29sdXRlIiwibG9hZGVyIiwiQ29tcG9uZW50Iiwib3B0cyIsInByZXBhcmUiLCJjb21wb25lbnQiLCJQcm9taXNlIiwiYWxsIiwiQXJyYXkiLCJmcm9tIiwibWFwIiwibGlmZWN5Y2xlIiwic3RhcnQiLCJpbmZvIiwic3RvcCIsInJldmVyc2UiLCJuYW1lIiwiYmFzZW5hbWUiLCJjd2QiLCJsZXZlbCIsInNlcmlhbGl6ZXJzIiwic3RkU2VyaWFsaXplcnMiLCJpbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOzs7O0FBYUEsTUFBTUEsS0FBTixDQUFZO0FBdUJWLFNBQU9DLElBQVAsQ0FBWUMsVUFBVSxFQUF0QixFQUEwQjtBQUN4Qiw4QkFBU0EsT0FBVCxFQUFrQjtBQUNoQkMsY0FBUSxRQURRO0FBRWhCQyxhQUFPLE9BRlM7QUFHaEJDLGdCQUFVLFVBSE07QUFJaEJDLGVBQVMsU0FKTztBQUtoQkMsZUFBUztBQUxPLEtBQWxCO0FBUUEsVUFBTUMsUUFBUSxJQUFJLElBQUosQ0FBUztBQUNyQkMs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QXpCLEVBQWdDdUMsUUFBaEM7O0FBQ0EsV0FBSzVDLEdBQUwsQ0FBU0MsS0FBVCxDQUFlO0FBQUVTLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsdUJBQW5DO0FBQ0QsS0FkTTs7QUF1QlAsVUFBTTZCLEtBQU4sQ0FBWTdCLEtBQVosRUFBbUJLLE9BQW5CLEVBQTRCO0FBQzFCLFdBQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFlO0FBQUVTLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsc0JBQW5DO0FBQ0EsWUFBTUssUUFBUXdCLEtBQVIsQ0FBYyxLQUFLL0MsUUFBTCxDQUFja0IsS0FBZCxDQUFkLENBQU47QUFDQSxXQUFLTCxHQUFMLENBQVNDLEtBQVQsQ0FBZTtBQUFFUyxpQkFBU0w7QUFBWCxPQUFmLEVBQW1DLHFCQUFuQztBQUNELEtBM0JNOztBQW9DUCxVQUFNK0IsSUFBTixDQUFXL0IsS0FBWCxFQUFrQkssT0FBbEIsRUFBMkI7QUFDekIsV0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWU7QUFBRVMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDQSxZQUFNdUMsV0FBVyxLQUFLekQsUUFBTCxDQUFja0IsS0FBZCxDQUFqQjtBQUNBLGFBQU8sS0FBS2xCLFFBQUwsQ0FBY2tCLEtBQWQsQ0FBUDtBQUNBLFlBQU1LLFFBQVEwQixJQUFSLENBQWFRLFFBQWIsQ0FBTjtBQUNBLFdBQUs1QyxHQUFMLENBQVNDLEtBQVQsQ0FBZTtBQUFFUyxpQkFBU0w7QUFBWCxPQUFmLEVBQW1DLG9CQUFuQztBQUNEOztBQTFDTTtBQURPLENBQWxCO2VBK0NldkIsSyIsImZpbGUiOiJhdGxhcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFdlIHVzZSBmb3ItYXdhaXQgcGF0dGVybiBxdWl0ZSBleHRlbnNpdmVseSBoZXJlIGZvciBsZWdpdGltYXRlIHB1cnBvc2VzXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG5cbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgcGlubyBmcm9tICdwaW5vJ1xuaW1wb3J0IHtcbiAgZGVmYXVsdHNEZWVwIGFzIGRlZmF1bHRzLFxufSBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgaGlkZGVuIGZyb20gJ2xvY2FsLXNjb3BlL2NyZWF0ZSdcbmltcG9ydCB7IEZyYW1ld29ya0Vycm9yIH0gZnJvbSAnQGF0bGFzLmpzL2Vycm9ycydcbmltcG9ydCB7XG4gIGV4cG9zZSxcbiAgZGlzcGF0Y2gsXG4gIGNvbXBvbmVudCxcbiAgbWtjb25maWcsXG4gIG9wdHJlcXVpcmUsXG59IGZyb20gJy4vcHJpdmF0ZSdcblxuLyoqXG4gKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgeW91ciBhcHBsaWNhdGlvbiBhbmQgYWdncmVnYXRlcyBhbGwgY29tcG9uZW50cyB0b2dldGhlclxuICpcbiAqIFlvdSBzaG91bGQgZ2VuZXJhbGx5IGNyZWF0ZSBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGluIGEgcHJvZ3JhbS5cbiAqL1xuY2xhc3MgQXRsYXMge1xuICBzdGF0aWMgZGVmYXVsdHMgPSB7XG4gICAgbG9nOiB7XG4gICAgICBuYW1lOiBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuY3dkKCkpLFxuICAgICAgbGV2ZWw6ICdpbmZvJyxcbiAgICAgIHNlcmlhbGl6ZXJzOiBwaW5vLnN0ZFNlcmlhbGl6ZXJzLFxuICAgIH0sXG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGlzZSBhIGJyYW5kLW5ldyBhdGxhcyBpbnN0YW5jZSBmcm9tIHRoZSBnaXZlbiBtb2R1bGUgbG9jYXRpb25zXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgICBvcHRpb25zICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuZW52ICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCB1bmRlciB3aGljaCB0byBvcGVyYXRlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnJvb3QgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBkaXJlY3RvcnkgdG8gd2hpY2ggYWxsIG90aGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBtZW50aW9uZWQgaGVyZSBhcmUgcmVsYXRpdmVcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuY29uZmlnPSdjb25maWcnICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuaG9va3M9J2hvb2tzJyAgICAgICAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIGhvb2tzXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLnNlcnZpY2VzPSdzZXJ2aWNlcycgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBzZXJ2aWNlc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hY3Rpb25zPSdhY3Rpb25zJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWN0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5hbGlhc2VzPSdhbGlhc2VzJyAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgYWxpYXNlc1xuICAgKiBAcmV0dXJuICAgIHtBdGxhc31cbiAgICovXG4gIHN0YXRpYyBpbml0KG9wdGlvbnMgPSB7fSkge1xuICAgIGRlZmF1bHRzKG9wdGlvbnMsIHtcbiAgICAgIGNvbmZpZzogJ2NvbmZpZycsXG4gICAgICBob29rczogJ2hvb2tzJyxcbiAgICAgIHNlcnZpY2VzOiAnc2VydmljZXMnLFxuICAgICAgYWN0aW9uczogJ2FjdGlvbnMnLFxuICAgICAgYWxpYXNlczogJ2FsaWFzZXMnLFxuICAgIH0pXG5cbiAgICBjb25zdCBhdGxhcyA9IG5ldyB0aGlzKHtcbiAgICAgIGVudjogb3B0aW9ucy5lbnYsXG4gICAgICByb290OiBvcHRpb25zLnJvb3QsXG4gICAgICBjb25maWc6IG9wdGlvbnMuY29uZmlnLFxuICAgIH0pXG4gICAgY29uc3QgdHlwZXMgPSBbXG4gICAgICAnaG9va3MnLFxuICAgICAgJ3NlcnZpY2VzJyxcbiAgICAgICdhY3Rpb25zJyxcbiAgICAgICdhbGlhc2VzJyxcbiAgICBdXG4gICAgY29uc3QgcGF0aHMgPSB7fVxuICAgIGNvbnN0IG1vZHVsZXMgPSB7fVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBwYXRoc1t0eXBlXSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QsIG9wdGlvbnNbdHlwZV0pXG4gICAgICBtb2R1bGVzW3R5cGVdID0gYXRsYXMucmVxdWlyZShvcHRpb25zW3R5cGVdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgZGVmYXVsdHMobW9kdWxlcywge1xuICAgICAgYWxpYXNlczoge1xuICAgICAgICBhY3Rpb25zOiB7fSxcbiAgICAgICAgaG9va3M6IHt9LFxuICAgICAgICBzZXJ2aWNlczoge30sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBhdGxhcy5sb2cuZGVidWcoe1xuICAgICAgZW52OiBhdGxhcy5lbnYsXG4gICAgICByb290OiBhdGxhcy5yb290LFxuICAgICAgcGF0aHMsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGFjdGlvbnM6IE9iamVjdC5rZXlzKG1vZHVsZXMuYWN0aW9ucyksXG4gICAgICAgIGhvb2tzOiBPYmplY3Qua2V5cyhtb2R1bGVzLmhvb2tzKSxcbiAgICAgICAgc2VydmljZXM6IE9iamVjdC5rZXlzKG1vZHVsZXMuc2VydmljZXMpLFxuICAgICAgfSxcbiAgICB9LCAnYXRsYXM6aW5pdCcpXG5cbiAgICAvLyBIb29rc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBIb29rXSBvZiBPYmplY3QuZW50cmllcyhtb2R1bGVzLmhvb2tzKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5ob29rc1thbGlhc11cbiAgICAgIGF0bGFzLmhvb2soYWxpYXMsIEhvb2ssIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIC8vIFNlcnZpY2VzXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIFNlcnZpY2VdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuc2VydmljZXMpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXRsYXMuc2VydmljZShhbGlhcywgU2VydmljZSwgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgLy8gQWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzLCBBY3Rpb25dIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuYWN0aW9ucykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuYWN0aW9uc1thbGlhc11cbiAgICAgIGF0bGFzLmFjdGlvbihhbGlhcywgQWN0aW9uLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gYXRsYXNcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXNcbiAgICpcbiAgICogRGVmYXVsdHMgdG8gTk9ERV9FTlYgZnJvbSB0aGUgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtTdHJpbmd9XG4gICAqL1xuICBnZXQgZW52KCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5lbnZcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBmb2xkZXIgd2hlcmUgYWxsIG90aGVyIHBhdGhzIHNob3VsZCBiZSByZWxhdGl2ZSB0b1xuICAgKlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBzZXQgdGhpcyB0byB0aGUgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7U3RyaW5nfVxuICAgKi9cbiAgZ2V0IHJvb3QoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnJvb3RcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGluc3RhbmNlIGluIGEgcHJlcGFyZWQgc3RhdGU/XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHByZXBhcmVkKCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5wcmVwYXJlZFxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaW5zdGFuY2UgaW4gYSBzdGFydGVkIHN0YXRlP1xuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHJldHVybiAgICB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBzdGFydGVkKCkge1xuICAgIHJldHVybiB0aGlzOjpoaWRkZW4oKS5zdGFydGVkXG4gIH1cblxuICAvKipcbiAgICogQXRsYXMgY29uZmlndXJhdGlvbiwgYXMgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgY29uZmlnID0ge31cblxuICAvKipcbiAgICogQWxsIHNlcnZpY2VzIGFkZGVkIHRvIHRoaXMgaW5zdGFuY2VcbiAgICpcbiAgICogQHR5cGUgICAge09iamVjdH1cbiAgICovXG4gIHNlcnZpY2VzID0ge31cblxuICAvKipcbiAgICogQWxsIGFjdGlvbnMgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgYWN0aW9ucyA9IHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdGlvbnMgICAgICAgICAgICAgT3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucy5jb25maWcgICAgICBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGluc3RhbmNlIGFuZCBmb3IgYWxsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlcyBvciBvdGhlciBjb21wb25lbnRzIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG9cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMucm9vdCAgICAgICAgVGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIG9wdGlvbnMuZW52ICAgICAgICAgVGhlIGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRoaXMgaW5zdGFuY2Ugb3BlcmF0ZXMuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnRzIG1heSB1c2UgdGhpcyB2YWx1ZSBmb3IgdmFyaW91cyBwdXJwb3Nlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIE5PREVfRU5WLlxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gSW5pdGlhbGlzZSBwcml2YXRlIHN0dWZmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb2Nlc3MtZW52XG4gICAgdGhpczo6aGlkZGVuKCkuZW52ID0gb3B0aW9ucy5lbnYgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlZcbiAgICB0aGlzOjpoaWRkZW4oKS5yb290ID0gb3B0aW9ucy5yb290XG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSBmYWxzZVxuICAgIHRoaXM6OmhpZGRlbigpLnN0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cgPSB7XG4gICAgICBzZXJ2aWNlczogbmV3IE1hcCgpLFxuICAgICAgaG9va3M6IG5ldyBNYXAoKSxcbiAgICAgIGFjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICB9XG5cbiAgICAvLyBTYWZldHkgY2hlY2tzXG4gICAgaWYgKCF0aGlzLmVudikge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKCdlbnYgbm90IHNwZWNpZmllZCBhbmQgTk9ERV9FTlYgd2FzIG5vdCBzZXQnKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5yb290ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGByb290IG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQsIGdvdCAke29wdGlvbnMucm9vdH1gKVxuICAgIH1cblxuICAgIHRoaXMuY29uZmlnID0gdGhpczo6bWtjb25maWcob3B0aW9ucy5jb25maWcsIHtcbiAgICAgIGF0bGFzOiB7fSxcbiAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIGhvb2tzOiB7fSxcbiAgICAgIGFjdGlvbnM6IHt9LFxuICAgIH0pXG4gICAgdGhpcy5jb25maWcuYXRsYXMgPSBkZWZhdWx0cyh0aGlzLmNvbmZpZy5hdGxhcywgQXRsYXMuZGVmYXVsdHMpXG4gICAgLy8gTG9nZ2VyIPCfjLJcbiAgICB0aGlzLmxvZyA9IHBpbm8odGhpcy5jb25maWcuYXRsYXMubG9nKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVpcmUgYSBtb2R1bGUgYnkgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdFxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGxvY2F0aW9uICAgICAgICAgIFRoZSBtb2R1bGUncyBsb2NhdGlvbiwgcmVsYXRpdmUgdG8gcm9vdFxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdGlvbnM9e30gICAgICAgIE9wdGlvbnNcbiAgICogQHBhcmFtICAgICB7Qm9vbGVhbn0gICBvcHRpb25zLm9wdGlvbmFsICBJZiB0cnVlLCB3aWxsIG5vdCB0aHJvdyBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0XG4gICAqIEBwYXJhbSAgICAge0Jvb2xlYW59ICAgb3B0aW9ucy5hYnNvbHV0ZSAgSWYgdHJ1ZSwgd2lsbCB0cnkgdG8gbG9hZCB0aGUgbW9kdWxlIHdpdGhvdXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZpbmcgdGhlIG1vZHVsZSdzIG5hbWUgdG8gdGhlIHByb2plY3Qgcm9vdCAoaXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGxvYWQgdGhlIG1vZHVsZSB1c2luZyBzdGFuZGFyZCBOb2RlJ3MgbWVjaGFuaXNtKVxuICAgKiBAcmV0dXJuICAgIHttaXhlZH0gICAgICAgICAgICAgICAgICAgICAgIFRoZSBtb2R1bGUncyBjb250ZW50c1xuICAgKi9cbiAgcmVxdWlyZShsb2NhdGlvbiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbG9jYXRpb24gPSBvcHRpb25zLmFic29sdXRlXG4gICAgICA/IGxvY2F0aW9uXG4gICAgICA6IHBhdGgucmVzb2x2ZSh0aGlzLnJvb3QsIGxvY2F0aW9uKVxuXG4gICAgY29uc3QgbG9hZGVyID0gb3B0aW9ucy5vcHRpb25hbFxuICAgICAgPyBvcHRyZXF1aXJlXG4gICAgICA6IHJlcXVpcmVcblxuICAgIHJldHVybiBsb2FkZXIobG9jYXRpb24pXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBzZXJ2aWNlIGludG8gdGhpcyBhdGxhcyBhdCBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBzZXJ2aWNlIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBleHBvc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmljZSdzIEFQSSBvbiB0aGUgYXRsYXMuc2VydmljZXMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIHNlcnZpY2UgY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgc2VydmljZVxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMuYWxpYXNlcyAgICBCaW5kaW5ncyB0byBvdGhlciBkZWZpbmVkIGNvbXBvbmVudHNcbiAgICogQHJldHVybiAgICB7dGhpc31cbiAgICovXG4gIHNlcnZpY2UoYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnc2VydmljZScsXG4gICAgICBhbGlhcyxcbiAgICAgIENvbXBvbmVudCxcbiAgICAgIGFsaWFzZXM6IG9wdHMuYWxpYXNlcyxcbiAgICB9LCB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLnNlcnZpY2VzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgaG9vayBpbnRvIHRoaXMgYXRsYXMgdXNpbmcgZ2l2ZW4gYWxpYXNcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICAgICAgVGhlIGFsaWFzIGZvciB0aGUgaG9vayAtIGl0IHdpbGwgYmUgdXNlZCBmb3IgcGFzc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGhvb2sgY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgaG9va1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMuYWxpYXNlcyAgICBCaW5kaW5ncyB0byBvdGhlciBkZWZpbmVkIGNvbXBvbmVudHNcbiAgICogQHJldHVybiAgICB7dGhpc31cbiAgICovXG4gIGhvb2soYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnaG9vaycsXG4gICAgICBhbGlhcyxcbiAgICAgIENvbXBvbmVudCxcbiAgICAgIGFsaWFzZXM6IG9wdHMuYWxpYXNlcyxcbiAgICB9LCB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLmhvb2tzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGFjdGlvbiBpbnRvIHRoaXMgYXRsYXMgYXQgZ2l2ZW4gYWxpYXNcbiAgICpcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICAgICAgVGhlIGFsaWFzIGZvciB0aGUgYWN0aW9uIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBleHBvc2luZ1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWN0aW9uJ3MgQVBJIG9uIHRoZSBhdGxhcy5hY3Rpb25zIG9iamVjdCBhbmQgZm9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NpbmcgY29uZmlndXJhdGlvbiBkYXRhIHRvIGl0XG4gICAqIEBwYXJhbSAgICAge2NsYXNzfSAgICAgQ29tcG9uZW50ICAgICAgIFRoZSBhY3Rpb24gY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzICAgICAgICAgICAgUnVudGltZSBvcHRpb25zIGZvciB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgYWN0aW9uKGFsaWFzLCBDb21wb25lbnQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzOjpjb21wb25lbnQoe1xuICAgICAgdHlwZTogJ2FjdGlvbicsXG4gICAgICBhbGlhcyxcbiAgICAgIENvbXBvbmVudCxcbiAgICAgIGFsaWFzZXM6IG9wdHMuYWxpYXNlcyxcbiAgICB9LCB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLmFjdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBhbGwgc2VydmljZXMgYW5kIGhvb2tzIGZvciB1c2VcbiAgICpcbiAgICogR2VuZXJhbGx5IHlvdSBzaG91bGQgdXNlIGBhdGxhcy5zdGFydCgpYCBpbnN0ZWFkIHRvIGdldCB5b3VyIGluc3RhbmNlIHVwIGFuZCBydW5uaW5nLiBIb3dldmVyLFxuICAgKiBzb21ldGltZXMgaXQgaXMgbmVjZXNzYXJ5IHRvIGdldCBhbGwgdGhlIHNlcnZpY2VzIGludG8gYSBcImdldC1yZWFkeVwiIHN0YXRlIGJlZm9yZSB0aGV5IHN0YXJ0XG4gICAqIGNvbm5lY3RpbmcgdG8gcmVtb3RlIHJlc291cmNlcyBvciBkb2luZyBhbnkgaW50ZW5zaXZlIEkvTyBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHRoaXM+fVxuICAgKi9cbiAgYXN5bmMgcHJlcGFyZSgpIHtcbiAgICBpZiAodGhpcy5wcmVwYXJlZCkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBjb25zdCB7IHNlcnZpY2VzLCBhY3Rpb25zLCBob29rcyB9ID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZ1xuXG4gICAgLy8gUHJlcGFyZSBhY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIGFjdGlvbl0gb2YgYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zW2FsaWFzXSA9IGFjdGlvbi5jb21wb25lbnRcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIGFsbCBzZXJ2aWNlcywgaW4gcGFyYWxsZWwg8J+SqlxuICAgIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oc2VydmljZXMpLm1hcCgoW2FsaWFzLCBzZXJ2aWNlXSkgPT5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgdGhpczo6bGlmZWN5Y2xlLnNlcnZpY2UucHJlcGFyZShhbGlhcywgc2VydmljZS5jb21wb25lbnQpKSlcblxuICAgIHRoaXM6OmhpZGRlbigpLnByZXBhcmVkID0gdHJ1ZVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdhZnRlclByZXBhcmUnLCB0aGlzLCBob29rcylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYWxsIHNlcnZpY2VzXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdGFydCgpIHtcbiAgICBpZiAodGhpcy5zdGFydGVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IGhvb2tzID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZy5ob29rc1xuXG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlKClcbiAgICBhd2FpdCB0aGlzOjpkaXNwYXRjaCgnYmVmb3JlU3RhcnQnLCB0aGlzLCBob29rcylcblxuICAgIGNvbnN0IHsgc2VydmljZXMgfSA9IHRoaXM6OmhpZGRlbigpLmNhdGFsb2dcblxuICAgIC8vIFN0YXJ0IGFsbCBzZXJ2aWNlcywgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgaW5zdGFuY2Ug8J+SqlxuICAgIC8vIE9yZGVyaW5nIGlzIGltcG9ydGFudCBoZXJlISBTb21lIHNlcnZpY2VzIHNob3VsZCBiZSBzdGFydGVkIGFzIHRoZSBsYXN0IG9uZXMgYmVjYXVzZSB0aGV5XG4gICAgLy8gZXhwb3NlIHNvbWUgZnVuY3Rpb25hbGl0eSB0byB0aGUgb3V0c2lkZSB3b3JsZCBhbmQgc3RhcnRpbmcgdGhvc2UgYmVmb3JlIGllLiBhIGRhdGFiYXNlXG4gICAgLy8gc2VydmljZSBpcyBzdGFydGVkIG1pZ2h0IGJyZWFrIHN0dWZmIVxuICAgIGZvciAoY29uc3QgW2FsaWFzLCBzZXJ2aWNlXSBvZiBzZXJ2aWNlcykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICBhd2FpdCB0aGlzOjpsaWZlY3ljbGUuc2VydmljZS5zdGFydChhbGlhcywgc2VydmljZS5jb21wb25lbnQpXG4gICAgfVxuXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IHRydWVcbiAgICBhd2FpdCB0aGlzOjpkaXNwYXRjaCgnYWZ0ZXJTdGFydCcsIHRoaXMsIGhvb2tzKVxuICAgIHRoaXMubG9nLmluZm8oJ2F0bGFzOnJlYWR5JylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogU3RvcCBhbGwgc2VydmljZXMsIHVucmVnaXN0ZXIgYWxsIGFjdGlvbnMgYW5kIGhvb2tzIGFuZCB1bnB1Ymxpc2ggYW55IEFQSXMgZXhwb3NlZCBieSB0aGVtXG4gICAqXG4gICAqIFRoaXMgcHV0cyB0aGUgd2hvbGUgYXBwbGljYXRpb24gaW50byBhIHN0YXRlIGFzIGl0IHdhcyBiZWZvcmUgYGF0bGFzLnByZXBhcmUoKWAgYW5kL29yXG4gICAqIGBhdGxhcy5zdGFydCgpYCB3YXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHRoaXM+fVxuICAgKi9cbiAgYXN5bmMgc3RvcCgpIHtcbiAgICBpZiAoIXRoaXMuc3RhcnRlZCkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBjb25zdCB7IHNlcnZpY2VzLCBhY3Rpb25zLCBob29rcyB9ID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZ1xuXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2JlZm9yZVN0b3AnLCB0aGlzLCBob29rcylcblxuICAgIC8vIFN0b3AgYWxsIHNlcnZpY2VzLCBpbiB0aGUgcmV2ZXJzZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGluc3RhbmNlIPCfkqpcbiAgICAvLyBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoZSBtb3N0IGltcG9ydGFudCBzZXJ2aWNlcyBhcmUgc3RvcHBlZCBmaXJzdC5cbiAgICBmb3IgKGNvbnN0IFthbGlhcywgc2VydmljZV0gb2YgQXJyYXkuZnJvbShzZXJ2aWNlcykucmV2ZXJzZSgpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGF3YWl0IHRoaXM6OmxpZmVjeWNsZS5zZXJ2aWNlLnN0b3AoYWxpYXMsIHNlcnZpY2UuY29tcG9uZW50KVxuICAgIH1cblxuICAgIC8vIFVucmVnaXN0ZXIgYWN0aW9uc1xuICAgIGZvciAoY29uc3QgW2FsaWFzXSBvZiBhY3Rpb25zKSB7XG4gICAgICBkZWxldGUgdGhpcy5hY3Rpb25zW2FsaWFzXVxuICAgIH1cblxuICAgIHRoaXM6OmhpZGRlbigpLnN0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXM6OmhpZGRlbigpLnByZXBhcmVkID0gZmFsc2VcblxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdhZnRlclN0b3AnLCBudWxsLCBob29rcylcbiAgICB0aGlzLmxvZy5pbmZvKCdhdGxhczpzdG9wcGVkJylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxuY29uc3QgbGlmZWN5Y2xlID0ge1xuICBzZXJ2aWNlOiB7XG4gICAgLyoqXG4gICAgICogUHJlcGFyZSBhIHNlcnZpY2VcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICBUaGUgU2VydmljZSdzIGFsaWFzXG4gICAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBzZXJ2aWNlICAgICBUaGUgc2VydmljZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIEByZXR1cm4gICAge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgYXN5bmMgcHJlcGFyZShhbGlhcywgc2VydmljZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpwcmVwYXJlOmJlZm9yZScpXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IHNlcnZpY2UucHJlcGFyZSgpXG4gICAgICB0aGlzOjpleHBvc2UoJ3NlcnZpY2VzJywgYWxpYXMsIGluc3RhbmNlKVxuICAgICAgdGhpcy5sb2cuZGVidWcoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpwcmVwYXJlOmFmdGVyJylcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFN0YXJ0IGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBzdGFydChhbGlhcywgc2VydmljZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdGFydDpiZWZvcmUnKVxuICAgICAgYXdhaXQgc2VydmljZS5zdGFydCh0aGlzLnNlcnZpY2VzW2FsaWFzXSlcbiAgICAgIHRoaXMubG9nLmRlYnVnKHsgc2VydmljZTogYWxpYXMgfSwgJ3NlcnZpY2U6c3RhcnQ6YWZ0ZXInKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3RvcCBhIHNlcnZpY2VcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICBhbGlhcyAgICAgICBUaGUgU2VydmljZSdzIGFsaWFzXG4gICAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBzZXJ2aWNlICAgICBUaGUgc2VydmljZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIEByZXR1cm4gICAge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgYXN5bmMgc3RvcChhbGlhcywgc2VydmljZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdG9wOmJlZm9yZScpXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuc2VydmljZXNbYWxpYXNdXG4gICAgICBkZWxldGUgdGhpcy5zZXJ2aWNlc1thbGlhc11cbiAgICAgIGF3YWl0IHNlcnZpY2Uuc3RvcChpbnN0YW5jZSlcbiAgICAgIHRoaXMubG9nLmRlYnVnKHsgc2VydmljZTogYWxpYXMgfSwgJ3NlcnZpY2U6c3RvcDphZnRlcicpXG4gICAgfSxcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRsYXNcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0bGFzLm1qcyJdLCJuYW1lcyI6WyJBdGxhcyIsImluaXQiLCJvcHRpb25zIiwiY29uZmlnIiwiaG9va3MiLCJzZXJ2aWNlcyIsImFjdGlvbnMiLCJhbGlhc2VzIiwiYXRsYXMiLCJlbnYiLCJyb290IiwidHlwZXMiLCJwYXRocyIsIm1vZHVsZXMiLCJ0eXBlIiwicmVzb2x2ZSIsInJlcXVpcmUiLCJvcHRpb25hbCIsImxvZyIsImRlYnVnIiwiY29tcG9uZW50cyIsIk9iamVjdCIsImtleXMiLCJhbGlhcyIsIkhvb2siLCJlbnRyaWVzIiwiaG9vayIsIlNlcnZpY2UiLCJzZXJ2aWNlIiwiQWN0aW9uIiwiYWN0aW9uIiwicHJlcGFyZWQiLCJzdGFydGVkIiwiY29uc3RydWN0b3IiLCJwcm9jZXNzIiwiTk9ERV9FTlYiLCJjYXRhbG9nIiwiTWFwIiwiZGVmYXVsdHMiLCJsb2NhdGlvbiIsImFic29sdXRlIiwibG9hZGVyIiwiQ29tcG9uZW50Iiwib3B0cyIsInByZXBhcmUiLCJjb21wb25lbnQiLCJQcm9taXNlIiwiYWxsIiwiQXJyYXkiLCJmcm9tIiwibWFwIiwibGlmZWN5Y2xlIiwic3RhcnQiLCJpbmZvIiwic3RvcCIsInJldmVyc2UiLCJuYW1lIiwiYmFzZW5hbWUiLCJjd2QiLCJsZXZlbCIsInNlcmlhbGl6ZXJzIiwic3RkU2VyaWFsaXplcnMiLCJ0cmFjZSIsImluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7QUFhQSxNQUFNQSxLQUFOLENBQVk7QUF1QlYsU0FBT0MsSUFBUCxDQUFZQyxVQUFVLEVBQXRCLEVBQTBCO0FBQ3hCLDhCQUFTQSxPQUFULEVBQWtCO0FBQ2hCQyxjQUFRLFFBRFE7QUFFaEJDLGFBQU8sT0FGUztBQUdoQkMsZ0JBQVUsVUFITTtBQUloQkMsZUFBUyxTQUpPO0FBS2hCQyxlQUFTO0FBTE8sS0FBbEI7QUFRQSxVQUFNQyxRQUFRLElBQUksSUFBSixDQUFTO0FBQ3JCQyxXQUFLUCxRQUFRTyxHQURRO0FBRXJCQyxZQUFNUixRQUFRUSxJQUZPO0FBR3JCUCxjQUFRRCxRQUFRQztBQUhLLEtBQVQsQ0FBZDtBQUtBLFVBQU1RLFFBQVEsQ0FDWixPQURZLEVBRVosVUFGWSxFQUdaLFNBSFksRUFJWixTQUpZLENBQWQ7QUFNQSxVQUFNQyxRQUFRLEVBQWQ7QUFDQSxVQUFNQyxVQUFVLEVBQWhCOztBQUVBLFNBQUssTUFBTUMsSUFBWCxJQUFtQkgsS0FBbkIsRUFBMEI7QUFDeEJDLFlBQU1FLElBQU4sSUFBYyxjQUFLQyxPQUFMLENBQWFiLFFBQVFRLElBQXJCLEVBQTJCUixRQUFRWSxJQUFSLENBQTNCLENBQWQ7QUFDQUQsY0FBUUMsSUFBUixJQUFnQk4sTUFBTVEsT0FBTixDQUFjZCxRQUFRWSxJQUFSLENBQWQsRUFBNkI7QUFBRUcsa0JBQVU7QUFBWixPQUE3QixDQUFoQjtBQUNEOztBQUVELDhCQUFTSixPQUFULEVBQWtCO0FBQ2hCTixlQUFTO0FBQ1BELGlCQUFTLEVBREY7QUFFUEYsZUFBTyxFQUZBO0FBR1BDLGtCQUFVO0FBSEg7QUFETyxLQUFsQjtBQVFBRyxVQUFNVSxHQUFOLENBQVVDLEtBQVYsQ0FBZ0I7QUFDZFYsV0FBS0QsTUFBTUMsR0FERztBQUVkQyxZQUFNRixNQUFNRSxJQUZFO0FBR2RFLFdBSGM7QUFJZFEsa0JBQVk7QUFDVmQsaUJBQVNlLE9BQU9DLElBQVAsQ0FBWVQsUUFBUVAsT0FBcEIsQ0FEQztBQUVWRixlQUFPaUIsT0FBT0MsSUFBUCxDQUFZVCxRQUFRVCxLQUFwQixDQUZHO0FBR1ZDLGtCQUFVZ0IsT0FBT0MsSUFBUCxDQUFZVCxRQUFRUixRQUFwQjtBQUhBO0FBSkUsS0FBaEIsRUFTRyxZQVRIOztBQVlBLFNBQUssTUFBTSxDQUFDa0IsS0FBRCxFQUFRQyxJQUFSLENBQVgsSUFBNEJILE9BQU9JLE9BQVAsQ0FBZVosUUFBUVQsS0FBdkIsQ0FBNUIsRUFBMkQ7QUFDekQsWUFBTUcsVUFBVU0sUUFBUU4sT0FBUixDQUFnQkgsS0FBaEIsQ0FBc0JtQixLQUF0QixDQUFoQjtBQUNBZixZQUFNa0IsSUFBTixDQUFXSCxLQUFYLEVBQWtCQyxJQUFsQixFQUF3QjtBQUFFakI7QUFBRixPQUF4QjtBQUNEOztBQUdELFNBQUssTUFBTSxDQUFDZ0IsS0FBRCxFQUFRSSxPQUFSLENBQVgsSUFBK0JOLE9BQU9JLE9BQVAsQ0FBZVosUUFBUVIsUUFBdkIsQ0FBL0IsRUFBaUU7QUFDL0QsWUFBTUUsVUFBVU0sUUFBUU4sT0FBUixDQUFnQkYsUUFBaEIsQ0FBeUJrQixLQUF6QixDQUFoQjtBQUNBZixZQUFNb0IsT0FBTixDQUFjTCxLQUFkLEVBQXFCSSxPQUFyQixFQUE4QjtBQUFFcEI7QUFBRixPQUE5QjtBQUNEOztBQUdELFNBQUssTUFBTSxDQUFDZ0IsS0FBRCxFQUFRTSxNQUFSLENBQVgsSUFBOEJSLE9BQU9JLE9BQVAsQ0FBZVosUUFBUVAsT0FBdkIsQ0FBOUIsRUFBK0Q7QUFDN0QsWUFBTUMsVUFBVU0sUUFBUU4sT0FBUixDQUFnQkQsT0FBaEIsQ0FBd0JpQixLQUF4QixDQUFoQjtBQUNBZixZQUFNc0IsTUFBTixDQUFhUCxLQUFiLEVBQW9CTSxNQUFwQixFQUE0QjtBQUFFdEI7QUFBRixPQUE1QjtBQUNEOztBQUVELFdBQU9DLEtBQVA7QUFDRDs7QUFXRCxNQUFJQyxHQUFKLEdBQVU7QUFDUixXQUFPLDJCQUFlQSxHQUF0QjtBQUNEOztBQVVELE1BQUlDLElBQUosR0FBVztBQUNULFdBQU8sMkJBQWVBLElBQXRCO0FBQ0Q7O0FBUUQsTUFBSXFCLFFBQUosR0FBZTtBQUNiLFdBQU8sMkJBQWVBLFFBQXRCO0FBQ0Q7O0FBUUQsTUFBSUMsT0FBSixHQUFjO0FBQ1osV0FBTywyQkFBZUEsT0FBdEI7QUFDRDs7QUFtQ0RDLGNBQVkvQixVQUFVLEVBQXRCLEVBQTBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQTVCakI7QUE0QmlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQXJCZjtBQXFCZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFkaEI7QUFjZ0I7QUFHeEIsK0JBQWVPLEdBQWYsR0FBcUJQLFFBQVFPLEdBQVIsSUFBZXlCLFFBQVF6QixHQUFSLENBQVkwQixRQUFoRDtBQUNBLCtCQUFlekIsSUFBZixHQUFzQlIsUUFBUVEsSUFBOUI7QUFDQSwrQkFBZXFCLFFBQWYsR0FBMEIsS0FBMUI7QUFDQSwrQkFBZUMsT0FBZixHQUF5QixLQUF6QjtBQUNBLCtCQUFlSSxPQUFmLEdBQXlCO0FBQ3ZCL0IsZ0JBQVUsSUFBSWdDLEdBQUosRUFEYTtBQUV2QmpDLGFBQU8sSUFBSWlDLEdBQUosRUFGZ0I7QUFHdkIvQixlQUFTLElBQUkrQixHQUFKO0FBSGMsS0FBekI7O0FBT0EsUUFBSSxDQUFDLEtBQUs1QixHQUFWLEVBQWU7QUFDYixZQUFNLDJCQUFtQiw0Q0FBbkIsQ0FBTjtBQUNEOztBQUVELFFBQUksT0FBTyxLQUFLQyxJQUFaLEtBQXFCLFFBQXpCLEVBQW1DO0FBQ2pDLFlBQU0sMkJBQW9CLDBDQUF5Q1IsUUFBUVEsSUFBSyxFQUExRSxDQUFOO0FBQ0Q7O0FBRUQsU0FBS1AsTUFBTCxHQUFjLDZCQUFlRCxRQUFRQyxNQUF2QixFQUErQjtBQUMzQ0ssYUFBTyxFQURvQztBQUUzQ0gsZ0JBQVUsRUFGaUM7QUFHM0NELGFBQU8sRUFIb0M7QUFJM0NFLGVBQVM7QUFKa0MsS0FBL0IsQ0FBZDtBQU1BLFNBQUtILE1BQUwsQ0FBWUssS0FBWixHQUFvQiwwQkFBUyxLQUFLTCxNQUFMLENBQVlLLEtBQXJCLEVBQTRCUixNQUFNc0MsUUFBbEMsQ0FBcEI7QUFFQSxTQUFLcEIsR0FBTCxHQUFXLG1CQUFLLEtBQUtmLE1BQUwsQ0FBWUssS0FBWixDQUFrQlUsR0FBdkIsQ0FBWDtBQUNEOztBQWFERixVQUFRdUIsUUFBUixFQUFrQnJDLFVBQVUsRUFBNUIsRUFBZ0M7QUFDOUJxQyxlQUFXckMsUUFBUXNDLFFBQVIsR0FDUEQsUUFETyxHQUVQLGNBQUt4QixPQUFMLENBQWEsS0FBS0wsSUFBbEIsRUFBd0I2QixRQUF4QixDQUZKO0FBSUEsVUFBTUUsU0FBU3ZDLFFBQVFlLFFBQVIseUJBRVhELE9BRko7QUFJQSxXQUFPeUIsT0FBT0YsUUFBUCxDQUFQO0FBQ0Q7O0FBYURYLFVBQVFMLEtBQVIsRUFBZW1CLFNBQWYsRUFBMEJDLE9BQU8sRUFBakMsRUFBcUM7QUFDbkMsV0FBTyw4QkFBZ0I7QUFDckI3QixZQUFNLFNBRGU7QUFFckJTLFdBRnFCO0FBR3JCbUIsZUFIcUI7QUFJckJuQyxlQUFTb0MsS0FBS3BDO0FBSk8sS0FBaEIsRUFLSiwyQkFBZTZCLE9BQWYsQ0FBdUIvQixRQUxuQixDQUFQO0FBTUQ7O0FBWURxQixPQUFLSCxLQUFMLEVBQVltQixTQUFaLEVBQXVCQyxPQUFPLEVBQTlCLEVBQWtDO0FBQ2hDLFdBQU8sOEJBQWdCO0FBQ3JCN0IsWUFBTSxNQURlO0FBRXJCUyxXQUZxQjtBQUdyQm1CLGVBSHFCO0FBSXJCbkMsZUFBU29DLEtBQUtwQztBQUpPLEtBQWhCLEVBS0osMkJBQWU2QixPQUFmLENBQXVCaEMsS0FMbkIsQ0FBUDtBQU1EOztBQWFEMEIsU0FBT1AsS0FBUCxFQUFjbUIsU0FBZCxFQUF5QkMsT0FBTyxFQUFoQyxFQUFvQztBQUNsQyxXQUFPLDhCQUFnQjtBQUNyQjdCLFlBQU0sUUFEZTtBQUVyQlMsV0FGcUI7QUFHckJtQixlQUhxQjtBQUlyQm5DLGVBQVNvQyxLQUFLcEM7QUFKTyxLQUFoQixFQUtKLDJCQUFlNkIsT0FBZixDQUF1QjlCLE9BTG5CLENBQVA7QUFNRDs7QUFXRCxRQUFNc0MsT0FBTixHQUFnQjtBQUNkLFFBQUksS0FBS2IsUUFBVCxFQUFtQjtBQUNqQixhQUFPLElBQVA7QUFDRDs7QUFFRCxVQUFNO0FBQUUxQixjQUFGO0FBQVlDLGFBQVo7QUFBcUJGO0FBQXJCLFFBQStCLDJCQUFlZ0MsT0FBcEQ7O0FBR0EsU0FBSyxNQUFNLENBQUNiLEtBQUQsRUFBUU8sTUFBUixDQUFYLElBQThCeEIsT0FBOUIsRUFBdUM7QUFDckMsV0FBS0EsT0FBTCxDQUFhaUIsS0FBYixJQUFzQk8sT0FBT2UsU0FBN0I7QUFDRDs7QUFHRCxVQUFNQyxRQUFRQyxHQUFSLENBQVlDLE1BQU1DLElBQU4sQ0FBVzVDLFFBQVgsRUFBcUI2QyxHQUFyQixDQUF5QixDQUFDLENBQUMzQixLQUFELEVBQVFLLE9BQVIsQ0FBRCxLQUVuQ3VCLFVBQVV2QixPQUFWLENBQWtCZ0IsT0FBeEIsWUFBZ0NyQixLQUFoQyxFQUF1Q0ssUUFBUWlCLFNBQS9DLENBRmdCLENBQVosQ0FBTjtBQUlBLCtCQUFlZCxRQUFmLEdBQTBCLElBQTFCO0FBQ0EsVUFBTSw2QkFBZSxjQUFmLEVBQStCLElBQS9CLEVBQXFDM0IsS0FBckMsQ0FBTjtBQUVBLFdBQU8sSUFBUDtBQUNEOztBQU9ELFFBQU1nRCxLQUFOLEdBQWM7QUFDWixRQUFJLEtBQUtwQixPQUFULEVBQWtCO0FBQ2hCLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU01QixRQUFRLDJCQUFlZ0MsT0FBZixDQUF1QmhDLEtBQXJDOztBQUVBLFVBQU0sS0FBS3dDLE9BQUwsRUFBTjtBQUNBLFVBQU0sNkJBQWUsYUFBZixFQUE4QixJQUE5QixFQUFvQ3hDLEtBQXBDLENBQU47O0FBRUEsVUFBTTtBQUFFQztBQUFGLFFBQWUsMkJBQWUrQixPQUFwQzs7QUFNQSxTQUFLLE1BQU0sQ0FBQ2IsS0FBRCxFQUFRSyxPQUFSLENBQVgsSUFBK0J2QixRQUEvQixFQUF5QztBQUV2QyxZQUFZOEMsVUFBVXZCLE9BQVYsQ0FBa0J3QixLQUF4QixZQUE4QjdCLEtBQTlCLEVBQXFDSyxRQUFRaUIsU0FBN0MsQ0FBTjtBQUNEOztBQUVELCtCQUFlYixPQUFmLEdBQXlCLElBQXpCO0FBQ0EsVUFBTSw2QkFBZSxZQUFmLEVBQTZCLElBQTdCLEVBQW1DNUIsS0FBbkMsQ0FBTjtBQUNBLFNBQUtjLEdBQUwsQ0FBU21DLElBQVQsQ0FBYyxhQUFkO0FBRUEsV0FBTyxJQUFQO0FBQ0Q7O0FBVUQsUUFBTUMsSUFBTixHQUFhO0FBQ1gsUUFBSSxDQUFDLEtBQUt0QixPQUFWLEVBQW1CO0FBQ2pCLGFBQU8sSUFBUDtBQUNEOztBQUVELFVBQU07QUFBRTNCLGNBQUY7QUFBWUMsYUFBWjtBQUFxQkY7QUFBckIsUUFBK0IsMkJBQWVnQyxPQUFwRDs7QUFFQSxVQUFNLDZCQUFlLFlBQWYsRUFBNkIsSUFBN0IsRUFBbUNoQyxLQUFuQyxDQUFOOztBQUlBLFNBQUssTUFBTSxDQUFDbUIsS0FBRCxFQUFRSyxPQUFSLENBQVgsSUFBK0JvQixNQUFNQyxJQUFOLENBQVc1QyxRQUFYLEVBQXFCa0QsT0FBckIsRUFBL0IsRUFBK0Q7QUFFN0QsWUFBWUosVUFBVXZCLE9BQVYsQ0FBa0IwQixJQUF4QixZQUE2Qi9CLEtBQTdCLEVBQW9DSyxRQUFRaUIsU0FBNUMsQ0FBTjtBQUNEOztBQUdELFNBQUssTUFBTSxDQUFDdEIsS0FBRCxDQUFYLElBQXNCakIsT0FBdEIsRUFBK0I7QUFDN0IsYUFBTyxLQUFLQSxPQUFMLENBQWFpQixLQUFiLENBQVA7QUFDRDs7QUFFRCwrQkFBZVMsT0FBZixHQUF5QixLQUF6QjtBQUNBLCtCQUFlRCxRQUFmLEdBQTBCLEtBQTFCO0FBRUEsVUFBTSw2QkFBZSxXQUFmLEVBQTRCLElBQTVCLEVBQWtDM0IsS0FBbEMsQ0FBTjtBQUNBLFNBQUtjLEdBQUwsQ0FBU21DLElBQVQsQ0FBYyxlQUFkO0FBRUEsV0FBTyxJQUFQO0FBQ0Q7O0FBallTOztzQkFBTnJELEs7Ozs7U0FDYztBQUNoQmtCLFNBQUs7QUFDSHNDLFlBQU0sY0FBS0MsUUFBTCxDQUFjdkIsUUFBUXdCLEdBQVIsRUFBZCxDQURIO0FBRUhDLGFBQU8sTUFGSjtBQUdIQyxtQkFBYSxjQUFLQztBQUhmO0FBRFc7O0FBbVlwQixNQUFNVixZQUFZO0FBQ2hCdkIsV0FBUztBQVNQLFVBQU1nQixPQUFOLENBQWNyQixLQUFkLEVBQXFCSyxPQUFyQixFQUE4QjtBQUM1QixXQUFLVixHQUFMLENBQVM0QyxLQUFULENBQWU7QUFBRWxDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsd0JBQW5DO0FBQ0EsWUFBTXdDLFdBQVcsTUFBTW5DLFFBQVFnQixPQUFSLEVBQXZCOztBQUNBLGlDQUFhLFVBQWIsRUFBeUJyQixLQUF6QixFQUFnQ3dDLFFBQWhDOztBQUNBLFdBQUs3QyxHQUFMLENBQVM0QyxLQUFULENBQWU7QUFBRWxDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsdUJBQW5DO0FBQ0QsS0FkTTs7QUF1QlAsVUFBTTZCLEtBQU4sQ0FBWTdCLEtBQVosRUFBbUJLLE9BQW5CLEVBQTRCO0FBQzFCLFdBQUtWLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxzQkFBbkM7QUFDQSxZQUFNSyxRQUFRd0IsS0FBUixDQUFjLEtBQUsvQyxRQUFMLENBQWNrQixLQUFkLENBQWQsQ0FBTjtBQUNBLFdBQUtMLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDRCxLQTNCTTs7QUFvQ1AsVUFBTStCLElBQU4sQ0FBVy9CLEtBQVgsRUFBa0JLLE9BQWxCLEVBQTJCO0FBQ3pCLFdBQUtWLEdBQUwsQ0FBUzRDLEtBQVQsQ0FBZTtBQUFFbEMsaUJBQVNMO0FBQVgsT0FBZixFQUFtQyxxQkFBbkM7QUFDQSxZQUFNd0MsV0FBVyxLQUFLMUQsUUFBTCxDQUFja0IsS0FBZCxDQUFqQjtBQUNBLGFBQU8sS0FBS2xCLFFBQUwsQ0FBY2tCLEtBQWQsQ0FBUDtBQUNBLFlBQU1LLFFBQVEwQixJQUFSLENBQWFTLFFBQWIsQ0FBTjtBQUNBLFdBQUs3QyxHQUFMLENBQVM0QyxLQUFULENBQWU7QUFBRWxDLGlCQUFTTDtBQUFYLE9BQWYsRUFBbUMsb0JBQW5DO0FBQ0Q7O0FBMUNNO0FBRE8sQ0FBbEI7ZUErQ2V2QixLIiwiZmlsZSI6ImF0bGFzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2UgdXNlIGZvci1hd2FpdCBwYXR0ZXJuIHF1aXRlIGV4dGVuc2l2ZWx5IGhlcmUgZm9yIGxlZ2l0aW1hdGUgcHVycG9zZXNcbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwaW5vIGZyb20gJ3Bpbm8nXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG59IGZyb20gJ2xvZGFzaCdcbmltcG9ydCBoaWRkZW4gZnJvbSAnbG9jYWwtc2NvcGUvY3JlYXRlJ1xuaW1wb3J0IHsgRnJhbWV3b3JrRXJyb3IgfSBmcm9tICdAYXRsYXMuanMvZXJyb3JzJ1xuaW1wb3J0IHtcbiAgZXhwb3NlLFxuICBkaXNwYXRjaCxcbiAgY29tcG9uZW50LFxuICBta2NvbmZpZyxcbiAgb3B0cmVxdWlyZSxcbn0gZnJvbSAnLi9wcml2YXRlJ1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB5b3VyIGFwcGxpY2F0aW9uIGFuZCBhZ2dyZWdhdGVzIGFsbCBjb21wb25lbnRzIHRvZ2V0aGVyXG4gKlxuICogWW91IHNob3VsZCBnZW5lcmFsbHkgY3JlYXRlIG9ubHkgb25lIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaW4gYSBwcm9ncmFtLlxuICovXG5jbGFzcyBBdGxhcyB7XG4gIHN0YXRpYyBkZWZhdWx0cyA9IHtcbiAgICBsb2c6IHtcbiAgICAgIG5hbWU6IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSksXG4gICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgc2VyaWFsaXplcnM6IHBpbm8uc3RkU2VyaWFsaXplcnMsXG4gICAgfSxcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlIGEgYnJhbmQtbmV3IGF0bGFzIGluc3RhbmNlIGZyb20gdGhlIGdpdmVuIG1vZHVsZSBsb2NhdGlvbnNcbiAgICpcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICAgIG9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5lbnYgICAgICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHVuZGVyIHdoaWNoIHRvIG9wZXJhdGVcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMucm9vdCAgICAgICAgICAgICAgICAgIFRoZSByb290IGRpcmVjdG9yeSB0byB3aGljaCBhbGwgb3RoZXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBoZXJlIGFyZSByZWxhdGl2ZVxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5jb25maWc9J2NvbmZpZycgICAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgICAgb3B0aW9ucy5ob29rcz0naG9va3MnICAgICAgICAgTW9kdWxlIGxvY2F0aW9uIGZvciB0aGUgaG9va3NcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgIG9wdGlvbnMuc2VydmljZXM9J3NlcnZpY2VzJyAgIE1vZHVsZSBsb2NhdGlvbiBmb3IgdGhlIHNlcnZpY2VzXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmFjdGlvbnM9J2FjdGlvbnMnICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBhY3Rpb25zXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICBvcHRpb25zLmFsaWFzZXM9J2FsaWFzZXMnICAgICBNb2R1bGUgbG9jYXRpb24gZm9yIHRoZSBhbGlhc2VzXG4gICAqIEByZXR1cm4gICAge0F0bGFzfVxuICAgKi9cbiAgc3RhdGljIGluaXQob3B0aW9ucyA9IHt9KSB7XG4gICAgZGVmYXVsdHMob3B0aW9ucywge1xuICAgICAgY29uZmlnOiAnY29uZmlnJyxcbiAgICAgIGhvb2tzOiAnaG9va3MnLFxuICAgICAgc2VydmljZXM6ICdzZXJ2aWNlcycsXG4gICAgICBhY3Rpb25zOiAnYWN0aW9ucycsXG4gICAgICBhbGlhc2VzOiAnYWxpYXNlcycsXG4gICAgfSlcblxuICAgIGNvbnN0IGF0bGFzID0gbmV3IHRoaXMoe1xuICAgICAgZW52OiBvcHRpb25zLmVudixcbiAgICAgIHJvb3Q6IG9wdGlvbnMucm9vdCxcbiAgICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWcsXG4gICAgfSlcbiAgICBjb25zdCB0eXBlcyA9IFtcbiAgICAgICdob29rcycsXG4gICAgICAnc2VydmljZXMnLFxuICAgICAgJ2FjdGlvbnMnLFxuICAgICAgJ2FsaWFzZXMnLFxuICAgIF1cbiAgICBjb25zdCBwYXRocyA9IHt9XG4gICAgY29uc3QgbW9kdWxlcyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIHBhdGhzW3R5cGVdID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgb3B0aW9uc1t0eXBlXSlcbiAgICAgIG1vZHVsZXNbdHlwZV0gPSBhdGxhcy5yZXF1aXJlKG9wdGlvbnNbdHlwZV0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICB9XG5cbiAgICBkZWZhdWx0cyhtb2R1bGVzLCB7XG4gICAgICBhbGlhc2VzOiB7XG4gICAgICAgIGFjdGlvbnM6IHt9LFxuICAgICAgICBob29rczoge30sXG4gICAgICAgIHNlcnZpY2VzOiB7fSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIGF0bGFzLmxvZy5kZWJ1Zyh7XG4gICAgICBlbnY6IGF0bGFzLmVudixcbiAgICAgIHJvb3Q6IGF0bGFzLnJvb3QsXG4gICAgICBwYXRocyxcbiAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgYWN0aW9uczogT2JqZWN0LmtleXMobW9kdWxlcy5hY3Rpb25zKSxcbiAgICAgICAgaG9va3M6IE9iamVjdC5rZXlzKG1vZHVsZXMuaG9va3MpLFxuICAgICAgICBzZXJ2aWNlczogT2JqZWN0LmtleXMobW9kdWxlcy5zZXJ2aWNlcyksXG4gICAgICB9LFxuICAgIH0sICdhdGxhczppbml0JylcblxuICAgIC8vIEhvb2tzXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIEhvb2tdIG9mIE9iamVjdC5lbnRyaWVzKG1vZHVsZXMuaG9va3MpKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gbW9kdWxlcy5hbGlhc2VzLmhvb2tzW2FsaWFzXVxuICAgICAgYXRsYXMuaG9vayhhbGlhcywgSG9vaywgeyBhbGlhc2VzIH0pXG4gICAgfVxuXG4gICAgLy8gU2VydmljZXNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgU2VydmljZV0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcy5zZXJ2aWNlcykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZXMgPSBtb2R1bGVzLmFsaWFzZXMuc2VydmljZXNbYWxpYXNdXG4gICAgICBhdGxhcy5zZXJ2aWNlKGFsaWFzLCBTZXJ2aWNlLCB7IGFsaWFzZXMgfSlcbiAgICB9XG5cbiAgICAvLyBBY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIEFjdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMobW9kdWxlcy5hY3Rpb25zKSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IG1vZHVsZXMuYWxpYXNlcy5hY3Rpb25zW2FsaWFzXVxuICAgICAgYXRsYXMuYWN0aW9uKGFsaWFzLCBBY3Rpb24sIHsgYWxpYXNlcyB9KVxuICAgIH1cblxuICAgIHJldHVybiBhdGxhc1xuICB9XG5cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdGhpcyBpbnN0YW5jZSBvcGVyYXRlc1xuICAgKlxuICAgKiBEZWZhdWx0cyB0byBOT0RFX0VOViBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge1N0cmluZ31cbiAgICovXG4gIGdldCBlbnYoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLmVudlxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByb290IGZvbGRlciB3aGVyZSBhbGwgb3RoZXIgcGF0aHMgc2hvdWxkIGJlIHJlbGF0aXZlIHRvXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHNldCB0aGlzIHRvIHRoZSBwcm9qZWN0J3Mgcm9vdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtTdHJpbmd9XG4gICAqL1xuICBnZXQgcm9vdCgpIHtcbiAgICByZXR1cm4gdGhpczo6aGlkZGVuKCkucm9vdFxuICB9XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgaW5zdGFuY2UgaW4gYSBwcmVwYXJlZCBzdGF0ZT9cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEByZXR1cm4gICAge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgcHJlcGFyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnByZXBhcmVkXG4gIH1cblxuICAvKipcbiAgICogSXMgdGhpcyBpbnN0YW5jZSBpbiBhIHN0YXJ0ZWQgc3RhdGU/XG4gICAqXG4gICAqIEByZWFkb25seVxuICAgKiBAcmV0dXJuICAgIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IHN0YXJ0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXM6OmhpZGRlbigpLnN0YXJ0ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBdGxhcyBjb25maWd1cmF0aW9uLCBhcyBwYXNzZWQgaW4gdG8gdGhlIGNvbnN0cnVjdG9yXG4gICAqXG4gICAqIEB0eXBlICAgIHtPYmplY3R9XG4gICAqL1xuICBjb25maWcgPSB7fVxuXG4gIC8qKlxuICAgKiBBbGwgc2VydmljZXMgYWRkZWQgdG8gdGhpcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdHlwZSAgICB7T2JqZWN0fVxuICAgKi9cbiAgc2VydmljZXMgPSB7fVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0aW9ucyBhZGRlZCB0byB0aGlzIGluc3RhbmNlXG4gICAqXG4gICAqIEB0eXBlICAgIHtPYmplY3R9XG4gICAqL1xuICBhY3Rpb25zID0ge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucyAgICAgICAgICAgICBPcHRpb25zIGZvciB0aGUgaW5zdGFuY2VcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRpb25zLmNvbmZpZyAgICAgIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgaW5zdGFuY2UgYW5kIGZvciBhbGxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIG9yIG90aGVyIGNvbXBvbmVudHMgd2hpY2ggd2lsbCBiZSBhZGRlZCB0b1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5yb290ICAgICAgICBUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGluc3RhbmNlXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgb3B0aW9ucy5lbnYgICAgICAgICBUaGUgZW52aXJvbm1lbnQgdW5kZXIgd2hpY2ggdGhpcyBpbnN0YW5jZSBvcGVyYXRlcy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudHMgbWF5IHVzZSB0aGlzIHZhbHVlIGZvciB2YXJpb3VzIHB1cnBvc2VzLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gTk9ERV9FTlYuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAvLyBJbml0aWFsaXNlIHByaXZhdGUgc3R1ZmZcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvY2Vzcy1lbnZcbiAgICB0aGlzOjpoaWRkZW4oKS5lbnYgPSBvcHRpb25zLmVudiB8fCBwcm9jZXNzLmVudi5OT0RFX0VOVlxuICAgIHRoaXM6OmhpZGRlbigpLnJvb3QgPSBvcHRpb25zLnJvb3RcbiAgICB0aGlzOjpoaWRkZW4oKS5wcmVwYXJlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkuY2F0YWxvZyA9IHtcbiAgICAgIHNlcnZpY2VzOiBuZXcgTWFwKCksXG4gICAgICBob29rczogbmV3IE1hcCgpLFxuICAgICAgYWN0aW9uczogbmV3IE1hcCgpLFxuICAgIH1cblxuICAgIC8vIFNhZmV0eSBjaGVja3NcbiAgICBpZiAoIXRoaXMuZW52KSB7XG4gICAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoJ2VudiBub3Qgc3BlY2lmaWVkIGFuZCBOT0RFX0VOViB3YXMgbm90IHNldCcpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnJvb3QgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoYHJvb3QgbXVzdCBiZSBleHBsaWNpdGx5IHNwZWNpZmllZCwgZ290ICR7b3B0aW9ucy5yb290fWApXG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSB0aGlzOjpta2NvbmZpZyhvcHRpb25zLmNvbmZpZywge1xuICAgICAgYXRsYXM6IHt9LFxuICAgICAgc2VydmljZXM6IHt9LFxuICAgICAgaG9va3M6IHt9LFxuICAgICAgYWN0aW9uczoge30sXG4gICAgfSlcbiAgICB0aGlzLmNvbmZpZy5hdGxhcyA9IGRlZmF1bHRzKHRoaXMuY29uZmlnLmF0bGFzLCBBdGxhcy5kZWZhdWx0cylcbiAgICAvLyBMb2dnZXIg8J+MslxuICAgIHRoaXMubG9nID0gcGlubyh0aGlzLmNvbmZpZy5hdGxhcy5sb2cpXG4gIH1cblxuICAvKipcbiAgICogUmVxdWlyZSBhIG1vZHVsZSBieSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290XG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgbG9jYXRpb24gICAgICAgICAgVGhlIG1vZHVsZSdzIGxvY2F0aW9uLCByZWxhdGl2ZSB0byByb290XG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0aW9ucz17fSAgICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0gICAgIHtCb29sZWFufSAgIG9wdGlvbnMub3B0aW9uYWwgIElmIHRydWUsIHdpbGwgbm90IHRocm93IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3RcbiAgICogQHBhcmFtICAgICB7Qm9vbGVhbn0gICBvcHRpb25zLmFic29sdXRlICBJZiB0cnVlLCB3aWxsIHRyeSB0byBsb2FkIHRoZSBtb2R1bGUgd2l0aG91dFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmluZyB0aGUgbW9kdWxlJ3MgbmFtZSB0byB0aGUgcHJvamVjdCByb290IChpdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIHN0YW5kYXJkIE5vZGUncyBtZWNoYW5pc20pXG4gICAqIEByZXR1cm4gICAge21peGVkfSAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZHVsZSdzIGNvbnRlbnRzXG4gICAqL1xuICByZXF1aXJlKGxvY2F0aW9uLCBvcHRpb25zID0ge30pIHtcbiAgICBsb2NhdGlvbiA9IG9wdGlvbnMuYWJzb2x1dGVcbiAgICAgID8gbG9jYXRpb25cbiAgICAgIDogcGF0aC5yZXNvbHZlKHRoaXMucm9vdCwgbG9jYXRpb24pXG5cbiAgICBjb25zdCBsb2FkZXIgPSBvcHRpb25zLm9wdGlvbmFsXG4gICAgICA/IG9wdHJlcXVpcmVcbiAgICAgIDogcmVxdWlyZVxuXG4gICAgcmV0dXJuIGxvYWRlcihsb2NhdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNlcnZpY2UgaW50byB0aGlzIGF0bGFzIGF0IGdpdmVuIGFsaWFzXG4gICAqXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgICAgIFRoZSBhbGlhcyBmb3IgdGhlIHNlcnZpY2UgLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2aWNlJ3MgQVBJIG9uIHRoZSBhdGxhcy5zZXJ2aWNlcyBvYmplY3QgYW5kIGZvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgc2VydmljZSBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBzZXJ2aWNlXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgc2VydmljZShhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuc2VydmljZXMpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBob29rIGludG8gdGhpcyBhdGxhcyB1c2luZyBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBob29rIC0gaXQgd2lsbCBiZSB1c2VkIGZvciBwYXNzaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBpdFxuICAgKiBAcGFyYW0gICAgIHtjbGFzc30gICAgIENvbXBvbmVudCAgICAgICBUaGUgaG9vayBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBob29rXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgb3B0cy5hbGlhc2VzICAgIEJpbmRpbmdzIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICAgKiBAcmV0dXJuICAgIHt0aGlzfVxuICAgKi9cbiAgaG9vayhhbGlhcywgQ29tcG9uZW50LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpczo6Y29tcG9uZW50KHtcbiAgICAgIHR5cGU6ICdob29rJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuaG9va3MpXG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYW4gYWN0aW9uIGludG8gdGhpcyBhdGxhcyBhdCBnaXZlbiBhbGlhc1xuICAgKlxuICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgICAgICBUaGUgYWxpYXMgZm9yIHRoZSBhY3Rpb24gLSBpdCB3aWxsIGJlIHVzZWQgZm9yIGV4cG9zaW5nXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhY3Rpb24ncyBBUEkgb24gdGhlIGF0bGFzLmFjdGlvbnMgb2JqZWN0IGFuZCBmb3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2luZyBjb25maWd1cmF0aW9uIGRhdGEgdG8gaXRcbiAgICogQHBhcmFtICAgICB7Y2xhc3N9ICAgICBDb21wb25lbnQgICAgICAgVGhlIGFjdGlvbiBjbGFzc1xuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIG9wdHMgICAgICAgICAgICBSdW50aW1lIG9wdGlvbnMgZm9yIHRoZSBhY3Rpb25cbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBvcHRzLmFsaWFzZXMgICAgQmluZGluZ3MgdG8gb3RoZXIgZGVmaW5lZCBjb21wb25lbnRzXG4gICAqIEByZXR1cm4gICAge3RoaXN9XG4gICAqL1xuICBhY3Rpb24oYWxpYXMsIENvbXBvbmVudCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXM6OmNvbXBvbmVudCh7XG4gICAgICB0eXBlOiAnYWN0aW9uJyxcbiAgICAgIGFsaWFzLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgYWxpYXNlczogb3B0cy5hbGlhc2VzLFxuICAgIH0sIHRoaXM6OmhpZGRlbigpLmNhdGFsb2cuYWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlIGFsbCBzZXJ2aWNlcyBhbmQgaG9va3MgZm9yIHVzZVxuICAgKlxuICAgKiBHZW5lcmFsbHkgeW91IHNob3VsZCB1c2UgYGF0bGFzLnN0YXJ0KClgIGluc3RlYWQgdG8gZ2V0IHlvdXIgaW5zdGFuY2UgdXAgYW5kIHJ1bm5pbmcuIEhvd2V2ZXIsXG4gICAqIHNvbWV0aW1lcyBpdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IGFsbCB0aGUgc2VydmljZXMgaW50byBhIFwiZ2V0LXJlYWR5XCIgc3RhdGUgYmVmb3JlIHRoZXkgc3RhcnRcbiAgICogY29ubmVjdGluZyB0byByZW1vdGUgcmVzb3VyY2VzIG9yIGRvaW5nIGFueSBpbnRlbnNpdmUgSS9PIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBwcmVwYXJlKCkge1xuICAgIGlmICh0aGlzLnByZXBhcmVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICAvLyBQcmVwYXJlIGFjdGlvbnNcbiAgICBmb3IgKGNvbnN0IFthbGlhcywgYWN0aW9uXSBvZiBhY3Rpb25zKSB7XG4gICAgICB0aGlzLmFjdGlvbnNbYWxpYXNdID0gYWN0aW9uLmNvbXBvbmVudFxuICAgIH1cblxuICAgIC8vIFByZXBhcmUgYWxsIHNlcnZpY2VzLCBpbiBwYXJhbGxlbCDwn5KqXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShzZXJ2aWNlcykubWFwKChbYWxpYXMsIHNlcnZpY2VdKSA9PlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICB0aGlzOjpsaWZlY3ljbGUuc2VydmljZS5wcmVwYXJlKGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudCkpKVxuXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSB0cnVlXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyUHJlcGFyZScsIHRoaXMsIGhvb2tzKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBhbGwgc2VydmljZXNcbiAgICpcbiAgICogQHJldHVybiAgICB7UHJvbWlzZTx0aGlzPn1cbiAgICovXG4gIGFzeW5jIHN0YXJ0KCkge1xuICAgIGlmICh0aGlzLnN0YXJ0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgY29uc3QgaG9va3MgPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nLmhvb2tzXG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmUoKVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdiZWZvcmVTdGFydCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgY29uc3QgeyBzZXJ2aWNlcyB9ID0gdGhpczo6aGlkZGVuKCkuY2F0YWxvZ1xuXG4gICAgLy8gU3RhcnQgYWxsIHNlcnZpY2VzLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBpbnN0YW5jZSDwn5KqXG4gICAgLy8gT3JkZXJpbmcgaXMgaW1wb3J0YW50IGhlcmUhIFNvbWUgc2VydmljZXMgc2hvdWxkIGJlIHN0YXJ0ZWQgYXMgdGhlIGxhc3Qgb25lcyBiZWNhdXNlIHRoZXlcbiAgICAvLyBleHBvc2Ugc29tZSBmdW5jdGlvbmFsaXR5IHRvIHRoZSBvdXRzaWRlIHdvcmxkIGFuZCBzdGFydGluZyB0aG9zZSBiZWZvcmUgaWUuIGEgZGF0YWJhc2VcbiAgICAvLyBzZXJ2aWNlIGlzIHN0YXJ0ZWQgbWlnaHQgYnJlYWsgc3R1ZmYhXG4gICAgZm9yIChjb25zdCBbYWxpYXMsIHNlcnZpY2VdIG9mIHNlcnZpY2VzKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIGF3YWl0IHRoaXM6OmxpZmVjeWNsZS5zZXJ2aWNlLnN0YXJ0KGFsaWFzLCBzZXJ2aWNlLmNvbXBvbmVudClcbiAgICB9XG5cbiAgICB0aGlzOjpoaWRkZW4oKS5zdGFydGVkID0gdHJ1ZVxuICAgIGF3YWl0IHRoaXM6OmRpc3BhdGNoKCdhZnRlclN0YXJ0JywgdGhpcywgaG9va3MpXG4gICAgdGhpcy5sb2cuaW5mbygnYXRsYXM6cmVhZHknKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGFsbCBzZXJ2aWNlcywgdW5yZWdpc3RlciBhbGwgYWN0aW9ucyBhbmQgaG9va3MgYW5kIHVucHVibGlzaCBhbnkgQVBJcyBleHBvc2VkIGJ5IHRoZW1cbiAgICpcbiAgICogVGhpcyBwdXRzIHRoZSB3aG9sZSBhcHBsaWNhdGlvbiBpbnRvIGEgc3RhdGUgYXMgaXQgd2FzIGJlZm9yZSBgYXRsYXMucHJlcGFyZSgpYCBhbmQvb3JcbiAgICogYGF0bGFzLnN0YXJ0KClgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gICAge1Byb21pc2U8dGhpcz59XG4gICAqL1xuICBhc3luYyBzdG9wKCkge1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2VydmljZXMsIGFjdGlvbnMsIGhvb2tzIH0gPSB0aGlzOjpoaWRkZW4oKS5jYXRhbG9nXG5cbiAgICBhd2FpdCB0aGlzOjpkaXNwYXRjaCgnYmVmb3JlU3RvcCcsIHRoaXMsIGhvb2tzKVxuXG4gICAgLy8gU3RvcCBhbGwgc2VydmljZXMsIGluIHRoZSByZXZlcnNlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgaW5zdGFuY2Ug8J+SqlxuICAgIC8vIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhlIG1vc3QgaW1wb3J0YW50IHNlcnZpY2VzIGFyZSBzdG9wcGVkIGZpcnN0LlxuICAgIGZvciAoY29uc3QgW2FsaWFzLCBzZXJ2aWNlXSBvZiBBcnJheS5mcm9tKHNlcnZpY2VzKS5yZXZlcnNlKCkpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgYXdhaXQgdGhpczo6bGlmZWN5Y2xlLnNlcnZpY2Uuc3RvcChhbGlhcywgc2VydmljZS5jb21wb25lbnQpXG4gICAgfVxuXG4gICAgLy8gVW5yZWdpc3RlciBhY3Rpb25zXG4gICAgZm9yIChjb25zdCBbYWxpYXNdIG9mIGFjdGlvbnMpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGlvbnNbYWxpYXNdXG4gICAgfVxuXG4gICAgdGhpczo6aGlkZGVuKCkuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpczo6aGlkZGVuKCkucHJlcGFyZWQgPSBmYWxzZVxuXG4gICAgYXdhaXQgdGhpczo6ZGlzcGF0Y2goJ2FmdGVyU3RvcCcsIG51bGwsIGhvb2tzKVxuICAgIHRoaXMubG9nLmluZm8oJ2F0bGFzOnN0b3BwZWQnKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxufVxuXG5jb25zdCBsaWZlY3ljbGUgPSB7XG4gIHNlcnZpY2U6IHtcbiAgICAvKipcbiAgICAgKiBQcmVwYXJlIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBwcmVwYXJlKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgc2VydmljZS5wcmVwYXJlKClcbiAgICAgIHRoaXM6OmV4cG9zZSgnc2VydmljZXMnLCBhbGlhcywgaW5zdGFuY2UpXG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnByZXBhcmU6YWZ0ZXInKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogU3RhcnQgYSBzZXJ2aWNlXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgYWxpYXMgICAgICAgVGhlIFNlcnZpY2UncyBhbGlhc1xuICAgICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgc2VydmljZSAgICAgVGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBAcmV0dXJuICAgIHtQcm9taXNlPHZvaWQ+fVxuICAgICAqL1xuICAgIGFzeW5jIHN0YXJ0KGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0YXJ0OmJlZm9yZScpXG4gICAgICBhd2FpdCBzZXJ2aWNlLnN0YXJ0KHRoaXMuc2VydmljZXNbYWxpYXNdKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdGFydDphZnRlcicpXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBTdG9wIGEgc2VydmljZVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gICAgIHtTdHJpbmd9ICAgIGFsaWFzICAgICAgIFRoZSBTZXJ2aWNlJ3MgYWxpYXNcbiAgICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgIHNlcnZpY2UgICAgIFRoZSBzZXJ2aWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogQHJldHVybiAgICB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICBhc3luYyBzdG9wKGFsaWFzLCBzZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSh7IHNlcnZpY2U6IGFsaWFzIH0sICdzZXJ2aWNlOnN0b3A6YmVmb3JlJylcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5zZXJ2aWNlc1thbGlhc11cbiAgICAgIGRlbGV0ZSB0aGlzLnNlcnZpY2VzW2FsaWFzXVxuICAgICAgYXdhaXQgc2VydmljZS5zdG9wKGluc3RhbmNlKVxuICAgICAgdGhpcy5sb2cudHJhY2UoeyBzZXJ2aWNlOiBhbGlhcyB9LCAnc2VydmljZTpzdG9wOmFmdGVyJylcbiAgICB9LFxuICB9LFxufVxuXG5leHBvcnQgZGVmYXVsdCBBdGxhc1xuIl19

@@ -45,2 +45,7 @@ "use strict";

atlas.log.trace({
component: this.alias,
config: info.config,
defaults: this.Component.defaults
}, 'component:config');
this.component = new this.Component({

@@ -78,2 +83,2 @@ atlas,

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudC1jb250YWluZXIubWpzIl0sIm5hbWVzIjpbIkNvbXBvbmVudENvbnRhaW5lciIsImNvbnN0cnVjdG9yIiwiaW5mbyIsImF0bGFzIiwidHlwZSIsImFsaWFzIiwiYWxpYXNlcyIsIkNvbXBvbmVudCIsInByb3ZpZGVkIiwiT2JqZWN0Iiwia2V5cyIsInJlcXVpcmVkIiwicmVxdWlyZXMiLCJtaXNzaW5nIiwiZXh0cmEiLCJsZW5ndGgiLCJqb2luIiwiY29tcG9uZW50IiwibG9nIiwiY2hpbGQiLCJjb25maWciLCJkZWZhdWx0cyIsInJlc29sdmUiLCJuYW1lIiwicmVzb2x2ZWQiLCJzcGxpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7O0FBVUEsTUFBTUEsa0JBQU4sQ0FBeUI7QUFhdkJDLGNBQVlDLElBQVosRUFBa0JDLEtBQWxCLEVBQXlCO0FBQUE7O0FBQ3ZCLFNBQUtDLElBQUwsR0FBWUYsS0FBS0UsSUFBakI7QUFDQSxTQUFLQyxLQUFMLEdBQWFILEtBQUtHLEtBQWxCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlSixLQUFLSSxPQUFMLElBQWdCLEVBQS9CO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQkwsS0FBS0ssU0FBdEI7O0FBRUEsUUFBSSxPQUFPLEtBQUtBLFNBQVosS0FBMEIsVUFBOUIsRUFBMEM7QUFDeEMsWUFBTUgsT0FBTyxPQUFPLEtBQUtHLFNBQXpCO0FBQ0EsWUFBTSwyQkFBb0IsYUFBWSxLQUFLSCxJQUFLLElBQUcsS0FBS0MsS0FBTSx1QkFBc0JELElBQUssRUFBbkYsQ0FBTjtBQUNEOztBQUdELFVBQU1FLFVBQVU7QUFDZEUsZ0JBQVVDLE9BQU9DLElBQVAsQ0FBWSxLQUFLSixPQUFqQixDQURJO0FBRWRLLGdCQUFVLEtBQUtKLFNBQUwsQ0FBZUssUUFBZixJQUEyQjtBQUZ2QixLQUFoQjtBQUlBLFVBQU1DLFVBQVUsd0JBQVdQLFFBQVFLLFFBQW5CLEVBQTZCTCxRQUFRRSxRQUFyQyxDQUFoQjtBQUNBLFVBQU1NLFFBQVEsd0JBQVdSLFFBQVFFLFFBQW5CLEVBQTZCRixRQUFRSyxRQUFyQyxDQUFkOztBQUVBLFFBQUlFLFFBQVFFLE1BQVosRUFBb0I7QUFDbEIsWUFBTSwyQkFBb0IsaUNBQWdDLEtBQUtWLEtBQU0sS0FBSVEsUUFBUUcsSUFBUixDQUFhLElBQWIsQ0FBbUIsRUFBdEYsQ0FBTjtBQUNEOztBQUVELFFBQUlGLE1BQU1DLE1BQVYsRUFBa0I7QUFDaEIsWUFBTSwyQkFBb0Isa0NBQWlDLEtBQUtWLEtBQU0sS0FBSVMsTUFBTUUsSUFBTixDQUFXLElBQVgsQ0FBaUIsRUFBckYsQ0FBTjtBQUNEOztBQUVELFNBQUtDLFNBQUwsR0FBaUIsSUFBSSxLQUFLVixTQUFULENBQW1CO0FBQ2xDSixXQURrQztBQUVsQ2UsV0FBS2YsTUFBTWUsR0FBTixDQUFVQyxLQUFWLENBQWdCO0FBQUUsU0FBQyxLQUFLZixJQUFOLEdBQWEsS0FBS0M7QUFBcEIsT0FBaEIsQ0FGNkI7QUFHbENlLGNBQVEsMEJBQVNsQixLQUFLa0IsTUFBZCxFQUFzQixLQUFLYixTQUFMLENBQWVjLFFBQXJDLENBSDBCO0FBSWxDSixpQkFBV0s7QUFKdUIsS0FBbkIsQ0FBakI7QUFRQSxxQkFBS0wsU0FBTCxrQ0FBeUJYLE9BQXpCLEdBQW1DLEtBQUtBLE9BQXhDO0FBQ0Q7O0FBakRzQjs7QUFvRHpCLFNBQVNnQixPQUFULENBQWlCQyxJQUFqQixFQUF1QjtBQUNyQixRQUFNQyxXQUFXLDJCQUFlbEIsT0FBZixDQUF1QmlCLElBQXZCLENBQWpCOztBQUVBLE1BQUksQ0FBQ0MsUUFBTCxFQUFlO0FBQ2IsVUFBTSwyQkFBb0IsYUFBWUQsSUFBSyxjQUFyQyxDQUFOO0FBQ0Q7O0FBRUQsUUFBTSxDQUFDbkIsSUFBRCxJQUFTbUIsS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBZjtBQUVBLFFBQU1SLFlBQVksS0FBS2QsS0FBTCxDQUFZLEdBQUVDLElBQUssR0FBbkIsRUFBdUJvQixRQUF2QixDQUFsQjs7QUFFQSxNQUFJLENBQUNQLFNBQUwsRUFBZ0I7QUFDZCxVQUFNLDJCQUFvQixrQkFBaUJiLElBQUssSUFBR29CLFFBQVMsZUFBY0QsSUFBSyxFQUF6RSxDQUFOO0FBQ0Q7O0FBRUQsU0FBT04sU0FBUDtBQUNEOztlQUVjakIsa0IiLCJmaWxlIjoiY29tcG9uZW50LWNvbnRhaW5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoaWRkZW4gZnJvbSAnbG9jYWwtc2NvcGUvY3JlYXRlJ1xuaW1wb3J0IHsgRnJhbWV3b3JrRXJyb3IgfSBmcm9tICdAYXRsYXMuanMvZXJyb3JzJ1xuaW1wb3J0IHtcbiAgZGVmYXVsdHNEZWVwIGFzIGRlZmF1bHRzLFxuICBkaWZmZXJlbmNlLFxufSBmcm9tICdsb2Rhc2gnXG5cbi8qKlxuICogVGhpcyBjbGFzcyBob2xkcyBhbmQgbWFuYWdlcyBhIGNvbXBvbmVudFxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIENvbXBvbmVudENvbnRhaW5lciB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGNvbnRhaW5lciBmb3IgYSBjb21wb25lbnRcbiAgICpcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICAgICAgaW5mbyAgICAgICAgICAgICAgQ29tcG9uZW50IGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICAgIGluZm8udHlwZSAgICAgICAgIFRoZSBjb21wb25lbnQncyB0eXBlIChzZXJ2aWNlLCBob29rLCBhY3Rpb24pXG4gICAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgICAgIGluZm8uYWxpYXMgICAgICAgIFRoZSBjb21wb25lbnQncyB1c2VyLXNwZWNpZmllZCBuYW1lL2FsaWFzXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgICAgIGluZm8uYWxpYXNlcyAgICAgIEJpbmRpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXNlciB0byBsb2NhdGUgb3RoZXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gICAgIHtDbGFzc30gICAgICAgICBpbmZvLkNvbXBvbmVudCAgICBUaGUgY29tcG9uZW50IGNsYXNzXG4gICAqIEBwYXJhbSAgICAge09iamVjdH0gICAgICAgIGluZm8uY29uZmlnICAgICAgIFRoZSBjb21wb25lbnQncyB1c2VyLXNwZWNpZmllZCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSAgICAge0F0bGFzfSAgICAgICAgIGF0bGFzICAgICAgICAgICAgIFRoZSBBdGxhcyBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5mbywgYXRsYXMpIHtcbiAgICB0aGlzLnR5cGUgPSBpbmZvLnR5cGVcbiAgICB0aGlzLmFsaWFzID0gaW5mby5hbGlhc1xuICAgIHRoaXMuYWxpYXNlcyA9IGluZm8uYWxpYXNlcyB8fCB7fVxuICAgIHRoaXMuQ29tcG9uZW50ID0gaW5mby5Db21wb25lbnRcblxuICAgIGlmICh0eXBlb2YgdGhpcy5Db21wb25lbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdGhpcy5Db21wb25lbnRcbiAgICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcihgQ29tcG9uZW50ICR7dGhpcy50eXBlfToke3RoaXMuYWxpYXN9IG11c3QgYmUgY2xhc3MsIG5vdCAke3R5cGV9YClcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY29tcG9uZW50IHJlY2VpdmVkIGFsbCB0aGUgYWxpYXNlcyBpdCByZXF1aXJlc1xuICAgIGNvbnN0IGFsaWFzZXMgPSB7XG4gICAgICBwcm92aWRlZDogT2JqZWN0LmtleXModGhpcy5hbGlhc2VzKSxcbiAgICAgIHJlcXVpcmVkOiB0aGlzLkNvbXBvbmVudC5yZXF1aXJlcyB8fCBbXSxcbiAgICB9XG4gICAgY29uc3QgbWlzc2luZyA9IGRpZmZlcmVuY2UoYWxpYXNlcy5yZXF1aXJlZCwgYWxpYXNlcy5wcm92aWRlZClcbiAgICBjb25zdCBleHRyYSA9IGRpZmZlcmVuY2UoYWxpYXNlcy5wcm92aWRlZCwgYWxpYXNlcy5yZXF1aXJlZClcblxuICAgIGlmIChtaXNzaW5nLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBNaXNzaW5nIGFsaWFzZXMgZm9yIGNvbXBvbmVudCAke3RoaXMuYWxpYXN9OiAke21pc3Npbmcuam9pbignLCAnKX1gKVxuICAgIH1cblxuICAgIGlmIChleHRyYS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcihgVW5uZWVkZWQgYWxpYXNlcyBmb3IgY29tcG9uZW50ICR7dGhpcy5hbGlhc306ICR7ZXh0cmEuam9pbignLCAnKX1gKVxuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IHRoaXMuQ29tcG9uZW50KHtcbiAgICAgIGF0bGFzLFxuICAgICAgbG9nOiBhdGxhcy5sb2cuY2hpbGQoeyBbdGhpcy50eXBlXTogdGhpcy5hbGlhcyB9KSxcbiAgICAgIGNvbmZpZzogZGVmYXVsdHMoaW5mby5jb25maWcsIHRoaXMuQ29tcG9uZW50LmRlZmF1bHRzKSxcbiAgICAgIGNvbXBvbmVudDogcmVzb2x2ZSxcbiAgICB9KVxuXG4gICAgLy8gU2F2ZSB0aGUgYWxpYXNlcyBmb3IgdGhpcyBjb21wb25lbnRcbiAgICB0aGlzLmNvbXBvbmVudDo6aGlkZGVuKCkuYWxpYXNlcyA9IHRoaXMuYWxpYXNlc1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmUobmFtZSkge1xuICBjb25zdCByZXNvbHZlZCA9IHRoaXM6OmhpZGRlbigpLmFsaWFzZXNbbmFtZV1cblxuICBpZiAoIXJlc29sdmVkKSB7XG4gICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBBbGlhcyBmb3IgJHtuYW1lfSBub3QgZGVmaW5lZGApXG4gIH1cblxuICBjb25zdCBbdHlwZV0gPSBuYW1lLnNwbGl0KCc6JylcbiAgLy8gVXNlIGEgcGx1cmFsIGZvcm0gb2YgdGhlIGNvbXBvbmVudCB0eXBlLCBpZS4sIGFjdGlvbiAtPiBhY3Rpb25zLCBzZXJ2aWNlIC0+IHNlcnZpY2VzIGV0Yy5cbiAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5hdGxhc1tgJHt0eXBlfXNgXVtyZXNvbHZlZF1cblxuICBpZiAoIWNvbXBvbmVudCkge1xuICAgIHRocm93IG5ldyBGcmFtZXdvcmtFcnJvcihgVW5hYmxlIHRvIGZpbmQgJHt0eXBlfSAke3Jlc29sdmVkfSBhbGlhc2VkIGFzICR7bmFtZX1gKVxuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG5leHBvcnQgZGVmYXVsdCBDb21wb25lbnRDb250YWluZXJcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudC1jb250YWluZXIubWpzIl0sIm5hbWVzIjpbIkNvbXBvbmVudENvbnRhaW5lciIsImNvbnN0cnVjdG9yIiwiaW5mbyIsImF0bGFzIiwidHlwZSIsImFsaWFzIiwiYWxpYXNlcyIsIkNvbXBvbmVudCIsInByb3ZpZGVkIiwiT2JqZWN0Iiwia2V5cyIsInJlcXVpcmVkIiwicmVxdWlyZXMiLCJtaXNzaW5nIiwiZXh0cmEiLCJsZW5ndGgiLCJqb2luIiwibG9nIiwidHJhY2UiLCJjb21wb25lbnQiLCJjb25maWciLCJkZWZhdWx0cyIsImNoaWxkIiwicmVzb2x2ZSIsIm5hbWUiLCJyZXNvbHZlZCIsInNwbGl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFVQSxNQUFNQSxrQkFBTixDQUF5QjtBQWF2QkMsY0FBWUMsSUFBWixFQUFrQkMsS0FBbEIsRUFBeUI7QUFBQTs7QUFDdkIsU0FBS0MsSUFBTCxHQUFZRixLQUFLRSxJQUFqQjtBQUNBLFNBQUtDLEtBQUwsR0FBYUgsS0FBS0csS0FBbEI7QUFDQSxTQUFLQyxPQUFMLEdBQWVKLEtBQUtJLE9BQUwsSUFBZ0IsRUFBL0I7QUFDQSxTQUFLQyxTQUFMLEdBQWlCTCxLQUFLSyxTQUF0Qjs7QUFFQSxRQUFJLE9BQU8sS0FBS0EsU0FBWixLQUEwQixVQUE5QixFQUEwQztBQUN4QyxZQUFNSCxPQUFPLE9BQU8sS0FBS0csU0FBekI7QUFDQSxZQUFNLDJCQUFvQixhQUFZLEtBQUtILElBQUssSUFBRyxLQUFLQyxLQUFNLHVCQUFzQkQsSUFBSyxFQUFuRixDQUFOO0FBQ0Q7O0FBR0QsVUFBTUUsVUFBVTtBQUNkRSxnQkFBVUMsT0FBT0MsSUFBUCxDQUFZLEtBQUtKLE9BQWpCLENBREk7QUFFZEssZ0JBQVUsS0FBS0osU0FBTCxDQUFlSyxRQUFmLElBQTJCO0FBRnZCLEtBQWhCO0FBSUEsVUFBTUMsVUFBVSx3QkFBV1AsUUFBUUssUUFBbkIsRUFBNkJMLFFBQVFFLFFBQXJDLENBQWhCO0FBQ0EsVUFBTU0sUUFBUSx3QkFBV1IsUUFBUUUsUUFBbkIsRUFBNkJGLFFBQVFLLFFBQXJDLENBQWQ7O0FBRUEsUUFBSUUsUUFBUUUsTUFBWixFQUFvQjtBQUNsQixZQUFNLDJCQUFvQixpQ0FBZ0MsS0FBS1YsS0FBTSxLQUFJUSxRQUFRRyxJQUFSLENBQWEsSUFBYixDQUFtQixFQUF0RixDQUFOO0FBQ0Q7O0FBRUQsUUFBSUYsTUFBTUMsTUFBVixFQUFrQjtBQUNoQixZQUFNLDJCQUFvQixrQ0FBaUMsS0FBS1YsS0FBTSxLQUFJUyxNQUFNRSxJQUFOLENBQVcsSUFBWCxDQUFpQixFQUFyRixDQUFOO0FBQ0Q7O0FBRURiLFVBQU1jLEdBQU4sQ0FBVUMsS0FBVixDQUFnQjtBQUNkQyxpQkFBVyxLQUFLZCxLQURGO0FBRWRlLGNBQVFsQixLQUFLa0IsTUFGQztBQUdkQyxnQkFBVSxLQUFLZCxTQUFMLENBQWVjO0FBSFgsS0FBaEIsRUFJRyxrQkFKSDtBQU1BLFNBQUtGLFNBQUwsR0FBaUIsSUFBSSxLQUFLWixTQUFULENBQW1CO0FBQ2xDSixXQURrQztBQUVsQ2MsV0FBS2QsTUFBTWMsR0FBTixDQUFVSyxLQUFWLENBQWdCO0FBQUUsU0FBQyxLQUFLbEIsSUFBTixHQUFhLEtBQUtDO0FBQXBCLE9BQWhCLENBRjZCO0FBR2xDZSxjQUFRLDBCQUFTbEIsS0FBS2tCLE1BQWQsRUFBc0IsS0FBS2IsU0FBTCxDQUFlYyxRQUFyQyxDQUgwQjtBQUlsQ0YsaUJBQVdJO0FBSnVCLEtBQW5CLENBQWpCO0FBUUEscUJBQUtKLFNBQUwsa0NBQXlCYixPQUF6QixHQUFtQyxLQUFLQSxPQUF4QztBQUNEOztBQXZEc0I7O0FBMER6QixTQUFTaUIsT0FBVCxDQUFpQkMsSUFBakIsRUFBdUI7QUFDckIsUUFBTUMsV0FBVywyQkFBZW5CLE9BQWYsQ0FBdUJrQixJQUF2QixDQUFqQjs7QUFFQSxNQUFJLENBQUNDLFFBQUwsRUFBZTtBQUNiLFVBQU0sMkJBQW9CLGFBQVlELElBQUssY0FBckMsQ0FBTjtBQUNEOztBQUVELFFBQU0sQ0FBQ3BCLElBQUQsSUFBU29CLEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBQWY7QUFFQSxRQUFNUCxZQUFZLEtBQUtoQixLQUFMLENBQVksR0FBRUMsSUFBSyxHQUFuQixFQUF1QnFCLFFBQXZCLENBQWxCOztBQUVBLE1BQUksQ0FBQ04sU0FBTCxFQUFnQjtBQUNkLFVBQU0sMkJBQW9CLGtCQUFpQmYsSUFBSyxJQUFHcUIsUUFBUyxlQUFjRCxJQUFLLEVBQXpFLENBQU47QUFDRDs7QUFFRCxTQUFPTCxTQUFQO0FBQ0Q7O2VBRWNuQixrQiIsImZpbGUiOiJjb21wb25lbnQtY29udGFpbmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhpZGRlbiBmcm9tICdsb2NhbC1zY29wZS9jcmVhdGUnXG5pbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5pbXBvcnQge1xuICBkZWZhdWx0c0RlZXAgYXMgZGVmYXVsdHMsXG4gIGRpZmZlcmVuY2UsXG59IGZyb20gJ2xvZGFzaCdcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhvbGRzIGFuZCBtYW5hZ2VzIGEgY29tcG9uZW50XG4gKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgQ29tcG9uZW50Q29udGFpbmVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgY29udGFpbmVyIGZvciBhIGNvbXBvbmVudFxuICAgKlxuICAgKiBAcGFyYW0gICAgIHtPYmplY3R9ICAgICAgICBpbmZvICAgICAgICAgICAgICBDb21wb25lbnQgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgICAgaW5mby50eXBlICAgICAgICAgVGhlIGNvbXBvbmVudCdzIHR5cGUgKHNlcnZpY2UsIGhvb2ssIGFjdGlvbilcbiAgICogQHBhcmFtICAgICB7U3RyaW5nfSAgICAgICAgaW5mby5hbGlhcyAgICAgICAgVGhlIGNvbXBvbmVudCdzIHVzZXItc3BlY2lmaWVkIG5hbWUvYWxpYXNcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICAgICAgaW5mby5hbGlhc2VzICAgICAgQmluZGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1c2VyIHRvIGxvY2F0ZSBvdGhlclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzXG4gICAqIEBwYXJhbSAgICAge0NsYXNzfSAgICAgICAgIGluZm8uQ29tcG9uZW50ICAgIFRoZSBjb21wb25lbnQgY2xhc3NcbiAgICogQHBhcmFtICAgICB7T2JqZWN0fSAgICAgICAgaW5mby5jb25maWcgICAgICAgVGhlIGNvbXBvbmVudCdzIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICAgICB7QXRsYXN9ICAgICAgICAgYXRsYXMgICAgICAgICAgICAgVGhlIEF0bGFzIGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpbmZvLCBhdGxhcykge1xuICAgIHRoaXMudHlwZSA9IGluZm8udHlwZVxuICAgIHRoaXMuYWxpYXMgPSBpbmZvLmFsaWFzXG4gICAgdGhpcy5hbGlhc2VzID0gaW5mby5hbGlhc2VzIHx8IHt9XG4gICAgdGhpcy5Db21wb25lbnQgPSBpbmZvLkNvbXBvbmVudFxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLkNvbXBvbmVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVvZiB0aGlzLkNvbXBvbmVudFxuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBDb21wb25lbnQgJHt0aGlzLnR5cGV9OiR7dGhpcy5hbGlhc30gbXVzdCBiZSBjbGFzcywgbm90ICR7dHlwZX1gKVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBjb21wb25lbnQgcmVjZWl2ZWQgYWxsIHRoZSBhbGlhc2VzIGl0IHJlcXVpcmVzXG4gICAgY29uc3QgYWxpYXNlcyA9IHtcbiAgICAgIHByb3ZpZGVkOiBPYmplY3Qua2V5cyh0aGlzLmFsaWFzZXMpLFxuICAgICAgcmVxdWlyZWQ6IHRoaXMuQ29tcG9uZW50LnJlcXVpcmVzIHx8IFtdLFxuICAgIH1cbiAgICBjb25zdCBtaXNzaW5nID0gZGlmZmVyZW5jZShhbGlhc2VzLnJlcXVpcmVkLCBhbGlhc2VzLnByb3ZpZGVkKVxuICAgIGNvbnN0IGV4dHJhID0gZGlmZmVyZW5jZShhbGlhc2VzLnByb3ZpZGVkLCBhbGlhc2VzLnJlcXVpcmVkKVxuXG4gICAgaWYgKG1pc3NpbmcubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoYE1pc3NpbmcgYWxpYXNlcyBmb3IgY29tcG9uZW50ICR7dGhpcy5hbGlhc306ICR7bWlzc2luZy5qb2luKCcsICcpfWApXG4gICAgfVxuXG4gICAgaWYgKGV4dHJhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBVbm5lZWRlZCBhbGlhc2VzIGZvciBjb21wb25lbnQgJHt0aGlzLmFsaWFzfTogJHtleHRyYS5qb2luKCcsICcpfWApXG4gICAgfVxuXG4gICAgYXRsYXMubG9nLnRyYWNlKHtcbiAgICAgIGNvbXBvbmVudDogdGhpcy5hbGlhcyxcbiAgICAgIGNvbmZpZzogaW5mby5jb25maWcsXG4gICAgICBkZWZhdWx0czogdGhpcy5Db21wb25lbnQuZGVmYXVsdHMsXG4gICAgfSwgJ2NvbXBvbmVudDpjb25maWcnKVxuXG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgdGhpcy5Db21wb25lbnQoe1xuICAgICAgYXRsYXMsXG4gICAgICBsb2c6IGF0bGFzLmxvZy5jaGlsZCh7IFt0aGlzLnR5cGVdOiB0aGlzLmFsaWFzIH0pLFxuICAgICAgY29uZmlnOiBkZWZhdWx0cyhpbmZvLmNvbmZpZywgdGhpcy5Db21wb25lbnQuZGVmYXVsdHMpLFxuICAgICAgY29tcG9uZW50OiByZXNvbHZlLFxuICAgIH0pXG5cbiAgICAvLyBTYXZlIHRoZSBhbGlhc2VzIGZvciB0aGlzIGNvbXBvbmVudFxuICAgIHRoaXMuY29tcG9uZW50OjpoaWRkZW4oKS5hbGlhc2VzID0gdGhpcy5hbGlhc2VzXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZShuYW1lKSB7XG4gIGNvbnN0IHJlc29sdmVkID0gdGhpczo6aGlkZGVuKCkuYWxpYXNlc1tuYW1lXVxuXG4gIGlmICghcmVzb2x2ZWQpIHtcbiAgICB0aHJvdyBuZXcgRnJhbWV3b3JrRXJyb3IoYEFsaWFzIGZvciAke25hbWV9IG5vdCBkZWZpbmVkYClcbiAgfVxuXG4gIGNvbnN0IFt0eXBlXSA9IG5hbWUuc3BsaXQoJzonKVxuICAvLyBVc2UgYSBwbHVyYWwgZm9ybSBvZiB0aGUgY29tcG9uZW50IHR5cGUsIGllLiwgYWN0aW9uIC0+IGFjdGlvbnMsIHNlcnZpY2UgLT4gc2VydmljZXMgZXRjLlxuICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmF0bGFzW2Ake3R5cGV9c2BdW3Jlc29sdmVkXVxuXG4gIGlmICghY29tcG9uZW50KSB7XG4gICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBVbmFibGUgdG8gZmluZCAke3R5cGV9ICR7cmVzb2x2ZWR9IGFsaWFzZWQgYXMgJHtuYW1lfWApXG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBvbmVudENvbnRhaW5lclxuIl19

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

catalog.set(info.alias, new _.ComponentContainer(info, this));
this.log.debug({
this.log.trace({
[info.type]: info.alias

@@ -28,2 +28,2 @@ }, `${info.type}:add`);

exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudC5tanMiXSwibmFtZXMiOlsiY29tcG9uZW50IiwiaW5mbyIsImNhdGFsb2ciLCJoYXMiLCJhbGlhcyIsInR5cGUiLCJjb25maWciLCJzZXQiLCJsb2ciLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQWNBLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCQyxPQUF6QixFQUFrQztBQUVoQyxNQUFJQSxRQUFRQyxHQUFSLENBQVlGLEtBQUtHLEtBQWpCLENBQUosRUFBNkI7QUFDM0IsVUFBTSwyQkFBb0Isd0JBQXVCSCxLQUFLRyxLQUFNLEtBQUlILEtBQUtJLElBQUssZ0JBQXBFLENBQU47QUFDRDs7QUFJREosT0FBS0ssTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBYSxHQUFFTCxLQUFLSSxJQUFLLEdBQXpCLEVBQTZCSixLQUFLRyxLQUFsQyxDQUFkO0FBRUFGLFVBQVFLLEdBQVIsQ0FBWU4sS0FBS0csS0FBakIsRUFBd0IseUJBQXVCSCxJQUF2QixFQUE2QixJQUE3QixDQUF4QjtBQUNBLE9BQUtPLEdBQUwsQ0FBU0MsS0FBVCxDQUFlO0FBQUUsS0FBQ1IsS0FBS0ksSUFBTixHQUFhSixLQUFLRztBQUFwQixHQUFmLEVBQTZDLEdBQUVILEtBQUtJLElBQUssTUFBekQ7QUFFQSxTQUFPLElBQVA7QUFDRDs7ZUFFY0wsUyIsImZpbGUiOiJjb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5pbXBvcnQgeyBDb21wb25lbnRDb250YWluZXIgfSBmcm9tICcuJ1xuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY29tcG9uZW50IGludG8gdGhlIGdpdmVuIGNhdGFsb2dcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBpbmZvICAgICAgICAgICAgICBDb21wb25lbnQgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgaW5mby50eXBlICAgICAgICAgVGhlIGNvbXBvbmVudCdzIHR5cGUgKHNlcnZpY2UsIGhvb2ssIGFjdGlvbilcbiAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgaW5mby5hbGlhcyAgICAgICAgVGhlIGNvbXBvbmVudCdzIHVzZXItc3BlY2lmaWVkIG5hbWUvYWxpYXNcbiAqIEBwYXJhbSAgICAge0NsYXNzfSAgICAgaW5mby5Db21wb25lbnQgICAgVGhlIGNvbXBvbmVudCBjbGFzc1xuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBpbmZvLmFsaWFzZXMgICAgICBCaW5kaW5nIGluZm9ybWF0aW9uIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICogQHBhcmFtICAgICB7TWFwfSAgICAgICBjYXRhbG9nICAgICAgICAgICBUaGUgY2F0YWxvZyB0byB3aGljaCB0byBzYXZlIHRoZSBjb21wb25lbnRcbiAqIEByZXR1cm4gICAge3RoaXN9XG4gKi9cbmZ1bmN0aW9uIGNvbXBvbmVudChpbmZvLCBjYXRhbG9nKSB7XG4gIC8vIFNhZmV0eSBjaGVja3MgZmlyc3RcbiAgaWYgKGNhdGFsb2cuaGFzKGluZm8uYWxpYXMpKSB7XG4gICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBDb21wb25lbnQgd2l0aCBhbGlhcyAke2luZm8uYWxpYXN9ICgke2luZm8udHlwZX0pIGFscmVhZHkgdXNlZGApXG4gIH1cblxuICAvLyBQdWxsIHVzZXItcHJvdmlkZWQgY29uZmlnIGZvciB0aGlzIGNvbXBvbmVudFxuICAvLyBVc2UgYSBwbHVyYWwgZm9ybSBvZiB0aGUgY29tcG9uZW50IHR5cGUsIGllLiwgYWN0aW9uIC0+IGFjdGlvbnMsIHNlcnZpY2UgLT4gc2VydmljZXMgZXRjLlxuICBpbmZvLmNvbmZpZyA9IHRoaXMuY29uZmlnW2Ake2luZm8udHlwZX1zYF1baW5mby5hbGlhc11cblxuICBjYXRhbG9nLnNldChpbmZvLmFsaWFzLCBuZXcgQ29tcG9uZW50Q29udGFpbmVyKGluZm8sIHRoaXMpKVxuICB0aGlzLmxvZy5kZWJ1Zyh7IFtpbmZvLnR5cGVdOiBpbmZvLmFsaWFzIH0sIGAke2luZm8udHlwZX06YWRkYClcblxuICByZXR1cm4gdGhpc1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudC5tanMiXSwibmFtZXMiOlsiY29tcG9uZW50IiwiaW5mbyIsImNhdGFsb2ciLCJoYXMiLCJhbGlhcyIsInR5cGUiLCJjb25maWciLCJzZXQiLCJsb2ciLCJ0cmFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQWNBLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCQyxPQUF6QixFQUFrQztBQUVoQyxNQUFJQSxRQUFRQyxHQUFSLENBQVlGLEtBQUtHLEtBQWpCLENBQUosRUFBNkI7QUFDM0IsVUFBTSwyQkFBb0Isd0JBQXVCSCxLQUFLRyxLQUFNLEtBQUlILEtBQUtJLElBQUssZ0JBQXBFLENBQU47QUFDRDs7QUFJREosT0FBS0ssTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBYSxHQUFFTCxLQUFLSSxJQUFLLEdBQXpCLEVBQTZCSixLQUFLRyxLQUFsQyxDQUFkO0FBRUFGLFVBQVFLLEdBQVIsQ0FBWU4sS0FBS0csS0FBakIsRUFBd0IseUJBQXVCSCxJQUF2QixFQUE2QixJQUE3QixDQUF4QjtBQUNBLE9BQUtPLEdBQUwsQ0FBU0MsS0FBVCxDQUFlO0FBQUUsS0FBQ1IsS0FBS0ksSUFBTixHQUFhSixLQUFLRztBQUFwQixHQUFmLEVBQTZDLEdBQUVILEtBQUtJLElBQUssTUFBekQ7QUFFQSxTQUFPLElBQVA7QUFDRDs7ZUFFY0wsUyIsImZpbGUiOiJjb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmFtZXdvcmtFcnJvciB9IGZyb20gJ0BhdGxhcy5qcy9lcnJvcnMnXG5pbXBvcnQgeyBDb21wb25lbnRDb250YWluZXIgfSBmcm9tICcuJ1xuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY29tcG9uZW50IGludG8gdGhlIGdpdmVuIGNhdGFsb2dcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBpbmZvICAgICAgICAgICAgICBDb21wb25lbnQgaW5mb3JtYXRpb25cbiAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgaW5mby50eXBlICAgICAgICAgVGhlIGNvbXBvbmVudCdzIHR5cGUgKHNlcnZpY2UsIGhvb2ssIGFjdGlvbilcbiAqIEBwYXJhbSAgICAge1N0cmluZ30gICAgaW5mby5hbGlhcyAgICAgICAgVGhlIGNvbXBvbmVudCdzIHVzZXItc3BlY2lmaWVkIG5hbWUvYWxpYXNcbiAqIEBwYXJhbSAgICAge0NsYXNzfSAgICAgaW5mby5Db21wb25lbnQgICAgVGhlIGNvbXBvbmVudCBjbGFzc1xuICogQHBhcmFtICAgICB7T2JqZWN0fSAgICBpbmZvLmFsaWFzZXMgICAgICBCaW5kaW5nIGluZm9ybWF0aW9uIHRvIG90aGVyIGRlZmluZWQgY29tcG9uZW50c1xuICogQHBhcmFtICAgICB7TWFwfSAgICAgICBjYXRhbG9nICAgICAgICAgICBUaGUgY2F0YWxvZyB0byB3aGljaCB0byBzYXZlIHRoZSBjb21wb25lbnRcbiAqIEByZXR1cm4gICAge3RoaXN9XG4gKi9cbmZ1bmN0aW9uIGNvbXBvbmVudChpbmZvLCBjYXRhbG9nKSB7XG4gIC8vIFNhZmV0eSBjaGVja3MgZmlyc3RcbiAgaWYgKGNhdGFsb2cuaGFzKGluZm8uYWxpYXMpKSB7XG4gICAgdGhyb3cgbmV3IEZyYW1ld29ya0Vycm9yKGBDb21wb25lbnQgd2l0aCBhbGlhcyAke2luZm8uYWxpYXN9ICgke2luZm8udHlwZX0pIGFscmVhZHkgdXNlZGApXG4gIH1cblxuICAvLyBQdWxsIHVzZXItcHJvdmlkZWQgY29uZmlnIGZvciB0aGlzIGNvbXBvbmVudFxuICAvLyBVc2UgYSBwbHVyYWwgZm9ybSBvZiB0aGUgY29tcG9uZW50IHR5cGUsIGllLiwgYWN0aW9uIC0+IGFjdGlvbnMsIHNlcnZpY2UgLT4gc2VydmljZXMgZXRjLlxuICBpbmZvLmNvbmZpZyA9IHRoaXMuY29uZmlnW2Ake2luZm8udHlwZX1zYF1baW5mby5hbGlhc11cblxuICBjYXRhbG9nLnNldChpbmZvLmFsaWFzLCBuZXcgQ29tcG9uZW50Q29udGFpbmVyKGluZm8sIHRoaXMpKVxuICB0aGlzLmxvZy50cmFjZSh7IFtpbmZvLnR5cGVdOiBpbmZvLmFsaWFzIH0sIGAke2luZm8udHlwZX06YWRkYClcblxuICByZXR1cm4gdGhpc1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRcbiJdfQ==

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc