jsii-reflect 1.52.1 → 1.53.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/bin/jsii-tree.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  require("@jsii/check-node/run");
4
- const colors = require("colors/safe");
4
+ const chalk = require("chalk");
5
5
  const yargs = require("yargs");
6
6
  const lib_1 = require("../lib");
7
7
  async function main() {
@@ -93,7 +93,7 @@ async function main() {
93
93
  tst.printTree();
94
94
  }
95
95
  main().catch((e) => {
96
- console.log(colors.red(e));
96
+ console.log(chalk.red(e));
97
97
  process.exit(1);
98
98
  });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsianNpaS10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0NBQThCO0FBRTlCLHNDQUFzQztBQUN0QywrQkFBK0I7QUFFL0IsZ0NBQW9EO0FBRXBELEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLE9BQU8sR0FBRyxLQUFLO1NBQ2xCLEtBQUssQ0FDSixnQ0FBZ0MsRUFDaEMsNERBQTRELEVBQzVELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJO1NBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN2QixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxzRkFBc0Y7S0FDN0YsQ0FBQztTQUNELFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDeEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUseUZBQXlGO0tBQ2hHLENBQUMsQ0FDUDtTQUNBLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSx5RUFBeUU7S0FDaEYsQ0FBQztTQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLHNDQUFzQztRQUM1QyxPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7U0FDRCxNQUFNLENBQUMsY0FBYyxFQUFFO1FBQ3RCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDckIsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSw4Q0FBOEM7UUFDcEQsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDO1NBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3BCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFlBQVk7UUFDbEIsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDO1NBQ0QsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNsQixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLHFEQUFxRDtRQUMzRCxPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7U0FDRCxNQUFNLENBQUMsYUFBYSxFQUFFO1FBQ3JCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVWLE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQVUsRUFBRSxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2pELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUM7S0FDSjtJQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixPQUFFLE9BQU8sQ0FBQyxRQUFxQixtQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDOUQsQ0FDRixDQUFDO0lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxvQkFBYyxDQUFDLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsR0FBRztRQUNqRCxLQUFLLEVBQ0gsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVc7UUFDeEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDdkMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDL0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDN0MsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDL0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGpzaWkvY2hlY2stbm9kZS9ydW4nO1xuXG5pbXBvcnQgKiBhcyBjb2xvcnMgZnJvbSAnY29sb3JzL3NhZmUnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuXG5pbXBvcnQgeyBUeXBlU3lzdGVtLCBUeXBlU3lzdGVtVHJlZSB9IGZyb20gJy4uL2xpYic7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSB5YXJnc1xuICAgIC51c2FnZShcbiAgICAgICckMCBbSlNJSS1GSUxFIHwgTU9EVUxFLURJUi4uLl0nLFxuICAgICAgJ1ByaW50cyBhbiBBU0NJSSB0cmVlIHJlcHJlc2VudGF0aW9uIG9mIGEganNpaSB0eXBlIHN5c3RlbS4nLFxuICAgICAgKGFyZ3MpID0+XG4gICAgICAgIGFyZ3NcbiAgICAgICAgICAucG9zaXRpb25hbCgnSlNJSS1GSUxFJywge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjOiAncGF0aCB0byBhIC5qc2lpIGZpbGUgdG8gbG9hZCwgYWxsIGRlcGVuZGVuY3kgLmpzaWkgZmlsZXMgbXVzdCBiZSBleHBsaWNpdGx5IHN1cHBsaWVkJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5wb3NpdGlvbmFsKCdNT0RVTEUtRElSJywge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjOiAncGF0aCB0byBhbiBqc2lpIG5wbSBtb2R1bGUgZGlyZWN0b3J5LCBhbGwganNpaSBkZXBlbmRlbmNpZXMgd2lsbCBiZSBsb2FkZWQgdHJhbnNpdGl2ZWx5JyxcbiAgICAgICAgICB9KSxcbiAgICApXG4gICAgLm9wdGlvbignY2xvc3VyZScsIHtcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgYWxpYXM6ICdjJyxcbiAgICAgIGRlc2M6ICdMb2FkIGRlcGVuZGVuY2llcyBvZiBwYWNrYWdlIHdpdGhvdXQgYXNzdW1pbmcgaXRzIGEgSlNJSSBwYWNrYWdlIGl0c2VsZicsXG4gICAgfSlcbiAgICAub3B0aW9uKCdhbGwnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ2EnLFxuICAgICAgZGVzYzogJ3Nob3cgYWxsIGRldGFpbHMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdjb2xvcnMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBkZXNjOiAnZW5hYmxlL2Rpc2FibGUgQU5TSSBjb2xvcnMgaW4gb3V0cHV0JyxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSlcbiAgICAub3B0aW9uKCdkZXBlbmRlbmNpZXMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ2QnLFxuICAgICAgZGVzYzogJ3Nob3cgYXNzZW1ibHkgZGVwZW5kZW5jaWVzJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbignaW5oZXJpdGFuY2UnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ2knLFxuICAgICAgZGVzYzogJ3Nob3cgYmFzZSBjbGFzc2VzIGFuZCBpbXBsZW1lbnRlZCBpbnRlcmZhY2VzJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbignbWVtYmVycycsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnbScsXG4gICAgICBkZXNjOiAnc2hvdyB0eXBlIG1lbWJlcnMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdzaWduYXR1cmVzJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgYWxpYXM6ICdzJyxcbiAgICAgIGRlc2M6ICdzaG93IG1ldGhvZCBhbmQgcHJvcGVydHkgc2lnbmF0dXJlcycsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3R5cGVzJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgYWxpYXM6ICd0JyxcbiAgICAgIGRlc2M6ICdzaG93IHR5cGVzJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGUnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ1YnLFxuICAgICAgZGVzYzogJ1ZhbGlkYXRlIHRoYXQgYXNzZW1ibGllcyBtYXRjaCBzY2hlbWEgd2hpbGUgbG9hZGluZycsXG4gICAgICBkZWZhdWx0OiB0cnVlLFxuICAgIH0pXG4gICAgLm9wdGlvbignc3RhYmlsaXRpZXMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ1MnLFxuICAgICAgZGVzYzogJ1Nob3cgc3RhYmlsaXRpZXMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSkuYXJndjtcblxuICBjb25zdCB0eXBlc3lzID0gbmV3IFR5cGVTeXN0ZW0oKTtcblxuICBpZiAob3B0aW9ucy5jbG9zdXJlKSB7XG4gICAgYXdhaXQgdHlwZXN5cy5sb2FkTnBtRGVwZW5kZW5jaWVzKG9wdGlvbnMuY2xvc3VyZSwge1xuICAgICAgdmFsaWRhdGU6IG9wdGlvbnMudmFsaWRhdGUsXG4gICAgfSk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAoKG9wdGlvbnMuanNpaUZpbGUgYXMgc3RyaW5nW10pID8/IFtdKS5tYXAoKGZpbGVPckRpcmVjdG9yeSkgPT5cbiAgICAgIHR5cGVzeXMubG9hZChmaWxlT3JEaXJlY3RvcnksIHsgdmFsaWRhdGU6IG9wdGlvbnMudmFsaWRhdGUgfSksXG4gICAgKSxcbiAgKTtcblxuICBjb25zdCB0c3QgPSBuZXcgVHlwZVN5c3RlbVRyZWUodHlwZXN5cywge1xuICAgIGRlcGVuZGVuY2llczogb3B0aW9ucy5kZXBlbmRlbmNpZXMgfHwgb3B0aW9ucy5hbGwsXG4gICAgdHlwZXM6XG4gICAgICBvcHRpb25zLnR5cGVzIHx8IG9wdGlvbnMuYWxsIHx8IG9wdGlvbnMubWVtYmVycyB8fCBvcHRpb25zLmluaGVyaXRhbmNlLFxuICAgIG1lbWJlcnM6IG9wdGlvbnMubWVtYmVycyB8fCBvcHRpb25zLmFsbCxcbiAgICBpbmhlcml0YW5jZTogb3B0aW9ucy5pbmhlcml0YW5jZSB8fCBvcHRpb25zLmFsbCxcbiAgICBzaWduYXR1cmVzOiBvcHRpb25zLnNpZ25hdHVyZXMgfHwgb3B0aW9ucy5hbGwsXG4gICAgc3RhYmlsaXRpZXM6IG9wdGlvbnMuc3RhYmlsaXRpZXMgfHwgb3B0aW9ucy5hbGwsXG4gICAgY29sb3JzOiBvcHRpb25zLmNvbG9ycyxcbiAgfSk7XG5cbiAgdHN0LnByaW50VHJlZSgpO1xufVxuXG5tYWluKCkuY2F0Y2goKGUpID0+IHtcbiAgY29uc29sZS5sb2coY29sb3JzLnJlZChlKSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS10cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsianNpaS10cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0NBQThCO0FBRTlCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFFL0IsZ0NBQW9EO0FBRXBELEtBQUssVUFBVSxJQUFJOztJQUNqQixNQUFNLE9BQU8sR0FBRyxLQUFLO1NBQ2xCLEtBQUssQ0FDSixnQ0FBZ0MsRUFDaEMsNERBQTRELEVBQzVELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJO1NBQ0QsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN2QixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxzRkFBc0Y7S0FDN0YsQ0FBQztTQUNELFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDeEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUseUZBQXlGO0tBQ2hHLENBQUMsQ0FDUDtTQUNBLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSx5RUFBeUU7S0FDaEYsQ0FBQztTQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLHNDQUFzQztRQUM1QyxPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7U0FDRCxNQUFNLENBQUMsY0FBYyxFQUFFO1FBQ3RCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE1BQU0sQ0FBQyxhQUFhLEVBQUU7UUFDckIsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSw4Q0FBOEM7UUFDcEQsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDO1NBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUM7U0FDRCxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQ3BCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUscUNBQXFDO1FBQzNDLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFlBQVk7UUFDbEIsT0FBTyxFQUFFLEtBQUs7S0FDZixDQUFDO1NBQ0QsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNsQixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLHFEQUFxRDtRQUMzRCxPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7U0FDRCxNQUFNLENBQUMsYUFBYSxFQUFFO1FBQ3JCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVWLE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQVUsRUFBRSxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUNuQixNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2pELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUM7S0FDSjtJQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixPQUFFLE9BQU8sQ0FBQyxRQUFxQixtQ0FBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDOUQsQ0FDRixDQUFDO0lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxvQkFBYyxDQUFDLE9BQU8sRUFBRTtRQUN0QyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsR0FBRztRQUNqRCxLQUFLLEVBQ0gsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVc7UUFDeEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDdkMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDL0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDN0MsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUc7UUFDL0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNsQixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnQGpzaWkvY2hlY2stbm9kZS9ydW4nO1xuXG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5cbmltcG9ydCB7IFR5cGVTeXN0ZW0sIFR5cGVTeXN0ZW1UcmVlIH0gZnJvbSAnLi4vbGliJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHlhcmdzXG4gICAgLnVzYWdlKFxuICAgICAgJyQwIFtKU0lJLUZJTEUgfCBNT0RVTEUtRElSLi4uXScsXG4gICAgICAnUHJpbnRzIGFuIEFTQ0lJIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgYSBqc2lpIHR5cGUgc3lzdGVtLicsXG4gICAgICAoYXJncykgPT5cbiAgICAgICAgYXJnc1xuICAgICAgICAgIC5wb3NpdGlvbmFsKCdKU0lJLUZJTEUnLCB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2M6ICdwYXRoIHRvIGEgLmpzaWkgZmlsZSB0byBsb2FkLCBhbGwgZGVwZW5kZW5jeSAuanNpaSBmaWxlcyBtdXN0IGJlIGV4cGxpY2l0bHkgc3VwcGxpZWQnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBvc2l0aW9uYWwoJ01PRFVMRS1ESVInLCB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2M6ICdwYXRoIHRvIGFuIGpzaWkgbnBtIG1vZHVsZSBkaXJlY3RvcnksIGFsbCBqc2lpIGRlcGVuZGVuY2llcyB3aWxsIGJlIGxvYWRlZCB0cmFuc2l0aXZlbHknLFxuICAgICAgICAgIH0pLFxuICAgIClcbiAgICAub3B0aW9uKCdjbG9zdXJlJywge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBhbGlhczogJ2MnLFxuICAgICAgZGVzYzogJ0xvYWQgZGVwZW5kZW5jaWVzIG9mIHBhY2thZ2Ugd2l0aG91dCBhc3N1bWluZyBpdHMgYSBKU0lJIHBhY2thZ2UgaXRzZWxmJyxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2FsbCcsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnYScsXG4gICAgICBkZXNjOiAnc2hvdyBhbGwgZGV0YWlscycsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2NvbG9ycycsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlc2M6ICdlbmFibGUvZGlzYWJsZSBBTlNJIGNvbG9ycyBpbiBvdXRwdXQnLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2RlcGVuZGVuY2llcycsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnZCcsXG4gICAgICBkZXNjOiAnc2hvdyBhc3NlbWJseSBkZXBlbmRlbmNpZXMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdpbmhlcml0YW5jZScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnaScsXG4gICAgICBkZXNjOiAnc2hvdyBiYXNlIGNsYXNzZXMgYW5kIGltcGxlbWVudGVkIGludGVyZmFjZXMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdtZW1iZXJzJywge1xuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgYWxpYXM6ICdtJyxcbiAgICAgIGRlc2M6ICdzaG93IHR5cGUgbWVtYmVycycsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3NpZ25hdHVyZXMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ3MnLFxuICAgICAgZGVzYzogJ3Nob3cgbWV0aG9kIGFuZCBwcm9wZXJ0eSBzaWduYXR1cmVzJyxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIH0pXG4gICAgLm9wdGlvbigndHlwZXMnLCB7XG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICBhbGlhczogJ3QnLFxuICAgICAgZGVzYzogJ3Nob3cgdHlwZXMnLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCd2YWxpZGF0ZScsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnVicsXG4gICAgICBkZXNjOiAnVmFsaWRhdGUgdGhhdCBhc3NlbWJsaWVzIG1hdGNoIHNjaGVtYSB3aGlsZSBsb2FkaW5nJyxcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgfSlcbiAgICAub3B0aW9uKCdzdGFiaWxpdGllcycsIHtcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIGFsaWFzOiAnUycsXG4gICAgICBkZXNjOiAnU2hvdyBzdGFiaWxpdGllcycsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KS5hcmd2O1xuXG4gIGNvbnN0IHR5cGVzeXMgPSBuZXcgVHlwZVN5c3RlbSgpO1xuXG4gIGlmIChvcHRpb25zLmNsb3N1cmUpIHtcbiAgICBhd2FpdCB0eXBlc3lzLmxvYWROcG1EZXBlbmRlbmNpZXMob3B0aW9ucy5jbG9zdXJlLCB7XG4gICAgICB2YWxpZGF0ZTogb3B0aW9ucy52YWxpZGF0ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICgob3B0aW9ucy5qc2lpRmlsZSBhcyBzdHJpbmdbXSkgPz8gW10pLm1hcCgoZmlsZU9yRGlyZWN0b3J5KSA9PlxuICAgICAgdHlwZXN5cy5sb2FkKGZpbGVPckRpcmVjdG9yeSwgeyB2YWxpZGF0ZTogb3B0aW9ucy52YWxpZGF0ZSB9KSxcbiAgICApLFxuICApO1xuXG4gIGNvbnN0IHRzdCA9IG5ldyBUeXBlU3lzdGVtVHJlZSh0eXBlc3lzLCB7XG4gICAgZGVwZW5kZW5jaWVzOiBvcHRpb25zLmRlcGVuZGVuY2llcyB8fCBvcHRpb25zLmFsbCxcbiAgICB0eXBlczpcbiAgICAgIG9wdGlvbnMudHlwZXMgfHwgb3B0aW9ucy5hbGwgfHwgb3B0aW9ucy5tZW1iZXJzIHx8IG9wdGlvbnMuaW5oZXJpdGFuY2UsXG4gICAgbWVtYmVyczogb3B0aW9ucy5tZW1iZXJzIHx8IG9wdGlvbnMuYWxsLFxuICAgIGluaGVyaXRhbmNlOiBvcHRpb25zLmluaGVyaXRhbmNlIHx8IG9wdGlvbnMuYWxsLFxuICAgIHNpZ25hdHVyZXM6IG9wdGlvbnMuc2lnbmF0dXJlcyB8fCBvcHRpb25zLmFsbCxcbiAgICBzdGFiaWxpdGllczogb3B0aW9ucy5zdGFiaWxpdGllcyB8fCBvcHRpb25zLmFsbCxcbiAgICBjb2xvcnM6IG9wdGlvbnMuY29sb3JzLFxuICB9KTtcblxuICB0c3QucHJpbnRUcmVlKCk7XG59XG5cbm1haW4oKS5jYXRjaCgoZSkgPT4ge1xuICBjb25zb2xlLmxvZyhjaGFsay5yZWQoZSkpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
package/lib/tree.js CHANGED
@@ -2,7 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypeSystemTree = void 0;
4
4
  const spec_1 = require("@jsii/spec");
5
- const colors = require("colors/safe");
5
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
6
+ const chalk = require("chalk");
6
7
  const oo_ascii_tree_1 = require("oo-ascii-tree");
7
8
  const method_1 = require("./method");
8
9
  const optional_value_1 = require("./optional-value");
@@ -33,7 +34,7 @@ class TypeSystemTree extends oo_ascii_tree_1.AsciiTree {
33
34
  exports.TypeSystemTree = TypeSystemTree;
34
35
  class AssemblyNode extends oo_ascii_tree_1.AsciiTree {
35
36
  constructor(assembly, options) {
36
- super(colors.green(assembly.name));
37
+ super(chalk.green(assembly.name));
37
38
  if (options.dependencies && assembly.dependencies.length > 0) {
38
39
  const deps = new TitleNode('dependencies');
39
40
  this.add(deps);
@@ -56,7 +57,7 @@ class AssemblyNode extends oo_ascii_tree_1.AsciiTree {
56
57
  }
57
58
  class SubmoduleNode extends oo_ascii_tree_1.AsciiTree {
58
59
  constructor(submodule, options) {
59
- super(colors.green(submodule.name));
60
+ super(chalk.green(submodule.name));
60
61
  const submodules = submodule.submodules;
61
62
  if (submodules.length > 0) {
62
63
  const title = new TitleNode('submodules');
@@ -75,7 +76,7 @@ class SubmoduleNode extends oo_ascii_tree_1.AsciiTree {
75
76
  class MethodNode extends oo_ascii_tree_1.AsciiTree {
76
77
  constructor(method, options) {
77
78
  const args = method.parameters.map((p) => p.name).join(',');
78
- super(`${maybeStatic(method)}${method.name}(${args}) ${colors.gray('method')}${describeStability(method, options)}`);
79
+ super(`${maybeStatic(method)}${method.name}(${args}) ${chalk.gray('method')}${describeStability(method, options)}`);
79
80
  if (options.signatures) {
80
81
  if (method.abstract) {
81
82
  this.add(new FlagNode('abstract'));
@@ -103,7 +104,7 @@ class MethodNode extends oo_ascii_tree_1.AsciiTree {
103
104
  class InitializerNode extends oo_ascii_tree_1.AsciiTree {
104
105
  constructor(initializer, options) {
105
106
  const args = initializer.parameters.map((p) => p.name).join(',');
106
- super(`${initializer.name}(${args}) ${colors.gray('initializer')}${describeStability(initializer, options)}`);
107
+ super(`${initializer.name}(${args}) ${chalk.gray('initializer')}${describeStability(initializer, options)}`);
107
108
  if (options.signatures) {
108
109
  if (initializer.protected) {
109
110
  this.add(new FlagNode('protected'));
@@ -130,7 +131,7 @@ class ParameterNode extends oo_ascii_tree_1.AsciiTree {
130
131
  }
131
132
  class PropertyNode extends oo_ascii_tree_1.AsciiTree {
132
133
  constructor(property, options) {
133
- super(`${maybeStatic(property)}${property.name} ${colors.gray('property')}${describeStability(property, options)}`);
134
+ super(`${maybeStatic(property)}${property.name} ${chalk.gray('property')}${describeStability(property, options)}`);
134
135
  if (options.signatures) {
135
136
  if (property.abstract) {
136
137
  this.add(new FlagNode('abstract'));
@@ -157,12 +158,12 @@ class OptionalValueNode extends oo_ascii_tree_1.AsciiTree {
157
158
  if (asPromise) {
158
159
  type = `Promise<${type}>`;
159
160
  }
160
- super(`${colors.underline(name)}: ${type}`);
161
+ super(`${chalk.underline(name)}: ${type}`);
161
162
  }
162
163
  }
163
164
  class ClassNode extends oo_ascii_tree_1.AsciiTree {
164
165
  constructor(type, options) {
165
- super(`${colors.gray('class')} ${colors.cyan(type.name)}${describeStability(type, options)}`);
166
+ super(`${chalk.gray('class')} ${chalk.cyan(type.name)}${describeStability(type, options)}`);
166
167
  if (options.inheritance && type.base) {
167
168
  this.add(new KeyValueNode('base', type.base.name));
168
169
  }
@@ -182,7 +183,7 @@ class ClassNode extends oo_ascii_tree_1.AsciiTree {
182
183
  }
183
184
  class InterfaceNode extends oo_ascii_tree_1.AsciiTree {
184
185
  constructor(type, options) {
185
- super(`${colors.gray('interface')} ${colors.cyan(type.name)}${describeStability(type, options)}`);
186
+ super(`${chalk.gray('interface')} ${chalk.cyan(type.name)}${describeStability(type, options)}`);
186
187
  if (options.inheritance && type.interfaces.length > 0) {
187
188
  const interfaces = new TitleNode('interfaces');
188
189
  this.add(interfaces);
@@ -198,7 +199,7 @@ class InterfaceNode extends oo_ascii_tree_1.AsciiTree {
198
199
  }
199
200
  class EnumNode extends oo_ascii_tree_1.AsciiTree {
200
201
  constructor(enumType, options) {
201
- super(`${colors.gray('enum')} ${colors.cyan(enumType.name)}${describeStability(enumType, options)}`);
202
+ super(`${chalk.gray('enum')} ${chalk.cyan(enumType.name)}${describeStability(enumType, options)}`);
202
203
  if (options.members) {
203
204
  enumType.members.forEach((mem) => {
204
205
  this.add(new oo_ascii_tree_1.AsciiTree(mem.name + describeStability(mem, options)));
@@ -213,42 +214,34 @@ class DependencyNode extends oo_ascii_tree_1.AsciiTree {
213
214
  }
214
215
  class TitleNode extends oo_ascii_tree_1.AsciiTree {
215
216
  constructor(name, children = []) {
216
- super(colors.underline(name), ...children);
217
+ super(chalk.underline(name), ...children);
217
218
  }
218
219
  }
219
220
  class KeyValueNode extends oo_ascii_tree_1.AsciiTree {
220
221
  constructor(key, value) {
221
- super(`${colors.underline(key)}: ${value}`);
222
+ super(`${chalk.underline(key)}: ${value}`);
222
223
  }
223
224
  }
224
225
  class TextNode extends oo_ascii_tree_1.AsciiTree {
225
226
  }
226
227
  class FlagNode extends oo_ascii_tree_1.AsciiTree {
227
228
  constructor(flag) {
228
- super(colors.italic(flag));
229
+ super(chalk.italic(flag));
229
230
  }
230
231
  }
231
232
  /**
232
233
  * Invokes `block` with colors enabled/disabled and reverts to old value afterwards.
233
234
  */
234
235
  function withColors(enabled, block) {
235
- const oldEnabled = colors.enabled;
236
+ const oldLevel = chalk.level;
236
237
  try {
237
- if (enabled) {
238
- colors.enable();
239
- }
240
- else {
241
- colors.disable();
238
+ if (!enabled) {
239
+ chalk.level = 0; // No colors at all
242
240
  }
243
241
  block();
244
242
  }
245
243
  finally {
246
- if (oldEnabled) {
247
- colors.enable();
248
- }
249
- else {
250
- colors.disable();
251
- }
244
+ chalk.level = oldLevel;
252
245
  }
253
246
  }
254
247
  function describeStability(thing, options) {
@@ -257,13 +250,13 @@ function describeStability(thing, options) {
257
250
  }
258
251
  switch (thing.docs.stability) {
259
252
  case spec_1.Stability.Stable:
260
- return ` (${colors.green('stable')})`;
253
+ return ` (${chalk.green('stable')})`;
261
254
  case spec_1.Stability.External:
262
- return ` (${colors.green('external')})`;
255
+ return ` (${chalk.green('external')})`;
263
256
  case spec_1.Stability.Experimental:
264
- return ` (${colors.yellow('experimental')})`;
257
+ return ` (${chalk.yellow('experimental')})`;
265
258
  case spec_1.Stability.Deprecated:
266
- return ` (${colors.red('deprecated')})`;
259
+ return ` (${chalk.red('deprecated')})`;
267
260
  default:
268
261
  return '';
269
262
  }
@@ -276,6 +269,6 @@ function maybeStatic(mem) {
276
269
  if (mem instanceof method_1.Method) {
277
270
  isStatic = !!mem.static;
278
271
  }
279
- return isStatic ? `${colors.grey('static')} ` : '';
272
+ return isStatic ? `${chalk.grey('static')} ` : '';
280
273
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBQ3ZDLHNDQUFzQztBQUN0QyxpREFBMEM7QUFTMUMscUNBQWtDO0FBQ2xDLHFEQUFpRDtBQUVqRCx5Q0FBc0M7QUF1RHRDOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEseUJBQVM7SUFDM0MsWUFBbUIsT0FBbUIsRUFBRSxVQUFpQyxFQUFFO1FBQ3pFLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO1FBRUQsTUFBTSxlQUFlLEdBQ25CLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDdkQsVUFBVSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDL0IsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMvQyxVQUFVLENBQUMsR0FBRyxDQUNaLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUMvRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7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Q0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0tBQ3pCO0lBRUQsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWJpbGl0eSB9IGZyb20gJ0Bqc2lpL3NwZWMnO1xuaW1wb3J0ICogYXMgY29sb3JzIGZyb20gJ2NvbG9ycy9zYWZlJztcbmltcG9ydCB7IEFzY2lpVHJlZSB9IGZyb20gJ29vLWFzY2lpLXRyZWUnO1xuXG5pbXBvcnQgeyBBc3NlbWJseSB9IGZyb20gJy4vYXNzZW1ibHknO1xuaW1wb3J0IHsgQ2xhc3NUeXBlIH0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSAnLi9kZXBlbmRlbmN5JztcbmltcG9ydCB7IERvY3VtZW50YWJsZSB9IGZyb20gJy4vZG9jcyc7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBJbml0aWFsaXplciB9IGZyb20gJy4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgSW50ZXJmYWNlVHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IE1ldGhvZCB9IGZyb20gJy4vbWV0aG9kJztcbmltcG9ydCB7IE9wdGlvbmFsVmFsdWUgfSBmcm9tICcuL29wdGlvbmFsLXZhbHVlJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4vcGFyYW1ldGVyJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgeyBTdWJtb2R1bGUgfSBmcm9tICcuL3N1Ym1vZHVsZSc7XG5pbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnLi90eXBlLXN5c3RlbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVN5c3RlbVRyZWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNob3cgYWxsIGVudGl0eSB0eXBlcyAoc3VwZXJzZWRlcyBvdGhlciBvcHRpb25zKVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2hvd0FsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgdHlwZSBtZW1iZXJzIChtZXRob2RzLCBwcm9wZXJ0aWVzKVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWVtYmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgZGVwZW5kZW5jaWVzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IGluaGVyaXRhbmNlIGluZm9ybWF0aW9uIChiYXNlIGNsYXNzZXMsIGludGVyZmFjZXMpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0YW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgdHlwZXNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyBtZXRob2Qgc2lnbmF0dXJlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNpZ25hdHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgd2l0aCBBTlNJIGNvbG9yc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBjb2xvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHN0YWJpbGl0aWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzdGFiaWxpdGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmlzdWFsaXplcyBhIGBUeXBlU3lzdGVtYCBhcyBhbiBBU0NJSSB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVN5c3RlbVRyZWUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZXN5czogVHlwZVN5c3RlbSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKG9wdGlvbnMuc2hvd0FsbCkge1xuICAgICAgb3B0aW9ucy5kZXBlbmRlbmNpZXMgPSB0cnVlO1xuICAgICAgb3B0aW9ucy5pbmhlcml0YW5jZSA9IHRydWU7XG4gICAgICBvcHRpb25zLm1lbWJlcnMgPSB0cnVlO1xuICAgICAgb3B0aW9ucy5zaWduYXR1cmVzID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFVzZUNvbG9ycyA9XG4gICAgICBvcHRpb25zLmNvbG9ycyA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMuY29sb3JzO1xuICAgIHdpdGhDb2xvcnMoc2hvdWxkVXNlQ29sb3JzLCAoKSA9PiB7XG4gICAgICBpZiAodHlwZXN5cy5hc3NlbWJsaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYXNzZW1ibGllcyA9IG5ldyBUaXRsZU5vZGUoJ2Fzc2VtYmxpZXMnKTtcbiAgICAgICAgYXNzZW1ibGllcy5hZGQoXG4gICAgICAgICAgLi4udHlwZXN5cy5hc3NlbWJsaWVzLm1hcCgoYSkgPT4gbmV3IEFzc2VtYmx5Tm9kZShhLCBvcHRpb25zKSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWRkKGFzc2VtYmxpZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFzc2VtYmx5Tm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihhc3NlbWJseTogQXNzZW1ibHksIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucykge1xuICAgIHN1cGVyKGNvbG9ycy5ncmVlbihhc3NlbWJseS5uYW1lKSk7XG5cbiAgICBpZiAob3B0aW9ucy5kZXBlbmRlbmNpZXMgJiYgYXNzZW1ibHkuZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlcHMgPSBuZXcgVGl0bGVOb2RlKCdkZXBlbmRlbmNpZXMnKTtcbiAgICAgIHRoaXMuYWRkKGRlcHMpO1xuICAgICAgZGVwcy5hZGQoXG4gICAgICAgIC4uLmFzc2VtYmx5LmRlcGVuZGVuY2llcy5tYXAoKGQpID0+IG5ldyBEZXBlbmRlbmN5Tm9kZShkLCBvcHRpb25zKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym1vZHVsZXMgPSBhc3NlbWJseS5zdWJtb2R1bGVzO1xuICAgIGlmIChzdWJtb2R1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gbmV3IFRpdGxlTm9kZSgnc3VibW9kdWxlcycpO1xuICAgICAgdGhpcy5hZGQodGl0bGUpO1xuICAgICAgdGl0bGUuYWRkKC4uLnN1Ym1vZHVsZXMubWFwKChzKSA9PiBuZXcgU3VibW9kdWxlTm9kZShzLCBvcHRpb25zKSkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnR5cGVzKSB7XG4gICAgICBjb25zdCB0eXBlcyA9IG5ldyBUaXRsZU5vZGUoJ3R5cGVzJyk7XG4gICAgICB0aGlzLmFkZCh0eXBlcyk7XG4gICAgICB0eXBlcy5hZGQoLi4uYXNzZW1ibHkuY2xhc3Nlcy5tYXAoKGMpID0+IG5ldyBDbGFzc05vZGUoYywgb3B0aW9ucykpKTtcbiAgICAgIHR5cGVzLmFkZChcbiAgICAgICAgLi4uYXNzZW1ibHkuaW50ZXJmYWNlcy5tYXAoKGMpID0+IG5ldyBJbnRlcmZhY2VOb2RlKGMsIG9wdGlvbnMpKSxcbiAgICAgICk7XG4gICAgICB0eXBlcy5hZGQoLi4uYXNzZW1ibHkuZW51bXMubWFwKChjKSA9PiBuZXcgRW51bU5vZGUoYywgb3B0aW9ucykpKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU3VibW9kdWxlTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzdWJtb2R1bGU6IFN1Ym1vZHVsZSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoY29sb3JzLmdyZWVuKHN1Ym1vZHVsZS5uYW1lKSk7XG5cbiAgICBjb25zdCBzdWJtb2R1bGVzID0gc3VibW9kdWxlLnN1Ym1vZHVsZXM7XG4gICAgaWYgKHN1Ym1vZHVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBuZXcgVGl0bGVOb2RlKCdzdWJtb2R1bGVzJyk7XG4gICAgICB0aGlzLmFkZCh0aXRsZSk7XG4gICAgICB0aXRsZS5hZGQoLi4uc3VibW9kdWxlcy5tYXAoKHMpID0+IG5ldyBTdWJtb2R1bGVOb2RlKHMsIG9wdGlvbnMpKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHlwZXMpIHtcbiAgICAgIGNvbnN0IHR5cGVzID0gbmV3IFRpdGxlTm9kZSgndHlwZXMnKTtcbiAgICAgIHRoaXMuYWRkKHR5cGVzKTtcbiAgICAgIHR5cGVzLmFkZCguLi5zdWJtb2R1bGUuY2xhc3Nlcy5tYXAoKGMpID0+IG5ldyBDbGFzc05vZGUoYywgb3B0aW9ucykpKTtcbiAgICAgIHR5cGVzLmFkZChcbiAgICAgICAgLi4uc3VibW9kdWxlLmludGVyZmFjZXMubWFwKChpKSA9PiBuZXcgSW50ZXJmYWNlTm9kZShpLCBvcHRpb25zKSksXG4gICAgICApO1xuICAgICAgdHlwZXMuYWRkKC4uLnN1Ym1vZHVsZS5lbnVtcy5tYXAoKGUpID0+IG5ldyBFbnVtTm9kZShlLCBvcHRpb25zKSkpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBNZXRob2ROb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1ldGhvZDogTWV0aG9kLCBvcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBjb25zdCBhcmdzID0gbWV0aG9kLnBhcmFtZXRlcnMubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oJywnKTtcbiAgICBzdXBlcihcbiAgICAgIGAke21heWJlU3RhdGljKG1ldGhvZCl9JHttZXRob2QubmFtZX0oJHthcmdzfSkgJHtjb2xvcnMuZ3JheShcbiAgICAgICAgJ21ldGhvZCcsXG4gICAgICApfSR7ZGVzY3JpYmVTdGFiaWxpdHkobWV0aG9kLCBvcHRpb25zKX1gLFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy5zaWduYXR1cmVzKSB7XG4gICAgICBpZiAobWV0aG9kLmFic3RyYWN0KSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnYWJzdHJhY3QnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2QucHJvdGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgncHJvdGVjdGVkJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kLnN0YXRpYykge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3N0YXRpYycpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGhvZC52YXJpYWRpYykge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3ZhcmlhZGljJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVGl0bGVOb2RlKCdwYXJhbWV0ZXJzJyk7XG4gICAgICAgIHRoaXMuYWRkKHBhcmFtcyk7XG4gICAgICAgIHBhcmFtcy5hZGQoXG4gICAgICAgICAgLi4ubWV0aG9kLnBhcmFtZXRlcnMubWFwKChwKSA9PiBuZXcgUGFyYW1ldGVyTm9kZShwLCBvcHRpb25zKSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkKFxuICAgICAgICBuZXcgT3B0aW9uYWxWYWx1ZU5vZGUoJ3JldHVybnMnLCBtZXRob2QucmV0dXJucywge1xuICAgICAgICAgIGFzUHJvbWlzZTogbWV0aG9kLmFzeW5jLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEluaXRpYWxpemVyTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0aWFsaXplcjogSW5pdGlhbGl6ZXIsIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucykge1xuICAgIGNvbnN0IGFyZ3MgPSBpbml0aWFsaXplci5wYXJhbWV0ZXJzLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKCcsJyk7XG4gICAgc3VwZXIoXG4gICAgICBgJHtpbml0aWFsaXplci5uYW1lfSgke2FyZ3N9KSAke2NvbG9ycy5ncmF5KFxuICAgICAgICAnaW5pdGlhbGl6ZXInLFxuICAgICAgKX0ke2Rlc2NyaWJlU3RhYmlsaXR5KGluaXRpYWxpemVyLCBvcHRpb25zKX1gLFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy5zaWduYXR1cmVzKSB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZXIucHJvdGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgncHJvdGVjdGVkJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5pdGlhbGl6ZXIudmFyaWFkaWMpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCd2YXJpYWRpYycpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluaXRpYWxpemVyLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVGl0bGVOb2RlKCdwYXJhbWV0ZXJzJyk7XG4gICAgICAgIHRoaXMuYWRkKHBhcmFtcyk7XG4gICAgICAgIHBhcmFtcy5hZGQoXG4gICAgICAgICAgLi4uaW5pdGlhbGl6ZXIucGFyYW1ldGVycy5tYXAoKHApID0+IG5ldyBQYXJhbWV0ZXJOb2RlKHAsIG9wdGlvbnMpKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUGFyYW1ldGVyTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbTogUGFyYW1ldGVyLCBfb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIocGFyYW0ubmFtZSk7XG5cbiAgICB0aGlzLmFkZChuZXcgT3B0aW9uYWxWYWx1ZU5vZGUoJ3R5cGUnLCBwYXJhbSkpO1xuICAgIGlmIChwYXJhbS52YXJpYWRpYykge1xuICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCd2YXJpYWRpYycpKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgUHJvcGVydHlOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBQcm9wZXJ0eSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHttYXliZVN0YXRpYyhwcm9wZXJ0eSl9JHtwcm9wZXJ0eS5uYW1lfSAke2NvbG9ycy5ncmF5KFxuICAgICAgICAncHJvcGVydHknLFxuICAgICAgKX0ke2Rlc2NyaWJlU3RhYmlsaXR5KHByb3BlcnR5LCBvcHRpb25zKX1gLFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy5zaWduYXR1cmVzKSB7XG4gICAgICBpZiAocHJvcGVydHkuYWJzdHJhY3QpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCdhYnN0cmFjdCcpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5LmNvbnN0KSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnY29uc3QnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eS5pbW11dGFibGUpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCdpbW11dGFibGUnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eS5wcm90ZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCdwcm90ZWN0ZWQnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eS5zdGF0aWMpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCdzdGF0aWMnKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkKG5ldyBPcHRpb25hbFZhbHVlTm9kZSgndHlwZScsIHByb3BlcnR5KSk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIE9wdGlvbmFsVmFsdWVOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25hbFZhbHVlOiBPcHRpb25hbFZhbHVlLFxuICAgIHsgYXNQcm9taXNlIH0gPSB7IGFzUHJvbWlzZTogZmFsc2UgfSxcbiAgKSB7XG4gICAgbGV0IHR5cGUgPSBPcHRpb25hbFZhbHVlLmRlc2NyaWJlKG9wdGlvbmFsVmFsdWUpO1xuICAgIGlmIChhc1Byb21pc2UpIHtcbiAgICAgIHR5cGUgPSBgUHJvbWlzZTwke3R5cGV9PmA7XG4gICAgfVxuICAgIHN1cGVyKGAke2NvbG9ycy51bmRlcmxpbmUobmFtZSl9OiAke3R5cGV9YCk7XG4gIH1cbn1cblxuY2xhc3MgQ2xhc3NOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IENsYXNzVHlwZSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtjb2xvcnMuZ3JheSgnY2xhc3MnKX0gJHtjb2xvcnMuY3lhbih0eXBlLm5hbWUpfSR7ZGVzY3JpYmVTdGFiaWxpdHkoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApfWAsXG4gICAgKTtcblxuICAgIGlmIChvcHRpb25zLmluaGVyaXRhbmNlICYmIHR5cGUuYmFzZSkge1xuICAgICAgdGhpcy5hZGQobmV3IEtleVZhbHVlTm9kZSgnYmFzZScsIHR5cGUuYmFzZS5uYW1lKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaW5oZXJpdGFuY2UgJiYgdHlwZS5pbnRlcmZhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWRkKFxuICAgICAgICBuZXcgS2V5VmFsdWVOb2RlKFxuICAgICAgICAgICdpbnRlcmZhY2VzJyxcbiAgICAgICAgICB0eXBlLmludGVyZmFjZXMubWFwKChpKSA9PiBpLm5hbWUpLmpvaW4oJywnKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWVtYmVycykge1xuICAgICAgY29uc3QgbWVtYmVycyA9IG5ldyBUaXRsZU5vZGUoJ21lbWJlcnMnKTtcbiAgICAgIHRoaXMuYWRkKG1lbWJlcnMpO1xuICAgICAgaWYgKHR5cGUuaW5pdGlhbGl6ZXIpIHtcbiAgICAgICAgbWVtYmVycy5hZGQobmV3IEluaXRpYWxpemVyTm9kZSh0eXBlLmluaXRpYWxpemVyLCBvcHRpb25zKSk7XG4gICAgICB9XG4gICAgICBtZW1iZXJzLmFkZCguLi50eXBlLm93bk1ldGhvZHMubWFwKChtKSA9PiBuZXcgTWV0aG9kTm9kZShtLCBvcHRpb25zKSkpO1xuICAgICAgbWVtYmVycy5hZGQoXG4gICAgICAgIC4uLnR5cGUub3duUHJvcGVydGllcy5tYXAoKHApID0+IG5ldyBQcm9wZXJ0eU5vZGUocCwgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSW50ZXJmYWNlTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0eXBlOiBJbnRlcmZhY2VUeXBlLCBvcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihcbiAgICAgIGAke2NvbG9ycy5ncmF5KCdpbnRlcmZhY2UnKX0gJHtjb2xvcnMuY3lhbih0eXBlLm5hbWUpfSR7ZGVzY3JpYmVTdGFiaWxpdHkoXG4gICAgICAgIHR5cGUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApfWAsXG4gICAgKTtcblxuICAgIGlmIChvcHRpb25zLmluaGVyaXRhbmNlICYmIHR5cGUuaW50ZXJmYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VzID0gbmV3IFRpdGxlTm9kZSgnaW50ZXJmYWNlcycpO1xuICAgICAgdGhpcy5hZGQoaW50ZXJmYWNlcyk7XG4gICAgICBpbnRlcmZhY2VzLmFkZCguLi50eXBlLmludGVyZmFjZXMubWFwKChpKSA9PiBuZXcgVGV4dE5vZGUoaS5uYW1lKSkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IG1lbWJlcnMgPSBuZXcgVGl0bGVOb2RlKCdtZW1iZXJzJyk7XG4gICAgICBtZW1iZXJzLmFkZCguLi50eXBlLm93bk1ldGhvZHMubWFwKChtKSA9PiBuZXcgTWV0aG9kTm9kZShtLCBvcHRpb25zKSkpO1xuICAgICAgbWVtYmVycy5hZGQoXG4gICAgICAgIC4uLnR5cGUub3duUHJvcGVydGllcy5tYXAoKHApID0+IG5ldyBQcm9wZXJ0eU5vZGUocCwgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuYWRkKG1lbWJlcnMpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBFbnVtTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihlbnVtVHlwZTogRW51bVR5cGUsIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucykge1xuICAgIHN1cGVyKFxuICAgICAgYCR7Y29sb3JzLmdyYXkoJ2VudW0nKX0gJHtjb2xvcnMuY3lhbihlbnVtVHlwZS5uYW1lKX0ke2Rlc2NyaWJlU3RhYmlsaXR5KFxuICAgICAgICBlbnVtVHlwZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICl9YCxcbiAgICApO1xuXG4gICAgaWYgKG9wdGlvbnMubWVtYmVycykge1xuICAgICAgZW51bVR5cGUubWVtYmVycy5mb3JFYWNoKChtZW0pID0+IHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEFzY2lpVHJlZShtZW0ubmFtZSArIGRlc2NyaWJlU3RhYmlsaXR5KG1lbSwgb3B0aW9ucykpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZXBlbmRlbmN5Tm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkZXA6IERlcGVuZGVuY3ksIF9vcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihkZXAuYXNzZW1ibHkubmFtZSk7XG4gIH1cbn1cblxuY2xhc3MgVGl0bGVOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY2hpbGRyZW46IEFzY2lpVHJlZVtdID0gW10pIHtcbiAgICBzdXBlcihjb2xvcnMudW5kZXJsaW5lKG5hbWUpLCAuLi5jaGlsZHJlbik7XG4gIH1cbn1cblxuY2xhc3MgS2V5VmFsdWVOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgc3VwZXIoYCR7Y29sb3JzLnVuZGVybGluZShrZXkpfTogJHt2YWx1ZX1gKTtcbiAgfVxufVxuXG5jbGFzcyBUZXh0Tm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7fVxuXG5jbGFzcyBGbGFnTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihmbGFnOiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb2xvcnMuaXRhbGljKGZsYWcpKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZXMgYGJsb2NrYCB3aXRoIGNvbG9ycyBlbmFibGVkL2Rpc2FibGVkIGFuZCByZXZlcnRzIHRvIG9sZCB2YWx1ZSBhZnRlcndhcmRzLlxuICovXG5mdW5jdGlvbiB3aXRoQ29sb3JzKGVuYWJsZWQ6IGJvb2xlYW4sIGJsb2NrOiAoKSA9PiB2b2lkKSB7XG4gIGNvbnN0IG9sZEVuYWJsZWQgPSBjb2xvcnMuZW5hYmxlZDtcbiAgdHJ5IHtcbiAgICBpZiAoZW5hYmxlZCkge1xuICAgICAgY29sb3JzLmVuYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xvcnMuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIGJsb2NrKCk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKG9sZEVuYWJsZWQpIHtcbiAgICAgIGNvbG9ycy5lbmFibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sb3JzLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVTdGFiaWxpdHkoXG4gIHRoaW5nOiBEb2N1bWVudGFibGUsXG4gIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucyxcbikge1xuICBpZiAoIW9wdGlvbnMuc3RhYmlsaXRpZXMgfHwgdGhpbmcuZG9jcy5zdGFiaWxpdHkgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHN3aXRjaCAodGhpbmcuZG9jcy5zdGFiaWxpdHkpIHtcbiAgICBjYXNlIFN0YWJpbGl0eS5TdGFibGU6XG4gICAgICByZXR1cm4gYCAoJHtjb2xvcnMuZ3JlZW4oJ3N0YWJsZScpfSlgO1xuICAgIGNhc2UgU3RhYmlsaXR5LkV4dGVybmFsOlxuICAgICAgcmV0dXJuIGAgKCR7Y29sb3JzLmdyZWVuKCdleHRlcm5hbCcpfSlgO1xuICAgIGNhc2UgU3RhYmlsaXR5LkV4cGVyaW1lbnRhbDpcbiAgICAgIHJldHVybiBgICgke2NvbG9ycy55ZWxsb3coJ2V4cGVyaW1lbnRhbCcpfSlgO1xuICAgIGNhc2UgU3RhYmlsaXR5LkRlcHJlY2F0ZWQ6XG4gICAgICByZXR1cm4gYCAoJHtjb2xvcnMucmVkKCdkZXByZWNhdGVkJyl9KWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZVN0YXRpYyhtZW06IFByb3BlcnR5IHwgTWV0aG9kKSB7XG4gIGxldCBpc1N0YXRpYztcbiAgaWYgKG1lbSBpbnN0YW5jZW9mIFByb3BlcnR5KSB7XG4gICAgaXNTdGF0aWMgPSAhIW1lbS5zdGF0aWM7XG4gIH1cbiAgaWYgKG1lbSBpbnN0YW5jZW9mIE1ldGhvZCkge1xuICAgIGlzU3RhdGljID0gISFtZW0uc3RhdGljO1xuICB9XG5cbiAgcmV0dXJuIGlzU3RhdGljID8gYCR7Y29sb3JzLmdyZXkoJ3N0YXRpYycpfSBgIDogJyc7XG59XG4iXX0=
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBQ3ZDLGlFQUFpRTtBQUNqRSwrQkFBZ0M7QUFDaEMsaURBQTBDO0FBUzFDLHFDQUFrQztBQUNsQyxxREFBaUQ7QUFFakQseUNBQXNDO0FBdUR0Qzs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHlCQUFTO0lBQzNDLFlBQW1CLE9BQW1CLEVBQUUsVUFBaUMsRUFBRTtRQUN6RSxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNuQixPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUM1QixPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUMzQixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN2QixPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUMxQixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUN0QjtRQUVELE1BQU0sZUFBZSxHQUNuQixPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3ZELFVBQVUsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQy9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLEdBQUcsQ0FDWixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDL0QsQ0FBQztnQkFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFVB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QUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhYmlsaXR5IH0gZnJvbSAnQGpzaWkvc3BlYyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuaW1wb3J0IGNoYWxrID0gcmVxdWlyZSgnY2hhbGsnKTtcbmltcG9ydCB7IEFzY2lpVHJlZSB9IGZyb20gJ29vLWFzY2lpLXRyZWUnO1xuXG5pbXBvcnQgeyBBc3NlbWJseSB9IGZyb20gJy4vYXNzZW1ibHknO1xuaW1wb3J0IHsgQ2xhc3NUeXBlIH0gZnJvbSAnLi9jbGFzcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSAnLi9kZXBlbmRlbmN5JztcbmltcG9ydCB7IERvY3VtZW50YWJsZSB9IGZyb20gJy4vZG9jcyc7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gJy4vZW51bSc7XG5pbXBvcnQgeyBJbml0aWFsaXplciB9IGZyb20gJy4vaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHsgSW50ZXJmYWNlVHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IE1ldGhvZCB9IGZyb20gJy4vbWV0aG9kJztcbmltcG9ydCB7IE9wdGlvbmFsVmFsdWUgfSBmcm9tICcuL29wdGlvbmFsLXZhbHVlJztcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4vcGFyYW1ldGVyJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgeyBTdWJtb2R1bGUgfSBmcm9tICcuL3N1Ym1vZHVsZSc7XG5pbXBvcnQgeyBUeXBlU3lzdGVtIH0gZnJvbSAnLi90eXBlLXN5c3RlbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVN5c3RlbVRyZWVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNob3cgYWxsIGVudGl0eSB0eXBlcyAoc3VwZXJzZWRlcyBvdGhlciBvcHRpb25zKVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2hvd0FsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgdHlwZSBtZW1iZXJzIChtZXRob2RzLCBwcm9wZXJ0aWVzKVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWVtYmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgZGVwZW5kZW5jaWVzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IGluaGVyaXRhbmNlIGluZm9ybWF0aW9uIChiYXNlIGNsYXNzZXMsIGludGVyZmFjZXMpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0YW5jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3cgdHlwZXNcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdyBtZXRob2Qgc2lnbmF0dXJlcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNpZ25hdHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPdXRwdXQgd2l0aCBBTlNJIGNvbG9yc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBjb2xvcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG93IHN0YWJpbGl0aWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzdGFiaWxpdGllcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmlzdWFsaXplcyBhIGBUeXBlU3lzdGVtYCBhcyBhbiBBU0NJSSB0cmVlLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVN5c3RlbVRyZWUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZXN5czogVHlwZVN5c3RlbSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKG9wdGlvbnMuc2hvd0FsbCkge1xuICAgICAgb3B0aW9ucy5kZXBlbmRlbmNpZXMgPSB0cnVlO1xuICAgICAgb3B0aW9ucy5pbmhlcml0YW5jZSA9IHRydWU7XG4gICAgICBvcHRpb25zLm1lbWJlcnMgPSB0cnVlO1xuICAgICAgb3B0aW9ucy5zaWduYXR1cmVzID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFVzZUNvbG9ycyA9XG4gICAgICBvcHRpb25zLmNvbG9ycyA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMuY29sb3JzO1xuICAgIHdpdGhDb2xvcnMoc2hvdWxkVXNlQ29sb3JzLCAoKSA9PiB7XG4gICAgICBpZiAodHlwZXN5cy5hc3NlbWJsaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgYXNzZW1ibGllcyA9IG5ldyBUaXRsZU5vZGUoJ2Fzc2VtYmxpZXMnKTtcbiAgICAgICAgYXNzZW1ibGllcy5hZGQoXG4gICAgICAgICAgLi4udHlwZXN5cy5hc3NlbWJsaWVzLm1hcCgoYSkgPT4gbmV3IEFzc2VtYmx5Tm9kZShhLCBvcHRpb25zKSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWRkKGFzc2VtYmxpZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFzc2VtYmx5Tm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihhc3NlbWJseTogQXNzZW1ibHksIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucykge1xuICAgIHN1cGVyKGNoYWxrLmdyZWVuKGFzc2VtYmx5Lm5hbWUpKTtcblxuICAgIGlmIChvcHRpb25zLmRlcGVuZGVuY2llcyAmJiBhc3NlbWJseS5kZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVwcyA9IG5ldyBUaXRsZU5vZGUoJ2RlcGVuZGVuY2llcycpO1xuICAgICAgdGhpcy5hZGQoZGVwcyk7XG4gICAgICBkZXBzLmFkZChcbiAgICAgICAgLi4uYXNzZW1ibHkuZGVwZW5kZW5jaWVzLm1hcCgoZCkgPT4gbmV3IERlcGVuZGVuY3lOb2RlKGQsIG9wdGlvbnMpKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VibW9kdWxlcyA9IGFzc2VtYmx5LnN1Ym1vZHVsZXM7XG4gICAgaWYgKHN1Ym1vZHVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBuZXcgVGl0bGVOb2RlKCdzdWJtb2R1bGVzJyk7XG4gICAgICB0aGlzLmFkZCh0aXRsZSk7XG4gICAgICB0aXRsZS5hZGQoLi4uc3VibW9kdWxlcy5tYXAoKHMpID0+IG5ldyBTdWJtb2R1bGVOb2RlKHMsIG9wdGlvbnMpKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHlwZXMpIHtcbiAgICAgIGNvbnN0IHR5cGVzID0gbmV3IFRpdGxlTm9kZSgndHlwZXMnKTtcbiAgICAgIHRoaXMuYWRkKHR5cGVzKTtcbiAgICAgIHR5cGVzLmFkZCguLi5hc3NlbWJseS5jbGFzc2VzLm1hcCgoYykgPT4gbmV3IENsYXNzTm9kZShjLCBvcHRpb25zKSkpO1xuICAgICAgdHlwZXMuYWRkKFxuICAgICAgICAuLi5hc3NlbWJseS5pbnRlcmZhY2VzLm1hcCgoYykgPT4gbmV3IEludGVyZmFjZU5vZGUoYywgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICAgIHR5cGVzLmFkZCguLi5hc3NlbWJseS5lbnVtcy5tYXAoKGMpID0+IG5ldyBFbnVtTm9kZShjLCBvcHRpb25zKSkpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBTdWJtb2R1bGVOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHN1Ym1vZHVsZTogU3VibW9kdWxlLCBvcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihjaGFsay5ncmVlbihzdWJtb2R1bGUubmFtZSkpO1xuXG4gICAgY29uc3Qgc3VibW9kdWxlcyA9IHN1Ym1vZHVsZS5zdWJtb2R1bGVzO1xuICAgIGlmIChzdWJtb2R1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gbmV3IFRpdGxlTm9kZSgnc3VibW9kdWxlcycpO1xuICAgICAgdGhpcy5hZGQodGl0bGUpO1xuICAgICAgdGl0bGUuYWRkKC4uLnN1Ym1vZHVsZXMubWFwKChzKSA9PiBuZXcgU3VibW9kdWxlTm9kZShzLCBvcHRpb25zKSkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnR5cGVzKSB7XG4gICAgICBjb25zdCB0eXBlcyA9IG5ldyBUaXRsZU5vZGUoJ3R5cGVzJyk7XG4gICAgICB0aGlzLmFkZCh0eXBlcyk7XG4gICAgICB0eXBlcy5hZGQoLi4uc3VibW9kdWxlLmNsYXNzZXMubWFwKChjKSA9PiBuZXcgQ2xhc3NOb2RlKGMsIG9wdGlvbnMpKSk7XG4gICAgICB0eXBlcy5hZGQoXG4gICAgICAgIC4uLnN1Ym1vZHVsZS5pbnRlcmZhY2VzLm1hcCgoaSkgPT4gbmV3IEludGVyZmFjZU5vZGUoaSwgb3B0aW9ucykpLFxuICAgICAgKTtcbiAgICAgIHR5cGVzLmFkZCguLi5zdWJtb2R1bGUuZW51bXMubWFwKChlKSA9PiBuZXcgRW51bU5vZGUoZSwgb3B0aW9ucykpKTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXRob2Q6IE1ldGhvZCwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgY29uc3QgYXJncyA9IG1ldGhvZC5wYXJhbWV0ZXJzLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKCcsJyk7XG4gICAgc3VwZXIoXG4gICAgICBgJHttYXliZVN0YXRpYyhtZXRob2QpfSR7bWV0aG9kLm5hbWV9KCR7YXJnc30pICR7Y2hhbGsuZ3JheShcbiAgICAgICAgJ21ldGhvZCcsXG4gICAgICApfSR7ZGVzY3JpYmVTdGFiaWxpdHkobWV0aG9kLCBvcHRpb25zKX1gLFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy5zaWduYXR1cmVzKSB7XG4gICAgICBpZiAobWV0aG9kLmFic3RyYWN0KSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnYWJzdHJhY3QnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2QucHJvdGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgncHJvdGVjdGVkJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kLnN0YXRpYykge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3N0YXRpYycpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGhvZC52YXJpYWRpYykge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3ZhcmlhZGljJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0aG9kLnBhcmFtZXRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVGl0bGVOb2RlKCdwYXJhbWV0ZXJzJyk7XG4gICAgICAgIHRoaXMuYWRkKHBhcmFtcyk7XG4gICAgICAgIHBhcmFtcy5hZGQoXG4gICAgICAgICAgLi4ubWV0aG9kLnBhcmFtZXRlcnMubWFwKChwKSA9PiBuZXcgUGFyYW1ldGVyTm9kZShwLCBvcHRpb25zKSksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkKFxuICAgICAgICBuZXcgT3B0aW9uYWxWYWx1ZU5vZGUoJ3JldHVybnMnLCBtZXRob2QucmV0dXJucywge1xuICAgICAgICAgIGFzUHJvbWlzZTogbWV0aG9kLmFzeW5jLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEluaXRpYWxpemVyTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0aWFsaXplcjogSW5pdGlhbGl6ZXIsIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucykge1xuICAgIGNvbnN0IGFyZ3MgPSBpbml0aWFsaXplci5wYXJhbWV0ZXJzLm1hcCgocCkgPT4gcC5uYW1lKS5qb2luKCcsJyk7XG4gICAgc3VwZXIoXG4gICAgICBgJHtpbml0aWFsaXplci5uYW1lfSgke2FyZ3N9KSAke2NoYWxrLmdyYXkoXG4gICAgICAgICdpbml0aWFsaXplcicsXG4gICAgICApfSR7ZGVzY3JpYmVTdGFiaWxpdHkoaW5pdGlhbGl6ZXIsIG9wdGlvbnMpfWAsXG4gICAgKTtcblxuICAgIGlmIChvcHRpb25zLnNpZ25hdHVyZXMpIHtcbiAgICAgIGlmIChpbml0aWFsaXplci5wcm90ZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEZsYWdOb2RlKCdwcm90ZWN0ZWQnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbml0aWFsaXplci52YXJpYWRpYykge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3ZhcmlhZGljJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5pdGlhbGl6ZXIucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBUaXRsZU5vZGUoJ3BhcmFtZXRlcnMnKTtcbiAgICAgICAgdGhpcy5hZGQocGFyYW1zKTtcbiAgICAgICAgcGFyYW1zLmFkZChcbiAgICAgICAgICAuLi5pbml0aWFsaXplci5wYXJhbWV0ZXJzLm1hcCgocCkgPT4gbmV3IFBhcmFtZXRlck5vZGUocCwgb3B0aW9ucykpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtOiBQYXJhbWV0ZXIsIF9vcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihwYXJhbS5uYW1lKTtcblxuICAgIHRoaXMuYWRkKG5ldyBPcHRpb25hbFZhbHVlTm9kZSgndHlwZScsIHBhcmFtKSk7XG4gICAgaWYgKHBhcmFtLnZhcmlhZGljKSB7XG4gICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ3ZhcmlhZGljJykpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBQcm9wZXJ0eU5vZGUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5LCBvcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihcbiAgICAgIGAke21heWJlU3RhdGljKHByb3BlcnR5KX0ke3Byb3BlcnR5Lm5hbWV9ICR7Y2hhbGsuZ3JheShcbiAgICAgICAgJ3Byb3BlcnR5JyxcbiAgICAgICl9JHtkZXNjcmliZVN0YWJpbGl0eShwcm9wZXJ0eSwgb3B0aW9ucyl9YCxcbiAgICApO1xuXG4gICAgaWYgKG9wdGlvbnMuc2lnbmF0dXJlcykge1xuICAgICAgaWYgKHByb3BlcnR5LmFic3RyYWN0KSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnYWJzdHJhY3QnKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wZXJ0eS5jb25zdCkge1xuICAgICAgICB0aGlzLmFkZChuZXcgRmxhZ05vZGUoJ2NvbnN0JykpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHkuaW1tdXRhYmxlKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnaW1tdXRhYmxlJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHkucHJvdGVjdGVkKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgncHJvdGVjdGVkJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHkuc3RhdGljKSB7XG4gICAgICAgIHRoaXMuYWRkKG5ldyBGbGFnTm9kZSgnc3RhdGljJykpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFkZChuZXcgT3B0aW9uYWxWYWx1ZU5vZGUoJ3R5cGUnLCBwcm9wZXJ0eSkpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBPcHRpb25hbFZhbHVlTm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uYWxWYWx1ZTogT3B0aW9uYWxWYWx1ZSxcbiAgICB7IGFzUHJvbWlzZSB9ID0geyBhc1Byb21pc2U6IGZhbHNlIH0sXG4gICkge1xuICAgIGxldCB0eXBlID0gT3B0aW9uYWxWYWx1ZS5kZXNjcmliZShvcHRpb25hbFZhbHVlKTtcbiAgICBpZiAoYXNQcm9taXNlKSB7XG4gICAgICB0eXBlID0gYFByb21pc2U8JHt0eXBlfT5gO1xuICAgIH1cbiAgICBzdXBlcihgJHtjaGFsay51bmRlcmxpbmUobmFtZSl9OiAke3R5cGV9YCk7XG4gIH1cbn1cblxuY2xhc3MgQ2xhc3NOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IENsYXNzVHlwZSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtjaGFsay5ncmF5KCdjbGFzcycpfSAke2NoYWxrLmN5YW4odHlwZS5uYW1lKX0ke2Rlc2NyaWJlU3RhYmlsaXR5KFxuICAgICAgICB0eXBlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKX1gLFxuICAgICk7XG5cbiAgICBpZiAob3B0aW9ucy5pbmhlcml0YW5jZSAmJiB0eXBlLmJhc2UpIHtcbiAgICAgIHRoaXMuYWRkKG5ldyBLZXlWYWx1ZU5vZGUoJ2Jhc2UnLCB0eXBlLmJhc2UubmFtZSkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmluaGVyaXRhbmNlICYmIHR5cGUuaW50ZXJmYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFkZChcbiAgICAgICAgbmV3IEtleVZhbHVlTm9kZShcbiAgICAgICAgICAnaW50ZXJmYWNlcycsXG4gICAgICAgICAgdHlwZS5pbnRlcmZhY2VzLm1hcCgoaSkgPT4gaS5uYW1lKS5qb2luKCcsJyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1lbWJlcnMpIHtcbiAgICAgIGNvbnN0IG1lbWJlcnMgPSBuZXcgVGl0bGVOb2RlKCdtZW1iZXJzJyk7XG4gICAgICB0aGlzLmFkZChtZW1iZXJzKTtcbiAgICAgIGlmICh0eXBlLmluaXRpYWxpemVyKSB7XG4gICAgICAgIG1lbWJlcnMuYWRkKG5ldyBJbml0aWFsaXplck5vZGUodHlwZS5pbml0aWFsaXplciwgb3B0aW9ucykpO1xuICAgICAgfVxuICAgICAgbWVtYmVycy5hZGQoLi4udHlwZS5vd25NZXRob2RzLm1hcCgobSkgPT4gbmV3IE1ldGhvZE5vZGUobSwgb3B0aW9ucykpKTtcbiAgICAgIG1lbWJlcnMuYWRkKFxuICAgICAgICAuLi50eXBlLm93blByb3BlcnRpZXMubWFwKChwKSA9PiBuZXcgUHJvcGVydHlOb2RlKHAsIG9wdGlvbnMpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEludGVyZmFjZU5vZGUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IodHlwZTogSW50ZXJmYWNlVHlwZSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtjaGFsay5ncmF5KCdpbnRlcmZhY2UnKX0gJHtjaGFsay5jeWFuKHR5cGUubmFtZSl9JHtkZXNjcmliZVN0YWJpbGl0eShcbiAgICAgICAgdHlwZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICl9YCxcbiAgICApO1xuXG4gICAgaWYgKG9wdGlvbnMuaW5oZXJpdGFuY2UgJiYgdHlwZS5pbnRlcmZhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGludGVyZmFjZXMgPSBuZXcgVGl0bGVOb2RlKCdpbnRlcmZhY2VzJyk7XG4gICAgICB0aGlzLmFkZChpbnRlcmZhY2VzKTtcbiAgICAgIGludGVyZmFjZXMuYWRkKC4uLnR5cGUuaW50ZXJmYWNlcy5tYXAoKGkpID0+IG5ldyBUZXh0Tm9kZShpLm5hbWUpKSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWVtYmVycykge1xuICAgICAgY29uc3QgbWVtYmVycyA9IG5ldyBUaXRsZU5vZGUoJ21lbWJlcnMnKTtcbiAgICAgIG1lbWJlcnMuYWRkKC4uLnR5cGUub3duTWV0aG9kcy5tYXAoKG0pID0+IG5ldyBNZXRob2ROb2RlKG0sIG9wdGlvbnMpKSk7XG4gICAgICBtZW1iZXJzLmFkZChcbiAgICAgICAgLi4udHlwZS5vd25Qcm9wZXJ0aWVzLm1hcCgocCkgPT4gbmV3IFByb3BlcnR5Tm9kZShwLCBvcHRpb25zKSksXG4gICAgICApO1xuICAgICAgdGhpcy5hZGQobWVtYmVycyk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEVudW1Ob2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGVudW1UeXBlOiBFbnVtVHlwZSwgb3B0aW9uczogVHlwZVN5c3RlbVRyZWVPcHRpb25zKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtjaGFsay5ncmF5KCdlbnVtJyl9ICR7Y2hhbGsuY3lhbihlbnVtVHlwZS5uYW1lKX0ke2Rlc2NyaWJlU3RhYmlsaXR5KFxuICAgICAgICBlbnVtVHlwZSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICl9YCxcbiAgICApO1xuXG4gICAgaWYgKG9wdGlvbnMubWVtYmVycykge1xuICAgICAgZW51bVR5cGUubWVtYmVycy5mb3JFYWNoKChtZW0pID0+IHtcbiAgICAgICAgdGhpcy5hZGQobmV3IEFzY2lpVHJlZShtZW0ubmFtZSArIGRlc2NyaWJlU3RhYmlsaXR5KG1lbSwgb3B0aW9ucykpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZXBlbmRlbmN5Tm9kZSBleHRlbmRzIEFzY2lpVHJlZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkZXA6IERlcGVuZGVuY3ksIF9vcHRpb25zOiBUeXBlU3lzdGVtVHJlZU9wdGlvbnMpIHtcbiAgICBzdXBlcihkZXAuYXNzZW1ibHkubmFtZSk7XG4gIH1cbn1cblxuY2xhc3MgVGl0bGVOb2RlIGV4dGVuZHMgQXNjaWlUcmVlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY2hpbGRyZW46IEFzY2lpVHJlZVtdID0gW10pIHtcbiAgICBzdXBlcihjaGFsay51bmRlcmxpbmUobmFtZSksIC4uLmNoaWxkcmVuKTtcbiAgfVxufVxuXG5jbGFzcyBLZXlWYWx1ZU5vZGUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3Ioa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBzdXBlcihgJHtjaGFsay51bmRlcmxpbmUoa2V5KX06ICR7dmFsdWV9YCk7XG4gIH1cbn1cblxuY2xhc3MgVGV4dE5vZGUgZXh0ZW5kcyBBc2NpaVRyZWUge31cblxuY2xhc3MgRmxhZ05vZGUgZXh0ZW5kcyBBc2NpaVRyZWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoZmxhZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoY2hhbGsuaXRhbGljKGZsYWcpKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZXMgYGJsb2NrYCB3aXRoIGNvbG9ycyBlbmFibGVkL2Rpc2FibGVkIGFuZCByZXZlcnRzIHRvIG9sZCB2YWx1ZSBhZnRlcndhcmRzLlxuICovXG5mdW5jdGlvbiB3aXRoQ29sb3JzKGVuYWJsZWQ6IGJvb2xlYW4sIGJsb2NrOiAoKSA9PiB2b2lkKSB7XG4gIGNvbnN0IG9sZExldmVsID0gY2hhbGsubGV2ZWw7XG4gIHRyeSB7XG4gICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICBjaGFsay5sZXZlbCA9IDA7IC8vIE5vIGNvbG9ycyBhdCBhbGxcbiAgICB9XG5cbiAgICBibG9jaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGNoYWxrLmxldmVsID0gb2xkTGV2ZWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVTdGFiaWxpdHkoXG4gIHRoaW5nOiBEb2N1bWVudGFibGUsXG4gIG9wdGlvbnM6IFR5cGVTeXN0ZW1UcmVlT3B0aW9ucyxcbikge1xuICBpZiAoIW9wdGlvbnMuc3RhYmlsaXRpZXMgfHwgdGhpbmcuZG9jcy5zdGFiaWxpdHkgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHN3aXRjaCAodGhpbmcuZG9jcy5zdGFiaWxpdHkpIHtcbiAgICBjYXNlIFN0YWJpbGl0eS5TdGFibGU6XG4gICAgICByZXR1cm4gYCAoJHtjaGFsay5ncmVlbignc3RhYmxlJyl9KWA7XG4gICAgY2FzZSBTdGFiaWxpdHkuRXh0ZXJuYWw6XG4gICAgICByZXR1cm4gYCAoJHtjaGFsay5ncmVlbignZXh0ZXJuYWwnKX0pYDtcbiAgICBjYXNlIFN0YWJpbGl0eS5FeHBlcmltZW50YWw6XG4gICAgICByZXR1cm4gYCAoJHtjaGFsay55ZWxsb3coJ2V4cGVyaW1lbnRhbCcpfSlgO1xuICAgIGNhc2UgU3RhYmlsaXR5LkRlcHJlY2F0ZWQ6XG4gICAgICByZXR1cm4gYCAoJHtjaGFsay5yZWQoJ2RlcHJlY2F0ZWQnKX0pYDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlU3RhdGljKG1lbTogUHJvcGVydHkgfCBNZXRob2QpIHtcbiAgbGV0IGlzU3RhdGljO1xuICBpZiAobWVtIGluc3RhbmNlb2YgUHJvcGVydHkpIHtcbiAgICBpc1N0YXRpYyA9ICEhbWVtLnN0YXRpYztcbiAgfVxuICBpZiAobWVtIGluc3RhbmNlb2YgTWV0aG9kKSB7XG4gICAgaXNTdGF0aWMgPSAhIW1lbS5zdGF0aWM7XG4gIH1cblxuICByZXR1cm4gaXNTdGF0aWMgPyBgJHtjaGFsay5ncmV5KCdzdGF0aWMnKX0gYCA6ICcnO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsii-reflect",
3
- "version": "1.52.1",
3
+ "version": "1.53.0",
4
4
  "description": "strongly-typed reflection library and tools for jsii",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
@@ -34,22 +34,22 @@
34
34
  "package": "package-js"
35
35
  },
36
36
  "dependencies": {
37
- "@jsii/check-node": "1.52.1",
38
- "@jsii/spec": "^1.52.1",
39
- "colors": "1.4.0",
37
+ "@jsii/check-node": "1.53.0",
38
+ "@jsii/spec": "^1.53.0",
39
+ "chalk": "^4",
40
40
  "fs-extra": "^9.1.0",
41
- "oo-ascii-tree": "^1.52.1",
41
+ "oo-ascii-tree": "^1.53.0",
42
42
  "yargs": "^16.2.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@scope/jsii-calc-lib": "^1.52.1",
45
+ "@scope/jsii-calc-lib": "^1.53.0",
46
46
  "@types/fs-extra": "^9.0.13",
47
- "@types/jest": "^27.0.3",
48
- "@types/node": "^12.20.39",
49
- "eslint": "^8.5.0",
50
- "jest": "^27.4.5",
51
- "jsii": "^1.52.1",
52
- "jsii-build-tools": "^1.52.1",
47
+ "@types/jest": "^27.4.0",
48
+ "@types/node": "^12.20.43",
49
+ "eslint": "^8.8.0",
50
+ "jest": "^27.4.7",
51
+ "jsii": "^1.53.0",
52
+ "jsii-build-tools": "^1.53.0",
53
53
  "jsii-calc": "^3.20.120",
54
54
  "prettier": "^2.5.1",
55
55
  "typescript": "~3.9.10"
@@ -718,6 +718,14 @@ exports[`jsii-tree --all 1`] = `
718
718
  │ │ │ └── returns: void
719
719
  │ │ └─┬ methodTwo() method (stable)
720
720
  │ │ └── returns: void
721
+ │ ├─┬ class BaseClass (stable)
722
+ │ │ └─┬ members
723
+ │ │ ├── <initializer>() initializer (stable)
724
+ │ │ ├─┬ method() method (stable)
725
+ │ │ │ └── returns: number
726
+ │ │ └─┬ property property (stable)
727
+ │ │ ├── immutable
728
+ │ │ └── type: string
721
729
  │ ├─┬ class BaseJsii976 (stable)
722
730
  │ │ └─┬ members
723
731
  │ │ └── <initializer>() initializer (stable)
@@ -1252,6 +1260,10 @@ exports[`jsii-tree --all 1`] = `
1252
1260
  │ │ │ └── type: string
1253
1261
  │ │ └─┬ mutableProperty property (stable)
1254
1262
  │ │ └── type: Optional<number>
1263
+ │ ├─┬ class FullCombo (stable)
1264
+ │ │ ├── base: BaseClass
1265
+ │ │ ├── interfaces: IIndirectlyImplemented
1266
+ │ │ └── members
1255
1267
  │ ├─┬ class GiveMeStructs (stable)
1256
1268
  │ │ └─┬ members
1257
1269
  │ │ ├── <initializer>() initializer (stable)
@@ -2612,6 +2624,15 @@ exports[`jsii-tree --all 1`] = `
2612
2624
  │ │ │ ├── IRandomNumberGenerator
2613
2625
  │ │ │ └── IFriendly
2614
2626
  │ │ └── members
2627
+ │ ├─┬ interface IIndirectlyImplemented (stable)
2628
+ │ │ └─┬ members
2629
+ │ │ ├─┬ method() method (stable)
2630
+ │ │ │ ├── abstract
2631
+ │ │ │ └── returns: number
2632
+ │ │ └─┬ property property (stable)
2633
+ │ │ ├── abstract
2634
+ │ │ ├── immutable
2635
+ │ │ └── type: string
2615
2636
  │ ├─┬ interface IInterfaceImplementedByAbstractClass (stable)
2616
2637
  │ │ └─┬ members
2617
2638
  │ │ └─┬ propFromInterface property (stable)
@@ -3416,6 +3437,7 @@ exports[`jsii-tree --inheritance 1`] = `
3416
3437
  │ │ └── interfaces: IAnonymousImplementationProvider
3417
3438
  │ ├── class AsyncVirtualMethods
3418
3439
  │ ├── class AugmentableClass
3440
+ │ ├── class BaseClass
3419
3441
  │ ├── class BaseJsii976
3420
3442
  │ ├─┬ class Bell
3421
3443
  │ │ └── interfaces: IBell
@@ -3463,6 +3485,9 @@ exports[`jsii-tree --inheritance 1`] = `
3463
3485
  │ ├── class ExperimentalClass
3464
3486
  │ ├── class ExportedBaseClass
3465
3487
  │ ├── class ExternalClass
3488
+ │ ├─┬ class FullCombo
3489
+ │ │ ├── base: BaseClass
3490
+ │ │ └── interfaces: IIndirectlyImplemented
3466
3491
  │ ├── class GiveMeStructs
3467
3492
  │ ├── class GreetingAugmenter
3468
3493
  │ ├── class ImplementInternalInterface
@@ -3607,6 +3632,7 @@ exports[`jsii-tree --inheritance 1`] = `
3607
3632
  │ │ └─┬ interfaces
3608
3633
  │ │ ├── IRandomNumberGenerator
3609
3634
  │ │ └── IFriendly
3635
+ │ ├── interface IIndirectlyImplemented
3610
3636
  │ ├── interface IInterfaceImplementedByAbstractClass
3611
3637
  │ ├─┬ interface IInterfaceThatShouldNotBeADataType
3612
3638
  │ │ └─┬ interfaces
@@ -4098,6 +4124,11 @@ exports[`jsii-tree --members 1`] = `
4098
4124
  │ │ ├── <initializer>() initializer
4099
4125
  │ │ ├── methodOne() method
4100
4126
  │ │ └── methodTwo() method
4127
+ │ ├─┬ class BaseClass
4128
+ │ │ └─┬ members
4129
+ │ │ ├── <initializer>() initializer
4130
+ │ │ ├── method() method
4131
+ │ │ └── property property
4101
4132
  │ ├─┬ class BaseJsii976
4102
4133
  │ │ └─┬ members
4103
4134
  │ │ └── <initializer>() initializer
@@ -4312,6 +4343,8 @@ exports[`jsii-tree --members 1`] = `
4312
4343
  │ │ ├── method() method
4313
4344
  │ │ ├── readonlyProperty property
4314
4345
  │ │ └── mutableProperty property
4346
+ │ ├─┬ class FullCombo
4347
+ │ │ └── members
4315
4348
  │ ├─┬ class GiveMeStructs
4316
4349
  │ │ └─┬ members
4317
4350
  │ │ ├── <initializer>() initializer
@@ -4908,6 +4941,10 @@ exports[`jsii-tree --members 1`] = `
4908
4941
  │ │ └── goodbye() method
4909
4942
  │ ├─┬ interface IFriendlyRandomGenerator
4910
4943
  │ │ └── members
4944
+ │ ├─┬ interface IIndirectlyImplemented
4945
+ │ │ └─┬ members
4946
+ │ │ ├── method() method
4947
+ │ │ └── property property
4911
4948
  │ ├─┬ interface IInterfaceImplementedByAbstractClass
4912
4949
  │ │ └─┬ members
4913
4950
  │ │ └── propFromInterface property
@@ -5397,6 +5434,7 @@ exports[`jsii-tree --types 1`] = `
5397
5434
  │ ├── class AnonymousImplementationProvider
5398
5435
  │ ├── class AsyncVirtualMethods
5399
5436
  │ ├── class AugmentableClass
5437
+ │ ├── class BaseClass
5400
5438
  │ ├── class BaseJsii976
5401
5439
  │ ├── class Bell
5402
5440
  │ ├── class BinaryOperation
@@ -5435,6 +5473,7 @@ exports[`jsii-tree --types 1`] = `
5435
5473
  │ ├── class ExperimentalClass
5436
5474
  │ ├── class ExportedBaseClass
5437
5475
  │ ├── class ExternalClass
5476
+ │ ├── class FullCombo
5438
5477
  │ ├── class GiveMeStructs
5439
5478
  │ ├── class GreetingAugmenter
5440
5479
  │ ├── class ImplementInternalInterface
@@ -5543,6 +5582,7 @@ exports[`jsii-tree --types 1`] = `
5543
5582
  │ ├── interface IExternalInterface
5544
5583
  │ ├── interface IFriendlier
5545
5584
  │ ├── interface IFriendlyRandomGenerator
5585
+ │ ├── interface IIndirectlyImplemented
5546
5586
  │ ├── interface IInterfaceImplementedByAbstractClass
5547
5587
  │ ├── interface IInterfaceThatShouldNotBeADataType
5548
5588
  │ ├── interface IInterfaceWithInternal
@@ -868,6 +868,14 @@ exports[`showAll 1`] = `
868
868
  │ │ │ └── returns: void
869
869
  │ │ └─┬ methodTwo() method
870
870
  │ │ └── returns: void
871
+ │ ├─┬ class BaseClass
872
+ │ │ └─┬ members
873
+ │ │ ├── <initializer>() initializer
874
+ │ │ ├─┬ method() method
875
+ │ │ │ └── returns: number
876
+ │ │ └─┬ property property
877
+ │ │ ├── immutable
878
+ │ │ └── type: string
871
879
  │ ├─┬ class BaseJsii976
872
880
  │ │ └─┬ members
873
881
  │ │ └── <initializer>() initializer
@@ -1402,6 +1410,10 @@ exports[`showAll 1`] = `
1402
1410
  │ │ │ └── type: string
1403
1411
  │ │ └─┬ mutableProperty property
1404
1412
  │ │ └── type: Optional<number>
1413
+ │ ├─┬ class FullCombo
1414
+ │ │ ├── base: BaseClass
1415
+ │ │ ├── interfaces: IIndirectlyImplemented
1416
+ │ │ └── members
1405
1417
  │ ├─┬ class GiveMeStructs
1406
1418
  │ │ └─┬ members
1407
1419
  │ │ ├── <initializer>() initializer
@@ -2762,6 +2774,15 @@ exports[`showAll 1`] = `
2762
2774
  │ │ │ ├── IRandomNumberGenerator
2763
2775
  │ │ │ └── IFriendly
2764
2776
  │ │ └── members
2777
+ │ ├─┬ interface IIndirectlyImplemented
2778
+ │ │ └─┬ members
2779
+ │ │ ├─┬ method() method
2780
+ │ │ │ ├── abstract
2781
+ │ │ │ └── returns: number
2782
+ │ │ └─┬ property property
2783
+ │ │ ├── abstract
2784
+ │ │ ├── immutable
2785
+ │ │ └── type: string
2765
2786
  │ ├─┬ interface IInterfaceImplementedByAbstractClass
2766
2787
  │ │ └─┬ members
2767
2788
  │ │ └─┬ propFromInterface property
@@ -3579,6 +3600,7 @@ exports[`types 1`] = `
3579
3600
  │ ├── class AnonymousImplementationProvider
3580
3601
  │ ├── class AsyncVirtualMethods
3581
3602
  │ ├── class AugmentableClass
3603
+ │ ├── class BaseClass
3582
3604
  │ ├── class BaseJsii976
3583
3605
  │ ├── class Bell
3584
3606
  │ ├── class BinaryOperation
@@ -3617,6 +3639,7 @@ exports[`types 1`] = `
3617
3639
  │ ├── class ExperimentalClass
3618
3640
  │ ├── class ExportedBaseClass
3619
3641
  │ ├── class ExternalClass
3642
+ │ ├── class FullCombo
3620
3643
  │ ├── class GiveMeStructs
3621
3644
  │ ├── class GreetingAugmenter
3622
3645
  │ ├── class ImplementInternalInterface
@@ -3725,6 +3748,7 @@ exports[`types 1`] = `
3725
3748
  │ ├── interface IExternalInterface
3726
3749
  │ ├── interface IFriendlier
3727
3750
  │ ├── interface IFriendlyRandomGenerator
3751
+ │ ├── interface IIndirectlyImplemented
3728
3752
  │ ├── interface IInterfaceImplementedByAbstractClass
3729
3753
  │ ├── interface IInterfaceThatShouldNotBeADataType
3730
3754
  │ ├── interface IInterfaceWithInternal
@@ -33,6 +33,7 @@ Array [
33
33
  "jsii-calc.AnonymousImplementationProvider",
34
34
  "jsii-calc.AsyncVirtualMethods",
35
35
  "jsii-calc.AugmentableClass",
36
+ "jsii-calc.BaseClass",
36
37
  "jsii-calc.BaseJsii976",
37
38
  "jsii-calc.Bell",
38
39
  "jsii-calc.BinaryOperation",
@@ -73,6 +74,7 @@ Array [
73
74
  "jsii-calc.ExperimentalClass",
74
75
  "jsii-calc.ExportedBaseClass",
75
76
  "jsii-calc.ExternalClass",
77
+ "jsii-calc.FullCombo",
76
78
  "jsii-calc.GiveMeStructs",
77
79
  "jsii-calc.GreetingAugmenter",
78
80
  "jsii-calc.ImplementInternalInterface",
@@ -15,7 +15,7 @@ async function jsiiTree(...args) {
15
15
  process.execPath,
16
16
  ...process.execArgv,
17
17
  path.join(__dirname, '..', 'bin', 'jsii-tree'),
18
- args.join(' '),
18
+ ...args,
19
19
  '--no-colors',
20
20
  path.dirname(require.resolve('jsii-calc/package.json')),
21
21
  ].join(' ');
@@ -25,4 +25,4 @@ async function jsiiTree(...args) {
25
25
  }
26
26
  return stdout;
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS10cmVlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXRyZWUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE4QztBQUM5Qyw2QkFBNkI7QUFDN0IsK0JBQWlDO0FBRWpDLE1BQU0sSUFBSSxHQUFHLGdCQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFeEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFMUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFNUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxDQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFaEUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUNsQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFL0QsS0FBSyxVQUFVLFFBQVEsQ0FBQyxHQUFHLElBQWM7SUFDdkMsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLENBQUMsUUFBUTtRQUNoQixHQUFHLE9BQU8sQ0FBQyxRQUFRO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ2QsYUFBYTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQ3hELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRVosTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxJQUFJLE1BQU0sRUFBRTtRQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdkI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hpbGRQcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuXG5jb25zdCBleGVjID0gcHJvbWlzaWZ5KGNoaWxkUHJvY2Vzcy5leGVjKTtcblxudGVzdCgnanNpaS10cmVlJywgKCkgPT4gZXhwZWN0KGpzaWlUcmVlKCkpLnJlc29sdmVzLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxudGVzdCgnanNpaS10cmVlIC0tYWxsJywgKCkgPT5cbiAgZXhwZWN0KGpzaWlUcmVlKCctLWFsbCcpKS5yZXNvbHZlcy50b01hdGNoU25hcHNob3QoKSk7XG5cbnRlc3QoJ2pzaWktdHJlZSAtLXR5cGVzJywgKCkgPT5cbiAgZXhwZWN0KGpzaWlUcmVlKCctLXR5cGVzJykpLnJlc29sdmVzLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxudGVzdCgnanNpaS10cmVlIC0tbWVtYmVycycsICgpID0+XG4gIGV4cGVjdChqc2lpVHJlZSgnLS1tZW1iZXJzJykpLnJlc29sdmVzLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxudGVzdCgnanNpaS10cmVlIC0taW5oZXJpdGFuY2UnLCAoKSA9PlxuICBleHBlY3QoanNpaVRyZWUoJy0taW5oZXJpdGFuY2UnKSkucmVzb2x2ZXMudG9NYXRjaFNuYXBzaG90KCkpO1xuXG50ZXN0KCdqc2lpLXRyZWUgLS1zaWduYXR1cmVzJywgKCkgPT5cbiAgZXhwZWN0KGpzaWlUcmVlKCctLXNpZ25hdHVyZXMnKSkucmVzb2x2ZXMudG9NYXRjaFNuYXBzaG90KCkpO1xuXG5hc3luYyBmdW5jdGlvbiBqc2lpVHJlZSguLi5hcmdzOiBzdHJpbmdbXSkge1xuICBjb25zdCBjb21tYW5kID0gW1xuICAgIHByb2Nlc3MuZXhlY1BhdGgsXG4gICAgLi4ucHJvY2Vzcy5leGVjQXJndixcbiAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnYmluJywgJ2pzaWktdHJlZScpLFxuICAgIGFyZ3Muam9pbignICcpLFxuICAgICctLW5vLWNvbG9ycycsXG4gICAgcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZSgnanNpaS1jYWxjL3BhY2thZ2UuanNvbicpKSxcbiAgXS5qb2luKCcgJyk7XG5cbiAgY29uc3QgeyBzdGRvdXQsIHN0ZGVyciB9ID0gYXdhaXQgZXhlYyhjb21tYW5kKTtcblxuICBpZiAoc3RkZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuICB9XG5cbiAgcmV0dXJuIHN0ZG91dDtcbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS10cmVlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2lpLXRyZWUudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE4QztBQUM5Qyw2QkFBNkI7QUFDN0IsK0JBQWlDO0FBRWpDLE1BQU0sSUFBSSxHQUFHLGdCQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRTFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFdkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFeEQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFMUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFNUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxDQUNuQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFaEUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUNsQyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFFL0QsS0FBSyxVQUFVLFFBQVEsQ0FBQyxHQUFHLElBQWM7SUFDdkMsTUFBTSxPQUFPLEdBQUc7UUFDZCxPQUFPLENBQUMsUUFBUTtRQUNoQixHQUFHLE9BQU8sQ0FBQyxRQUFRO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDO1FBQzlDLEdBQUcsSUFBSTtRQUNQLGFBQWE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUN4RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVaLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsSUFBSSxNQUFNLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkUHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuY29uc3QgZXhlYyA9IHByb21pc2lmeShjaGlsZFByb2Nlc3MuZXhlYyk7XG5cbnRlc3QoJ2pzaWktdHJlZScsICgpID0+IGV4cGVjdChqc2lpVHJlZSgpKS5yZXNvbHZlcy50b01hdGNoU25hcHNob3QoKSk7XG5cbnRlc3QoJ2pzaWktdHJlZSAtLWFsbCcsICgpID0+XG4gIGV4cGVjdChqc2lpVHJlZSgnLS1hbGwnKSkucmVzb2x2ZXMudG9NYXRjaFNuYXBzaG90KCkpO1xuXG50ZXN0KCdqc2lpLXRyZWUgLS10eXBlcycsICgpID0+XG4gIGV4cGVjdChqc2lpVHJlZSgnLS10eXBlcycpKS5yZXNvbHZlcy50b01hdGNoU25hcHNob3QoKSk7XG5cbnRlc3QoJ2pzaWktdHJlZSAtLW1lbWJlcnMnLCAoKSA9PlxuICBleHBlY3QoanNpaVRyZWUoJy0tbWVtYmVycycpKS5yZXNvbHZlcy50b01hdGNoU25hcHNob3QoKSk7XG5cbnRlc3QoJ2pzaWktdHJlZSAtLWluaGVyaXRhbmNlJywgKCkgPT5cbiAgZXhwZWN0KGpzaWlUcmVlKCctLWluaGVyaXRhbmNlJykpLnJlc29sdmVzLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxudGVzdCgnanNpaS10cmVlIC0tc2lnbmF0dXJlcycsICgpID0+XG4gIGV4cGVjdChqc2lpVHJlZSgnLS1zaWduYXR1cmVzJykpLnJlc29sdmVzLnRvTWF0Y2hTbmFwc2hvdCgpKTtcblxuYXN5bmMgZnVuY3Rpb24ganNpaVRyZWUoLi4uYXJnczogc3RyaW5nW10pIHtcbiAgY29uc3QgY29tbWFuZCA9IFtcbiAgICBwcm9jZXNzLmV4ZWNQYXRoLFxuICAgIC4uLnByb2Nlc3MuZXhlY0FyZ3YsXG4gICAgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2JpbicsICdqc2lpLXRyZWUnKSxcbiAgICAuLi5hcmdzLFxuICAgICctLW5vLWNvbG9ycycsXG4gICAgcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZSgnanNpaS1jYWxjL3BhY2thZ2UuanNvbicpKSxcbiAgXS5qb2luKCcgJyk7XG5cbiAgY29uc3QgeyBzdGRvdXQsIHN0ZGVyciB9ID0gYXdhaXQgZXhlYyhjb21tYW5kKTtcblxuICBpZiAoc3RkZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihzdGRlcnIpO1xuICB9XG5cbiAgcmV0dXJuIHN0ZG91dDtcbn1cbiJdfQ==