jsii-pacmak 1.38.0 → 1.42.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/lib/builder.js CHANGED
@@ -15,10 +15,16 @@ class OneByOneBuilder {
15
15
  this.options = options;
16
16
  }
17
17
  async buildModules() {
18
- const promises = this.modules.map((module) => this.options.codeOnly
19
- ? this.generateModuleCode(module, this.options)
20
- : this.buildModule(module, this.options));
21
- await Promise.all(promises);
18
+ for (const module of this.modules) {
19
+ if (this.options.codeOnly) {
20
+ // eslint-disable-next-line no-await-in-loop
21
+ await this.generateModuleCode(module, this.options);
22
+ }
23
+ else {
24
+ // eslint-disable-next-line no-await-in-loop
25
+ await this.buildModule(module, this.options);
26
+ }
27
+ }
22
28
  }
23
29
  async generateModuleCode(module, options) {
24
30
  const outputDir = this.finalOutputDir(module, options);
@@ -69,4 +75,4 @@ class OneByOneBuilder {
69
75
  }
70
76
  }
71
77
  exports.OneByOneBuilder = OneByOneBuilder;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBRTdCLHFDQUFxQztBQUlyQyxpQ0FBaUM7QUFrRGpDOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBQzFCLFlBQ21CLFVBQXNCLEVBQ3RCLGlCQUFvQyxFQUNwQyxPQUE4QixFQUM5QixPQUFxQjtRQUhyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBYztJQUNyQyxDQUFDO0lBRUcsS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUMzQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBa0IsRUFBRSxPQUFxQjtRQUN4RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLFVBQVUsY0FBYyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUNqRCxTQUFTLEVBQ1QsTUFBTSxDQUFDLE9BQU8sQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBa0IsRUFBRSxPQUFxQjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV2RCxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLFVBQVUsY0FBYyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSTtZQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsU0FBUyxTQUFTLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDN0QsT0FBTyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNyRDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEM7Z0JBQVM7WUFDUixJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckI7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLElBQUksQ0FDVixzQkFBc0IsSUFBSSxDQUFDLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FDckUsQ0FBQzthQUNIO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQWtCLEVBQUUsT0FBcUI7UUFDMUQsT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1lBQ2xDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFrQixFQUFFLE9BQXFCO1FBQzlELElBQUksT0FBTyxDQUFDLG9CQUFvQixFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUF2RUQsMENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm9zZXR0YSB9IGZyb20gJ2pzaWktcm9zZXR0YSc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4vbG9nZ2luZyc7XG5pbXBvcnQgeyBKc2lpTW9kdWxlIH0gZnJvbSAnLi9wYWNrYWdpbmcnO1xuaW1wb3J0IHsgVGFyZ2V0Q29uc3RydWN0b3IsIFRhcmdldCB9IGZyb20gJy4vdGFyZ2V0JztcbmltcG9ydCB7IFRhcmdldE5hbWUgfSBmcm9tICcuL3RhcmdldHMnO1xuaW1wb3J0IHsgU2NyYXRjaCB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZmluZ2VycHJpbnQgdGhlIHByb2R1Y2VkIGFydGlmYWN0cy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZmluZ2VycHJpbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFydGlmYWN0cyBzaG91bGQgYmUgcmUtYnVpbGQgZXZlbiBpZiB0aGVpciBmaW5nZXJwcmludHMgbG9vayB1cC10by1kYXRlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZm9yY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBcmd1bWVudHMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgKGhvdyB0aGV5IGFyZSB1c2VkIGlzIHRhcmdldC1kZXBlbmRlbnQpXG4gICAqL1xuICBhcmd1bWVudHM6IHsgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBPbmx5IGdlbmVyYXRlIGNvZGUsIGRvbid0IGJ1aWxkXG4gICAqL1xuICBjb2RlT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGNsZWFuXG4gICAqL1xuICBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIGFuIGFkZGl0aW9uYWwgc3ViZGlyZWN0b3J5IGZvciB0aGUgdGFyZ2V0IGxhbmd1YWdlXG4gICAqL1xuICBsYW5ndWFnZVN1YmRpcmVjdG9yeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBSb3NldHRhIGluc3RhbmNlIHRvIGxvYWQgZXhhbXBsZXMgZnJvbVxuICAgKi9cbiAgcm9zZXR0YTogUm9zZXR0YTtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIGNsYXNzZXMgdGhhdCBjYW4gYnVpbGQgbGFuZ3VhZ2UgdGFyZ2V0c1xuICpcbiAqIEJ1aWxkaW5nIGNhbiBoYXBwZW4gb25lIHRhcmdldCBhdCBhIHRpbWUsIG9yIG11bHRpcGxlIHRhcmdldHMgYXQgYSB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEJ1aWxkZXIge1xuICBidWlsZE1vZHVsZXMoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHRhcmdldHMgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSBzZXF1ZW50aWFsbHlcbiAqL1xuZXhwb3J0IGNsYXNzIE9uZUJ5T25lQnVpbGRlciBpbXBsZW1lbnRzIFRhcmdldEJ1aWxkZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXROYW1lOiBUYXJnZXROYW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0Q29uc3RydWN0b3I6IFRhcmdldENvbnN0cnVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlczogcmVhZG9ubHkgSnNpaU1vZHVsZVtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQnVpbGRPcHRpb25zLFxuICApIHt9XG5cbiAgcHVibGljIGFzeW5jIGJ1aWxkTW9kdWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMubW9kdWxlcy5tYXAoKG1vZHVsZSkgPT5cbiAgICAgIHRoaXMub3B0aW9ucy5jb2RlT25seVxuICAgICAgICA/IHRoaXMuZ2VuZXJhdGVNb2R1bGVDb2RlKG1vZHVsZSwgdGhpcy5vcHRpb25zKVxuICAgICAgICA6IHRoaXMuYnVpbGRNb2R1bGUobW9kdWxlLCB0aGlzLm9wdGlvbnMpLFxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZU1vZHVsZUNvZGUobW9kdWxlOiBKc2lpTW9kdWxlLCBvcHRpb25zOiBCdWlsZE9wdGlvbnMpIHtcbiAgICBjb25zdCBvdXRwdXREaXIgPSB0aGlzLmZpbmFsT3V0cHV0RGlyKG1vZHVsZSwgb3B0aW9ucyk7XG4gICAgbG9nZ2luZy5kZWJ1ZyhgR2VuZXJhdGluZyAke3RoaXMudGFyZ2V0TmFtZX0gY29kZSBpbnRvICR7b3V0cHV0RGlyfWApO1xuICAgIGF3YWl0IHRoaXMubWFrZVRhcmdldChtb2R1bGUsIG9wdGlvbnMpLmdlbmVyYXRlQ29kZShcbiAgICAgIG91dHB1dERpcixcbiAgICAgIG1vZHVsZS50YXJiYWxsLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkTW9kdWxlKG1vZHVsZTogSnNpaU1vZHVsZSwgb3B0aW9uczogQnVpbGRPcHRpb25zKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5tYWtlVGFyZ2V0KG1vZHVsZSwgb3B0aW9ucyk7XG4gICAgY29uc3Qgb3V0cHV0RGlyID0gdGhpcy5maW5hbE91dHB1dERpcihtb2R1bGUsIG9wdGlvbnMpO1xuXG4gICAgY29uc3Qgc3JjID0gYXdhaXQgU2NyYXRjaC5tYWtlKCh0bXBkaXIpID0+IHtcbiAgICAgIGxvZ2dpbmcuZGVidWcoYEdlbmVyYXRpbmcgJHt0aGlzLnRhcmdldE5hbWV9IGNvZGUgaW50byAke3RtcGRpcn1gKTtcbiAgICAgIHJldHVybiB0YXJnZXQuZ2VuZXJhdGVDb2RlKHRtcGRpciwgbW9kdWxlLnRhcmJhbGwpO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dpbmcuZGVidWcoYEJ1aWxkaW5nICR7c3JjLmRpcmVjdG9yeX0gaW50byAke291dHB1dERpcn1gKTtcbiAgICAgIHJldHVybiBhd2FpdCB0YXJnZXQuYnVpbGQoc3JjLmRpcmVjdG9yeSwgb3V0cHV0RGlyKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dpbmcud2FybihgRmFpbGVkIGJ1aWxkaW5nICR7dGhpcy50YXJnZXROYW1lfWApO1xuICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgIGxvZ2dpbmcuZGVidWcoYENsZWFuaW5nICR7c3JjLmRpcmVjdG9yeX1gKTtcbiAgICAgICAgYXdhaXQgc3JjLmNsZWFudXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dpbmcuaW5mbyhcbiAgICAgICAgICBgR2VuZXJhdGVkIGNvZGUgZm9yICR7dGhpcy50YXJnZXROYW1lfSByZXRhaW5lZCBhdCAke3NyYy5kaXJlY3Rvcnl9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1ha2VUYXJnZXQobW9kdWxlOiBKc2lpTW9kdWxlLCBvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBUYXJnZXQge1xuICAgIHJldHVybiBuZXcgdGhpcy50YXJnZXRDb25zdHJ1Y3Rvcih7XG4gICAgICB0YXJnZXROYW1lOiB0aGlzLnRhcmdldE5hbWUsXG4gICAgICBwYWNrYWdlRGlyOiBtb2R1bGUubW9kdWxlRGlyZWN0b3J5LFxuICAgICAgYXNzZW1ibHk6IG1vZHVsZS5hc3NlbWJseSxcbiAgICAgIGZpbmdlcnByaW50OiBvcHRpb25zLmZpbmdlcnByaW50LFxuICAgICAgZm9yY2U6IG9wdGlvbnMuZm9yY2UsXG4gICAgICBhcmd1bWVudHM6IG9wdGlvbnMuYXJndW1lbnRzLFxuICAgICAgcm9zZXR0YTogb3B0aW9ucy5yb3NldHRhLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbE91dHB1dERpcihtb2R1bGU6IEpzaWlNb2R1bGUsIG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgaWYgKG9wdGlvbnMubGFuZ3VhZ2VTdWJkaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4obW9kdWxlLm91dHB1dERpcmVjdG9yeSwgdGhpcy50YXJnZXROYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZS5vdXRwdXREaXJlY3Rvcnk7XG4gIH1cbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkJBQTZCO0FBRTdCLHFDQUFxQztBQUlyQyxpQ0FBaUM7QUFrRGpDOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBQzFCLFlBQ21CLFVBQXNCLEVBQ3RCLGlCQUFvQyxFQUNwQyxPQUE4QixFQUM5QixPQUFxQjtRQUhyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBYztJQUNyQyxDQUFDO0lBRUcsS0FBSyxDQUFDLFlBQVk7UUFDdkIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLDRDQUE0QztnQkFDNUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyRDtpQkFBTTtnQkFDTCw0Q0FBNEM7Z0JBQzVDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQWtCLEVBQUUsT0FBcUI7UUFDeEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxVQUFVLGNBQWMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0RSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FDakQsU0FBUyxFQUNULE1BQU0sQ0FBQyxPQUFPLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQWtCLEVBQUUsT0FBcUI7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDeEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxVQUFVLGNBQWMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRSxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUk7WUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLFNBQVMsU0FBUyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE9BQU8sTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDckQ7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO2dCQUFTO1lBQ1IsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysc0JBQXNCLElBQUksQ0FBQyxVQUFVLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLENBQ3JFLENBQUM7YUFDSDtTQUNGO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFrQixFQUFFLE9BQXFCO1FBQzFELE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZTtZQUNsQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBa0IsRUFBRSxPQUFxQjtRQUM5RCxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBMUVELDBDQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvc2V0dGEgfSBmcm9tICdqc2lpLXJvc2V0dGEnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0ICogYXMgbG9nZ2luZyBmcm9tICcuL2xvZ2dpbmcnO1xuaW1wb3J0IHsgSnNpaU1vZHVsZSB9IGZyb20gJy4vcGFja2FnaW5nJztcbmltcG9ydCB7IFRhcmdldENvbnN0cnVjdG9yLCBUYXJnZXQgfSBmcm9tICcuL3RhcmdldCc7XG5pbXBvcnQgeyBUYXJnZXROYW1lIH0gZnJvbSAnLi90YXJnZXRzJztcbmltcG9ydCB7IFNjcmF0Y2ggfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZpbmdlcnByaW50IHRoZSBwcm9kdWNlZCBhcnRpZmFjdHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGZpbmdlcnByaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhcnRpZmFjdHMgc2hvdWxkIGJlIHJlLWJ1aWxkIGV2ZW4gaWYgdGhlaXIgZmluZ2VycHJpbnRzIGxvb2sgdXAtdG8tZGF0ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZvcmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQXJndW1lbnRzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIChob3cgdGhleSBhcmUgdXNlZCBpcyB0YXJnZXQtZGVwZW5kZW50KVxuICAgKi9cbiAgYXJndW1lbnRzOiB7IHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogT25seSBnZW5lcmF0ZSBjb2RlLCBkb24ndCBidWlsZFxuICAgKi9cbiAgY29kZU9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBjbGVhblxuICAgKi9cbiAgY2xlYW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFkZCBhbiBhZGRpdGlvbmFsIHN1YmRpcmVjdG9yeSBmb3IgdGhlIHRhcmdldCBsYW5ndWFnZVxuICAgKi9cbiAgbGFuZ3VhZ2VTdWJkaXJlY3Rvcnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgUm9zZXR0YSBpbnN0YW5jZSB0byBsb2FkIGV4YW1wbGVzIGZyb21cbiAgICovXG4gIHJvc2V0dGE6IFJvc2V0dGE7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjbGFzc2VzIHRoYXQgY2FuIGJ1aWxkIGxhbmd1YWdlIHRhcmdldHNcbiAqXG4gKiBCdWlsZGluZyBjYW4gaGFwcGVuIG9uZSB0YXJnZXQgYXQgYSB0aW1lLCBvciBtdWx0aXBsZSB0YXJnZXRzIGF0IGEgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRCdWlsZGVyIHtcbiAgYnVpbGRNb2R1bGVzKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSB0YXJnZXRzIGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2Ugc2VxdWVudGlhbGx5XG4gKi9cbmV4cG9ydCBjbGFzcyBPbmVCeU9uZUJ1aWxkZXIgaW1wbGVtZW50cyBUYXJnZXRCdWlsZGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0TmFtZTogVGFyZ2V0TmFtZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldENvbnN0cnVjdG9yOiBUYXJnZXRDb25zdHJ1Y3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZXM6IHJlYWRvbmx5IEpzaWlNb2R1bGVbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyxcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBidWlsZE1vZHVsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgdGhpcy5tb2R1bGVzKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvZGVPbmx5KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVNb2R1bGVDb2RlKG1vZHVsZSwgdGhpcy5vcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IHRoaXMuYnVpbGRNb2R1bGUobW9kdWxlLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVNb2R1bGVDb2RlKG1vZHVsZTogSnNpaU1vZHVsZSwgb3B0aW9uczogQnVpbGRPcHRpb25zKSB7XG4gICAgY29uc3Qgb3V0cHV0RGlyID0gdGhpcy5maW5hbE91dHB1dERpcihtb2R1bGUsIG9wdGlvbnMpO1xuICAgIGxvZ2dpbmcuZGVidWcoYEdlbmVyYXRpbmcgJHt0aGlzLnRhcmdldE5hbWV9IGNvZGUgaW50byAke291dHB1dERpcn1gKTtcbiAgICBhd2FpdCB0aGlzLm1ha2VUYXJnZXQobW9kdWxlLCBvcHRpb25zKS5nZW5lcmF0ZUNvZGUoXG4gICAgICBvdXRwdXREaXIsXG4gICAgICBtb2R1bGUudGFyYmFsbCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZE1vZHVsZShtb2R1bGU6IEpzaWlNb2R1bGUsIG9wdGlvbnM6IEJ1aWxkT3B0aW9ucykge1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMubWFrZVRhcmdldChtb2R1bGUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IG91dHB1dERpciA9IHRoaXMuZmluYWxPdXRwdXREaXIobW9kdWxlLCBvcHRpb25zKTtcblxuICAgIGNvbnN0IHNyYyA9IGF3YWl0IFNjcmF0Y2gubWFrZSgodG1wZGlyKSA9PiB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGBHZW5lcmF0aW5nICR7dGhpcy50YXJnZXROYW1lfSBjb2RlIGludG8gJHt0bXBkaXJ9YCk7XG4gICAgICByZXR1cm4gdGFyZ2V0LmdlbmVyYXRlQ29kZSh0bXBkaXIsIG1vZHVsZS50YXJiYWxsKTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBsb2dnaW5nLmRlYnVnKGBCdWlsZGluZyAke3NyYy5kaXJlY3Rvcnl9IGludG8gJHtvdXRwdXREaXJ9YCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGFyZ2V0LmJ1aWxkKHNyYy5kaXJlY3RvcnksIG91dHB1dERpcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnaW5nLndhcm4oYEZhaWxlZCBidWlsZGluZyAke3RoaXMudGFyZ2V0TmFtZX1gKTtcbiAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICBsb2dnaW5nLmRlYnVnKGBDbGVhbmluZyAke3NyYy5kaXJlY3Rvcnl9YCk7XG4gICAgICAgIGF3YWl0IHNyYy5jbGVhbnVwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnaW5nLmluZm8oXG4gICAgICAgICAgYEdlbmVyYXRlZCBjb2RlIGZvciAke3RoaXMudGFyZ2V0TmFtZX0gcmV0YWluZWQgYXQgJHtzcmMuZGlyZWN0b3J5fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlVGFyZ2V0KG1vZHVsZTogSnNpaU1vZHVsZSwgb3B0aW9uczogQnVpbGRPcHRpb25zKTogVGFyZ2V0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMudGFyZ2V0Q29uc3RydWN0b3Ioe1xuICAgICAgdGFyZ2V0TmFtZTogdGhpcy50YXJnZXROYW1lLFxuICAgICAgcGFja2FnZURpcjogbW9kdWxlLm1vZHVsZURpcmVjdG9yeSxcbiAgICAgIGFzc2VtYmx5OiBtb2R1bGUuYXNzZW1ibHksXG4gICAgICBmaW5nZXJwcmludDogb3B0aW9ucy5maW5nZXJwcmludCxcbiAgICAgIGZvcmNlOiBvcHRpb25zLmZvcmNlLFxuICAgICAgYXJndW1lbnRzOiBvcHRpb25zLmFyZ3VtZW50cyxcbiAgICAgIHJvc2V0dGE6IG9wdGlvbnMucm9zZXR0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluYWxPdXRwdXREaXIobW9kdWxlOiBKc2lpTW9kdWxlLCBvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGlmIChvcHRpb25zLmxhbmd1YWdlU3ViZGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm4gcGF0aC5qb2luKG1vZHVsZS5vdXRwdXREaXJlY3RvcnksIHRoaXMudGFyZ2V0TmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBtb2R1bGUub3V0cHV0RGlyZWN0b3J5O1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import * as spec from '@jsii/spec';
2
2
  import { CodeMaker } from 'codemaker';
3
- import { Rosetta } from 'jsii-rosetta';
3
+ import { Rosetta, ApiLocation } from 'jsii-rosetta';
4
4
  /**
5
5
  * Generates the Jsii attributes and calls for the .NET runtime
6
6
  *
@@ -22,8 +22,8 @@ export declare class DotNetDocGenerator {
22
22
  * Returns
23
23
  * Remarks (includes examples, links, deprecated)
24
24
  */
25
- emitDocs(obj: spec.Documentable): void;
26
- emitMarkdownAsRemarks(markdown: string | undefined): void;
25
+ emitDocs(obj: spec.Documentable, apiLocation: ApiLocation): void;
26
+ emitMarkdownAsRemarks(markdown: string | undefined, apiLocation: ApiLocation): void;
27
27
  /**
28
28
  * Returns the lines that should go into the <remarks> section
29
29
  */
@@ -29,7 +29,7 @@ class DotNetDocGenerator {
29
29
  * Returns
30
30
  * Remarks (includes examples, links, deprecated)
31
31
  */
32
- emitDocs(obj) {
32
+ emitDocs(obj, apiLocation) {
33
33
  const docs = obj.docs;
34
34
  // The docs may be undefined at the method level but not the parameters level
35
35
  this.emitXmlDoc('summary', _utils_1.renderSummary(obj.docs));
@@ -57,7 +57,7 @@ class DotNetDocGenerator {
57
57
  // Remarks does not use emitXmlDoc() because the remarks can contain code blocks
58
58
  // which are fenced with <code> tags, which would be escaped to
59
59
  // &lt;code&gt; if we used the xml builder.
60
- const remarks = this.renderRemarks(docs);
60
+ const remarks = this.renderRemarks(docs, apiLocation);
61
61
  if (remarks.length > 0) {
62
62
  this.code.line('/// <remarks>');
63
63
  remarks.forEach((r) => this.code.line(`/// ${r}`.trimRight()));
@@ -65,15 +65,15 @@ class DotNetDocGenerator {
65
65
  }
66
66
  if (docs.example) {
67
67
  this.code.line('/// <example>');
68
- this.emitXmlDoc('code', this.convertExample(docs.example));
68
+ this.emitXmlDoc('code', this.convertExample(docs.example, apiLocation));
69
69
  this.code.line('/// </example>');
70
70
  }
71
71
  }
72
- emitMarkdownAsRemarks(markdown) {
72
+ emitMarkdownAsRemarks(markdown, apiLocation) {
73
73
  if (!markdown) {
74
74
  return;
75
75
  }
76
- const translated = jsii_rosetta_1.markDownToXmlDoc(this.convertSamplesInMarkdown(markdown));
76
+ const translated = jsii_rosetta_1.markDownToXmlDoc(this.convertSamplesInMarkdown(markdown, apiLocation));
77
77
  const lines = translated.split('\n');
78
78
  this.code.line('/// <remarks>');
79
79
  for (const line of lines) {
@@ -84,11 +84,11 @@ class DotNetDocGenerator {
84
84
  /**
85
85
  * Returns the lines that should go into the <remarks> section
86
86
  */
87
- renderRemarks(docs) {
87
+ renderRemarks(docs, apiLocation) {
88
88
  var _a;
89
89
  const ret = [];
90
90
  if (docs.remarks) {
91
- const translated = jsii_rosetta_1.markDownToXmlDoc(this.convertSamplesInMarkdown(docs.remarks));
91
+ const translated = jsii_rosetta_1.markDownToXmlDoc(this.convertSamplesInMarkdown(docs.remarks, apiLocation));
92
92
  ret.push(...translated.split('\n'));
93
93
  ret.push('');
94
94
  }
@@ -124,16 +124,12 @@ class DotNetDocGenerator {
124
124
  ret.push('');
125
125
  }
126
126
  }
127
- convertExample(example) {
128
- const snippet = jsii_rosetta_1.typeScriptSnippetFromSource(example, 'example', jsii_rosetta_1.enforcesStrictMode(this.assembly));
129
- const translated = this.rosetta.translateSnippet(snippet, jsii_rosetta_1.TargetLanguage.CSHARP);
130
- if (!translated) {
131
- return example;
132
- }
127
+ convertExample(example, apiLocation) {
128
+ const translated = this.rosetta.translateExample(apiLocation, example, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly));
133
129
  return this.prefixDisclaimer(translated);
134
130
  }
135
- convertSamplesInMarkdown(markdown) {
136
- return this.rosetta.translateSnippetsInMarkdown(markdown, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly), (trans) => ({
131
+ convertSamplesInMarkdown(markdown, api) {
132
+ return this.rosetta.translateSnippetsInMarkdown(api, markdown, jsii_rosetta_1.TargetLanguage.CSHARP, jsii_rosetta_1.enforcesStrictMode(this.assembly), (trans) => ({
137
133
  language: trans.language,
138
134
  source: this.prefixDisclaimer(trans),
139
135
  }));
@@ -172,4 +168,4 @@ function shouldMentionStability(s) {
172
168
  // Don't render "stable" or "external", those are both stable by implication
173
169
  return s === spec.Stability.Deprecated || s === spec.Stability.Experimental;
174
170
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FPc0I7QUFDdEIseUNBQXlDO0FBRXpDLDBCQUdZO0FBQ1osc0NBQTBDO0FBQzFDLDJDQUE4QztBQUU5Qzs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBa0I7SUFJN0IsWUFDRSxJQUFlLEVBQ0UsT0FBZ0IsRUFDaEIsUUFBdUI7UUFEdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBTHpCLGNBQVMsR0FBb0IsSUFBSSwyQkFBZSxFQUFFLENBQUM7UUFPbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFFBQVEsQ0FBQyxHQUFzQjtRQUNwQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBRXRCLDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxzQkFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXBELGtEQUFrRDtRQUNsRCxNQUFNLFNBQVMsR0FBRyxHQUFrQixDQUFDO1FBQ3JDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRTtZQUN4QixTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFOztnQkFDckMsbUZBQW1GO2dCQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztxQkFDN0Isb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztxQkFDaEMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLGNBQUUsS0FBSyxDQUFDLElBQUksMENBQUUsT0FB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LENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsQ0FBaUI7SUFDL0MsNEVBQTRFO0lBQzVFLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3BlYyBmcm9tICdAanNpaS9zcGVjJztcbmltcG9ydCB7IENvZGVNYWtlciB9IGZyb20gJ2NvZGVtYWtlcic7XG5pbXBvcnQge1xuICBSb3NldHRhLFxuICBUYXJnZXRMYW5ndWFnZSxcbiAgVHJhbnNsYXRpb24sXG4gIGVuZm9yY2VzU3RyaWN0TW9kZSxcbiAgdHlwZVNjcmlwdFNuaXBwZXRGcm9tU291cmNlLFxuICBtYXJrRG93blRvWG1sRG9jLFxufSBmcm9tICdqc2lpLXJvc2V0dGEnO1xuaW1wb3J0ICogYXMgeG1sYnVpbGRlciBmcm9tICd4bWxidWlsZGVyJztcblxuaW1wb3J0IHtcbiAgSU5DT01QTEVURV9ESVNDTEFJTUVSX0NPTVBJTElORyxcbiAgSU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElORyxcbn0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgcmVuZGVyU3VtbWFyeSB9IGZyb20gJy4uL191dGlscyc7XG5pbXBvcnQgeyBEb3ROZXROYW1lVXRpbHMgfSBmcm9tICcuL25hbWV1dGlscyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBKc2lpIGF0dHJpYnV0ZXMgYW5kIGNhbGxzIGZvciB0aGUgLk5FVCBydW50aW1lXG4gKlxuICogVXNlcyB0aGUgc2FtZSBpbnN0YW5jZSBvZiBDb2RlTWFrZXIgYXMgdGhlIHJlc3Qgb2YgdGhlIGNvZGVcbiAqL1xuZXhwb3J0IGNsYXNzIERvdE5ldERvY0dlbmVyYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29kZTogQ29kZU1ha2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IG5hbWV1dGlsczogRG90TmV0TmFtZVV0aWxzID0gbmV3IERvdE5ldE5hbWVVdGlscygpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBjb2RlOiBDb2RlTWFrZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3NldHRhOiBSb3NldHRhLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXNzZW1ibHk6IHNwZWMuQXNzZW1ibHksXG4gICkge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYWxsIGRvY3VtZW50YXRpb24gZGVwZW5kaW5nIG9uIHdoYXQgaXMgYXZhaWxhYmxlIGluIHRoZSBqc2lpIG1vZGVsXG4gICAqXG4gICAqIFVzZWQgYnkgYWxsIGtpbmQgb2YgbWVtYmVycyArIGNsYXNzZXMsIGludGVyZmFjZXMsIGVudW1zXG4gICAqIE9yZGVyIHNob3VsZCBiZVxuICAgKiBTdW1tYXJ5XG4gICAqIFBhcmFtXG4gICAqIFJldHVybnNcbiAgICogUmVtYXJrcyAoaW5jbHVkZXMgZXhhbXBsZXMsIGxpbmtzLCBkZXByZWNhdGVkKVxuICAgKi9cbiAgcHVibGljIGVtaXREb2NzKG9iajogc3BlYy5Eb2N1bWVudGFibGUpOiB2b2lkIHtcbiAgICBjb25zdCBkb2NzID0gb2JqLmRvY3M7XG5cbiAgICAvLyBUaGUgZG9jcyBtYXkgYmUgdW5kZWZpbmVkIGF0IHRoZSBtZXRob2QgbGV2ZWwgYnV0IG5vdCB0aGUgcGFyYW1ldGVycyBsZXZlbFxuICAgIHRoaXMuZW1pdFhtbERvYygnc3VtbWFyeScsIHJlbmRlclN1bW1hcnkob2JqLmRvY3MpKTtcblxuICAgIC8vIEhhbmRsaW5nIHBhcmFtZXRlcnMgb25seSBpZiB0aGUgb2JqIGlzIGEgbWV0aG9kXG4gICAgY29uc3Qgb2JqTWV0aG9kID0gb2JqIGFzIHNwZWMuTWV0aG9kO1xuICAgIGlmIChvYmpNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgb2JqTWV0aG9kLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBzbHVnIGBAYCBmcm9tIHRoZSBwYXJhbWV0ZXIgbmFtZSAtIGl0J3Mgbm90IHN1cHBvc2VkIHRvIHNob3cgdXAgaGVyZS5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5uYW1ldXRpbHNcbiAgICAgICAgICAuY29udmVydFBhcmFtZXRlck5hbWUocGFyYW0ubmFtZSlcbiAgICAgICAgICAucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgICAgIHRoaXMuZW1pdFhtbERvYygncGFyYW0nLCBwYXJhbS5kb2NzPy5zdW1tYXJ5ID8/ICcnLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogeyBuYW1lOiBwYXJhbU5hbWUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBkb2NmeCBuYW1lc3BhY2Vkb2NkIGEgdmFsaWQgaW5zdGFuY2Ugb2YgZG9jc1xuICAgIGlmICghZG9jcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2NzLnJldHVybnMpIHtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygncmV0dXJucycsIGRvY3MucmV0dXJucyk7XG4gICAgfVxuXG4gICAgLy8gUmVtYXJrcyBkb2VzIG5vdCB1c2UgZW1pdFhtbERvYygpIGJlY2F1c2UgdGhlIHJlbWFya3MgY2FuIGNvbnRhaW4gY29kZSBibG9ja3NcbiAgICAvLyB3aGljaCBhcmUgZmVuY2VkIHdpdGggPGNvZGU+IHRhZ3MsIHdoaWNoIHdvdWxkIGJlIGVzY2FwZWQgdG9cbiAgICAvLyAmbHQ7Y29kZSZndDsgaWYgd2UgdXNlZCB0aGUgeG1sIGJ1aWxkZXIuXG4gICAgY29uc3QgcmVtYXJrcyA9IHRoaXMucmVuZGVyUmVtYXJrcyhkb2NzKTtcbiAgICBpZiAocmVtYXJrcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgICAgcmVtYXJrcy5mb3JFYWNoKChyKSA9PiB0aGlzLmNvZGUubGluZShgLy8vICR7cn1gLnRyaW1SaWdodCgpKSk7XG4gICAgICB0aGlzLmNvZGUubGluZSgnLy8vIDwvcmVtYXJrcz4nKTtcbiAgICB9XG5cbiAgICBpZiAoZG9jcy5leGFtcGxlKSB7XG4gICAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxleGFtcGxlPicpO1xuICAgICAgdGhpcy5lbWl0WG1sRG9jKCdjb2RlJywgdGhpcy5jb252ZXJ0RXhhbXBsZShkb2NzLmV4YW1wbGUpKTtcbiAgICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9leGFtcGxlPicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0TWFya2Rvd25Bc1JlbWFya3MobWFya2Rvd246IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghbWFya2Rvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVkID0gbWFya0Rvd25Ub1htbERvYyhcbiAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKG1hcmtkb3duKSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmVzID0gdHJhbnNsYXRlZC5zcGxpdCgnXFxuJyk7XG5cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YC50cmltUmlnaHQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpbmVzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIDxyZW1hcmtzPiBzZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclJlbWFya3MoZG9jczogc3BlYy5Eb2NzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChkb2NzLnJlbWFya3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgICB0aGlzLmNvbnZlcnRTYW1wbGVzSW5NYXJrZG93bihkb2NzLnJlbWFya3MpLFxuICAgICAgKTtcbiAgICAgIHJldC5wdXNoKC4uLnRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIFwidGFnc1wiIG5lZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBlbXB5dCBsaW5lcyBiZXR3ZWVuIHRoZW0gb3IgdGhleSdsbCBiZSB3b3JkIHdyYXBwZWQuXG5cbiAgICBpZiAoZG9jcy5kZWZhdWx0KSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdkZWZhdWx0JywgZG9jcy5kZWZhdWx0KTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc3RhYmlsaXR5ICYmIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcy5zdGFiaWxpdHkpKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKFxuICAgICAgICAnc3RhYmlsaXR5JyxcbiAgICAgICAgdGhpcy5uYW1ldXRpbHMuY2FwaXRhbGl6ZVdvcmQoZG9jcy5zdGFiaWxpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc2VlKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdzZWUnLCBkb2NzLnNlZSk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN1YmNsYXNzYWJsZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc3ViY2xhc3NhYmxlJywgJycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkb2NzLmN1c3RvbSA/PyB7fSkpIHtcbiAgICAgIGNvbnN0IGV4dHJhU3BhY2UgPSBrID09PSAnbGluaycgPyAnICcgOiAnJzsgLy8gRXh0cmEgc3BhY2UgZm9yICdAbGluaycgdG8ga2VlcCB1bml0IHRlc3RzIGhhcHB5XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKGssIHYgKyBleHRyYVNwYWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXNcbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0WzBdID09PSAnJykge1xuICAgICAgcmV0LnNoaWZ0KCk7XG4gICAgfVxuICAgIHdoaWxlIChyZXQubGVuZ3RoID4gMCAmJiByZXRbcmV0Lmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgcmV0LnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG5cbiAgICBmdW5jdGlvbiBlbWl0RG9jQXR0cmlidXRlKG5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgY29uc3QgbHMgPSBjb250ZW50cy5zcGxpdCgnXFxuJyk7XG4gICAgICByZXQucHVzaChgPHN0cm9uZz4ke3VjRmlyc3QobmFtZSl9PC9zdHJvbmc+OiAke2xzWzBdfWApO1xuICAgICAgcmV0LnB1c2goLi4ubHMuc2xpY2UoMSkpO1xuICAgICAgcmV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4YW1wbGUoZXhhbXBsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzbmlwcGV0ID0gdHlwZVNjcmlwdFNuaXBwZXRGcm9tU291cmNlKFxuICAgICAgZXhhbXBsZSxcbiAgICAgICdleGFtcGxlJyxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICApO1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlU25pcHBldChcbiAgICAgIHNuaXBwZXQsXG4gICAgICBUYXJnZXRMYW5ndWFnZS5DU0hBUlAsXG4gICAgKTtcbiAgICBpZiAoIXRyYW5zbGF0ZWQpIHtcbiAgICAgIHJldHVybiBleGFtcGxlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcmVmaXhEaXNjbGFpbWVyKHRyYW5zbGF0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm9zZXR0YS50cmFuc2xhdGVTbmlwcGV0c0luTWFya2Rvd24oXG4gICAgICBtYXJrZG93bixcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICAgICh0cmFucykgPT4gKHtcbiAgICAgICAgbGFuZ3VhZ2U6IHRyYW5zLmxhbmd1YWdlLFxuICAgICAgICBzb3VyY2U6IHRoaXMucHJlZml4RGlzY2xhaW1lcih0cmFucyksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaXhEaXNjbGFpbWVyKHRyYW5zbGF0ZWQ6IFRyYW5zbGF0aW9uKSB7XG4gICAgaWYgKHRyYW5zbGF0ZWQuZGlkQ29tcGlsZSAmJiBJTkNPTVBMRVRFX0RJU0NMQUlNRVJfQ09NUElMSU5HKSB7XG4gICAgICByZXR1cm4gYC8vICR7SU5DT01QTEVURV9ESVNDTEFJTUVSX0NPTVBJTElOR31cXG4ke3RyYW5zbGF0ZWQuc291cmNlfWA7XG4gICAgfVxuICAgIGlmICghdHJhbnNsYXRlZC5kaWRDb21waWxlICYmIElOQ09NUExFVEVfRElTQ0xBSU1FUl9OT05DT01QSUxJTkcpIHtcbiAgICAgIHJldHVybiBgLy8gJHtJTkNPTVBMRVRFX0RJU0NMQUlNRVJfTk9OQ09NUElMSU5HfVxcbiR7dHJhbnNsYXRlZC5zb3VyY2V9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zbGF0ZWQuc291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0WG1sRG9jKFxuICAgIHRhZzogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICB7IGF0dHJpYnV0ZXMgPSB7fSB9OiB7IGF0dHJpYnV0ZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9ID0ge30sXG4gICk6IHZvaWQge1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHhtbCA9IHhtbGJ1aWxkZXIuY3JlYXRlKHRhZywgeyBoZWFkbGVzczogdHJ1ZSB9KS50ZXh0KGNvbnRlbnQpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKSkge1xuICAgICAgeG1sLmF0dChuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IHhtbHN0cmluZyA9IHhtbC5lbmQoeyBhbGxvd0VtcHR5OiB0cnVlLCBwcmV0dHk6IGZhbHNlIH0pO1xuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHhtbHN0cmluZy5zcGxpdCgnXFxuJykubWFwKCh4KSA9PiB4LnRyaW0oKSkpIHtcbiAgICAgIHRoaXMuY29kZS5saW5lKGAvLy8gJHtsaW5lfWApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyXG4gKi9cbmZ1bmN0aW9uIHVjRmlyc3QoeDogc3RyaW5nKSB7XG4gIHJldHVybiB4LnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgeC5zdWJzdHIoMSk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoczogc3BlYy5TdGFiaWxpdHkpIHtcbiAgLy8gRG9uJ3QgcmVuZGVyIFwic3RhYmxlXCIgb3IgXCJleHRlcm5hbFwiLCB0aG9zZSBhcmUgYm90aCBzdGFibGUgYnkgaW1wbGljYXRpb25cbiAgcmV0dXJuIHMgPT09IHNwZWMuU3RhYmlsaXR5LkRlcHJlY2F0ZWQgfHwgcyA9PT0gc3BlYy5TdGFiaWxpdHkuRXhwZXJpbWVudGFsO1xufVxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90bmV0ZG9jZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG90bmV0ZG9jZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUVuQywrQ0FPc0I7QUFDdEIseUNBQXlDO0FBRXpDLDBCQUdZO0FBQ1osc0NBQTBDO0FBQzFDLDJDQUE4QztBQUU5Qzs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBa0I7SUFJN0IsWUFDRSxJQUFlLEVBQ0UsT0FBZ0IsRUFDaEIsUUFBdUI7UUFEdkIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBTHpCLGNBQVMsR0FBb0IsSUFBSSwyQkFBZSxFQUFFLENBQUM7UUFPbEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFFBQVEsQ0FBQyxHQUFzQixFQUFFLFdBQXdCO1FBQzlELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFFdEIsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLHNCQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFcEQsa0RBQWtEO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEdBQWtCLENBQUM7UUFDckMsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1lBQ3hCLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7O2dCQUNyQyxtRkFBbUY7Z0JBQ25GLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTO3FCQUM3QixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3FCQUNoQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sY0FBRSxLQUFLLENBQUMsSUFB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QUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxDQUFpQjtJQUMvQyw0RUFBNEU7SUFDNUUsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzcGVjIGZyb20gJ0Bqc2lpL3NwZWMnO1xuaW1wb3J0IHsgQ29kZU1ha2VyIH0gZnJvbSAnY29kZW1ha2VyJztcbmltcG9ydCB7XG4gIFJvc2V0dGEsXG4gIFRhcmdldExhbmd1YWdlLFxuICBUcmFuc2xhdGlvbixcbiAgZW5mb3JjZXNTdHJpY3RNb2RlLFxuICBtYXJrRG93blRvWG1sRG9jLFxuICBBcGlMb2NhdGlvbixcbn0gZnJvbSAnanNpaS1yb3NldHRhJztcbmltcG9ydCAqIGFzIHhtbGJ1aWxkZXIgZnJvbSAneG1sYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIElOQ09NUExFVEVfRElTQ0xBSU1FUl9DT01QSUxJTkcsXG4gIElOQ09NUExFVEVfRElTQ0xBSU1FUl9OT05DT01QSUxJTkcsXG59IGZyb20gJy4uJztcbmltcG9ydCB7IHJlbmRlclN1bW1hcnkgfSBmcm9tICcuLi9fdXRpbHMnO1xuaW1wb3J0IHsgRG90TmV0TmFtZVV0aWxzIH0gZnJvbSAnLi9uYW1ldXRpbHMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSnNpaSBhdHRyaWJ1dGVzIGFuZCBjYWxscyBmb3IgdGhlIC5ORVQgcnVudGltZVxuICpcbiAqIFVzZXMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgQ29kZU1ha2VyIGFzIHRoZSByZXN0IG9mIHRoZSBjb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBEb3ROZXREb2NHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZGU6IENvZGVNYWtlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBuYW1ldXRpbHM6IERvdE5ldE5hbWVVdGlscyA9IG5ldyBEb3ROZXROYW1lVXRpbHMoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgY29kZTogQ29kZU1ha2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9zZXR0YTogUm9zZXR0YSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFzc2VtYmx5OiBzcGVjLkFzc2VtYmx5LFxuICApIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFsbCBkb2N1bWVudGF0aW9uIGRlcGVuZGluZyBvbiB3aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUganNpaSBtb2RlbFxuICAgKlxuICAgKiBVc2VkIGJ5IGFsbCBraW5kIG9mIG1lbWJlcnMgKyBjbGFzc2VzLCBpbnRlcmZhY2VzLCBlbnVtc1xuICAgKiBPcmRlciBzaG91bGQgYmVcbiAgICogU3VtbWFyeVxuICAgKiBQYXJhbVxuICAgKiBSZXR1cm5zXG4gICAqIFJlbWFya3MgKGluY2x1ZGVzIGV4YW1wbGVzLCBsaW5rcywgZGVwcmVjYXRlZClcbiAgICovXG4gIHB1YmxpYyBlbWl0RG9jcyhvYmo6IHNwZWMuRG9jdW1lbnRhYmxlLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkb2NzID0gb2JqLmRvY3M7XG5cbiAgICAvLyBUaGUgZG9jcyBtYXkgYmUgdW5kZWZpbmVkIGF0IHRoZSBtZXRob2QgbGV2ZWwgYnV0IG5vdCB0aGUgcGFyYW1ldGVycyBsZXZlbFxuICAgIHRoaXMuZW1pdFhtbERvYygnc3VtbWFyeScsIHJlbmRlclN1bW1hcnkob2JqLmRvY3MpKTtcblxuICAgIC8vIEhhbmRsaW5nIHBhcmFtZXRlcnMgb25seSBpZiB0aGUgb2JqIGlzIGEgbWV0aG9kXG4gICAgY29uc3Qgb2JqTWV0aG9kID0gb2JqIGFzIHNwZWMuTWV0aG9kO1xuICAgIGlmIChvYmpNZXRob2QucGFyYW1ldGVycykge1xuICAgICAgb2JqTWV0aG9kLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBzbHVnIGBAYCBmcm9tIHRoZSBwYXJhbWV0ZXIgbmFtZSAtIGl0J3Mgbm90IHN1cHBvc2VkIHRvIHNob3cgdXAgaGVyZS5cbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gdGhpcy5uYW1ldXRpbHNcbiAgICAgICAgICAuY29udmVydFBhcmFtZXRlck5hbWUocGFyYW0ubmFtZSlcbiAgICAgICAgICAucmVwbGFjZSgvXkAvLCAnJyk7XG4gICAgICAgIHRoaXMuZW1pdFhtbERvYygncGFyYW0nLCBwYXJhbS5kb2NzPy5zdW1tYXJ5ID8/ICcnLCB7XG4gICAgICAgICAgYXR0cmlidXRlczogeyBuYW1lOiBwYXJhbU5hbWUgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBkb2NmeCBuYW1lc3BhY2Vkb2NkIGEgdmFsaWQgaW5zdGFuY2Ugb2YgZG9jc1xuICAgIGlmICghZG9jcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkb2NzLnJldHVybnMpIHtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygncmV0dXJucycsIGRvY3MucmV0dXJucyk7XG4gICAgfVxuXG4gICAgLy8gUmVtYXJrcyBkb2VzIG5vdCB1c2UgZW1pdFhtbERvYygpIGJlY2F1c2UgdGhlIHJlbWFya3MgY2FuIGNvbnRhaW4gY29kZSBibG9ja3NcbiAgICAvLyB3aGljaCBhcmUgZmVuY2VkIHdpdGggPGNvZGU+IHRhZ3MsIHdoaWNoIHdvdWxkIGJlIGVzY2FwZWQgdG9cbiAgICAvLyAmbHQ7Y29kZSZndDsgaWYgd2UgdXNlZCB0aGUgeG1sIGJ1aWxkZXIuXG4gICAgY29uc3QgcmVtYXJrcyA9IHRoaXMucmVuZGVyUmVtYXJrcyhkb2NzLCBhcGlMb2NhdGlvbik7XG4gICAgaWYgKHJlbWFya3MubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8cmVtYXJrcz4nKTtcbiAgICAgIHJlbWFya3MuZm9yRWFjaCgocikgPT4gdGhpcy5jb2RlLmxpbmUoYC8vLyAke3J9YC50cmltUmlnaHQoKSkpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L3JlbWFya3M+Jyk7XG4gICAgfVxuXG4gICAgaWYgKGRvY3MuZXhhbXBsZSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8ZXhhbXBsZT4nKTtcbiAgICAgIHRoaXMuZW1pdFhtbERvYygnY29kZScsIHRoaXMuY29udmVydEV4YW1wbGUoZG9jcy5leGFtcGxlLCBhcGlMb2NhdGlvbikpO1xuICAgICAgdGhpcy5jb2RlLmxpbmUoJy8vLyA8L2V4YW1wbGU+Jyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVtaXRNYXJrZG93bkFzUmVtYXJrcyhcbiAgICBtYXJrZG93bjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGFwaUxvY2F0aW9uOiBBcGlMb2NhdGlvbixcbiAgKSB7XG4gICAgaWYgKCFtYXJrZG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBtYXJrRG93blRvWG1sRG9jKFxuICAgICAgdGhpcy5jb252ZXJ0U2FtcGxlc0luTWFya2Rvd24obWFya2Rvd24sIGFwaUxvY2F0aW9uKSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmVzID0gdHJhbnNsYXRlZC5zcGxpdCgnXFxuJyk7XG5cbiAgICB0aGlzLmNvZGUubGluZSgnLy8vIDxyZW1hcmtzPicpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YC50cmltUmlnaHQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29kZS5saW5lKCcvLy8gPC9yZW1hcmtzPicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpbmVzIHRoYXQgc2hvdWxkIGdvIGludG8gdGhlIDxyZW1hcmtzPiBzZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlclJlbWFya3MoZG9jczogc3BlYy5Eb2NzLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmV0OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGRvY3MucmVtYXJrcykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZCA9IG1hcmtEb3duVG9YbWxEb2MoXG4gICAgICAgIHRoaXMuY29udmVydFNhbXBsZXNJbk1hcmtkb3duKGRvY3MucmVtYXJrcywgYXBpTG9jYXRpb24pLFxuICAgICAgKTtcbiAgICAgIHJldC5wdXNoKC4uLnRyYW5zbGF0ZWQuc3BsaXQoJ1xcbicpKTtcbiAgICAgIHJldC5wdXNoKCcnKTtcbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIFwidGFnc1wiIG5lZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBlbXB5dCBsaW5lcyBiZXR3ZWVuIHRoZW0gb3IgdGhleSdsbCBiZSB3b3JkIHdyYXBwZWQuXG5cbiAgICBpZiAoZG9jcy5kZWZhdWx0KSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdkZWZhdWx0JywgZG9jcy5kZWZhdWx0KTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc3RhYmlsaXR5ICYmIHNob3VsZE1lbnRpb25TdGFiaWxpdHkoZG9jcy5zdGFiaWxpdHkpKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKFxuICAgICAgICAnc3RhYmlsaXR5JyxcbiAgICAgICAgdGhpcy5uYW1ldXRpbHMuY2FwaXRhbGl6ZVdvcmQoZG9jcy5zdGFiaWxpdHkpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRvY3Muc2VlKSB7XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKCdzZWUnLCBkb2NzLnNlZSk7XG4gICAgfVxuICAgIGlmIChkb2NzLnN1YmNsYXNzYWJsZSkge1xuICAgICAgZW1pdERvY0F0dHJpYnV0ZSgnc3ViY2xhc3NhYmxlJywgJycpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhkb2NzLmN1c3RvbSA/PyB7fSkpIHtcbiAgICAgIGNvbnN0IGV4dHJhU3BhY2UgPSBrID09PSAnbGluaycgPyAnICcgOiAnJzsgLy8gRXh0cmEgc3BhY2UgZm9yICdAbGluaycgdG8ga2VlcCB1bml0IHRlc3RzIGhhcHB5XG4gICAgICBlbWl0RG9jQXR0cmlidXRlKGssIHYgKyBleHRyYVNwYWNlKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgZW1wdHkgbGluZXNcbiAgICB3aGlsZSAocmV0Lmxlbmd0aCA+IDAgJiYgcmV0WzBdID09PSAnJykge1xuICAgICAgcmV0LnNoaWZ0KCk7XG4gICAgfVxuICAgIHdoaWxlIChyZXQubGVuZ3RoID4gMCAmJiByZXRbcmV0Lmxlbmd0aCAtIDFdID09PSAnJykge1xuICAgICAgcmV0LnBvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG5cbiAgICBmdW5jdGlvbiBlbWl0RG9jQXR0cmlidXRlKG5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICAgICAgY29uc3QgbHMgPSBjb250ZW50cy5zcGxpdCgnXFxuJyk7XG4gICAgICByZXQucHVzaChgPHN0cm9uZz4ke3VjRmlyc3QobmFtZSl9PC9zdHJvbmc+OiAke2xzWzBdfWApO1xuICAgICAgcmV0LnB1c2goLi4ubHMuc2xpY2UoMSkpO1xuICAgICAgcmV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEV4YW1wbGUoZXhhbXBsZTogc3RyaW5nLCBhcGlMb2NhdGlvbjogQXBpTG9jYXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSB0aGlzLnJvc2V0dGEudHJhbnNsYXRlRXhhbXBsZShcbiAgICAgIGFwaUxvY2F0aW9uLFxuICAgICAgZXhhbXBsZSxcbiAgICAgIFRhcmdldExhbmd1YWdlLkNTSEFSUCxcbiAgICAgIGVuZm9yY2VzU3RyaWN0TW9kZSh0aGlzLmFzc2VtYmx5KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTYW1wbGVzSW5NYXJrZG93bihtYXJrZG93bjogc3RyaW5nLCBhcGk6IEFwaUxvY2F0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb3NldHRhLnRyYW5zbGF0ZVNuaXBwZXRzSW5NYXJrZG93bihcbiAgICAgIGFwaSxcbiAgICAgIG1hcmtkb3duLFxuICAgICAgVGFyZ2V0TGFuZ3VhZ2UuQ1NIQVJQLFxuICAgICAgZW5mb3JjZXNTdHJpY3RNb2RlKHRoaXMuYXNzZW1ibHkpLFxuICAgICAgKHRyYW5zKSA9PiAoe1xuICAgICAgICBsYW5ndWFnZTogdHJhbnMubGFuZ3VhZ2UsXG4gICAgICAgIHNvdXJjZTogdGhpcy5wcmVmaXhEaXNjbGFpbWVyKHRyYW5zKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpeERpc2NsYWltZXIodHJhbnNsYXRlZDogVHJhbnNsYXRpb24pIHtcbiAgICBpZiAodHJhbnNsYXRlZC5kaWRDb21waWxlICYmIElOQ09NUExFVEVfRElTQ0xBSU1FUl9DT01QSUxJTkcpIHtcbiAgICAgIHJldHVybiBgLy8gJHtJTkNPTVBMRVRFX0RJU0NMQUlNRVJfQ09NUElMSU5HfVxcbiR7dHJhbnNsYXRlZC5zb3VyY2V9YDtcbiAgICB9XG4gICAgaWYgKCF0cmFuc2xhdGVkLmRpZENvbXBpbGUgJiYgSU5DT01QTEVURV9ESVNDTEFJTUVSX05PTkNPTVBJTElORykge1xuICAgICAgcmV0dXJuIGAvLyAke0lOQ09NUExFVEVfRElTQ0xBSU1FUl9OT05DT01QSUxJTkd9XFxuJHt0cmFuc2xhdGVkLnNvdXJjZX1gO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNsYXRlZC5zb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIGVtaXRYbWxEb2MoXG4gICAgdGFnOiBzdHJpbmcsXG4gICAgY29udGVudDogc3RyaW5nLFxuICAgIHsgYXR0cmlidXRlcyA9IHt9IH06IHsgYXR0cmlidXRlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeG1sID0geG1sYnVpbGRlci5jcmVhdGUodGFnLCB7IGhlYWRsZXNzOiB0cnVlIH0pLnRleHQoY29udGVudCk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICB4bWwuYXR0KG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgeG1sc3RyaW5nID0geG1sLmVuZCh7IGFsbG93RW1wdHk6IHRydWUsIHByZXR0eTogZmFsc2UgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgeG1sc3RyaW5nLnNwbGl0KCdcXG4nKS5tYXAoKHgpID0+IHgudHJpbSgpKSkge1xuICAgICAgdGhpcy5jb2RlLmxpbmUoYC8vLyAke2xpbmV9YCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXJcbiAqL1xuZnVuY3Rpb24gdWNGaXJzdCh4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIHguc3Vic3RyKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB4LnN1YnN0cigxKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkTWVudGlvblN0YWJpbGl0eShzOiBzcGVjLlN0YWJpbGl0eSkge1xuICAvLyBEb24ndCByZW5kZXIgXCJzdGFibGVcIiBvciBcImV4dGVybmFsXCIsIHRob3NlIGFyZSBib3RoIHN0YWJsZSBieSBpbXBsaWNhdGlvblxuICByZXR1cm4gcyA9PT0gc3BlYy5TdGFiaWxpdHkuRGVwcmVjYXRlZCB8fCBzID09PSBzcGVjLlN0YWJpbGl0eS5FeHBlcmltZW50YWw7XG59XG4iXX0=