node-backpack 0.0.557 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # node-backpack
1
+ # node-bundle
2
+
3
+ > **NOTE:** This tool should only be used on packages in this repository,
4
+ > and is not intended for external usage.
2
5
 
3
6
  You can use this tool to help create bundled packages with minimal dependencies and appropriate license attributions.
4
7
 
@@ -80,14 +83,14 @@ only CLI applications.
80
83
  Run the tool from the root directory of your package.
81
84
 
82
85
  ```console
83
- $ node-backpack --help
84
- Usage: node-backpack COMMAND
86
+ $ node-bundle --help
87
+ Usage: node-bundle COMMAND
85
88
 
86
89
  Commands:
87
- node-backpack validate Validate the package is ready for bundling
88
- node-backpack write Write the bundled version of the project to a temp
90
+ node-bundle validate Validate the package is ready for bundling
91
+ node-bundle write Write the bundled version of the project to a temp
89
92
  directory
90
- node-backpack pack Write the bundle and create the tarball
93
+ node-bundle pack Write the bundle and create the tarball
91
94
 
92
95
  Options:
93
96
  --entrypoint List of entrypoints to bundle [array]
@@ -110,7 +113,7 @@ Options:
110
113
  You can also use the programmatic access:
111
114
 
112
115
  ```ts
113
- import { Bundle } from 'node-backpack';
116
+ import { Bundle } from '@aws-cdk/node-bundle';
114
117
 
115
118
  const bundle = new Bundle({
116
119
  packageDir: process.cwd(),
@@ -124,15 +127,15 @@ bundle.pack();
124
127
 
125
128
  We recommend to integrate this tool in the following way:
126
129
 
127
- 1. Add a `node-backpack validate` command as a post compile step.
128
- 2. Set your packaging command to `node-backpack pack`.
130
+ 1. Add a `node-bundle validate` command as a post compile step.
131
+ 2. Set your packaging command to `node-bundle pack`.
129
132
 
130
133
  This way, you can validate local dev builds not to break any functionality needed for bundling.
131
- In addition, developers can run `node-backpack validate --fix` to automatically fix any (fixable) violations
134
+ In addition, developers can run `node-bundle validate --fix` to automatically fix any (fixable) violations
132
135
  and commit that to source control.
133
136
 
134
137
  For example, if a dependency is added but the attribution file has not been re-generated,
135
- you can use `node-backpack validate` to catch this, and regenerate it with `node-backpack validate --fix`.
138
+ you can use `node-bundle validate` to catch this, and regenerate it with `node-bundle validate --fix`.
136
139
 
137
140
  ## Take into account
138
141
 
@@ -148,13 +151,4 @@ Note that this will balloon up the package size significantly.
148
151
  If you are bundling a CLI application that also has top level exports, we suggest to extract
149
152
  the CLI functionality into a function, and add this function as an export to `index.js`.
150
153
 
151
- > See [aws-cdk](https://github.com/aws/aws-cdk/blob/master/packages/aws-cdk/bin/cdk.ts) as an example.
152
-
153
- ## Security
154
-
155
- See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
156
-
157
- ## License
158
-
159
- This project is licensed under the Apache-2.0 License.
160
-
154
+ > See [aws-cdk](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/bin/cdk) as an example.
@@ -157,4 +157,4 @@ class Attributions {
157
157
  }
158
158
  }
159
159
  exports.Attributions = Attributions;
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2F0dHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvX2F0dHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFFL0IscUNBQWlDO0FBRWpDLDJDQUF5RTtBQUd6RSxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUFDO0FBdUNyRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQVl2QixZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLG1FQUFtRTtRQUNuRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMs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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ25HLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWxHLG1FQUFtRTtZQUNuRSx5QkFBeUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFL0csWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxHQUFHO2dCQUNaLEdBQUcsRUFBRSxpQ0FBaUMsR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNqRSxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUVGO0FBMUtELG9DQTBLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUluZm8gfSBmcm9tICdsaWNlbnNlLWNoZWNrZXInO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuL19zaGVsbCc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tICcuL2J1bmRsZSc7XG5pbXBvcnQgeyBWaW9sYXRpb24sIFZpb2xhdGlvblR5cGUsIFZpb2xhdGlvbnNSZXBvcnQgfSBmcm9tICcuL3Zpb2xhdGlvbic7XG5cblxuY29uc3QgQVRUUklCVVRJT05fU0VQQVJBVE9SID0gJ1xcbi0tLS0tLS0tLS0tLS0tLS1cXG4nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBBdHRyaWJ1dGlvbnNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0aW9uc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIHJvb3QgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IFBhY2thZ2VbXTtcbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgZGlyZWN0b3J5IHVuZGVyd2hpY2ggYWxsIGRlcGVuZGVuY2llcyBsaXZlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzUm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgbm90aWNlIGZpbGUgdG8gY3JlYXRlZCAvIHZhbGlkYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbG93ZWQgbGljZW5zZXMuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogRGVwZW5kZW5jaWVzIG1hdGNoaW5nIHRoaXMgcGF0dGVybiB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gYXR0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYEF0dHJpYnV0aW9uc2AgcmVwcmVzZW50cyBhbiBhdHRyaWJ1dGlvbnMgZmlsZSBjb250YWluaW5nIHRoaXJkLXBhcnR5IGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdHRyaWJ1dGlvbnMge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBQYWNrYWdlW107XG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZExpY2Vuc2VzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmNpZXNSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQXR0cmlidXRpb25zUHJvcHMpIHtcbiAgICB0aGlzLnBhY2thZ2VEaXIgPSBwcm9wcy5wYWNrYWdlRGlyO1xuICAgIHRoaXMucGFja2FnZU5hbWUgPSBwcm9wcy5wYWNrYWdlTmFtZTtcbiAgICB0aGlzLmZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgcHJvcHMuZmlsZVBhdGgpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gcHJvcHMuZGVwZW5kZW5jaWVzLmZpbHRlcihkID0+ICFwcm9wcy5leGNsdWRlIHx8ICFuZXcgUmVnRXhwKHByb3BzLmV4Y2x1ZGUpLnRlc3QoZC5uYW1lKSk7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMubWFwKGwgPT4gbC50b0xvd2VyQ2FzZSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llc1Jvb3QgPSBwcm9wcy5kZXBlbmRlbmNpZXNSb290O1xuXG4gICAgLy8gd2l0aG91dCB0aGUgZ2VuZXJhdGVkIG5vdGljZSBjb250ZW50LCB0aGlzIG9iamVjdCBpcyBwcmV0dHkgbXVjaFxuICAgIC8vIHVzZWxlc3MsIHNvIGxldHMgZ2VuZXJhdGUgdGhvc2Ugb2YgdGhlIGJhdC5cbiAgICB0aGlzLmF0dHJpYnV0aW9ucyA9IHRoaXMuZ2VuZXJhdGVBdHRyaWJ1dGlvbnMoKTtcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLnJlbmRlcih0aGlzLmF0dHJpYnV0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGN1cnJlbnQgbm90aWNlIGZpbGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG5ldmVyIHRocm93cy4gVGhlIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5zcGVjdGluZyB0aGUgcmVwb3J0IHJldHVybmVkIGFuZCBhY3QgYWNjb3JkaW5hZ2x5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZpb2xhdGlvbnNSZXBvcnQge1xuXG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCByZWxOb3RpY2VQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLnBhY2thZ2VEaXIsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZml4ID0gKCkgPT4gdGhpcy5mbHVzaCgpO1xuXG4gICAgY29uc3QgbWlzc2luZyA9ICFmcy5leGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG1pc3NpbmcgPyB1bmRlZmluZWQgOiBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBjb25zdCBvdXRkYXRlZCA9IGF0dHJpYnV0aW9ucyAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0aW9ucyAhPT0gdGhpcy5jb250ZW50O1xuXG4gICAgaWYgKG1pc3NpbmcpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTUlTU0lOR19OT1RJQ0UsIG1lc3NhZ2U6IGAke3JlbE5vdGljZVBhdGh9IGlzIG1pc3NpbmdgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRhdGVkKSB7XG4gICAgICB2aW9sYXRpb25zLnB1c2goeyB0eXBlOiBWaW9sYXRpb25UeXBlLk9VVERBVEVEX0FUVFJJQlVUSU9OUywgbWVzc2FnZTogYCR7cmVsTm90aWNlUGF0aH0gaXMgb3V0ZGF0ZWRgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZExpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5hbGxvd2VkTGljZW5zZXMuaW5jbHVkZXMoYS5saWNlbnNlc1swXS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAoYSA9PiAoeyB0eXBlOiBWaW9sYXRpb25UeXBlLklOVkFMSURfTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBhbiBpbnZhbGlkIGxpY2Vuc2U6ICR7YS5saWNlbnNlc1swXX1gIH0pKTtcblxuICAgIGNvbnN0IG5vTGljZW5zZTogVmlvbGF0aW9uW10gPSBBcnJheS5mcm9tKHRoaXMuYXR0cmlidXRpb25zLnZhbHVlcygpKVxuICAgICAgLmZpbHRlcihhID0+IGEubGljZW5zZXMubGVuZ3RoID09PSAwKVxuICAgICAgLm1hcChhID0+ICh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTk9fTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBubyBsaWNlbnNlYCB9KSk7XG5cbiAgICBjb25zdCBtdWx0aUxpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA+IDEpXG4gICAgICAubWFwKGEgPT4gKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5NVUxUSVBMRV9MSUNFTlNFLCBtZXNzYWdlOiBgRGVwZW5kZW5jeSAke2EucGFja2FnZX0gaGFzIG11bHRpcGxlIGxpY2Vuc2VzOiAke2EubGljZW5zZXN9YCB9KSk7XG5cbiAgICB2aW9sYXRpb25zLnB1c2goLi4uaW52YWxpZExpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5ub0xpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5tdWx0aUxpY2Vuc2UpO1xuXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHZpb2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHRoZSBnZW5lcmF0ZWQgbm90aWNlIGZpbGUgdG8gZGlzay5cbiAgICovXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZmlsZVBhdGgsIHRoaXMuY29udGVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcihhdHRyaWJ1dGlvbnM6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPik6IHN0cmluZyB7XG5cbiAgICBjb25zdCBjb250ZW50ID0gW107XG5cbiAgICBpZiAoYXR0cmlidXRpb25zLnNpemUgPiAwKSB7XG4gICAgICBjb250ZW50LnB1c2goYFRoZSAke3RoaXMucGFja2FnZU5hbWV9IHBhY2thZ2UgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBzb2Z0d2FyZS9saWNlbnNpbmc6YCk7XG4gICAgICBjb250ZW50LnB1c2goJycpO1xuICAgIH1cblxuICAgIC8vIHNvcnQgdGhlIGF0dHJpYnV0aW9ucyBzbyB0aGUgZmlsZSBkb2Vzbid0IGNoYW5nZSBkdWUgdG8gb3JkZXJpbmcgaXNzdWVzXG4gICAgY29uc3Qgb3JkZXJlZCA9IEFycmF5LmZyb20oYXR0cmlidXRpb25zLnZhbHVlcygpKS5zb3J0KChhMSwgYTIpID0+IGExLnBhY2thZ2UubG9jYWxlQ29tcGFyZShhMi5wYWNrYWdlKSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHIgb2Ygb3JkZXJlZCkge1xuICAgICAgY29udGVudC5wdXNoKGAqKiAke2F0dHIucGFja2FnZX0gLSAke2F0dHIudXJsfSB8ICR7YXR0ci5saWNlbnNlc1swXX1gKTtcblxuICAgICAgLy8gcHJlZmVyIG5vdGljZSBvdmVyIGxpY2Vuc2VcbiAgICAgIGlmIChhdHRyLm5vdGljZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubm90aWNlVGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKGF0dHIubGljZW5zZVRleHQpIHtcbiAgICAgICAgY29udGVudC5wdXNoKGF0dHIubGljZW5zZVRleHQpO1xuICAgICAgfVxuICAgICAgY29udGVudC5wdXNoKEFUVFJJQlVUSU9OX1NFUEFSQVRPUik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnRcbiAgICAgIC8vIHNpbmNlIHdlIGFyZSBlbWJlZGRpbmcgZXh0ZXJuYWwgZmlsZXMsIHRob3NlIGNhbiBkaWZmZXJlbnQgbGluZVxuICAgICAgLy8gZW5kaW5ncywgc28gd2Ugc3RhbmRhcmRpemUgdG8gTEYuXG4gICAgICAubWFwKGwgPT4gbC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXR0cmlidXRpb25zKCk6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPiB7XG5cbiAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3QgcGtnID0gKGQ6IFBhY2thZ2UpID0+IGAke2QubmFtZX1AJHtkLnZlcnNpb259YDtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gcGtnKGQpKTtcblxuICAgIGZ1bmN0aW9uIGZldGNoSW5mb3MoX2N3ZDogc3RyaW5nLCBfcGFja2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ2xpY2Vuc2UtY2hlY2tlci9iaW4vbGljZW5zZS1jaGVja2VyJyl9IC0tanNvbiAtLXBhY2thZ2VzIFwiJHtfcGFja2FnZXMuam9pbignOycpfVwiYDtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHNoZWxsKGNvbW1hbmQsIHsgY3dkOiBfY3dkLCBxdWlldDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgcnVuIGEgZ2xvYmFsIGNvbW1hbmQgdG8gZmV0Y2ggYXMgbXVjaCBpbmZvcm1hdGlvbiBpbiBvbmUgc2hvdFxuICAgIGNvbnN0IGluZm9zID0gZmV0Y2hJbmZvcyh0aGlzLmRlcGVuZGVuY2llc1Jvb3QsIHBhY2thZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBwa2coZGVwKTtcblxuICAgICAgLy8gc29tZXRpbWVzIHRoZSBkZXBlbmRlbmN5IG1pZ2h0IG5vdCBleGlzdCBmcm9tIGZldGNoaW5nIGluZm9ybWF0aW9uIGdsb2JhbGx5LFxuICAgICAgLy8gc28gd2UgdHJ5IGZldGNoaW5nIGEgY29uY3JldGUgcGFja2FnZS4gdGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIHdoZW5cbiAgICAgIC8vIHR3byBkaWZmZXJlbnQgbWFqb3IgdmVyc2lvbnMgZXhpc3Qgb2YgdGhlIHNhbWUgZGVwZW5kZW5jeS5cbiAgICAgIGNvbnN0IGluZm86IE1vZHVsZUluZm8gPSBpbmZvc1trZXldID8/IGZldGNoSW5mb3MoZGVwLnBhdGgsIFtwa2coZGVwKV0pW2tleV07XG5cbiAgICAgIGlmICghaW5mbykge1xuICAgICAgICAvLyBtYWtlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvci5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yICR7a2V5fSAoJHtkZXAucGF0aH0pYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdGljZVRleHQgPSBpbmZvLm5vdGljZUZpbGUgPyBmcy5yZWFkRmlsZVN5bmMoaW5mby5ub3RpY2VGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24sIHRoZSBsaWNlbnNlLWNoZWNrZXIgcGFja2FnZSBmYWxscyBiYWNrIHRvIHRoZSBSRUFETUUubWQgZmlsZSBvZiB0aGUgcGFja2FnZSBmb3IgbGljZW5zZVxuICAgICAgLy8gdGV4dC4gdGhpcyBzZWVtcyBzdHJhbmdlLCBkaXNhYmxpbmcgdGhhdCBmb3Igbm93LlxuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZnbGFzcy9saWNlbnNlLWNoZWNrZXIvYmxvYi9tYXN0ZXIvbGliL2xpY2Vuc2UtZmlsZXMuanMjTDlcbiAgICAgIC8vIG5vdGUgdGhhdCBhIG5vbiBleGlzdGluZyBsaWNlbnNlIGZpbGUgaXMgb2sgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSB0eXBlIGNvdWxkIGJlIGV4dHJhY3RlZC5cbiAgICAgIGNvbnN0IGxpY2Vuc2VGaWxlID0gaW5mby5saWNlbnNlRmlsZT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLm1kJykgPyB1bmRlZmluZWQgOiBpbmZvLmxpY2Vuc2VGaWxlO1xuICAgICAgY29uc3QgbGljZW5zZVRleHQgPSBsaWNlbnNlRmlsZSA/IGZzLnJlYWRGaWxlU3luYyhsaWNlbnNlRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gdGhlIGxpY2Vuc2VzIGtleSBjb21lcyBpbiBkaWZmZXJlbnQgdHlwZXMgYnV0IHdlIGNvbnZlcnQgaXQgaGVyZVxuICAgICAgLy8gdG8gYWx3YXlzIGJlIGFuIGFycmF5LlxuICAgICAgY29uc3QgbGljZW5zZXMgPSAhaW5mby5saWNlbnNlcyA/IHVuZGVmaW5lZCA6IChBcnJheS5pc0FycmF5KGluZm8ubGljZW5zZXMpID8gaW5mby5saWNlbnNlcyA6IFtpbmZvLmxpY2Vuc2VzXSk7XG5cbiAgICAgIGF0dHJpYnV0aW9ucy5zZXQoa2V5LCB7XG4gICAgICAgIHBhY2thZ2U6IGtleSxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvJHtkZXAubmFtZX0vdi8ke2RlcC52ZXJzaW9ufWAsXG4gICAgICAgIGxpY2Vuc2VzOiBsaWNlbnNlcyA/PyBbXSxcbiAgICAgICAgbGljZW5zZVRleHQsXG4gICAgICAgIG5vdGljZVRleHQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRpb25zO1xuICB9XG5cbn1cblxuLyoqXG4gKiBBdHRyaWJ1dGlvbiBvZiBhIHNwZWNpZmljIGRlcGVuZGVuY3kuXG4gKi9cbmludGVyZmFjZSBBdHRyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBBdHRyaWJ1dGVkIHBhY2thZ2UgKG5hbWUgKyB2ZXJzaW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZTogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIHRvIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2VzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgc29tZSBwYWNrYWdlcyB3aWxsIG1heSBoYXZlIG11bHRpcGxlIGxpY2Vuc2VzLFxuICAgKiB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBhcnJheS4gSW4gc3VjaCBjYXNlcywgdGhlIGxpY2Vuc2VcbiAgICogdmFsaWRhdGlvbiB3aWxsIGZhaWwgc2luY2Ugd2UgY3VycmVudGx5IGRpc2FsbG93IHRoaXMuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQYWNrYWdlIGxpY2Vuc2UgY29udGVudC5cbiAgICpcbiAgICogSW4gY2FzZSBhIHBhY2thZ2UgaGFzIG11bHRpcGxlIGxpY2Vuc2VzLCB0aGlzIHdpbGxcbiAgICogY29udGFpbi4uLm9uZSBvZiB0aGVtLiBJdCBjdXJyZW50bHkgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICogb25lIHNpbmNlIGl0IHdpbGwgbm90IHBhc3MgdmFsaWRhdGlvbiBhbnl3YXkuXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlVGV4dD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBhY2thZ2Ugbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90aWNlVGV4dD86IHN0cmluZztcbn1cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2F0dHJpYnV0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvX2F0dHJpYnV0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFFL0IscUNBQWlDO0FBR2pDLDJDQUE4RDtBQUU5RCxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUFDO0FBdUNyRDs7R0FFRztBQUNILE1BQWEsWUFBWTtJQVd2QixZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLG1FQUFtRTtRQUNuRSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMs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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ25HLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRWxHLG1FQUFtRTtZQUNuRSx5QkFBeUI7WUFDekIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFL0csWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxHQUFHO2dCQUNaLEdBQUcsRUFBRSxpQ0FBaUMsR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFO2dCQUNqRSxRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBcEtELG9DQW9LQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IE1vZHVsZUluZm8gfSBmcm9tICdsaWNlbnNlLWNoZWNrZXInO1xuaW1wb3J0IHsgc2hlbGwgfSBmcm9tICcuL19zaGVsbCc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tICcuL2J1bmRsZSc7XG5pbXBvcnQgdHlwZSB7IFZpb2xhdGlvbiB9IGZyb20gJy4vdmlvbGF0aW9uJztcbmltcG9ydCB7IFZpb2xhdGlvblR5cGUsIFZpb2xhdGlvbnNSZXBvcnQgfSBmcm9tICcuL3Zpb2xhdGlvbic7XG5cbmNvbnN0IEFUVFJJQlVUSU9OX1NFUEFSQVRPUiA9ICdcXG4tLS0tLS0tLS0tLS0tLS0tXFxuJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBgQXR0cmlidXRpb25zYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGlvbnNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSByb290IGRpcmVjdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VEaXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhY2thZ2UgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBQYWNrYWdlW107XG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IGRpcmVjdG9yeSB1bmRlcndoaWNoIGFsbCBkZXBlbmRlbmNpZXMgbGl2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llc1Jvb3Q6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIG5vdGljZSBmaWxlIHRvIGNyZWF0ZWQgLyB2YWxpZGF0ZWQuXG4gICAqL1xuICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogTGlzdCBvZiBhbGxvd2VkIGxpY2Vuc2VzLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZExpY2Vuc2VzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIERlcGVuZGVuY2llcyBtYXRjaGluZyB0aGlzIHBhdHRlcm4gd2lsbCBiZSBleGNsdWRlZCBmcm9tIGF0dHJpYnV0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbnMuXG4gICAqL1xuICByZWFkb25seSBleGNsdWRlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBBdHRyaWJ1dGlvbnNgIHJlcHJlc2VudHMgYW4gYXR0cmlidXRpb25zIGZpbGUgY29udGFpbmluZyB0aGlyZC1wYXJ0eSBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQXR0cmlidXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWNrYWdlRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkZXBlbmRlbmNpZXM6IFBhY2thZ2VbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGVuY2llc1Jvb3Q6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRpb25zOiBNYXA8c3RyaW5nLCBBdHRyaWJ1dGlvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBBdHRyaWJ1dGlvbnNQcm9wcykge1xuICAgIHRoaXMucGFja2FnZURpciA9IHByb3BzLnBhY2thZ2VEaXI7XG4gICAgdGhpcy5wYWNrYWdlTmFtZSA9IHByb3BzLnBhY2thZ2VOYW1lO1xuICAgIHRoaXMuZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCBwcm9wcy5maWxlUGF0aCk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBwcm9wcy5kZXBlbmRlbmNpZXMuZmlsdGVyKGQgPT4gIXByb3BzLmV4Y2x1ZGUgfHwgIW5ldyBSZWdFeHAocHJvcHMuZXhjbHVkZSkudGVzdChkLm5hbWUpKTtcbiAgICB0aGlzLmFsbG93ZWRMaWNlbnNlcyA9IHByb3BzLmFsbG93ZWRMaWNlbnNlcy5tYXAobCA9PiBsLnRvTG93ZXJDYXNlKCkpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzUm9vdCA9IHByb3BzLmRlcGVuZGVuY2llc1Jvb3Q7XG5cbiAgICAvLyB3aXRob3V0IHRoZSBnZW5lcmF0ZWQgbm90aWNlIGNvbnRlbnQsIHRoaXMgb2JqZWN0IGlzIHByZXR0eSBtdWNoXG4gICAgLy8gdXNlbGVzcywgc28gbGV0cyBnZW5lcmF0ZSB0aG9zZSBvZiB0aGUgYmF0LlxuICAgIHRoaXMuYXR0cmlidXRpb25zID0gdGhpcy5nZW5lcmF0ZUF0dHJpYnV0aW9ucygpO1xuICAgIHRoaXMuY29udGVudCA9IHRoaXMucmVuZGVyKHRoaXMuYXR0cmlidXRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgY3VycmVudCBub3RpY2UgZmlsZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgbmV2ZXIgdGhyb3dzLiBUaGUgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbnNwZWN0aW5nIHRoZSByZXBvcnQgcmV0dXJuZWQgYW5kIGFjdCBhY2NvcmRpbmFnbHkuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUoKTogVmlvbGF0aW9uc1JlcG9ydCB7XG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCByZWxOb3RpY2VQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLnBhY2thZ2VEaXIsIHRoaXMuZmlsZVBhdGgpO1xuXG4gICAgY29uc3QgZml4ID0gKCkgPT4gdGhpcy5mbHVzaCgpO1xuXG4gICAgY29uc3QgbWlzc2luZyA9ICFmcy5leGlzdHNTeW5jKHRoaXMuZmlsZVBhdGgpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IG1pc3NpbmcgPyB1bmRlZmluZWQgOiBmcy5yZWFkRmlsZVN5bmModGhpcy5maWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBjb25zdCBvdXRkYXRlZCA9IGF0dHJpYnV0aW9ucyAhPT0gdW5kZWZpbmVkICYmIGF0dHJpYnV0aW9ucyAhPT0gdGhpcy5jb250ZW50O1xuXG4gICAgaWYgKG1pc3NpbmcpIHtcbiAgICAgIHZpb2xhdGlvbnMucHVzaCh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTUlTU0lOR19OT1RJQ0UsIG1lc3NhZ2U6IGAke3JlbE5vdGljZVBhdGh9IGlzIG1pc3NpbmdgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRhdGVkKSB7XG4gICAgICB2aW9sYXRpb25zLnB1c2goeyB0eXBlOiBWaW9sYXRpb25UeXBlLk9VVERBVEVEX0FUVFJJQlVUSU9OUywgbWVzc2FnZTogYCR7cmVsTm90aWNlUGF0aH0gaXMgb3V0ZGF0ZWRgLCBmaXggfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZExpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5hbGxvd2VkTGljZW5zZXMuaW5jbHVkZXMoYS5saWNlbnNlc1swXS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAoYSA9PiAoeyB0eXBlOiBWaW9sYXRpb25UeXBlLklOVkFMSURfTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBhbiBpbnZhbGlkIGxpY2Vuc2U6ICR7YS5saWNlbnNlc1swXX1gIH0pKTtcblxuICAgIGNvbnN0IG5vTGljZW5zZTogVmlvbGF0aW9uW10gPSBBcnJheS5mcm9tKHRoaXMuYXR0cmlidXRpb25zLnZhbHVlcygpKVxuICAgICAgLmZpbHRlcihhID0+IGEubGljZW5zZXMubGVuZ3RoID09PSAwKVxuICAgICAgLm1hcChhID0+ICh7IHR5cGU6IFZpb2xhdGlvblR5cGUuTk9fTElDRU5TRSwgbWVzc2FnZTogYERlcGVuZGVuY3kgJHthLnBhY2thZ2V9IGhhcyBubyBsaWNlbnNlYCB9KSk7XG5cbiAgICBjb25zdCBtdWx0aUxpY2Vuc2U6IFZpb2xhdGlvbltdID0gQXJyYXkuZnJvbSh0aGlzLmF0dHJpYnV0aW9ucy52YWx1ZXMoKSlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmxpY2Vuc2VzLmxlbmd0aCA+IDEpXG4gICAgICAubWFwKGEgPT4gKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5NVUxUSVBMRV9MSUNFTlNFLCBtZXNzYWdlOiBgRGVwZW5kZW5jeSAke2EucGFja2FnZX0gaGFzIG11bHRpcGxlIGxpY2Vuc2VzOiAke2EubGljZW5zZXN9YCB9KSk7XG5cbiAgICB2aW9sYXRpb25zLnB1c2goLi4uaW52YWxpZExpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5ub0xpY2Vuc2UpO1xuICAgIHZpb2xhdGlvbnMucHVzaCguLi5tdWx0aUxpY2Vuc2UpO1xuXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHZpb2xhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsdXNoIHRoZSBnZW5lcmF0ZWQgbm90aWNlIGZpbGUgdG8gZGlzay5cbiAgICovXG4gIHB1YmxpYyBmbHVzaCgpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZmlsZVBhdGgsIHRoaXMuY29udGVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlcihhdHRyaWJ1dGlvbnM6IE1hcDxzdHJpbmcsIEF0dHJpYnV0aW9uPik6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgaWYgKGF0dHJpYnV0aW9ucy5zaXplID4gMCkge1xuICAgICAgY29udGVudC5wdXNoKGBUaGUgJHt0aGlzLnBhY2thZ2VOYW1lfSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgc29mdHdhcmUvbGljZW5zaW5nOmApO1xuICAgICAgY29udGVudC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBzb3J0IHRoZSBhdHRyaWJ1dGlvbnMgc28gdGhlIGZpbGUgZG9lc24ndCBjaGFuZ2UgZHVlIHRvIG9yZGVyaW5nIGlzc3Vlc1xuICAgIGNvbnN0IG9yZGVyZWQgPSBBcnJheS5mcm9tKGF0dHJpYnV0aW9ucy52YWx1ZXMoKSkuc29ydCgoYTEsIGEyKSA9PiBhMS5wYWNrYWdlLmxvY2FsZUNvbXBhcmUoYTIucGFja2FnZSkpO1xuXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIG9yZGVyZWQpIHtcbiAgICAgIGNvbnRlbnQucHVzaChgKiogJHthdHRyLnBhY2thZ2V9IC0gJHthdHRyLnVybH0gfCAke2F0dHIubGljZW5zZXNbMF19YCk7XG5cbiAgICAgIC8vIHByZWZlciBub3RpY2Ugb3ZlciBsaWNlbnNlXG4gICAgICBpZiAoYXR0ci5ub3RpY2VUZXh0KSB7XG4gICAgICAgIGNvbnRlbnQucHVzaChhdHRyLm5vdGljZVRleHQpO1xuICAgICAgfSBlbHNlIGlmIChhdHRyLmxpY2Vuc2VUZXh0KSB7XG4gICAgICAgIGNvbnRlbnQucHVzaChhdHRyLmxpY2Vuc2VUZXh0KTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQucHVzaChBVFRSSUJVVElPTl9TRVBBUkFUT1IpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZW50XG4gICAgICAvLyBzaW5jZSB3ZSBhcmUgZW1iZWRkaW5nIGV4dGVybmFsIGZpbGVzLCB0aG9zZSBjYW4gZGlmZmVyZW50IGxpbmVcbiAgICAgIC8vIGVuZGluZ3MsIHNvIHdlIHN0YW5kYXJkaXplIHRvIExGLlxuICAgICAgLm1hcChsID0+IGwucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKSlcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVBdHRyaWJ1dGlvbnMoKTogTWFwPHN0cmluZywgQXR0cmlidXRpb24+IHtcbiAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0aW9uczogTWFwPHN0cmluZywgQXR0cmlidXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gICAgY29uc3QgcGtnID0gKGQ6IFBhY2thZ2UpID0+IGAke2QubmFtZX1AJHtkLnZlcnNpb259YDtcblxuICAgIGNvbnN0IHBhY2thZ2VzID0gdGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gcGtnKGQpKTtcblxuICAgIGZ1bmN0aW9uIGZldGNoSW5mb3MoX2N3ZDogc3RyaW5nLCBfcGFja2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ2xpY2Vuc2UtY2hlY2tlci9iaW4vbGljZW5zZS1jaGVja2VyJyl9IC0tanNvbiAtLXBhY2thZ2VzIFwiJHtfcGFja2FnZXMuam9pbignOycpfVwiYDtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHNoZWxsKGNvbW1hbmQsIHsgY3dkOiBfY3dkLCBxdWlldDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG91dHB1dCk7XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgcnVuIGEgZ2xvYmFsIGNvbW1hbmQgdG8gZmV0Y2ggYXMgbXVjaCBpbmZvcm1hdGlvbiBpbiBvbmUgc2hvdFxuICAgIGNvbnN0IGluZm9zID0gZmV0Y2hJbmZvcyh0aGlzLmRlcGVuZGVuY2llc1Jvb3QsIHBhY2thZ2VzKTtcblxuICAgIGZvciAoY29uc3QgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICBjb25zdCBrZXkgPSBwa2coZGVwKTtcblxuICAgICAgLy8gc29tZXRpbWVzIHRoZSBkZXBlbmRlbmN5IG1pZ2h0IG5vdCBleGlzdCBmcm9tIGZldGNoaW5nIGluZm9ybWF0aW9uIGdsb2JhbGx5LFxuICAgICAgLy8gc28gd2UgdHJ5IGZldGNoaW5nIGEgY29uY3JldGUgcGFja2FnZS4gdGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIHdoZW5cbiAgICAgIC8vIHR3byBkaWZmZXJlbnQgbWFqb3IgdmVyc2lvbnMgZXhpc3Qgb2YgdGhlIHNhbWUgZGVwZW5kZW5jeS5cbiAgICAgIGNvbnN0IGluZm86IE1vZHVsZUluZm8gPSBpbmZvc1trZXldID8/IGZldGNoSW5mb3MoZGVwLnBhdGgsIFtwa2coZGVwKV0pW2tleV07XG5cbiAgICAgIGlmICghaW5mbykge1xuICAgICAgICAvLyBtYWtlIHN1cmUgYWxsIGRlcGVuZGVuY2llcyBhcmUgYWNjb3VudGVkIGZvci5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yICR7a2V5fSAoJHtkZXAucGF0aH0pYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdGljZVRleHQgPSBpbmZvLm5vdGljZUZpbGUgPyBmcy5yZWFkRmlsZVN5bmMoaW5mby5ub3RpY2VGaWxlLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pIDogdW5kZWZpbmVkO1xuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24sIHRoZSBsaWNlbnNlLWNoZWNrZXIgcGFja2FnZSBmYWxscyBiYWNrIHRvIHRoZSBSRUFETUUubWQgZmlsZSBvZiB0aGUgcGFja2FnZSBmb3IgbGljZW5zZVxuICAgICAgLy8gdGV4dC4gdGhpcyBzZWVtcyBzdHJhbmdlLCBkaXNhYmxpbmcgdGhhdCBmb3Igbm93LlxuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZnbGFzcy9saWNlbnNlLWNoZWNrZXIvYmxvYi9tYXN0ZXIvbGliL2xpY2Vuc2UtZmlsZXMuanMjTDlcbiAgICAgIC8vIG5vdGUgdGhhdCBhIG5vbiBleGlzdGluZyBsaWNlbnNlIGZpbGUgaXMgb2sgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSB0eXBlIGNvdWxkIGJlIGV4dHJhY3RlZC5cbiAgICAgIGNvbnN0IGxpY2Vuc2VGaWxlID0gaW5mby5saWNlbnNlRmlsZT8udG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnLm1kJykgPyB1bmRlZmluZWQgOiBpbmZvLmxpY2Vuc2VGaWxlO1xuICAgICAgY29uc3QgbGljZW5zZVRleHQgPSBsaWNlbnNlRmlsZSA/IGZzLnJlYWRGaWxlU3luYyhsaWNlbnNlRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSA6IHVuZGVmaW5lZDtcblxuICAgICAgLy8gdGhlIGxpY2Vuc2VzIGtleSBjb21lcyBpbiBkaWZmZXJlbnQgdHlwZXMgYnV0IHdlIGNvbnZlcnQgaXQgaGVyZVxuICAgICAgLy8gdG8gYWx3YXlzIGJlIGFuIGFycmF5LlxuICAgICAgY29uc3QgbGljZW5zZXMgPSAhaW5mby5saWNlbnNlcyA/IHVuZGVmaW5lZCA6IChBcnJheS5pc0FycmF5KGluZm8ubGljZW5zZXMpID8gaW5mby5saWNlbnNlcyA6IFtpbmZvLmxpY2Vuc2VzXSk7XG5cbiAgICAgIGF0dHJpYnV0aW9ucy5zZXQoa2V5LCB7XG4gICAgICAgIHBhY2thZ2U6IGtleSxcbiAgICAgICAgdXJsOiBgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvJHtkZXAubmFtZX0vdi8ke2RlcC52ZXJzaW9ufWAsXG4gICAgICAgIGxpY2Vuc2VzOiBsaWNlbnNlcyA/PyBbXSxcbiAgICAgICAgbGljZW5zZVRleHQsXG4gICAgICAgIG5vdGljZVRleHQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRpb25zO1xuICB9XG59XG5cbi8qKlxuICogQXR0cmlidXRpb24gb2YgYSBzcGVjaWZpYyBkZXBlbmRlbmN5LlxuICovXG5pbnRlcmZhY2UgQXR0cmlidXRpb24ge1xuICAvKipcbiAgICogQXR0cmlidXRlZCBwYWNrYWdlIChuYW1lICsgdmVyc2lvbilcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCB0byB0aGUgcGFja2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICAvKipcbiAgICogUGFja2FnZSBsaWNlbnNlcy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHNvbWUgcGFja2FnZXMgd2lsbCBtYXkgaGF2ZSBtdWx0aXBsZSBsaWNlbnNlcyxcbiAgICogd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gYXJyYXkuIEluIHN1Y2ggY2FzZXMsIHRoZSBsaWNlbnNlXG4gICAqIHZhbGlkYXRpb24gd2lsbCBmYWlsIHNpbmNlIHdlIGN1cnJlbnRseSBkaXNhbGxvdyB0aGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogUGFja2FnZSBsaWNlbnNlIGNvbnRlbnQuXG4gICAqXG4gICAqIEluIGNhc2UgYSBwYWNrYWdlIGhhcyBtdWx0aXBsZSBsaWNlbnNlcywgdGhpcyB3aWxsXG4gICAqIGNvbnRhaW4uLi5vbmUgb2YgdGhlbS4gSXQgY3VycmVudGx5IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAqIG9uZSBzaW5jZSBpdCB3aWxsIG5vdCBwYXNzIHZhbGlkYXRpb24gYW55d2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZVRleHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYWNrYWdlIG5vdGljZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGljZVRleHQ/OiBzdHJpbmc7XG59XG4iXX0=
@@ -51,6 +51,45 @@ export interface BundleProps {
51
51
  * @default - no check.
52
52
  */
53
53
  readonly test?: string;
54
+ /**
55
+ * Include a sourcemap in the bundle.
56
+ *
57
+ * @default "inline"
58
+ */
59
+ readonly sourcemap?: 'linked' | 'inline' | 'external' | 'both';
60
+ /**
61
+ * Minifies the bundled code.
62
+ *
63
+ * @default false
64
+ */
65
+ readonly minify?: boolean;
66
+ /**
67
+ * Removes whitespace from the code.
68
+ * This is enabled by default when `minify` is used.
69
+ *
70
+ * @default false
71
+ */
72
+ readonly minifyWhitespace?: boolean;
73
+ /**
74
+ * Renames local variables to be shorter.
75
+ * This is enabled by default when `minify` is used.
76
+ *
77
+ * @default false
78
+ */
79
+ readonly minifyIdentifiers?: boolean;
80
+ /**
81
+ * Rewrites syntax to a more compact format.
82
+ * This is enabled by default when `minify` is used.
83
+ *
84
+ * @default false
85
+ */
86
+ readonly minifySyntax?: boolean;
87
+ /**
88
+ * Write the metafile into this location.
89
+ *
90
+ * @default - no metafile is written
91
+ */
92
+ readonly metafile?: string;
54
93
  }
55
94
  /**
56
95
  * Options for `Bundle.pack`.
@@ -116,6 +155,12 @@ export declare class Bundle {
116
155
  private readonly allowedLicenses;
117
156
  private readonly dontAttribute?;
118
157
  private readonly test?;
158
+ private readonly sourcemap?;
159
+ private readonly minify?;
160
+ private readonly minifyWhitespace?;
161
+ private readonly minifyIdentifiers?;
162
+ private readonly minifySyntax?;
163
+ private readonly metafile?;
119
164
  private _bundle?;
120
165
  private _dependencies?;
121
166
  private _dependenciesRoot?;
package/lib/api/bundle.js CHANGED
@@ -38,6 +38,7 @@ const DEFAULT_ALLOWED_LICENSES = [
38
38
  'ISC',
39
39
  'BSD-2-Clause',
40
40
  '0BSD',
41
+ 'MIT OR Apache-2.0',
41
42
  ];
42
43
  /**
43
44
  * Bundle class to validate and pack nodejs bundles.
@@ -53,6 +54,12 @@ class Bundle {
53
54
  this.allowedLicenses = props.allowedLicenses ?? DEFAULT_ALLOWED_LICENSES;
54
55
  this.dontAttribute = props.dontAttribute;
55
56
  this.entryPoints = {};
57
+ this.sourcemap = props.sourcemap;
58
+ this.minify = props.minify;
59
+ this.minifyWhitespace = props.minifyWhitespace;
60
+ this.minifyIdentifiers = props.minifyIdentifiers;
61
+ this.minifySyntax = props.minifySyntax;
62
+ this.metafile = props.metafile;
56
63
  const entryPoints = props.entryPoints ?? (this.manifest.main ? [this.manifest.main] : []);
57
64
  if (entryPoints.length === 0) {
58
65
  throw new Error('Must configure at least 1 entrypoint');
@@ -140,7 +147,7 @@ class Bundle {
140
147
  try {
141
148
  if (this.test) {
142
149
  const command = `${path.join(bundleDir, this.test)}`;
143
- console.log(`Running santiy test: ${command}`);
150
+ console.log(`Running sanity test: ${command}`);
144
151
  (0, _shell_1.shell)(command, { cwd: bundleDir });
145
152
  }
146
153
  // create the tarball
@@ -167,7 +174,7 @@ class Bundle {
167
174
  }
168
175
  const inputs = Object.keys(this.bundle.metafile.inputs);
169
176
  const packages = new Set(Array.from(inputs).map(i => this.closestPackagePath(path.join(this.packageDir, i))));
170
- this._dependencies = Array.from(packages).map(p => this.createPackage(p)).filter(d => d.name !== this.manifest.name);
177
+ this._dependencies = Array.from(packages).map(p => this.createPackage(p)).filter(d => d.name !== undefined && d.name !== this.manifest.name);
171
178
  return this._dependencies;
172
179
  }
173
180
  get dependenciesRoot() {
@@ -235,10 +242,14 @@ class Bundle {
235
242
  const bundle = esbuild.buildSync({
236
243
  entryPoints: this.entryPoints,
237
244
  bundle: true,
238
- target: 'node12',
245
+ target: 'node18',
239
246
  platform: 'node',
240
- sourcemap: 'inline',
247
+ sourcemap: this.sourcemap,
241
248
  metafile: true,
249
+ minify: this.minify,
250
+ minifyWhitespace: this.minifyWhitespace,
251
+ minifyIdentifiers: this.minifyIdentifiers,
252
+ minifySyntax: this.minifySyntax,
242
253
  treeShaking: true,
243
254
  absWorkingDir: this.packageDir,
244
255
  external: [...(this.externals.dependencies ?? []), ...(this.externals.optionalDependencies ?? [])],
@@ -246,6 +257,10 @@ class Bundle {
246
257
  outdir: this.packageDir,
247
258
  allowOverwrite: true,
248
259
  });
260
+ // Write metafile only when requested
261
+ if (this.metafile) {
262
+ fs.writeFileSync(this.metafile, JSON.stringify(bundle.metafile, null, 2));
263
+ }
249
264
  if (bundle.warnings.length > 0) {
250
265
  // esbuild warnings are usually important, lets try to be strict here.
251
266
  // the warnings themselves are printed on screen.
@@ -341,4 +356,4 @@ function longestCommonParent(paths) {
341
356
  }
342
357
  return paths.reduce(_longestCommonParent);
343
358
  }
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtQztBQUNuQyw2Q0FBK0I7QUFDL0IsbURBQStDO0FBQy9DLHFDQUFpQztBQUNqQywyQ0FBeUU7QUFFekUsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixZQUFZO0lBQ1osS0FBSztJQUNMLGNBQWM7SUFDZCxLQUFLO0lBQ0wsY0FBYztJQUNkLE1BQU07Q0FDUCxDQUFDO0FBd0hGOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBbUJqQixZQUFZLEtBQWtCO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxzQkFBc0IsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksd0JBQXdCLENBQUM7UUFDekUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXRCLE1BQU0sV0FBVyxHQUFHLEtBQUss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QUMsT0FBZSxFQUFFLFFBQWE7UUFDbEQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUF2V0Qsd0JBdVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFlO0lBRTFDLFNBQVMsb0JBQW9CLENBQUMsRUFBVSxFQUFFLEVBQVU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdELElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsTUFBTTtZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgQXR0cmlidXRpb25zIH0gZnJvbSAnLi9fYXR0cmlidXRpb25zJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi9fc2hlbGwnO1xuaW1wb3J0IHsgVmlvbGF0aW9uLCBWaW9sYXRpb25UeXBlLCBWaW9sYXRpb25zUmVwb3J0IH0gZnJvbSAnLi92aW9sYXRpb24nO1xuXG5jb25zdCBERUZBVUxUX0FMTE9XRURfTElDRU5TRVMgPSBbXG4gICdBcGFjaGUtMi4wJyxcbiAgJ01JVCcsXG4gICdCU0QtMy1DbGF1c2UnLFxuICAnSVNDJyxcbiAgJ0JTRC0yLUNsYXVzZScsXG4gICcwQlNEJyxcbl07XG5cbi8qKlxuICogQnVuZGxpbmcgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQcm9wcyB7XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aGVyZSB0aGUgcGFja2FnZSB0byBidW5kbGUgaXMgbG9jYXRlZCBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2VEaXI6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBlbnRyeS1wb2ludHMgdG8gYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSAnbWFpbicgZmlsZSBhcyBzcGVjaWZpZWQgaW4gcGFja2FnZS5qc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnlQb2ludHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGF0aCB0byBhdHRyaWJ1dGlvbnMgZmlsZSB0aGF0IHdpbGwgYmUgY3JlYXRlZCAvIHZhbGlkYXRlZC5cbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBwYWNrYWdlIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1RISVJEX1BBUlRZX0xJQ0VOU0VTJ1xuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRpb25zRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleHRlcm5hbCByZWZlcmVuY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWxzPzogRXh0ZXJuYWxzO1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIGVtYmVkZGVkIGluIHRoZSBidW5kbGUuXG4gICAqXG4gICAqIFRoZXNlIHdpbGwgYmUgY29waWVkIG92ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIHBhdGhzIGJlZm9yZSBwYWNrYWdpbmcuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXM/OiB7IFtzcmM6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZCBmb3IgYnVuZGxpbmcuXG4gICAqIElmIGFueSBkZXBlbmRlbmN5IGNvbnRhaW5zIGEgbGljZW5zZSBub3QgaW4gdGhpcyBsaXN0LCBidW5kbGluZyB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBsaXN0XG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTGljZW5zZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUGFja2FnZXMgbWF0Y2hpbmcgdGhpcyByZWd1bGFyIGV4cHJlc3Npb24gd2lsbCBiZSBleGNsdWRlZCBmcm9tIGF0dHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9udEF0dHJpYnV0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmFzaWMgc2FuaXR5IGNoZWNrIHRvIHJ1biBhZ2FpbnN0IHRoZSBjcmVhdGVkIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEJ1bmRsZS5wYWNrYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQYWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHBhY2thZ2UgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGZpeCBhbnkgKGZpeGFibGUpIHZpb2xhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhY2thZ2Ugb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2Uge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbHMge1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQgaW4gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb25cbiAgICogb2YgdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGxpc3RlZCBpbiB0aGUgYG9wdGlvbmFsRGVwZW5kZW5jaWVzYCBzZWN0aW9uXG4gICAqIG9mIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsRGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBCdW5kbGUgY2xhc3MgdG8gdmFsaWRhdGUgYW5kIHBhY2sgbm9kZWpzIGJ1bmRsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGUge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3Q6IGFueTtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpY2VQYXRoOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwYWNrYWdlRGlyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50cnlQb2ludHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgZXh0ZXJuYWxzOiBFeHRlcm5hbHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VzOiB7IFtzcmM6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRMaWNlbnNlczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9udEF0dHJpYnV0ZT86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXN0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2J1bmRsZT86IGVzYnVpbGQuQnVpbGRSZXN1bHQ7XG4gIHByaXZhdGUgX2RlcGVuZGVuY2llcz86IFBhY2thZ2VbXTtcbiAgcHJpdmF0ZSBfZGVwZW5kZW5jaWVzUm9vdD86IHN0cmluZztcblxuICBwcml2YXRlIF9hdHRyaWJ1dGlvbnM/OiBBdHRyaWJ1dGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEJ1bmRsZVByb3BzKSB7XG4gICAgdGhpcy5wYWNrYWdlRGlyID0gcHJvcHMucGFja2FnZURpcjtcbiAgICB0aGlzLm5vdGljZVBhdGggPSBwcm9wcy5hdHRyaWJ1dGlvbnNGaWxlID8/ICdUSElSRF9QQVJUWV9MSUNFTlNFUyc7XG4gICAgdGhpcy5tYW5pZmVzdCA9IGZzLnJlYWRKc29uU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJykpO1xuICAgIHRoaXMuZXh0ZXJuYWxzID0gcHJvcHMuZXh0ZXJuYWxzID8/IHt9O1xuICAgIHRoaXMucmVzb3VyY2VzID0gcHJvcHMucmVzb3VyY2VzID8/IHt9O1xuICAgIHRoaXMudGVzdCA9IHByb3BzLnRlc3Q7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMgPz8gREVGQVVMVF9BTExPV0VEX0xJQ0VOU0VTO1xuICAgIHRoaXMuZG9udEF0dHJpYnV0ZSA9IHByb3BzLmRvbnRBdHRyaWJ1dGU7XG4gICAgdGhpcy5lbnRyeVBvaW50cyA9IHt9O1xuXG4gICAgY29uc3QgZW50cnlQb2ludHMgPSBwcm9wcy5lbnRyeVBvaW50cyA/PyAodGhpcy5tYW5pZmVzdC5tYWluID8gW3RoaXMubWFuaWZlc3QubWFpbl0gOiBbXSk7XG5cbiAgICBpZiAoZW50cnlQb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgY29uZmlndXJlIGF0IGxlYXN0IDEgZW50cnlwb2ludCcpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiBlbnRyeVBvaW50cykge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIGVudHJ5cG9pbnQpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2NhdGUgZW50cnlwb2ludDogJHtlbnRyeXBvaW50fWApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyeVBvaW50c1tlbnRyeXBvaW50LnJlcGxhY2UoJy5qcycsICcnKV0gPSBlbnRyeXBvaW50O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYnVuZGxlIGZvciB2aW9sYXRpb25zLlxuICAgKlxuICAgKiBJZiBgZml4YCBpcyBzZXQgdG8gdHJ1ZSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIHJlbWFpbmluZ1xuICAgKiB2aW9sYXRpb25zIGFmdGVyIHRoZSBmaXhlcyB3ZXJlIGFwcGxpZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG5ldmVyIHRocm93cy4gVGhlIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5zcGVjdGluZyB0aGVcbiAgICogcmV0dXJuZWQgcmVwb3J0IGFuZCBhY3QgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUob3B0aW9uczogQnVuZGxlVmFsaWRhdGVPcHRpb25zID0ge30pOiBWaW9sYXRpb25zUmVwb3J0IHtcblxuICAgIGNvbnN0IGZpeCA9IG9wdGlvbnMuZml4ID8/IGZhbHNlO1xuXG4gICAgLy8gZmlyc3QgdmFsaWRhdGVcbiAgICBjb25zdCBjaXJjdWxhckltcG9ydHMgPSB0aGlzLnZhbGlkYXRlQ2lyY3VsYXJJbXBvcnRzKCk7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy52YWxpZGF0ZVJlc291cmNlcygpO1xuICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IHRoaXMudmFsaWRhdGVBdHRyaWJ1dGlvbnMoKTtcblxuICAgIGNvbnN0IHJlcG9ydCA9IG5ldyBWaW9sYXRpb25zUmVwb3J0KFsuLi5jaXJjdWxhckltcG9ydHMsIC4uLnJlc291cmNlcywgLi4uYXR0cmlidXRpb25zXSk7XG5cbiAgICBpZiAoIWZpeCkge1xuICAgICAgcmV0dXJuIHJlcG9ydDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZpb2xhdGlvbiBvZiByZXBvcnQudmlvbGF0aW9ucykge1xuICAgICAgaWYgKHZpb2xhdGlvbi5maXgpIHtcbiAgICAgICAgdmlvbGF0aW9uLmZpeCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJldHVybiB0aGUgdW4gZml4YWJsZSB2aW9sYXRpb25zXG4gICAgcmV0dXJuIG5ldyBWaW9sYXRpb25zUmVwb3J0KHJlcG9ydC52aW9sYXRpb25zLmZpbHRlcih2ID0+ICF2LmZpeCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBidW5kbGUgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCB0byBhIHRlbXAgZGlyZWN0b3J5LlxuICAgKiBUaGlzIGRpcmVjdG9yeSBpcyB3aGF0IHRoZSB0b29sIHdpbGwgZW5kIHVwIHBhY2tpbmcuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHRlbXAgZGlyZWN0b3J5IGxvY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHdyaXRlKCk6IHN0cmluZyB7XG5cbiAgICBjb25zdCB0YXJnZXQgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdidW5kbGUtd3JpdGUtJykpO1xuXG4gICAgLy8gd2UgZGVmaW5pdGVseSBkb24ndCBuZWVkIHRoZXNlIGRpcmVjdG9yaWVzIGluIHRoZSBwYWNrYWdlXG4gICAgLy8gc28gbm8gbmVlZCB0byBjb3B5IHRoZW0gb3Zlci5cbiAgICBjb25zdCBpZ25vcmVEaXJlY3RvcmllcyA9IFsnbm9kZV9tb2R1bGVzJywgJy5naXQnXTtcblxuICAgIC8vIGNvcHkgdGhlIGVudGlyZSBwcm9qZWN0IHNpbmNlIHdlIGFyZSByZXRhaW5pbmcgdGhlIG9yaWdpbmFsIGZpbGVzLlxuICAgIGZzLmNvcHlTeW5jKHRoaXMucGFja2FnZURpciwgdGFyZ2V0LCB7IGZpbHRlcjogbiA9PiAhbi5zcGxpdChwYXRoLnNlcCkuc29tZSgocCA9PiBpZ25vcmVEaXJlY3Rvcmllcy5pbmNsdWRlcyhwKSkpIH0pO1xuXG4gICAgLy8gY2xvbmUgdGhlIG9yaWdpbmFsIG1hbmlmZXN0IHNpbmNlIHdlIGFyZSBnb2luZyB0b1xuICAgIC8vIHRvIG11dGF0ZSBpdC5cbiAgICBjb25zdCBtYW5pZmVzdCA9IHsgLi4udGhpcy5tYW5pZmVzdCB9O1xuXG4gICAgLy8gbWFuaWZlc3QgbXV0YXRpb25zXG4gICAgdGhpcy5yZW1vdmVEZXBlbmRlbmNpZXMobWFuaWZlc3QpO1xuICAgIHRoaXMuYWRkRXh0ZXJuYWxzKG1hbmlmZXN0KTtcblxuICAgIC8vIHdyaXRlIGFydGlmYWN0c1xuICAgIHRoaXMud3JpdGVPdXRwdXRzKHRhcmdldCk7XG4gICAgdGhpcy53cml0ZVJlc291cmNlcyh0YXJnZXQpO1xuICAgIHRoaXMud3JpdGVNYW5pZmVzdCh0YXJnZXQsIG1hbmlmZXN0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdGhlIGJ1bmRsZSBhbmQgY3JlYXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGFyYmFsbC5cbiAgICovXG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IEJ1bmRsZVBhY2tPcHRpb25zID0ge30pOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy50YXJnZXQgPz8gdGhpcy5wYWNrYWdlRGlyO1xuXG4gICAgY29uc3QgcmVwb3J0ID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICghcmVwb3J0LnN1Y2Nlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhY2sgZHVlIHRvIHZhbGlkYXRpb24gZXJyb3JzLlxcblxcbiR7cmVwb3J0LnN1bW1hcnl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFyZ2V0IGRvZXNudCBleGlzdDogJHt0YXJnZXR9YCk7XG4gICAgfVxuXG4gICAgLy8gcmVzb2x2ZSBzeW1saW5rcy5cbiAgICBjb25zdCByZWFsVGFyZ2V0ID0gZnMucmVhbHBhdGhTeW5jKHRhcmdldCk7XG5cbiAgICBpZiAoIWZzLmxzdGF0U3luYyhyZWFsVGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcmdldCBtdXN0IGJlIGEgZGlyZWN0b3J5OiAke3RhcmdldH1gKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnV3JpdGluZyBidW5kbGUnKTtcbiAgICBjb25zdCBidW5kbGVEaXIgPSB0aGlzLndyaXRlKCk7XG4gICAgdHJ5IHtcblxuICAgICAgaWYgKHRoaXMudGVzdCkge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gYCR7cGF0aC5qb2luKGJ1bmRsZURpciwgdGhpcy50ZXN0KX1gO1xuICAgICAgICBjb25zb2xlLmxvZyhgUnVubmluZyBzYW50aXkgdGVzdDogJHtjb21tYW5kfWApO1xuICAgICAgICBzaGVsbChjb21tYW5kLCB7IGN3ZDogYnVuZGxlRGlyIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBjcmVhdGUgdGhlIHRhcmJhbGxcbiAgICAgIGNvbnNvbGUubG9nKCdQYWNraW5nJyk7XG4gICAgICBjb25zdCB0YXJiYWxsID0gc2hlbGwoJ25wbSBwYWNrJywgeyBxdWlldDogdHJ1ZSwgY3dkOiBidW5kbGVEaXIgfSkudHJpbSgpO1xuICAgICAgY29uc3QgZGVzdCA9IHBhdGguam9pbihyZWFsVGFyZ2V0LCB0YXJiYWxsKTtcbiAgICAgIGZzLmNvcHlTeW5jKHBhdGguam9pbihidW5kbGVEaXIsIHRhcmJhbGwpLCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybiBkZXN0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKGJ1bmRsZURpcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYnVuZGxlKCk6IGVzYnVpbGQuQnVpbGRSZXN1bHQge1xuICAgIGlmICh0aGlzLl9idW5kbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9idW5kbGU7XG4gICAgfVxuICAgIHRoaXMuX2J1bmRsZSA9IHRoaXMuZXNidWlsZCgpO1xuICAgIHJldHVybiB0aGlzLl9idW5kbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZXBlbmRlbmNpZXMoKTogUGFja2FnZVtdIHtcbiAgICBpZiAodGhpcy5fZGVwZW5kZW5jaWVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVwZW5kZW5jaWVzO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dHMgPSBPYmplY3Qua2V5cyh0aGlzLmJ1bmRsZS5tZXRhZmlsZSEuaW5wdXRzKTtcbiAgICBjb25zdCBwYWNrYWdlcyA9IG5ldyBTZXQoQXJyYXkuZnJvbShpbnB1dHMpLm1hcChpID0+IHRoaXMuY2xvc2VzdFBhY2thZ2VQYXRoKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIGkpKSkpO1xuICAgIHRoaXMuX2RlcGVuZGVuY2llcyA9IEFycmF5LmZyb20ocGFja2FnZXMpLm1hcChwID0+IHRoaXMuY3JlYXRlUGFja2FnZShwKSkuZmlsdGVyKGQgPT4gZC5uYW1lICE9PSB0aGlzLm1hbmlmZXN0Lm5hbWUpO1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXM7XG4gIH1cblxuICBwcml2YXRlIGdldCBkZXBlbmRlbmNpZXNSb290KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2RlcGVuZGVuY2llc1Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXNSb290O1xuICAgIH1cbiAgICBjb25zdCBsY3AgPSBsb25nZXN0Q29tbW9uUGFyZW50KHRoaXMuZGVwZW5kZW5jaWVzLm1hcChkID0+IGQucGF0aCkpO1xuICAgIHRoaXMuX2RlcGVuZGVuY2llc1Jvb3QgPSB0aGlzLmNsb3Nlc3RQYWNrYWdlUGF0aChsY3ApO1xuICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXNSb290O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXR0cmlidXRpb25zKCk6IEF0dHJpYnV0aW9ucyB7XG4gICAgaWYgKHRoaXMuX2F0dHJpYnV0aW9ucyA9PSBudWxsKSB7XG4gICAgICB0aGlzLl9hdHRyaWJ1dGlvbnMgPSBuZXcgQXR0cmlidXRpb25zKHtcbiAgICAgICAgcGFja2FnZURpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgICBwYWNrYWdlTmFtZTogdGhpcy5tYW5pZmVzdC5uYW1lLFxuICAgICAgICBmaWxlUGF0aDogdGhpcy5ub3RpY2VQYXRoLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IHRoaXMuZGVwZW5kZW5jaWVzLFxuICAgICAgICBkZXBlbmRlbmNpZXNSb290OiB0aGlzLmRlcGVuZGVuY2llc1Jvb3QsXG4gICAgICAgIGV4Y2x1ZGU6IHRoaXMuZG9udEF0dHJpYnV0ZSxcbiAgICAgICAgYWxsb3dlZExpY2Vuc2VzOiB0aGlzLmFsbG93ZWRMaWNlbnNlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRXh0ZXJuYWxEZXBlbmRlbmN5VmVyc2lvbihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdmVyc2lvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIC8vIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBleGlzdCBpbiB0aGUgZGVwZW5kZW5jaWVzIGxpc3RcbiAgICAvLyBzaW5jZSBlc2J1aWxkIHNraXBzIG92ZXIgdGhlbS4gYnV0IHRoZXkgd2lsbCBleGlzdCBhcyBhIGRlcGVuZGVuY3kgb2ZcbiAgICAvLyBvbmUgb2YgdGhlbSAob3Igb2YgdXMpXG4gICAgZm9yIChjb25zdCBwa2cgb2YgWy4uLnRoaXMuZGVwZW5kZW5jaWVzLCB0aGlzLmNyZWF0ZVBhY2thZ2UodGhpcy5wYWNrYWdlRGlyKV0pIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpTT05TeW5jKHBhdGguam9pbihwa2cucGF0aCwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICAgIGNvbnN0IHJ1bnRpbWUgPSAobWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gKG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcblxuICAgICAgY29uc3QgcGluID0gKHZlcnNpb246IHN0cmluZykgPT4gKHZlcnNpb24uc3RhcnRzV2l0aCgnXicpIHx8IHZlcnNpb24uc3RhcnRzV2l0aCgnficpKSA/IHZlcnNpb24uc3Vic3RyaW5nKDEpIDogdmVyc2lvbjtcblxuICAgICAgaWYgKHJ1bnRpbWUpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihydW50aW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihvcHRpb25hbCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlY3QgdmVyc2lvbiBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfWApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB2ZXJzaW9ucyBkZXRlY3RlZCBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfSAoJHtBcnJheS5mcm9tKHZlcnNpb25zKS5qb2luKCcsJyl9KWApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGNsb3Nlc3RQYWNrYWdlUGF0aChmZHA6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oZmRwLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICByZXR1cm4gZmRwO1xuICAgIH1cblxuICAgIGlmIChwYXRoLmRpcm5hbWUoZmRwKSA9PT0gZmRwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHBhY2thZ2UgbWFuaWZlc3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jbG9zZXN0UGFja2FnZVBhdGgocGF0aC5kaXJuYW1lKGZkcCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYWNrYWdlKHBhY2thZ2VEaXI6IHN0cmluZyk6IFBhY2thZ2Uge1xuICAgIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHBhdGguam9pbihwYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBmcy5yZWFkSlNPTlN5bmMobWFuaWZlc3RQYXRoKTtcbiAgICByZXR1cm4geyBwYXRoOiBwYWNrYWdlRGlyLCBuYW1lOiBtYW5pZmVzdC5uYW1lLCB2ZXJzaW9uOiBtYW5pZmVzdC52ZXJzaW9uIH07XG4gIH1cblxuICBwcml2YXRlIGVzYnVpbGQoKTogZXNidWlsZC5CdWlsZFJlc3VsdCB7XG5cbiAgICBjb25zdCBidW5kbGUgPSBlc2J1aWxkLmJ1aWxkU3luYyh7XG4gICAgICBlbnRyeVBvaW50czogdGhpcy5lbnRyeVBvaW50cyxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIHRhcmdldDogJ25vZGUxMicsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgc291cmNlbWFwOiAnaW5saW5lJyxcbiAgICAgIG1ldGFmaWxlOiB0cnVlLFxuICAgICAgdHJlZVNoYWtpbmc6IHRydWUsXG4gICAgICBhYnNXb3JraW5nRGlyOiB0aGlzLnBhY2thZ2VEaXIsXG4gICAgICBleHRlcm5hbDogWy4uLih0aGlzLmV4dGVybmFscy5kZXBlbmRlbmNpZXMgPz8gW10pLCAuLi4odGhpcy5leHRlcm5hbHMub3B0aW9uYWxEZXBlbmRlbmNpZXMgPz8gW10pXSxcbiAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgIG91dGRpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgYWxsb3dPdmVyd3JpdGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoYnVuZGxlLndhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIGVzYnVpbGQgd2FybmluZ3MgYXJlIHVzdWFsbHkgaW1wb3J0YW50LCBsZXRzIHRyeSB0byBiZSBzdHJpY3QgaGVyZS5cbiAgICAgIC8vIHRoZSB3YXJuaW5ncyB0aGVtc2VsdmVzIGFyZSBwcmludGVkIG9uIHNjcmVlbi5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRm91bmQgJHtidW5kbGUud2FybmluZ3MubGVuZ3RofSBidW5kbGluZyB3YXJuaW5ncyAoU2VlIGFib3ZlKWApO1xuICAgIH1cblxuICAgIHJldHVybiBidW5kbGU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQ2lyY3VsYXJJbXBvcnRzKCk6IFZpb2xhdGlvbltdIHtcbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGluZyBjaXJjdWxhciBpbXBvcnRzJyk7XG4gICAgY29uc3QgdmlvbGF0aW9uczogVmlvbGF0aW9uW10gPSBbXTtcbiAgICBjb25zdCBwYWNrYWdlcyA9IFt0aGlzLnBhY2thZ2VEaXIsIC4uLnRoaXMuZGVwZW5kZW5jaWVzLm1hcChkID0+IGQucGF0aCldO1xuICAgIHRyeSB7XG4gICAgICAvLyB3ZSBkb24ndCB1c2UgdGhlIHByb2dyYW1tYXRpYyBBUEkgc2luY2UgaXQgb25seSBvZmZlcnMgYW4gYXN5bmMgQVBJLlxuICAgICAgLy8gcHJlZmVyIHRvIHN0YXkgc3luYyBmb3Igbm93IHNpbmNlIGl0cyBlYXNpZXIgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIgdG9vbGluZy5cbiAgICAgIC8vIHdpbGwgb2ZmZXIgYW4gYXN5bmMgQVBJIGZ1cnRoZXIgZG93biB0aGUgcm9hZC5cbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtyZXF1aXJlLnJlc29sdmUoJ21hZGdlL2Jpbi9jbGkuanMnKX0gLS1qc29uIC0td2FybmluZyAtLW5vLWNvbG9yIC0tbm8tc3Bpbm5lciAtLWNpcmN1bGFyIC0tZXh0ZW5zaW9ucyBqcyAke3BhY2thZ2VzLmpvaW4oJyAnKX1gO1xuICAgICAgc2hlbGwoY29tbWFuZCwgeyBxdWlldDogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdW10gPSBKU09OLnBhcnNlKGUuc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpKTtcbiAgICAgIGZvciAoY29uc3QgaW1wIG9mIGltcG9ydHMpIHtcbiAgICAgICAgdmlvbGF0aW9ucy5wdXNoKHsgdHlwZTogVmlvbGF0aW9uVHlwZS5DSVJDVUxBUl9JTVBPUlQsIG1lc3NhZ2U6IGAke2ltcC5qb2luKCcgLT4gJyl9YCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmlvbGF0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVSZXNvdXJjZXMoKTogVmlvbGF0aW9uW10ge1xuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW5nIHJlc291cmNlcycpO1xuICAgIGNvbnN0IHZpb2xhdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtzcmMsIF9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIHNyYykpKSB7XG4gICAgICAgIHZpb2xhdGlvbnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogVmlvbGF0aW9uVHlwZS5NSVNTSU5HX1JFU09VUkNFLFxuICAgICAgICAgIG1lc3NhZ2U6IGBVbmFibGUgdG8gZmluZCByZXNvdXJjZSAoJHtzcmN9KSByZWxhdGl2ZSB0byB0aGUgcGFja2FnZSBkaXJlY3RvcnlgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZpb2xhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQXR0cmlidXRpb25zKCk6IHJlYWRvbmx5IFZpb2xhdGlvbltdIHtcbiAgICBjb25zb2xlLmxvZygnVmFsaWRhdGluZyBhdHRyaWJ1dGlvbnMnKTtcbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGlvbnMudmFsaWRhdGUoKS52aW9sYXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFeHRlcm5hbHMobWFuaWZlc3Q6IGFueSkge1xuXG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgcnVudGltZSBkZXBlbmRlbmNpZXNcbiAgICBmb3IgKGNvbnN0IGV4dGVybmFsIG9mIHRoaXMuZXh0ZXJuYWxzLmRlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9O1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuXG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBleHRlcm5hbCBvZiB0aGlzLmV4dGVybmFscy5vcHRpb25hbERlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3Qub3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBtYW5pZmVzdC5vcHRpb25hbERlcGVuZGVuY2llcyA/PyB7fTtcbiAgICAgIG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURlcGVuZGVuY2llcyhtYW5pZmVzdDogYW55KSB7XG4gICAgZm9yIChjb25zdCBbZCwgdl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5kZXBlbmRlbmNpZXMpKSB7XG4gICAgICBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXMgPSBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXMgPz8ge307XG4gICAgICBtYW5pZmVzdC5kZXZEZXBlbmRlbmNpZXNbZF0gPSB2O1xuICAgICAgZGVsZXRlIG1hbmlmZXN0LmRlcGVuZGVuY2llc1tkXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlT3V0cHV0cyh3b3JrRGlyOiBzdHJpbmcpIHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0aGlzLmJ1bmRsZS5vdXRwdXRGaWxlcyA/PyBbXSkge1xuICAgICAgY29uc3Qgb3V0ID0gb3V0cHV0LnBhdGgucmVwbGFjZSh0aGlzLnBhY2thZ2VEaXIsIHdvcmtEaXIpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXQsIG91dHB1dC5jb250ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZVJlc291cmNlcyh3b3JrZGlyOiBzdHJpbmcpIHtcbiAgICBmb3IgKGNvbnN0IFtzcmMsIGRzdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMpKSB7XG4gICAgICBjb25zdCB0byA9IHBhdGguam9pbih3b3JrZGlyLCBkc3QpO1xuICAgICAgZnMuY29weVN5bmMocGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgc3JjKSwgdG8sIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVNYW5pZmVzdCh3b3JrRGlyOiBzdHJpbmcsIG1hbmlmZXN0OiBhbnkpIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbih3b3JrRGlyLCAncGFja2FnZS5qc29uJyksIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9uZ2VzdENvbW1vblBhcmVudChwYXRoczogc3RyaW5nW10pIHtcblxuICBmdW5jdGlvbiBfbG9uZ2VzdENvbW1vblBhcmVudChwMTogc3RyaW5nLCBwMjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXJzMSA9IHAxLnNwbGl0KHBhdGguc2VwKTtcbiAgICBjb25zdCBkaXJzMiA9IHAyLnNwbGl0KHBhdGguc2VwKTtcbiAgICBjb25zdCBwYXJlbnQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKGRpcnMxLmxlbmd0aCwgZGlyczIubGVuZ3RoKTsgaSsrKSB7XG4gICAgICBpZiAoZGlyczFbaV0gIT09IGRpcnMyW2ldKSBicmVhaztcbiAgICAgIHBhcmVudC5wdXNoKGRpcnMxW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudC5qb2luKHBhdGguc2VwKTtcbiAgfVxuXG4gIHJldHVybiBwYXRocy5yZWR1Y2UoX2xvbmdlc3RDb21tb25QYXJlbnQpO1xufVxuIl19
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9idW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLGlEQUFtQztBQUNuQyw2Q0FBK0I7QUFDL0IsbURBQStDO0FBQy9DLHFDQUFpQztBQUVqQywyQ0FBOEQ7QUFFOUQsTUFBTSx3QkFBd0IsR0FBRztJQUMvQixZQUFZO0lBQ1osS0FBSztJQUNMLGNBQWM7SUFDZCxLQUFLO0lBQ0wsY0FBYztJQUNkLE1BQU07SUFDTixtQkFBbUI7Q0FDcEIsQ0FBQztBQXFLRjs7R0FFRztBQUNILE1BQWEsTUFBTTtJQXdCakIsWUFBWSxLQUFrQjtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLElBQUksc0JBQXNCLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxJQUFJLHdCQUF3QixDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENB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QUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3RCxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE1BQU07WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZXNidWlsZCBmcm9tICdlc2J1aWxkJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IEF0dHJpYnV0aW9ucyB9IGZyb20gJy4vX2F0dHJpYnV0aW9ucyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4vX3NoZWxsJztcbmltcG9ydCB0eXBlIHsgVmlvbGF0aW9uIH0gZnJvbSAnLi92aW9sYXRpb24nO1xuaW1wb3J0IHsgVmlvbGF0aW9uVHlwZSwgVmlvbGF0aW9uc1JlcG9ydCB9IGZyb20gJy4vdmlvbGF0aW9uJztcblxuY29uc3QgREVGQVVMVF9BTExPV0VEX0xJQ0VOU0VTID0gW1xuICAnQXBhY2hlLTIuMCcsXG4gICdNSVQnLFxuICAnQlNELTMtQ2xhdXNlJyxcbiAgJ0lTQycsXG4gICdCU0QtMi1DbGF1c2UnLFxuICAnMEJTRCcsXG4gICdNSVQgT1IgQXBhY2hlLTIuMCcsXG5dO1xuXG4vKipcbiAqIEJ1bmRsaW5nIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlUHJvcHMge1xuXG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2hlcmUgdGhlIHBhY2thZ2UgdG8gYnVuZGxlIGlzIGxvY2F0ZWQgYXQuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZW50cnktcG9pbnRzIHRvIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgJ21haW4nIGZpbGUgYXMgc3BlY2lmaWVkIGluIHBhY2thZ2UuanNvbi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5UG9pbnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gYXR0cmlidXRpb25zIGZpbGUgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgLyB2YWxpZGF0ZWQuXG4gICAqIFRoaXMgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgcGFja2FnZSBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdUSElSRF9QQVJUWV9MSUNFTlNFUydcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0aW9uc0ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHBhY2thZ2VzIHRoYXQgY2Fubm90IGJlIGJ1bmRsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0ZXJuYWwgcmVmZXJlbmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFscz86IEV4dGVybmFscztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgcmVzb3VyY2VzIHRoYXQgbmVlZCB0byBiZSBlbWJlZGRlZCBpbiB0aGUgYnVuZGxlLlxuICAgKlxuICAgKiBUaGVzZSB3aWxsIGJlIGNvcGllZCBvdmVyIHRvIHRoZSBhcHByb3ByaWF0ZSBwYXRocyBiZWZvcmUgcGFja2FnaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzPzogeyBbc3JjOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGxpY2Vuc2VzIHRoYXQgYXJlIGFsbG93ZWQgZm9yIGJ1bmRsaW5nLlxuICAgKiBJZiBhbnkgZGVwZW5kZW5jeSBjb250YWlucyBhIGxpY2Vuc2Ugbm90IGluIHRoaXMgbGlzdCwgYnVuZGxpbmcgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgbGlzdFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZExpY2Vuc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFBhY2thZ2VzIG1hdGNoaW5nIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwgYmUgZXhjbHVkZWQgZnJvbSBhdHRyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRvbnRBdHRyaWJ1dGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhc2ljIHNhbml0eSBjaGVjayB0byBydW4gYWdhaW5zdCB0aGUgY3JlYXRlZCBidW5kbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY2hlY2suXG4gICAqL1xuICByZWFkb25seSB0ZXN0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgc291cmNlbWFwIGluIHRoZSBidW5kbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiaW5saW5lXCJcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZW1hcD86ICdsaW5rZWQnIHwgJ2lubGluZScgfCAnZXh0ZXJuYWwnIHwgJ2JvdGgnO1xuXG4gIC8qKlxuICAgKiBNaW5pZmllcyB0aGUgYnVuZGxlZCBjb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUmVtb3ZlcyB3aGl0ZXNwYWNlIGZyb20gdGhlIGNvZGUuXG4gICAqIFRoaXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4gYG1pbmlmeWAgaXMgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmlmeVdoaXRlc3BhY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZW5hbWVzIGxvY2FsIHZhcmlhYmxlcyB0byBiZSBzaG9ydGVyLlxuICAgKiBUaGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB3aGVuIGBtaW5pZnlgIGlzIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBtaW5pZnlJZGVudGlmaWVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJld3JpdGVzIHN5bnRheCB0byBhIG1vcmUgY29tcGFjdCBmb3JtYXQuXG4gICAqIFRoaXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4gYG1pbmlmeWAgaXMgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG1pbmlmeVN5bnRheD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBtZXRhZmlsZSBpbnRvIHRoaXMgbG9jYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWZpbGUgaXMgd3JpdHRlblxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWZpbGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEJ1bmRsZS5wYWNrYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVQYWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHBhY2thZ2UgZGlyZWN0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IGZpeCBhbnkgKGZpeGFibGUpIHZpb2xhdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhY2thZ2Ugb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2Uge1xuICAvKipcbiAgICogUGF0aCBvZiB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0ZXJuYWwgcGFja2FnZXMgdGhhdCBjYW5ub3QgYmUgYnVuZGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbHMge1xuXG4gIC8qKlxuICAgKiBFeHRlcm5hbCBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBsaXN0ZWQgaW4gdGhlIGBkZXBlbmRlbmNpZXNgIHNlY3Rpb25cbiAgICogb2YgdGhlIG1hbmlmZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGxpc3RlZCBpbiB0aGUgYG9wdGlvbmFsRGVwZW5kZW5jaWVzYCBzZWN0aW9uXG4gICAqIG9mIHRoZSBtYW5pZmVzdC5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsRGVwZW5kZW5jaWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBCdW5kbGUgY2xhc3MgdG8gdmFsaWRhdGUgYW5kIHBhY2sgbm9kZWpzIGJ1bmRsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGUge1xuICBwcml2YXRlIHJlYWRvbmx5IG1hbmlmZXN0OiBhbnk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWNlUGF0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZURpcjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGVudHJ5UG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGV4dGVybmFsczogRXh0ZXJuYWxzO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlczogeyBbc3JjOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkTGljZW5zZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvbnRBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdD86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzb3VyY2VtYXA/OiAnbGlua2VkJyB8ICdpbmxpbmUnIHwgJ2V4dGVybmFsJyB8ICdib3RoJztcbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IG1pbmlmeVdoaXRlc3BhY2U/OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IG1pbmlmeUlkZW50aWZpZXJzPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pZnlTeW50YXg/OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFmaWxlPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2J1bmRsZT86IGVzYnVpbGQuQnVpbGRSZXN1bHQ7XG4gIHByaXZhdGUgX2RlcGVuZGVuY2llcz86IFBhY2thZ2VbXTtcbiAgcHJpdmF0ZSBfZGVwZW5kZW5jaWVzUm9vdD86IHN0cmluZztcblxuICBwcml2YXRlIF9hdHRyaWJ1dGlvbnM/OiBBdHRyaWJ1dGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEJ1bmRsZVByb3BzKSB7XG4gICAgdGhpcy5wYWNrYWdlRGlyID0gcHJvcHMucGFja2FnZURpcjtcbiAgICB0aGlzLm5vdGljZVBhdGggPSBwcm9wcy5hdHRyaWJ1dGlvbnNGaWxlID8/ICdUSElSRF9QQVJUWV9MSUNFTlNFUyc7XG4gICAgdGhpcy5tYW5pZmVzdCA9IGZzLnJlYWRKc29uU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJykpO1xuICAgIHRoaXMuZXh0ZXJuYWxzID0gcHJvcHMuZXh0ZXJuYWxzID8/IHt9O1xuICAgIHRoaXMucmVzb3VyY2VzID0gcHJvcHMucmVzb3VyY2VzID8/IHt9O1xuICAgIHRoaXMudGVzdCA9IHByb3BzLnRlc3Q7XG4gICAgdGhpcy5hbGxvd2VkTGljZW5zZXMgPSBwcm9wcy5hbGxvd2VkTGljZW5zZXMgPz8gREVGQVVMVF9BTExPV0VEX0xJQ0VOU0VTO1xuICAgIHRoaXMuZG9udEF0dHJpYnV0ZSA9IHByb3BzLmRvbnRBdHRyaWJ1dGU7XG4gICAgdGhpcy5lbnRyeVBvaW50cyA9IHt9O1xuICAgIHRoaXMuc291cmNlbWFwID0gcHJvcHMuc291cmNlbWFwO1xuICAgIHRoaXMubWluaWZ5ID0gcHJvcHMubWluaWZ5O1xuICAgIHRoaXMubWluaWZ5V2hpdGVzcGFjZSA9IHByb3BzLm1pbmlmeVdoaXRlc3BhY2U7XG4gICAgdGhpcy5taW5pZnlJZGVudGlmaWVycyA9IHByb3BzLm1pbmlmeUlkZW50aWZpZXJzO1xuICAgIHRoaXMubWluaWZ5U3ludGF4ID0gcHJvcHMubWluaWZ5U3ludGF4O1xuICAgIHRoaXMubWV0YWZpbGUgPSBwcm9wcy5tZXRhZmlsZTtcblxuICAgIGNvbnN0IGVudHJ5UG9pbnRzID0gcHJvcHMuZW50cnlQb2ludHMgPz8gKHRoaXMubWFuaWZlc3QubWFpbiA/IFt0aGlzLm1hbmlmZXN0Lm1haW5dIDogW10pO1xuXG4gICAgaWYgKGVudHJ5UG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGNvbmZpZ3VyZSBhdCBsZWFzdCAxIGVudHJ5cG9pbnQnKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgZW50cnlQb2ludHMpIHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGhpcy5wYWNrYWdlRGlyLCBlbnRyeXBvaW50KSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9jYXRlIGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cnlQb2ludHNbZW50cnlwb2ludC5yZXBsYWNlKCcuanMnLCAnJyldID0gZW50cnlwb2ludDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIGJ1bmRsZSBmb3IgdmlvbGF0aW9ucy5cbiAgICpcbiAgICogSWYgYGZpeGAgaXMgc2V0IHRvIHRydWUsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSByZW1haW5pbmdcbiAgICogdmlvbGF0aW9ucyBhZnRlciB0aGUgZml4ZXMgd2VyZSBhcHBsaWVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBuZXZlciB0aHJvd3MuIFRoZSBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluc3BlY3RpbmcgdGhlXG4gICAqIHJldHVybmVkIHJlcG9ydCBhbmQgYWN0IGFjY29yZGluZ2x5LlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKG9wdGlvbnM6IEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyA9IHt9KTogVmlvbGF0aW9uc1JlcG9ydCB7XG4gICAgY29uc3QgZml4ID0gb3B0aW9ucy5maXggPz8gZmFsc2U7XG5cbiAgICAvLyBmaXJzdCB2YWxpZGF0ZVxuICAgIGNvbnN0IGNpcmN1bGFySW1wb3J0cyA9IHRoaXMudmFsaWRhdGVDaXJjdWxhckltcG9ydHMoKTtcbiAgICBjb25zdCByZXNvdXJjZXMgPSB0aGlzLnZhbGlkYXRlUmVzb3VyY2VzKCk7XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gdGhpcy52YWxpZGF0ZUF0dHJpYnV0aW9ucygpO1xuXG4gICAgY29uc3QgcmVwb3J0ID0gbmV3IFZpb2xhdGlvbnNSZXBvcnQoWy4uLmNpcmN1bGFySW1wb3J0cywgLi4ucmVzb3VyY2VzLCAuLi5hdHRyaWJ1dGlvbnNdKTtcblxuICAgIGlmICghZml4KSB7XG4gICAgICByZXR1cm4gcmVwb3J0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmlvbGF0aW9uIG9mIHJlcG9ydC52aW9sYXRpb25zKSB7XG4gICAgICBpZiAodmlvbGF0aW9uLmZpeCkge1xuICAgICAgICB2aW9sYXRpb24uZml4KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIHRoZSB1biBmaXhhYmxlIHZpb2xhdGlvbnNcbiAgICByZXR1cm4gbmV3IFZpb2xhdGlvbnNSZXBvcnQocmVwb3J0LnZpb2xhdGlvbnMuZmlsdGVyKHYgPT4gIXYuZml4KSk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdGhlIGJ1bmRsZSB2ZXJzaW9uIG9mIHRoZSBwcm9qZWN0IHRvIGEgdGVtcCBkaXJlY3RvcnkuXG4gICAqIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgdGhlIHRvb2wgd2lsbCBlbmQgdXAgcGFja2luZy5cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdGVtcCBkaXJlY3RvcnkgbG9jYXRpb24uXG4gICAqL1xuICBwdWJsaWMgd3JpdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0YXJnZXQgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdidW5kbGUtd3JpdGUtJykpO1xuXG4gICAgLy8gd2UgZGVmaW5pdGVseSBkb24ndCBuZWVkIHRoZXNlIGRpcmVjdG9yaWVzIGluIHRoZSBwYWNrYWdlXG4gICAgLy8gc28gbm8gbmVlZCB0byBjb3B5IHRoZW0gb3Zlci5cbiAgICBjb25zdCBpZ25vcmVEaXJlY3RvcmllcyA9IFsnbm9kZV9tb2R1bGVzJywgJy5naXQnXTtcblxuICAgIC8vIGNvcHkgdGhlIGVudGlyZSBwcm9qZWN0IHNpbmNlIHdlIGFyZSByZXRhaW5pbmcgdGhlIG9yaWdpbmFsIGZpbGVzLlxuICAgIGZzLmNvcHlTeW5jKHRoaXMucGFja2FnZURpciwgdGFyZ2V0LCB7IGZpbHRlcjogbiA9PiAhbi5zcGxpdChwYXRoLnNlcCkuc29tZSgocCA9PiBpZ25vcmVEaXJlY3Rvcmllcy5pbmNsdWRlcyhwKSkpIH0pO1xuXG4gICAgLy8gY2xvbmUgdGhlIG9yaWdpbmFsIG1hbmlmZXN0IHNpbmNlIHdlIGFyZSBnb2luZyB0b1xuICAgIC8vIHRvIG11dGF0ZSBpdC5cbiAgICBjb25zdCBtYW5pZmVzdCA9IHsgLi4udGhpcy5tYW5pZmVzdCB9O1xuXG4gICAgLy8gbWFuaWZlc3QgbXV0YXRpb25zXG4gICAgdGhpcy5yZW1vdmVEZXBlbmRlbmNpZXMobWFuaWZlc3QpO1xuICAgIHRoaXMuYWRkRXh0ZXJuYWxzKG1hbmlmZXN0KTtcblxuICAgIC8vIHdyaXRlIGFydGlmYWN0c1xuICAgIHRoaXMud3JpdGVPdXRwdXRzKHRhcmdldCk7XG4gICAgdGhpcy53cml0ZVJlc291cmNlcyh0YXJnZXQpO1xuICAgIHRoaXMud3JpdGVNYW5pZmVzdCh0YXJnZXQsIG1hbmlmZXN0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdGhlIGJ1bmRsZSBhbmQgY3JlYXRlIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGFyYmFsbC5cbiAgICovXG4gIHB1YmxpYyBwYWNrKG9wdGlvbnM6IEJ1bmRsZVBhY2tPcHRpb25zID0ge30pOiBzdHJpbmcge1xuICAgIGNvbnN0IHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0ID8/IHRoaXMucGFja2FnZURpcjtcblxuICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAoIXJlcG9ydC5zdWNjZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYWNrIGR1ZSB0byB2YWxpZGF0aW9uIGVycm9ycy5cXG5cXG4ke3JlcG9ydC5zdW1tYXJ5fWApO1xuICAgIH1cblxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0YXJnZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcmdldCBkb2VzbnQgZXhpc3Q6ICR7dGFyZ2V0fWApO1xuICAgIH1cblxuICAgIC8vIHJlc29sdmUgc3ltbGlua3MuXG4gICAgY29uc3QgcmVhbFRhcmdldCA9IGZzLnJlYWxwYXRoU3luYyh0YXJnZXQpO1xuXG4gICAgaWYgKCFmcy5sc3RhdFN5bmMocmVhbFRhcmdldCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUYXJnZXQgbXVzdCBiZSBhIGRpcmVjdG9yeTogJHt0YXJnZXR9YCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1dyaXRpbmcgYnVuZGxlJyk7XG4gICAgY29uc3QgYnVuZGxlRGlyID0gdGhpcy53cml0ZSgpO1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy50ZXN0KSB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBgJHtwYXRoLmpvaW4oYnVuZGxlRGlyLCB0aGlzLnRlc3QpfWA7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSdW5uaW5nIHNhbml0eSB0ZXN0OiAke2NvbW1hbmR9YCk7XG4gICAgICAgIHNoZWxsKGNvbW1hbmQsIHsgY3dkOiBidW5kbGVEaXIgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGNyZWF0ZSB0aGUgdGFyYmFsbFxuICAgICAgY29uc29sZS5sb2coJ1BhY2tpbmcnKTtcbiAgICAgIGNvbnN0IHRhcmJhbGwgPSBzaGVsbCgnbnBtIHBhY2snLCB7IHF1aWV0OiB0cnVlLCBjd2Q6IGJ1bmRsZURpciB9KS50cmltKCk7XG4gICAgICBjb25zdCBkZXN0ID0gcGF0aC5qb2luKHJlYWxUYXJnZXQsIHRhcmJhbGwpO1xuICAgICAgZnMuY29weVN5bmMocGF0aC5qb2luKGJ1bmRsZURpciwgdGFyYmFsbCksIGRlc3QsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuIGRlc3Q7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGZzLnJlbW92ZVN5bmMoYnVuZGxlRGlyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBidW5kbGUoKTogZXNidWlsZC5CdWlsZFJlc3VsdCB7XG4gICAgaWYgKHRoaXMuX2J1bmRsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1bmRsZTtcbiAgICB9XG4gICAgdGhpcy5fYnVuZGxlID0gdGhpcy5lc2J1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMuX2J1bmRsZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRlcGVuZGVuY2llcygpOiBQYWNrYWdlW10ge1xuICAgIGlmICh0aGlzLl9kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZXBlbmRlbmNpZXM7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0cyA9IE9iamVjdC5rZXlzKHRoaXMuYnVuZGxlLm1ldGFmaWxlIS5pbnB1dHMpO1xuICAgIGNvbnN0IHBhY2thZ2VzID0gbmV3IFNldChBcnJheS5mcm9tKGlucHV0cykubWFwKGkgPT4gdGhpcy5jbG9zZXN0UGFja2FnZVBhdGgocGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgaSkpKSk7XG4gICAgdGhpcy5fZGVwZW5kZW5jaWVzID0gQXJyYXkuZnJvbShwYWNrYWdlcykubWFwKHAgPT4gdGhpcy5jcmVhdGVQYWNrYWdlKHApKS5maWx0ZXIoZCA9PiBkLm5hbWUgIT09IHVuZGVmaW5lZCAmJiBkLm5hbWUgIT09IHRoaXMubWFuaWZlc3QubmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVuY2llcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRlcGVuZGVuY2llc1Jvb3QoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZGVwZW5kZW5jaWVzUm9vdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVuY2llc1Jvb3Q7XG4gICAgfVxuICAgIGNvbnN0IGxjcCA9IGxvbmdlc3RDb21tb25QYXJlbnQodGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gZC5wYXRoKSk7XG4gICAgdGhpcy5fZGVwZW5kZW5jaWVzUm9vdCA9IHRoaXMuY2xvc2VzdFBhY2thZ2VQYXRoKGxjcCk7XG4gICAgcmV0dXJuIHRoaXMuX2RlcGVuZGVuY2llc1Jvb3Q7XG4gIH1cblxuICBwcml2YXRlIGdldCBhdHRyaWJ1dGlvbnMoKTogQXR0cmlidXRpb25zIHtcbiAgICBpZiAodGhpcy5fYXR0cmlidXRpb25zID09IG51bGwpIHtcbiAgICAgIHRoaXMuX2F0dHJpYnV0aW9ucyA9IG5ldyBBdHRyaWJ1dGlvbnMoe1xuICAgICAgICBwYWNrYWdlRGlyOiB0aGlzLnBhY2thZ2VEaXIsXG4gICAgICAgIHBhY2thZ2VOYW1lOiB0aGlzLm1hbmlmZXN0Lm5hbWUsXG4gICAgICAgIGZpbGVQYXRoOiB0aGlzLm5vdGljZVBhdGgsXG4gICAgICAgIGRlcGVuZGVuY2llczogdGhpcy5kZXBlbmRlbmNpZXMsXG4gICAgICAgIGRlcGVuZGVuY2llc1Jvb3Q6IHRoaXMuZGVwZW5kZW5jaWVzUm9vdCxcbiAgICAgICAgZXhjbHVkZTogdGhpcy5kb250QXR0cmlidXRlLFxuICAgICAgICBhbGxvd2VkTGljZW5zZXM6IHRoaXMuYWxsb3dlZExpY2Vuc2VzLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFeHRlcm5hbERlcGVuZGVuY3lWZXJzaW9uKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdmVyc2lvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIC8vIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBleGlzdCBpbiB0aGUgZGVwZW5kZW5jaWVzIGxpc3RcbiAgICAvLyBzaW5jZSBlc2J1aWxkIHNraXBzIG92ZXIgdGhlbS4gYnV0IHRoZXkgd2lsbCBleGlzdCBhcyBhIGRlcGVuZGVuY3kgb2ZcbiAgICAvLyBvbmUgb2YgdGhlbSAob3Igb2YgdXMpXG4gICAgZm9yIChjb25zdCBwa2cgb2YgWy4uLnRoaXMuZGVwZW5kZW5jaWVzLCB0aGlzLmNyZWF0ZVBhY2thZ2UodGhpcy5wYWNrYWdlRGlyKV0pIHtcbiAgICAgIGNvbnN0IG1hbmlmZXN0ID0gZnMucmVhZEpTT05TeW5jKHBhdGguam9pbihwa2cucGF0aCwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICAgIGNvbnN0IHJ1bnRpbWUgPSAobWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gKG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IHt9KVtuYW1lXTtcblxuICAgICAgY29uc3QgcGluID0gKHZlcnNpb246IHN0cmluZykgPT4gKHZlcnNpb24uc3RhcnRzV2l0aCgnXicpIHx8IHZlcnNpb24uc3RhcnRzV2l0aCgnficpKSA/IHZlcnNpb24uc3Vic3RyaW5nKDEpIDogdmVyc2lvbjtcblxuICAgICAgaWYgKHJ1bnRpbWUpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihydW50aW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uYWwpIHtcbiAgICAgICAgdmVyc2lvbnMuYWRkKHBpbihvcHRpb25hbCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlY3QgdmVyc2lvbiBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfWApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucy5zaXplID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB2ZXJzaW9ucyBkZXRlY3RlZCBmb3IgZXh0ZXJuYWwgZGVwZW5kZW5jeTogJHtuYW1lfSAoJHtBcnJheS5mcm9tKHZlcnNpb25zKS5qb2luKCcsJyl9KWApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZXN0UGFja2FnZVBhdGgoZmRwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihmZHAsICdwYWNrYWdlLmpzb24nKSkpIHtcbiAgICAgIHJldHVybiBmZHA7XG4gICAgfVxuXG4gICAgaWYgKHBhdGguZGlybmFtZShmZHApID09PSBmZHApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgcGFja2FnZSBtYW5pZmVzdCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNsb3Nlc3RQYWNrYWdlUGF0aChwYXRoLmRpcm5hbWUoZmRwKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBhY2thZ2UocGFja2FnZURpcjogc3RyaW5nKTogUGFja2FnZSB7XG4gICAgY29uc3QgbWFuaWZlc3RQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXIsICdwYWNrYWdlLmpzb24nKTtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGZzLnJlYWRKU09OU3luYyhtYW5pZmVzdFBhdGgpO1xuICAgIHJldHVybiB7IHBhdGg6IHBhY2thZ2VEaXIsIG5hbWU6IG1hbmlmZXN0Lm5hbWUsIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb24gfTtcbiAgfVxuXG4gIHByaXZhdGUgZXNidWlsZCgpOiBlc2J1aWxkLkJ1aWxkUmVzdWx0IHtcbiAgICBjb25zdCBidW5kbGUgPSBlc2J1aWxkLmJ1aWxkU3luYyh7XG4gICAgICBlbnRyeVBvaW50czogdGhpcy5lbnRyeVBvaW50cyxcbiAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgIHRhcmdldDogJ25vZGUxOCcsXG4gICAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgICAgc291cmNlbWFwOiB0aGlzLnNvdXJjZW1hcCxcbiAgICAgIG1ldGFmaWxlOiB0cnVlLCAvLyB0aGlzIGlzIGFsd2F5cyByZXF1aXJlZCBmb3Igc29tZSBvZiBvdXIgdmFsaWRhdGlvbiBydWxlc1xuICAgICAgbWluaWZ5OiB0aGlzLm1pbmlmeSxcbiAgICAgIG1pbmlmeVdoaXRlc3BhY2U6IHRoaXMubWluaWZ5V2hpdGVzcGFjZSxcbiAgICAgIG1pbmlmeUlkZW50aWZpZXJzOiB0aGlzLm1pbmlmeUlkZW50aWZpZXJzLFxuICAgICAgbWluaWZ5U3ludGF4OiB0aGlzLm1pbmlmeVN5bnRheCxcbiAgICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgICAgYWJzV29ya2luZ0RpcjogdGhpcy5wYWNrYWdlRGlyLFxuICAgICAgZXh0ZXJuYWw6IFsuLi4odGhpcy5leHRlcm5hbHMuZGVwZW5kZW5jaWVzID8/IFtdKSwgLi4uKHRoaXMuZXh0ZXJuYWxzLm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IFtdKV0sXG4gICAgICB3cml0ZTogZmFsc2UsXG4gICAgICBvdXRkaXI6IHRoaXMucGFja2FnZURpcixcbiAgICAgIGFsbG93T3ZlcndyaXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gV3JpdGUgbWV0YWZpbGUgb25seSB3aGVuIHJlcXVlc3RlZFxuICAgIGlmICh0aGlzLm1ldGFmaWxlKSB7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMubWV0YWZpbGUsIEpTT04uc3RyaW5naWZ5KGJ1bmRsZS5tZXRhZmlsZSwgbnVsbCwgMikpO1xuICAgIH1cblxuICAgIGlmIChidW5kbGUud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgLy8gZXNidWlsZCB3YXJuaW5ncyBhcmUgdXN1YWxseSBpbXBvcnRhbnQsIGxldHMgdHJ5IHRvIGJlIHN0cmljdCBoZXJlLlxuICAgICAgLy8gdGhlIHdhcm5pbmdzIHRoZW1zZWx2ZXMgYXJlIHByaW50ZWQgb24gc2NyZWVuLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3VuZCAke2J1bmRsZS53YXJuaW5ncy5sZW5ndGh9IGJ1bmRsaW5nIHdhcm5pbmdzIChTZWUgYWJvdmUpYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1bmRsZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDaXJjdWxhckltcG9ydHMoKTogVmlvbGF0aW9uW10ge1xuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW5nIGNpcmN1bGFyIGltcG9ydHMnKTtcbiAgICBjb25zdCB2aW9sYXRpb25zOiBWaW9sYXRpb25bXSA9IFtdO1xuICAgIGNvbnN0IHBhY2thZ2VzID0gW3RoaXMucGFja2FnZURpciwgLi4udGhpcy5kZXBlbmRlbmNpZXMubWFwKGQgPT4gZC5wYXRoKV07XG4gICAgdHJ5IHtcbiAgICAgIC8vIHdlIGRvbid0IHVzZSB0aGUgcHJvZ3JhbW1hdGljIEFQSSBzaW5jZSBpdCBvbmx5IG9mZmVycyBhbiBhc3luYyBBUEkuXG4gICAgICAvLyBwcmVmZXIgdG8gc3RheSBzeW5jIGZvciBub3cgc2luY2UgaXRzIGVhc2llciB0byBpbnRlZ3JhdGUgd2l0aCBvdGhlciB0b29saW5nLlxuICAgICAgLy8gd2lsbCBvZmZlciBhbiBhc3luYyBBUEkgZnVydGhlciBkb3duIHRoZSByb2FkLlxuICAgICAgY29uc3QgY29tbWFuZCA9IGAke3JlcXVpcmUucmVzb2x2ZSgnbWFkZ2UvYmluL2NsaS5qcycpfSAtLWpzb24gLS13YXJuaW5nIC0tbm8tY29sb3IgLS1uby1zcGlubmVyIC0tY2lyY3VsYXIgLS1leHRlbnNpb25zIGpzICR7cGFja2FnZXMuam9pbignICcpfWA7XG4gICAgICBzaGVsbChjb21tYW5kLCB7IHF1aWV0OiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc3QgaW1wb3J0czogc3RyaW5nW11bXSA9IEpTT04ucGFyc2UoZS5zdGRvdXQudG9TdHJpbmcoKS50cmltKCkpO1xuICAgICAgZm9yIChjb25zdCBpbXAgb2YgaW1wb3J0cykge1xuICAgICAgICB2aW9sYXRpb25zLnB1c2goeyB0eXBlOiBWaW9sYXRpb25UeXBlLkNJUkNVTEFSX0lNUE9SVCwgbWVzc2FnZTogYCR7aW1wLmpvaW4oJyAtPiAnKX1gIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2aW9sYXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlc291cmNlcygpOiBWaW9sYXRpb25bXSB7XG4gICAgY29uc29sZS5sb2coJ1ZhbGlkYXRpbmcgcmVzb3VyY2VzJyk7XG4gICAgY29uc3QgdmlvbGF0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3QgW3NyYywgX10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHRoaXMucGFja2FnZURpciwgc3JjKSkpIHtcbiAgICAgICAgdmlvbGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBWaW9sYXRpb25UeXBlLk1JU1NJTkdfUkVTT1VSQ0UsXG4gICAgICAgICAgbWVzc2FnZTogYFVuYWJsZSB0byBmaW5kIHJlc291cmNlICgke3NyY30pIHJlbGF0aXZlIHRvIHRoZSBwYWNrYWdlIGRpcmVjdG9yeWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmlvbGF0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVBdHRyaWJ1dGlvbnMoKTogcmVhZG9ubHkgVmlvbGF0aW9uW10ge1xuICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW5nIGF0dHJpYnV0aW9ucycpO1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0aW9ucy52YWxpZGF0ZSgpLnZpb2xhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dGVybmFscyhtYW5pZmVzdDogYW55KSB7XG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgcnVudGltZSBkZXBlbmRlbmNpZXNcbiAgICBmb3IgKGNvbnN0IGV4dGVybmFsIG9mIHRoaXMuZXh0ZXJuYWxzLmRlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGVwZW5kZW5jaWVzID8/IHt9O1xuICAgICAgbWFuaWZlc3QuZGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuXG4gICAgLy8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgb3B0aW9uYWwgZGVwZW5kZW5jaWVzXG4gICAgZm9yIChjb25zdCBleHRlcm5hbCBvZiB0aGlzLmV4dGVybmFscy5vcHRpb25hbERlcGVuZGVuY2llcyA/PyBbXSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZmluZEV4dGVybmFsRGVwZW5kZW5jeVZlcnNpb24oZXh0ZXJuYWwpO1xuICAgICAgbWFuaWZlc3Qub3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBtYW5pZmVzdC5vcHRpb25hbERlcGVuZGVuY2llcyA/PyB7fTtcbiAgICAgIG1hbmlmZXN0Lm9wdGlvbmFsRGVwZW5kZW5jaWVzW2V4dGVybmFsXSA9IHZlcnNpb247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEZXBlbmRlbmNpZXMobWFuaWZlc3Q6IGFueSkge1xuICAgIGZvciAoY29uc3QgW2QsIHZdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMubWFuaWZlc3QuZGVwZW5kZW5jaWVzKSkge1xuICAgICAgbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzID0gbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzID8/IHt9O1xuICAgICAgbWFuaWZlc3QuZGV2RGVwZW5kZW5jaWVzW2RdID0gdjtcbiAgICAgIGRlbGV0ZSBtYW5pZmVzdC5kZXBlbmRlbmNpZXNbZF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZU91dHB1dHMod29ya0Rpcjogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBvdXRwdXQgb2YgdGhpcy5idW5kbGUub3V0cHV0RmlsZXMgPz8gW10pIHtcbiAgICAgIGNvbnN0IG91dCA9IG91dHB1dC5wYXRoLnJlcGxhY2UodGhpcy5wYWNrYWdlRGlyLCB3b3JrRGlyKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMob3V0LCBvdXRwdXQuY29udGVudHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVSZXNvdXJjZXMod29ya2Rpcjogc3RyaW5nKSB7XG4gICAgZm9yIChjb25zdCBbc3JjLCBkc3RdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucmVzb3VyY2VzKSkge1xuICAgICAgY29uc3QgdG8gPSBwYXRoLmpvaW4od29ya2RpciwgZHN0KTtcbiAgICAgIGZzLmNvcHlTeW5jKHBhdGguam9pbih0aGlzLnBhY2thZ2VEaXIsIHNyYyksIHRvLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHdyaXRlTWFuaWZlc3Qod29ya0Rpcjogc3RyaW5nLCBtYW5pZmVzdDogYW55KSB7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4od29ya0RpciwgJ3BhY2thZ2UuanNvbicpLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdCwgbnVsbCwgMikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxvbmdlc3RDb21tb25QYXJlbnQocGF0aHM6IHN0cmluZ1tdKSB7XG4gIGZ1bmN0aW9uIF9sb25nZXN0Q29tbW9uUGFyZW50KHAxOiBzdHJpbmcsIHAyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpcnMxID0gcDEuc3BsaXQocGF0aC5zZXApO1xuICAgIGNvbnN0IGRpcnMyID0gcDIuc3BsaXQocGF0aC5zZXApO1xuICAgIGNvbnN0IHBhcmVudCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oZGlyczEubGVuZ3RoLCBkaXJzMi5sZW5ndGgpOyBpKyspIHtcbiAgICAgIGlmIChkaXJzMVtpXSAhPT0gZGlyczJbaV0pIGJyZWFrO1xuICAgICAgcGFyZW50LnB1c2goZGlyczFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50LmpvaW4ocGF0aC5zZXApO1xuICB9XG5cbiAgcmV0dXJuIHBhdGhzLnJlZHVjZShfbG9uZ2VzdENvbW1vblBhcmVudCk7XG59XG4iXX0=
package/lib/api/index.js CHANGED
@@ -16,4 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./bundle"), exports);
18
18
  __exportStar(require("./violation"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idW5kbGUnO1xuZXhwb3J0ICogZnJvbSAnLi92aW9sYXRpb24nOyJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idW5kbGUnO1xuZXhwb3J0ICogZnJvbSAnLi92aW9sYXRpb24nO1xuIl19
@@ -68,4 +68,4 @@ class ViolationsReport {
68
68
  }
69
69
  }
70
70
  exports.ViolationsReport = ViolationsReport;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlvbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS92aW9sYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLGFBcUNYO0FBckNELFdBQVksYUFBYTtJQUV2Qjs7T0FFRztJQUNILG9EQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsZ0VBQStDLENBQUE7SUFFL0M7O09BRUc7SUFDSCxrREFBaUMsQ0FBQTtJQUVqQzs7T0FFRztJQUNILG9EQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsMENBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCxzREFBcUMsQ0FBQTtJQUVyQzs7T0FFRztJQUNILHNEQUFxQyxDQUFBO0FBRXZDLENBQUMsRUFyQ1csYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFxQ3hCO0FBcUJEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFFM0IsWUFBNkIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFBRyxDQUFDO0lBRXpEOztPQUVHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sc0JBQXNCO1NBQ2pELENBQUM7UUFDRixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkU7UUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUVGO0FBL0JELDRDQStCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmlvbGF0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgZW51bSBWaW9sYXRpb25UeXBlIHtcblxuICAvKipcbiAgICogQ2lyY3VsYXIgaW1wb3J0IG9uIHRoZSBwYWNrYWdlIG9yIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgQ0lSQ1VMQVJfSU1QT1JUID0gJ2NpcmN1bGFyLWltcG9ydCcsXG5cbiAgLyoqXG4gICAqIE91dGRhdGVkIGF0dHJpYnV0aW9ucyBmaWxlLlxuICAgKi9cbiAgT1VUREFURURfQVRUUklCVVRJT05TID0gJ291dGRhdGVkLWF0dHJpYnV0aW9ucycsXG5cbiAgLyoqXG4gICAqIE1pc3Npbmcgbm90aWNlIGZpbGUuXG4gICAqL1xuICBNSVNTSU5HX05PVElDRSA9ICdtaXNzaW5nLW5vdGljZScsXG5cbiAgLyoqXG4gICAqIEludmFsaWQgbGljZW5zZS5cbiAgICovXG4gIElOVkFMSURfTElDRU5TRSA9ICdpbnZhbGlkLWxpY2Vuc2UnLFxuXG4gIC8qKlxuICAgKiBObyBsaWNlbnNlLlxuICAgKi9cbiAgTk9fTElDRU5TRSA9ICduby1saWNlbnNlJyxcblxuICAvKipcbiAgICogTXVsdGlwbGUgbGljZW5zZXMuXG4gICAqL1xuICBNVUxUSVBMRV9MSUNFTlNFID0gJ211bHRpcGxlLWxpY2Vuc2UnLFxuXG4gIC8qKlxuICAgKiBNaXNzaW5nIHJlc291cmNlIGZpbGUuXG4gICAqL1xuICBNSVNTSU5HX1JFU09VUkNFID0gJ21pc3NpbmctcmVzb3VyY2UnLFxuXG59XG5cbi8qKlxuICogQSB2YWxpZGF0aW9uIHZpb2xhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW9sYXRpb24ge1xuICAvKipcbiAgICogVGhlIHZpb2xhdGlvbiB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVmlvbGF0aW9uVHlwZTtcbiAgLyoqXG4gICAqIFRoZSB2aW9sYXRpb24gbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZml4ZXIgZnVuY3Rpb24uXG4gICAqIElmIHVuZGVmaW5lZCwgdGhpcyB2aW9sYXRpb24gY2Fubm90IGJlIGZpeGVkIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICByZWFkb25seSBmaXg/OiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFJlcG9ydCBlbmNhcHN1bGF0aW5nIGEgbGlzdCBvZiB2aW9sYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgVmlvbGF0aW9uc1JlcG9ydCB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfdmlvbGF0aW9uczogVmlvbGF0aW9uW10pIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHZpb2xhdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHZpb2xhdGlvbnMoKTogcmVhZG9ubHkgVmlvbGF0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl92aW9sYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydWUgd2hlbiBubyB2aW9sYXRpb25zIGV4aXN0LiBGYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlvbGF0aW9ucy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogU3VtbWFyeSBvZiB0aGUgdmlvbGF0aW9uIGluIHRoZSByZXBvcnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1bW1hcnkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gW1xuICAgICAgYCR7dGhpcy5fdmlvbGF0aW9ucy5sZW5ndGh9IHZpb2xhdGlvbnMgZGV0ZWN0ZWRgLFxuICAgIF07XG4gICAgZm9yIChjb25zdCB2IG9mIHRoaXMuX3Zpb2xhdGlvbnMpIHtcbiAgICAgIHN1bW1hcnkucHVzaChgLSAke3YudHlwZX06ICR7di5tZXNzYWdlfSR7di5maXggPyAnIChmaXhhYmxlKScgOiAnJ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1bW1hcnkuam9pbignXFxuJyk7XG4gIH1cblxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlvbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS92aW9sYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLGFBcUNYO0FBckNELFdBQVksYUFBYTtJQUV2Qjs7T0FFRztJQUNILG9EQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsZ0VBQStDLENBQUE7SUFFL0M7O09BRUc7SUFDSCxrREFBaUMsQ0FBQTtJQUVqQzs7T0FFRztJQUNILG9EQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gsMENBQXlCLENBQUE7SUFFekI7O09BRUc7SUFDSCxzREFBcUMsQ0FBQTtJQUVyQzs7T0FFRztJQUNILHNEQUFxQyxDQUFBO0FBRXZDLENBQUMsRUFyQ1csYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFxQ3hCO0FBcUJEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFDM0IsWUFBNkIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sc0JBQXNCO1NBQ2pELENBQUM7UUFDRixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkU7UUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBOUJELDRDQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmlvbGF0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgZW51bSBWaW9sYXRpb25UeXBlIHtcblxuICAvKipcbiAgICogQ2lyY3VsYXIgaW1wb3J0IG9uIHRoZSBwYWNrYWdlIG9yIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgQ0lSQ1VMQVJfSU1QT1JUID0gJ2NpcmN1bGFyLWltcG9ydCcsXG5cbiAgLyoqXG4gICAqIE91dGRhdGVkIGF0dHJpYnV0aW9ucyBmaWxlLlxuICAgKi9cbiAgT1VUREFURURfQVRUUklCVVRJT05TID0gJ291dGRhdGVkLWF0dHJpYnV0aW9ucycsXG5cbiAgLyoqXG4gICAqIE1pc3Npbmcgbm90aWNlIGZpbGUuXG4gICAqL1xuICBNSVNTSU5HX05PVElDRSA9ICdtaXNzaW5nLW5vdGljZScsXG5cbiAgLyoqXG4gICAqIEludmFsaWQgbGljZW5zZS5cbiAgICovXG4gIElOVkFMSURfTElDRU5TRSA9ICdpbnZhbGlkLWxpY2Vuc2UnLFxuXG4gIC8qKlxuICAgKiBObyBsaWNlbnNlLlxuICAgKi9cbiAgTk9fTElDRU5TRSA9ICduby1saWNlbnNlJyxcblxuICAvKipcbiAgICogTXVsdGlwbGUgbGljZW5zZXMuXG4gICAqL1xuICBNVUxUSVBMRV9MSUNFTlNFID0gJ211bHRpcGxlLWxpY2Vuc2UnLFxuXG4gIC8qKlxuICAgKiBNaXNzaW5nIHJlc291cmNlIGZpbGUuXG4gICAqL1xuICBNSVNTSU5HX1JFU09VUkNFID0gJ21pc3NpbmctcmVzb3VyY2UnLFxuXG59XG5cbi8qKlxuICogQSB2YWxpZGF0aW9uIHZpb2xhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaW9sYXRpb24ge1xuICAvKipcbiAgICogVGhlIHZpb2xhdGlvbiB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogVmlvbGF0aW9uVHlwZTtcbiAgLyoqXG4gICAqIFRoZSB2aW9sYXRpb24gbWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZml4ZXIgZnVuY3Rpb24uXG4gICAqIElmIHVuZGVmaW5lZCwgdGhpcyB2aW9sYXRpb24gY2Fubm90IGJlIGZpeGVkIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICByZWFkb25seSBmaXg/OiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFJlcG9ydCBlbmNhcHN1bGF0aW5nIGEgbGlzdCBvZiB2aW9sYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgVmlvbGF0aW9uc1JlcG9ydCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3Zpb2xhdGlvbnM6IFZpb2xhdGlvbltdKSB7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdmlvbGF0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmlvbGF0aW9ucygpOiByZWFkb25seSBWaW9sYXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpb2xhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVHJ1ZSB3aGVuIG5vIHZpb2xhdGlvbnMgZXhpc3QuIEZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc3VjY2VzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aW9sYXRpb25zLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdW1tYXJ5IG9mIHRoZSB2aW9sYXRpb24gaW4gdGhlIHJlcG9ydC5cbiAgICovXG4gIHB1YmxpYyBnZXQgc3VtbWFyeSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1bW1hcnkgPSBbXG4gICAgICBgJHt0aGlzLl92aW9sYXRpb25zLmxlbmd0aH0gdmlvbGF0aW9ucyBkZXRlY3RlZGAsXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5fdmlvbGF0aW9ucykge1xuICAgICAgc3VtbWFyeS5wdXNoKGAtICR7di50eXBlfTogJHt2Lm1lc3NhZ2V9JHt2LmZpeCA/ICcgKGZpeGFibGUpJyA6ICcnfWApO1xuICAgIH1cbiAgICByZXR1cm4gc3VtbWFyeS5qb2luKCdcXG4nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export declare function cliMain(cliArgs: string[]): Promise<void>;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.cliMain = void 0;
27
+ const path = __importStar(require("path"));
28
+ const fs = __importStar(require("fs-extra"));
29
+ const yargs = __importStar(require("yargs"));
30
+ const api_1 = require("./api");
31
+ function versionNumber() {
32
+ return fs.readJSONSync(path.join(__dirname, '..', 'package.json')).version;
33
+ }
34
+ async function cliMain(cliArgs) {
35
+ const argv = await yargs
36
+ .usage('Usage: node-bundle COMMAND')
37
+ .option('entrypoint', { type: 'array', nargs: 1, desc: 'List of entrypoints to bundle' })
38
+ .option('external', { type: 'array', nargs: 1, default: [], desc: 'Packages in this list will be excluded from the bundle and added as dependencies (example: fsevents:optional)' })
39
+ .option('allowed-license', { type: 'array', nargs: 1, default: [], desc: 'List of valid licenses' })
40
+ .option('resource', { type: 'array', nargs: 1, default: [], desc: 'List of resources that need to be explicitly copied to the bundle (example: node_modules/proxy-agent/contextify.js:bin/contextify.js)' })
41
+ .option('dont-attribute', { type: 'string', desc: 'Dependencies matching this regular expressions wont be added to the notice file' })
42
+ .option('test', { type: 'string', desc: 'Validation command to sanity test the bundle after its created' })
43
+ .option('minify-whitespace', { type: 'boolean', default: false, desc: 'Minify whitespace' })
44
+ .option('metafile', { type: 'string', desc: 'Produce a metafile about the build that can be analyzed' })
45
+ .command('validate', 'Validate the package is ready for bundling', args => args
46
+ .option('fix', { type: 'boolean', default: false, alias: 'f', desc: 'Fix any fixable violations' }))
47
+ .command('write', 'Write the bundled version of the project to a temp directory')
48
+ .command('pack', 'Write the bundle and create the tarball', args => args
49
+ .option('destination', { type: 'string', desc: 'Directory to write the tarball to', nargs: 1, requiresArg: true }))
50
+ .demandCommand() // require a subcommand
51
+ .strict() // require a VALID subcommand, and only supported options
52
+ .fail((msg, err) => {
53
+ // Throw an error in test mode, exit with an error code otherwise
54
+ if (err) {
55
+ throw err;
56
+ }
57
+ if (process.env.NODE_ENV === 'test') {
58
+ throw new Error(msg);
59
+ }
60
+ console.error(msg);
61
+ process.exit(1); // exit() not exitCode, we must not return.
62
+ })
63
+ .help()
64
+ .version(versionNumber())
65
+ .parse(cliArgs);
66
+ const command = argv._[0];
67
+ function undefinedIfEmpty(arr) {
68
+ if (!arr || arr.length === 0)
69
+ return undefined;
70
+ return arr;
71
+ }
72
+ const resources = {};
73
+ for (const resource of argv.resource) {
74
+ const parts = resource.split(':');
75
+ resources[parts[0]] = parts[1];
76
+ }
77
+ const optionalExternals = [];
78
+ const runtimeExternals = [];
79
+ for (const external of argv.external) {
80
+ const parts = external.split(':');
81
+ const name = parts[0];
82
+ const type = parts[1];
83
+ switch (type) {
84
+ case 'optional':
85
+ optionalExternals.push(name);
86
+ break;
87
+ case 'runtime':
88
+ runtimeExternals.push(name);
89
+ break;
90
+ default:
91
+ throw new Error(`Unsupported dependency type '${type}' for external package '${name}'. Supported types are: ['optional', 'runtime']`);
92
+ }
93
+ }
94
+ const props = {
95
+ packageDir: process.cwd(),
96
+ entryPoints: undefinedIfEmpty(argv.entrypoint),
97
+ externals: { dependencies: runtimeExternals, optionalDependencies: optionalExternals },
98
+ allowedLicenses: undefinedIfEmpty(argv['allowed-license']),
99
+ resources: resources,
100
+ dontAttribute: argv['dont-attribute'],
101
+ test: argv.test,
102
+ minifyWhitespace: argv['minify-whitespace'],
103
+ metafile: argv.metafile,
104
+ };
105
+ const bundle = new api_1.Bundle(props);
106
+ switch (command) {
107
+ case 'validate':
108
+ // When using `yargs.command(command, builder [, handler])` without the handler
109
+ // as we do here, there is no typing for command-specific options. So force a cast.
110
+ const fix = argv.fix;
111
+ validate(bundle, { fix });
112
+ break;
113
+ case 'write':
114
+ write(bundle);
115
+ break;
116
+ case 'pack':
117
+ const target = argv.destination;
118
+ pack(bundle, {
119
+ target,
120
+ });
121
+ break;
122
+ default:
123
+ throw new Error(`Unknown command: ${command}`);
124
+ }
125
+ }
126
+ exports.cliMain = cliMain;
127
+ function write(bundle) {
128
+ const bundleDir = bundle.write();
129
+ console.log(bundleDir);
130
+ }
131
+ function validate(bundle, options = {}) {
132
+ const report = bundle.validate(options);
133
+ if (!report.success) {
134
+ throw new Error(report.summary);
135
+ }
136
+ }
137
+ function pack(bundle, options) {
138
+ bundle.pack(options);
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1haW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLW1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLDZDQUErQjtBQUUvQiwrQkFBK0I7QUFFL0IsU0FBUyxhQUFhO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDN0UsQ0FBQztBQUVNLEtBQUssVUFBVSxPQUFPLENBQUMsT0FBaUI7SUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLO1NBQ3JCLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztTQUNuQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxDQUFDO1NBQ3hGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsK0dBQStHLEVBQUUsQ0FBQztTQUNuTCxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztTQUNuRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHVJQUF1SSxFQUFFLENBQUM7U0FDM00sTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFFB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QUM7WUFDZCxNQUFNO1FBQ1IsS0FBSyxNQUFNO1lBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQWlDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxNQUFNO2FBQ1AsQ0FBQyxDQUFDO1lBQ0gsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFwR0QsMEJBb0dDO0FBRUQsU0FBUyxLQUFLLENBQUMsTUFBYztJQUMzQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsTUFBYyxFQUFFLFVBQWlDLEVBQUU7SUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxNQUFjLEVBQUUsT0FBMkI7SUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB0eXBlIHsgQnVuZGxlUGFja09wdGlvbnMsIEJ1bmRsZVByb3BzLCBCdW5kbGVWYWxpZGF0ZU9wdGlvbnMgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBCdW5kbGUgfSBmcm9tICcuL2FwaSc7XG5cbmZ1bmN0aW9uIHZlcnNpb25OdW1iZXIoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZzLnJlYWRKU09OU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjbGlNYWluKGNsaUFyZ3M6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGFyZ3YgPSBhd2FpdCB5YXJnc1xuICAgIC51c2FnZSgnVXNhZ2U6IG5vZGUtYnVuZGxlIENPTU1BTkQnKVxuICAgIC5vcHRpb24oJ2VudHJ5cG9pbnQnLCB7IHR5cGU6ICdhcnJheScsIG5hcmdzOiAxLCBkZXNjOiAnTGlzdCBvZiBlbnRyeXBvaW50cyB0byBidW5kbGUnIH0pXG4gICAgLm9wdGlvbignZXh0ZXJuYWwnLCB7IHR5cGU6ICdhcnJheScsIG5hcmdzOiAxLCBkZWZhdWx0OiBbXSwgZGVzYzogJ1BhY2thZ2VzIGluIHRoaXMgbGlzdCB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGJ1bmRsZSBhbmQgYWRkZWQgYXMgZGVwZW5kZW5jaWVzIChleGFtcGxlOiBmc2V2ZW50czpvcHRpb25hbCknIH0pXG4gICAgLm9wdGlvbignYWxsb3dlZC1saWNlbnNlJywgeyB0eXBlOiAnYXJyYXknLCBuYXJnczogMSwgZGVmYXVsdDogW10sIGRlc2M6ICdMaXN0IG9mIHZhbGlkIGxpY2Vuc2VzJyB9KVxuICAgIC5vcHRpb24oJ3Jlc291cmNlJywgeyB0eXBlOiAnYXJyYXknLCBuYXJnczogMSwgZGVmYXVsdDogW10sIGRlc2M6ICdMaXN0IG9mIHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb3BpZWQgdG8gdGhlIGJ1bmRsZSAoZXhhbXBsZTogbm9kZV9tb2R1bGVzL3Byb3h5LWFnZW50L2NvbnRleHRpZnkuanM6YmluL2NvbnRleHRpZnkuanMpJyB9KVxuICAgIC5vcHRpb24oJ2RvbnQtYXR0cmlidXRlJywgeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ0RlcGVuZGVuY2llcyBtYXRjaGluZyB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd29udCBiZSBhZGRlZCB0byB0aGUgbm90aWNlIGZpbGUnIH0pXG4gICAgLm9wdGlvbigndGVzdCcsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdWYWxpZGF0aW9uIGNvbW1hbmQgdG8gc2FuaXR5IHRlc3QgdGhlIGJ1bmRsZSBhZnRlciBpdHMgY3JlYXRlZCcgfSlcbiAgICAub3B0aW9uKCdtaW5pZnktd2hpdGVzcGFjZScsIHsgdHlwZTogJ2Jvb2xlYW4nLCBkZWZhdWx0OiBmYWxzZSwgZGVzYzogJ01pbmlmeSB3aGl0ZXNwYWNlJyB9KVxuICAgIC5vcHRpb24oJ21ldGFmaWxlJywgeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ1Byb2R1Y2UgYSBtZXRhZmlsZSBhYm91dCB0aGUgYnVpbGQgdGhhdCBjYW4gYmUgYW5hbHl6ZWQnIH0pXG4gICAgLmNvbW1hbmQoJ3ZhbGlkYXRlJywgJ1ZhbGlkYXRlIHRoZSBwYWNrYWdlIGlzIHJlYWR5IGZvciBidW5kbGluZycsIGFyZ3MgPT4gYXJnc1xuICAgICAgLm9wdGlvbignZml4JywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBhbGlhczogJ2YnLCBkZXNjOiAnRml4IGFueSBmaXhhYmxlIHZpb2xhdGlvbnMnIH0pLFxuICAgIClcbiAgICAuY29tbWFuZCgnd3JpdGUnLCAnV3JpdGUgdGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCB0byBhIHRlbXAgZGlyZWN0b3J5JylcbiAgICAuY29tbWFuZCgncGFjaycsICdXcml0ZSB0aGUgYnVuZGxlIGFuZCBjcmVhdGUgdGhlIHRhcmJhbGwnLCBhcmdzID0+IGFyZ3NcbiAgICAgIC5vcHRpb24oJ2Rlc3RpbmF0aW9uJywgeyB0eXBlOiAnc3RyaW5nJywgZGVzYzogJ0RpcmVjdG9yeSB0byB3cml0ZSB0aGUgdGFyYmFsbCB0bycsIG5hcmdzOiAxLCByZXF1aXJlc0FyZzogdHJ1ZSB9KSxcbiAgICApXG4gICAgLmRlbWFuZENvbW1hbmQoKSAvLyByZXF1aXJlIGEgc3ViY29tbWFuZFxuICAgIC5zdHJpY3QoKSAvLyByZXF1aXJlIGEgVkFMSUQgc3ViY29tbWFuZCwgYW5kIG9ubHkgc3VwcG9ydGVkIG9wdGlvbnNcbiAgICAuZmFpbCgobXNnLCBlcnIpID0+IHtcbiAgICAgIC8vIFRocm93IGFuIGVycm9yIGluIHRlc3QgbW9kZSwgZXhpdCB3aXRoIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpOyAvLyBleGl0KCkgbm90IGV4aXRDb2RlLCB3ZSBtdXN0IG5vdCByZXR1cm4uXG4gICAgfSlcbiAgICAuaGVscCgpXG4gICAgLnZlcnNpb24odmVyc2lvbk51bWJlcigpKVxuICAgIC5wYXJzZShjbGlBcmdzKTtcblxuICBjb25zdCBjb21tYW5kID0gYXJndi5fWzBdO1xuXG4gIGZ1bmN0aW9uIHVuZGVmaW5lZElmRW1wdHkoYXJyPzogYW55W10pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFhcnIgfHwgYXJyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gYXJyIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VzOiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCByZXNvdXJjZSBvZiAoYXJndi5yZXNvdXJjZSBhcyBzdHJpbmdbXSkpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHJlc291cmNlLnNwbGl0KCc6Jyk7XG4gICAgcmVzb3VyY2VzW3BhcnRzWzBdXSA9IHBhcnRzWzFdO1xuICB9XG5cbiAgY29uc3Qgb3B0aW9uYWxFeHRlcm5hbHMgPSBbXTtcbiAgY29uc3QgcnVudGltZUV4dGVybmFscyA9IFtdO1xuXG4gIGZvciAoY29uc3QgZXh0ZXJuYWwgb2YgKGFyZ3YuZXh0ZXJuYWwgYXMgc3RyaW5nW10pKSB7XG4gICAgY29uc3QgcGFydHMgPSBleHRlcm5hbC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IG5hbWUgPSBwYXJ0c1swXTtcbiAgICBjb25zdCB0eXBlID0gcGFydHNbMV07XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdvcHRpb25hbCc6XG4gICAgICAgIG9wdGlvbmFsRXh0ZXJuYWxzLnB1c2gobmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncnVudGltZSc6XG4gICAgICAgIHJ1bnRpbWVFeHRlcm5hbHMucHVzaChuYW1lKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRlcGVuZGVuY3kgdHlwZSAnJHt0eXBlfScgZm9yIGV4dGVybmFsIHBhY2thZ2UgJyR7bmFtZX0nLiBTdXBwb3J0ZWQgdHlwZXMgYXJlOiBbJ29wdGlvbmFsJywgJ3J1bnRpbWUnXWApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByb3BzOiBCdW5kbGVQcm9wcyA9IHtcbiAgICBwYWNrYWdlRGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGVudHJ5UG9pbnRzOiB1bmRlZmluZWRJZkVtcHR5KGFyZ3YuZW50cnlwb2ludCksXG4gICAgZXh0ZXJuYWxzOiB7IGRlcGVuZGVuY2llczogcnVudGltZUV4dGVybmFscywgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IG9wdGlvbmFsRXh0ZXJuYWxzIH0sXG4gICAgYWxsb3dlZExpY2Vuc2VzOiB1bmRlZmluZWRJZkVtcHR5KGFyZ3ZbJ2FsbG93ZWQtbGljZW5zZSddKSxcbiAgICByZXNvdXJjZXM6IHJlc291cmNlcyxcbiAgICBkb250QXR0cmlidXRlOiBhcmd2Wydkb250LWF0dHJpYnV0ZSddLFxuICAgIHRlc3Q6IGFyZ3YudGVzdCxcbiAgICBtaW5pZnlXaGl0ZXNwYWNlOiBhcmd2WydtaW5pZnktd2hpdGVzcGFjZSddLFxuICAgIG1ldGFmaWxlOiBhcmd2Lm1ldGFmaWxlLFxuICB9O1xuXG4gIGNvbnN0IGJ1bmRsZSA9IG5ldyBCdW5kbGUocHJvcHMpO1xuXG4gIHN3aXRjaCAoY29tbWFuZCkge1xuICAgIGNhc2UgJ3ZhbGlkYXRlJzpcbiAgICAgIC8vIFdoZW4gdXNpbmcgYHlhcmdzLmNvbW1hbmQoY29tbWFuZCwgYnVpbGRlciBbLCBoYW5kbGVyXSlgIHdpdGhvdXQgdGhlIGhhbmRsZXJcbiAgICAgIC8vIGFzIHdlIGRvIGhlcmUsIHRoZXJlIGlzIG5vIHR5cGluZyBmb3IgY29tbWFuZC1zcGVjaWZpYyBvcHRpb25zLiBTbyBmb3JjZSBhIGNhc3QuXG4gICAgICBjb25zdCBmaXggPSBhcmd2LmZpeCBhcyBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgICAgdmFsaWRhdGUoYnVuZGxlLCB7IGZpeCB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dyaXRlJzpcbiAgICAgIHdyaXRlKGJ1bmRsZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwYWNrJzpcbiAgICAgIGNvbnN0IHRhcmdldCA9IGFyZ3YuZGVzdGluYXRpb24gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgcGFjayhidW5kbGUsIHtcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZShidW5kbGU6IEJ1bmRsZSkge1xuICBjb25zdCBidW5kbGVEaXIgPSBidW5kbGUud3JpdGUoKTtcbiAgY29uc29sZS5sb2coYnVuZGxlRGlyKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUoYnVuZGxlOiBCdW5kbGUsIG9wdGlvbnM6IEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHJlcG9ydCA9IGJ1bmRsZS52YWxpZGF0ZShvcHRpb25zKTtcbiAgaWYgKCFyZXBvcnQuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXBvcnQuc3VtbWFyeSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFjayhidW5kbGU6IEJ1bmRsZSwgb3B0aW9ucz86IEJ1bmRsZVBhY2tPcHRpb25zKSB7XG4gIGJ1bmRsZS5wYWNrKG9wdGlvbnMpO1xufVxuIl19
package/lib/cli.js CHANGED
@@ -1,119 +1,9 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const path = __importStar(require("path"));
27
- const fs = __importStar(require("fs-extra"));
28
- const yargs = __importStar(require("yargs"));
29
- const api_1 = require("./api");
30
- function versionNumber() {
31
- return fs.readJSONSync(path.join(__dirname, '..', 'package.json')).version;
32
- }
33
- async function buildCommands() {
34
- const argv = yargs
35
- .usage('Usage: node-bundle COMMAND')
36
- .option('entrypoint', { type: 'array', nargs: 1, desc: 'List of entrypoints to bundle' })
37
- .option('external', { type: 'array', nargs: 1, default: [], desc: 'Packages in this list will be excluded from the bundle and added as dependencies (example: fsevents:optional)' })
38
- .option('allowed-license', { type: 'array', nargs: 1, default: [], desc: 'List of valid licenses' })
39
- .option('resource', { type: 'array', nargs: 1, default: [], desc: 'List of resources that need to be explicitly copied to the bundle (example: node_modules/proxy-agent/contextify.js:bin/contextify.js)' })
40
- .option('dont-attribute', { type: 'string', desc: 'Dependencies matching this regular expressions wont be added to the notice file' })
41
- .option('test', { type: 'string', desc: 'Validation command to sanity test the bundle after its created' })
42
- .command('validate', 'Validate the package is ready for bundling', args => args
43
- .option('fix', { type: 'boolean', default: false, alias: 'f', desc: 'Fix any fixable violations' }))
44
- .command('write', 'Write the bundled version of the project to a temp directory')
45
- .command('pack', 'Write the bundle and create the tarball')
46
- .help()
47
- .version(versionNumber())
48
- .argv;
49
- const command = argv._[0];
50
- function undefinedIfEmpty(arr) {
51
- if (!arr || arr.length === 0)
52
- return undefined;
53
- return arr;
54
- }
55
- const resources = {};
56
- for (const resource of argv.resource) {
57
- const parts = resource.split(':');
58
- resources[parts[0]] = parts[1];
59
- }
60
- const optionalExternals = [];
61
- const runtimeExternals = [];
62
- for (const external of argv.external) {
63
- const parts = external.split(':');
64
- const name = parts[0];
65
- const type = parts[1];
66
- switch (type) {
67
- case 'optional':
68
- optionalExternals.push(name);
69
- break;
70
- case 'runtime':
71
- runtimeExternals.push(name);
72
- break;
73
- default:
74
- throw new Error(`Unsupported dependency type '${type}' for external package '${name}'. Supported types are: ['optional', 'runtime']`);
75
- }
76
- }
77
- const props = {
78
- packageDir: process.cwd(),
79
- entryPoints: undefinedIfEmpty(argv.entrypoint),
80
- externals: { dependencies: runtimeExternals, optionalDependencies: optionalExternals },
81
- allowedLicenses: undefinedIfEmpty(argv['allowed-license']),
82
- resources: resources,
83
- dontAttribute: argv['dont-attribute'],
84
- test: argv.test,
85
- };
86
- const bundle = new api_1.Bundle(props);
87
- switch (command) {
88
- case 'validate':
89
- validate(bundle, { fix: argv.fix });
90
- break;
91
- case 'write':
92
- write(bundle);
93
- break;
94
- case 'pack':
95
- pack(bundle);
96
- break;
97
- default:
98
- throw new Error(`Unknown command: ${command}`);
99
- }
100
- }
101
- function write(bundle) {
102
- const bundleDir = bundle.write();
103
- console.log(bundleDir);
104
- }
105
- function validate(bundle, options = {}) {
106
- const report = bundle.validate(options);
107
- if (!report.success) {
108
- throw new Error(report.summary);
109
- }
110
- }
111
- function pack(bundle) {
112
- bundle.pack();
113
- }
114
- buildCommands()
3
+ const cli_main_1 = require("./cli-main");
4
+ (0, cli_main_1.cliMain)(process.argv.slice(2))
115
5
  .catch((err) => {
116
6
  console.error(`Error: ${err.message}`);
117
7
  process.exitCode = 1;
118
8
  });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsK0JBQW1FO0FBRW5FLFNBQVMsYUFBYTtJQUNwQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzdFLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYTtJQUUxQixNQUFNLElBQUksR0FBRyxLQUFLO1NBQ2YsS0FBSyxDQUFDLDRCQUE0QixDQUFDO1NBQ25DLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLENBQUM7U0FDeEYsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSwrR0FBK0csRUFBRSxDQUFDO1NBQ25MLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxDQUFDO1NBQ25HLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUlBQXVJLEVBQUUsQ0FBQztTQUMzTSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxpRkFBaUYsRUFB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QUFNO1FBQ1IsS0FBSyxPQUFPO1lBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2QsTUFBTTtRQUNSLEtBQUssTUFBTTtZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNiLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7S0FDbEQ7QUFDSCxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsTUFBYztJQUMzQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsTUFBYyxFQUFFLFVBQWlDLEVBQUU7SUFDbkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNqQztBQUNILENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxNQUFjO0lBQzFCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBRUQsYUFBYSxFQUFFO0tBQ1osS0FBSyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7SUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IEJ1bmRsZSwgQnVuZGxlUHJvcHMsIEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyB9IGZyb20gJy4vYXBpJztcblxuZnVuY3Rpb24gdmVyc2lvbk51bWJlcigpOiBzdHJpbmcge1xuICByZXR1cm4gZnMucmVhZEpTT05TeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdwYWNrYWdlLmpzb24nKSkudmVyc2lvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRDb21tYW5kcygpIHtcblxuICBjb25zdCBhcmd2ID0geWFyZ3NcbiAgICAudXNhZ2UoJ1VzYWdlOiBub2RlLWJ1bmRsZSBDT01NQU5EJylcbiAgICAub3B0aW9uKCdlbnRyeXBvaW50JywgeyB0eXBlOiAnYXJyYXknLCBuYXJnczogMSwgZGVzYzogJ0xpc3Qgb2YgZW50cnlwb2ludHMgdG8gYnVuZGxlJyB9KVxuICAgIC5vcHRpb24oJ2V4dGVybmFsJywgeyB0eXBlOiAnYXJyYXknLCBuYXJnczogMSwgZGVmYXVsdDogW10sIGRlc2M6ICdQYWNrYWdlcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBleGNsdWRlZCBmcm9tIHRoZSBidW5kbGUgYW5kIGFkZGVkIGFzIGRlcGVuZGVuY2llcyAoZXhhbXBsZTogZnNldmVudHM6b3B0aW9uYWwpJyB9KVxuICAgIC5vcHRpb24oJ2FsbG93ZWQtbGljZW5zZScsIHsgdHlwZTogJ2FycmF5JywgbmFyZ3M6IDEsIGRlZmF1bHQ6IFtdLCBkZXNjOiAnTGlzdCBvZiB2YWxpZCBsaWNlbnNlcycgfSlcbiAgICAub3B0aW9uKCdyZXNvdXJjZScsIHsgdHlwZTogJ2FycmF5JywgbmFyZ3M6IDEsIGRlZmF1bHQ6IFtdLCBkZXNjOiAnTGlzdCBvZiByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29waWVkIHRvIHRoZSBidW5kbGUgKGV4YW1wbGU6IG5vZGVfbW9kdWxlcy9wcm94eS1hZ2VudC9jb250ZXh0aWZ5LmpzOmJpbi9jb250ZXh0aWZ5LmpzKScgfSlcbiAgICAub3B0aW9uKCdkb250LWF0dHJpYnV0ZScsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdEZXBlbmRlbmNpZXMgbWF0Y2hpbmcgdGhpcyByZWd1bGFyIGV4cHJlc3Npb25zIHdvbnQgYmUgYWRkZWQgdG8gdGhlIG5vdGljZSBmaWxlJyB9KVxuICAgIC5vcHRpb24oJ3Rlc3QnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjOiAnVmFsaWRhdGlvbiBjb21tYW5kIHRvIHNhbml0eSB0ZXN0IHRoZSBidW5kbGUgYWZ0ZXIgaXRzIGNyZWF0ZWQnIH0pXG4gICAgLmNvbW1hbmQoJ3ZhbGlkYXRlJywgJ1ZhbGlkYXRlIHRoZSBwYWNrYWdlIGlzIHJlYWR5IGZvciBidW5kbGluZycsIGFyZ3MgPT4gYXJnc1xuICAgICAgLm9wdGlvbignZml4JywgeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IGZhbHNlLCBhbGlhczogJ2YnLCBkZXNjOiAnRml4IGFueSBmaXhhYmxlIHZpb2xhdGlvbnMnIH0pLFxuICAgIClcbiAgICAuY29tbWFuZCgnd3JpdGUnLCAnV3JpdGUgdGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCB0byBhIHRlbXAgZGlyZWN0b3J5JylcbiAgICAuY29tbWFuZCgncGFjaycsICdXcml0ZSB0aGUgYnVuZGxlIGFuZCBjcmVhdGUgdGhlIHRhcmJhbGwnKVxuICAgIC5oZWxwKClcbiAgICAudmVyc2lvbih2ZXJzaW9uTnVtYmVyKCkpXG4gICAgLmFyZ3Y7XG5cbiAgY29uc3QgY29tbWFuZCA9IGFyZ3YuX1swXTtcblxuICBmdW5jdGlvbiB1bmRlZmluZWRJZkVtcHR5KGFycj86IGFueVtdKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICghYXJyIHx8IGFyci5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGFyciBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGNvbnN0IHJlc291cmNlczogYW55ID0ge307XG4gIGZvciAoY29uc3QgcmVzb3VyY2Ugb2YgKGFyZ3YucmVzb3VyY2UgYXMgc3RyaW5nW10pKSB7XG4gICAgY29uc3QgcGFydHMgPSByZXNvdXJjZS5zcGxpdCgnOicpO1xuICAgIHJlc291cmNlc1twYXJ0c1swXV0gPSBwYXJ0c1sxXTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbmFsRXh0ZXJuYWxzID0gW107XG4gIGNvbnN0IHJ1bnRpbWVFeHRlcm5hbHMgPSBbXTtcblxuICBmb3IgKGNvbnN0IGV4dGVybmFsIG9mIChhcmd2LmV4dGVybmFsIGFzIHN0cmluZ1tdKSkge1xuICAgIGNvbnN0IHBhcnRzID0gZXh0ZXJuYWwuc3BsaXQoJzonKTtcbiAgICBjb25zdCBuYW1lID0gcGFydHNbMF07XG4gICAgY29uc3QgdHlwZSA9IHBhcnRzWzFdO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnb3B0aW9uYWwnOlxuICAgICAgICBvcHRpb25hbEV4dGVybmFscy5wdXNoKG5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3J1bnRpbWUnOlxuICAgICAgICBydW50aW1lRXh0ZXJuYWxzLnB1c2gobmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkZXBlbmRlbmN5IHR5cGUgJyR7dHlwZX0nIGZvciBleHRlcm5hbCBwYWNrYWdlICcke25hbWV9Jy4gU3VwcG9ydGVkIHR5cGVzIGFyZTogWydvcHRpb25hbCcsICdydW50aW1lJ11gKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9wczogQnVuZGxlUHJvcHMgPSB7XG4gICAgcGFja2FnZURpcjogcHJvY2Vzcy5jd2QoKSxcbiAgICBlbnRyeVBvaW50czogdW5kZWZpbmVkSWZFbXB0eShhcmd2LmVudHJ5cG9pbnQpLFxuICAgIGV4dGVybmFsczogeyBkZXBlbmRlbmNpZXM6IHJ1bnRpbWVFeHRlcm5hbHMsIG9wdGlvbmFsRGVwZW5kZW5jaWVzOiBvcHRpb25hbEV4dGVybmFscyB9LFxuICAgIGFsbG93ZWRMaWNlbnNlczogdW5kZWZpbmVkSWZFbXB0eShhcmd2WydhbGxvd2VkLWxpY2Vuc2UnXSksXG4gICAgcmVzb3VyY2VzOiByZXNvdXJjZXMsXG4gICAgZG9udEF0dHJpYnV0ZTogYXJndlsnZG9udC1hdHRyaWJ1dGUnXSxcbiAgICB0ZXN0OiBhcmd2LnRlc3QsXG4gIH07XG5cbiAgY29uc3QgYnVuZGxlID0gbmV3IEJ1bmRsZShwcm9wcyk7XG5cbiAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgY2FzZSAndmFsaWRhdGUnOlxuICAgICAgdmFsaWRhdGUoYnVuZGxlLCB7IGZpeDogYXJndi5maXggfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd3cml0ZSc6XG4gICAgICB3cml0ZShidW5kbGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncGFjayc6XG4gICAgICBwYWNrKGJ1bmRsZSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZShidW5kbGU6IEJ1bmRsZSkge1xuICBjb25zdCBidW5kbGVEaXIgPSBidW5kbGUud3JpdGUoKTtcbiAgY29uc29sZS5sb2coYnVuZGxlRGlyKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUoYnVuZGxlOiBCdW5kbGUsIG9wdGlvbnM6IEJ1bmRsZVZhbGlkYXRlT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHJlcG9ydCA9IGJ1bmRsZS52YWxpZGF0ZShvcHRpb25zKTtcbiAgaWYgKCFyZXBvcnQuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXBvcnQuc3VtbWFyeSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFjayhidW5kbGU6IEJ1bmRsZSkge1xuICBidW5kbGUucGFjaygpO1xufVxuXG5idWlsZENvbW1hbmRzKClcbiAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gIH0pO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFxQztBQUVyQyxJQUFBLGtCQUFPLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDM0IsS0FBSyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7SUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xpTWFpbiB9IGZyb20gJy4vY2xpLW1haW4nO1xuXG5jbGlNYWluKHByb2Nlc3MuYXJndi5zbGljZSgyKSlcbiAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gIH0pO1xuIl19
package/lib/index.js CHANGED
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./api"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpJzsiXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBpJztcbiJdfQ==
package/package.json CHANGED
@@ -51,6 +51,7 @@
51
51
  "eslint-plugin-import": "^2.31.0",
52
52
  "jest": "^27",
53
53
  "jest-junit": "^16",
54
+ "prettier": "^2.8",
54
55
  "projen": "^0.92.9",
55
56
  "ts-jest": "^27",
56
57
  "ts-node": "^10.9.2",
@@ -69,7 +70,7 @@
69
70
  "publishConfig": {
70
71
  "access": "public"
71
72
  },
72
- "version": "0.0.557",
73
+ "version": "1.0.0",
73
74
  "jest": {
74
75
  "coverageProvider": "v8",
75
76
  "testMatch": [
package/CONTRIBUTING.md DELETED
@@ -1,59 +0,0 @@
1
- # Contributing Guidelines
2
-
3
- Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
4
- documentation, we greatly value feedback and contributions from our community.
5
-
6
- Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
7
- information to effectively respond to your bug report or contribution.
8
-
9
-
10
- ## Reporting Bugs/Feature Requests
11
-
12
- We welcome you to use the GitHub issue tracker to report bugs or suggest features.
13
-
14
- When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already
15
- reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
16
-
17
- * A reproducible test case or series of steps
18
- * The version of our code being used
19
- * Any modifications you've made relevant to the bug
20
- * Anything unusual about your environment or deployment
21
-
22
-
23
- ## Contributing via Pull Requests
24
- Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
25
-
26
- 1. You are working against the latest source on the *main* branch.
27
- 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
28
- 3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
29
-
30
- To send us a pull request, please:
31
-
32
- 1. Fork the repository.
33
- 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
34
- 3. Ensure local tests pass.
35
- 4. Commit to your fork using clear commit messages.
36
- 5. Send us a pull request, answering any default questions in the pull request interface.
37
- 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
38
-
39
- GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
40
- [creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
41
-
42
-
43
- ## Finding contributions to work on
44
- Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start.
45
-
46
-
47
- ## Code of Conduct
48
- This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
49
- For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
50
- opensource-codeofconduct@amazon.com with any additional questions or comments.
51
-
52
-
53
- ## Security issue notifications
54
- If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue.
55
-
56
-
57
- ## Licensing
58
-
59
- See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.