@pipeline-builder/pipeline-manager 4.1.28 → 4.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@ CLI for [Pipeline Builder](https://mwashburn160.github.io/pipeline-builder/): in
10
10
  npm install -g @pipeline-builder/pipeline-manager
11
11
  ```
12
12
 
13
- Requires Node.js 24.14.0+.
13
+ Requires Node.js 24.21.0+.
14
14
 
15
15
  ## Quick start
16
16
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmDA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsUD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAoDA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4UD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
package/dist/cli.js CHANGED
@@ -24,6 +24,7 @@ import { provision } from './commands/provision.js';
24
24
  import { publishPlugin } from './commands/publish-plugin.js';
25
25
  import { redriveEvents } from './commands/redrive-events.js';
26
26
  import { register } from './commands/register.js';
27
+ import { report } from './commands/report.js';
27
28
  import { setupEvents } from './commands/setup-events.js';
28
29
  import { status } from './commands/status.js';
29
30
  import { storeToken } from './commands/store-token.js';
@@ -188,6 +189,11 @@ function registerTaskNamespaces() {
188
189
  // org — organization data operations
189
190
  const org = program.command('org').description('Organization data operations');
190
191
  orgExport(org); // org export — GDPR portability export
192
+ // report — the stakeholder-report add-on. Registered as its OWN namespace rather than
193
+ // under `org`, because its verbs are a lead's workflow (compose, publish, share), not an
194
+ // organization-data operation. The two jobs the dashboard is the wrong shape for are
195
+ // backfilling a run of past periods and driving a publish from another scheduler.
196
+ report(program);
191
197
  }
192
198
  /** Print shell completions for `shell` (bash, zsh or fish). */
193
199
  function printCompletions(shell) {
@@ -492,4 +498,4 @@ if (isMainModule) {
492
498
  };
493
499
  main(options);
494
500
  }
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9B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QVcsQ0FBQztRQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRztLQUM3RSxDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhdWRpdFN0YWNrcyB9IGZyb20gJy4vY29tbWFuZHMvYXVkaXQtc3RhY2tzLmpzJztcbmltcG9ydCB7IGF1ZGl0VG9rZW5zIH0gZnJvbSAnLi9jb21tYW5kcy9hdWRpdC10b2tlbnMuanMnO1xuaW1wb3J0IHsgYm9vdHN0cmFwIH0gZnJvbSAnLi9jb21tYW5kcy9ib290c3RyYXAuanMnO1xuaW1wb3J0IHsgY3JlYXRlUGF0IH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGF0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGlwZWxpbmUuanMnO1xuaW1wb3J0IHsgZGVwbG95IH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3kuanMnO1xuaW1wb3J0IHsgZ2V0UGlwZWxpbmUgfSBmcm9tICcuL2NvbW1hbmRzL2dldC1waXBlbGluZS5qcyc7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL2dldC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUZW1wbGF0ZSB9IGZyb20gJy4vY29tbWFuZHMvaW5zdGFudGlhdGUtdGVtcGxhdGUuanMnO1xuaW1wb3J0IHsgbGlzdFBpcGVsaW5lcyB9IGZyb20gJy4vY29tbWFuZHMvbGlzdC1waXBlbGluZXMuanMnO1xuaW1wb3J0IHsgbGlzdFBsdWdpbnMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy5qcyc7XG5pbXBvcnQgeyBsb2dpbiB9IGZyb20gJy4vY29tbWFuZHMvbG9naW4uanMnO1xuaW1wb3J0IHsgbmV3UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9uZXctcGx1Z2luLmpzJztcbmltcG9ydCB7IG9yZ0V4cG9ydCB9IGZyb20gJy4vY29tbWFuZHMvb3JnLWV4cG9ydC5qcyc7XG5pbXBvcnQgeyBkZXByZWNhdGVQbHVnaW4sIHlhbmtQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL3BsdWdpbi1saWZlY3ljbGUuanMnO1xuaW1wb3J0IHsgcHJvdmlzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy9wcm92aXNpb24uanMnO1xuaW1wb3J0IHsgcHVibGlzaFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvcHVibGlzaC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgcmVkcml2ZUV2ZW50cyB9IGZyb20gJy4vY29tbWFuZHMvcmVkcml2ZS1ldmVudHMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuL2NvbW1hbmRzL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IHNldHVwRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9zZXR1cC1ldmVudHMuanMnO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSAnLi9jb21tYW5kcy9zdGF0dXMuanMnO1xuaW1wb3J0IHsgc3RvcmVUb2tlbiB9IGZyb20gJy4vY29tbWFuZHMvc3RvcmUtdG9rZW4uanMnO1xuaW1wb3J0IHsgc3ludGggfSBmcm9tICcuL2NvbW1hbmRzL3N5bnRoLmpzJztcbmltcG9ydCB7IHRlc3RQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QtcGx1Z2luLmpzJztcbmltcG9ydCB7IHVwbG9hZFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdXBsb2FkLXBsdWdpbi5qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtcGx1Z2luLmpzJztcbmltcG9ydCB7IHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtdGVtcGxhdGVzLmpzJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24uanMnO1xuaW1wb3J0IHtcbiAgQVBQX05BTUUsXG4gIEFQUF9ERVNDUklQVElPTixcbiAgQVBQX1ZFUlNJT04sXG4gIEVOVl9WQVJTLFxuICBpc0RlYnVnTW9kZSxcbiAgZ2VuZXJhdGVFeGVjdXRpb25JZCxcbn0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBiYW5uZXIsIG1pbmlCYW5uZXIgfSBmcm9tICcuL3V0aWxzL2Jhbm5lci5qcyc7XG5pbXBvcnQgeyBnZXRBcGlDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgbG9hZFNlc3Npb24gfSBmcm9tICcuL3V0aWxzL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nLCBwcmludERlYnVnLCBwcmludFNlY3Rpb24gfSBmcm9tICcuL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmVmbGlnaHRDb21tYW5kVG9vbHMgfSBmcm9tICcuL3V0aWxzL3ByZWZsaWdodC5qcyc7XG5cbi8qKlxuICogQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuaW50ZXJmYWNlIENsaU9wdGlvbnMge1xuICAvKipcbiAgICogU2hvdyBiYW5uZXIgb24gc3RhcnR1cFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaG93QmFubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW1hbCBiYW5uZXIgKG5vIEFTQ0lJIGFydClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1pbmltYWxCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2Ugb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUXVpZXQgbW9kZSAobWluaW1hbCBvdXRwdXQpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vIGNvbG9yIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9Db2xvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZW52aXJvbm1lbnQgYW5kIGRpc3BsYXkgd2FybmluZ3NcbiAqL1xuZnVuY3Rpb24gY2hlY2tFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gTm90IHNpZ25lZCBpbiBBVCBBTEw6IG5laXRoZXIgYW4gZXhwbGljaXQgdG9rZW4gbm9yIGEgc3RvcmVkIGJyb3dzZXJcbiAgLy8gc2lnbi1pbi4gRWl0aGVyIGFsb25lIGlzIGVub3VnaCwgc28gdGhlIHdhcm5pbmcgb25seSBmaXJlcyB3aGVuIGJvdGggYXJlXG4gIC8vIG1pc3Npbmcg4oCUIG90aGVyd2lzZSBgYXV0aCBsb2dpbmAgdXNlcnMgd291bGQgYmUgbmFnZ2VkIG9uIGV2ZXJ5IGNvbW1hbmQuXG4gIGlmICghcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dICYmICFsb2FkU2Vzc2lvbihnZXRBcGlDb25maWcoKS5hcGkuYmFzZVVybCkpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdOb3Qgc2lnbmVkIGluIChubyBQTEFURk9STV9UT0tFTiwgbm8gc3RvcmVkIHNlc3Npb24pJyk7XG4gICAgd2FybmluZ3MucHVzaCgnUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIg4oCUIEFQSSBvcGVyYXRpb25zIHdpbGwgZmFpbCB1bnRpbCB5b3UgZG8nKTtcbiAgfVxuXG4gIC8vIENoZWNrIE5vZGUgdmVyc2lvblxuICBjb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvbjtcbiAgY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobm9kZVZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKVswXSB8fCAnMCcsIDEwKTtcbiAgaWYgKG1ham9yVmVyc2lvbiA8IDI0KSB7XG4gICAgd2FybmluZ3MucHVzaChgTm9kZS5qcyAke25vZGVWZXJzaW9ufSBkZXRlY3RlZCAtIHZlcnNpb24gMjQrIHJlcXVpcmVkIChzZWUgcGFja2FnZS5qc29uIGVuZ2luZXMpYCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRTZWN0aW9uKCdFbnZpcm9ubWVudCBXYXJuaW5ncycpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICBwcmludFdhcm5pbmcod2FybmluZyk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheSBzdGFydHVwIGluZm9ybWF0aW9uXG4gKi9cbmZ1bmN0aW9uIGRpc3BsYXlTdGFydHVwSW5mbyhvcHRpb25zOiBDbGlPcHRpb25zKTogdm9pZCB7XG4gIGlmIChvcHRpb25zLnF1aWV0KSByZXR1cm47XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcgfHwgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIENvbmZpZ3VyYXRpb24nLCB7XG4gICAgICBuYW1lOiBBUFBfTkFNRSxcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjoge1xuICAgICAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcsXG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gPyAnc2V0JzogJ25vdCBzZXQnLFxuICAgICAgICB1cmw6IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMXSB8fCAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByaW50RGVidWcoJ1N0YXJ0aW5nIENMSScsIHtcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFRvcC1sZXZlbCBgLS1oZWxwYCBlcGlsb2d1ZTogY29tbWFuZCBncm91cHMsIGF1dGgsIGVudiB2YXJzLCBleGFtcGxlcywgZXhpdCBjb2Rlcy4gKi9cbmNvbnN0IEhFTFBfVEVYVCA9IGBcbkNvbW1hbmQgZ3JvdXBzOlxuICBhdXRoICAgICAgQXV0aGVudGljYXRlIGFuZCBtYW5hZ2UgY3JlZGVudGlhbHMgKGxvZ2luLCBwYXQpXG4gIHBpcGVsaW5lICBDcmVhdGUsIGluc3BlY3QsIGFuZCBkZXBsb3kgcGlwZWxpbmVzIChjcmVhdGUsIGxpc3QsIGdldCwgcmVnaXN0ZXIsIHN5bnRoLCBkZXBsb3kpXG4gIHBsdWdpbiAgICBBdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zIChuZXcsIHZhbGlkYXRlLCB0ZXN0LCBwdWJsaXNoLCB1cGxvYWQsIGdldCwgbGlzdCwgZGVwcmVjYXRlLCB5YW5rKVxuICB0ZW1wbGF0ZSAgSW5zdGFudGlhdGUgZ29sZGVuLXBhdGggcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gc3ludGF4IChpbnN0YW50aWF0ZSwgdmFsaWRhdGUpXG4gIGluZnJhICAgICBTZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmUgKGJvb3RzdHJhcCwgc2V0dXAtZXZlbnRzLCByZWRyaXZlLWV2ZW50cywgc3RvcmUtdG9rZW4sIHByb3Zpc2lvbilcbiAgYXVkaXQgICAgIE9wZXJhdG9yIGF1ZGl0cywgY3Jvbi1mcmllbmRseSAodG9rZW5zLCBzdGFja3MpXG4gIG9yZyAgICAgICBPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zIChleHBvcnQpXG4gIHN0YXR1cyAvIHZlcnNpb24gLyBjb21wbGV0aW9uc1xuXG5BdXRoZW50aWNhdGlvbjpcbiAgUnVuICcke0FQUF9OQU1FfSBhdXRoIGxvZ2luJyBvbmNlIHBlciBwbGF0Zm9ybSDigJQgaXQgc2lnbnMgeW91IGluIHRocm91Z2ggeW91clxuICBicm93c2VyIChubyBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lKSBhbmQgc3RvcmVzIHRoZSBzZXNzaW9uIHVuZGVyXG4gIH4vLnBpcGVsaW5lLW1hbmFnZXIvY3JlZGVudGlhbHMuanNvbi4gRm9yIENJLCBjcmVhdGUgYW4gYWNjZXNzIGtleSB3aXRoXG4gICcke0FQUF9OQU1FfSBhdXRoIHBhdCcgYW5kIGV4cG9ydCBpdCBhcyAke0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOfSwgd2hpY2ggYWx3YXlzIHdpbnMuXG5cbkVudmlyb25tZW50IFZhcmlhYmxlczpcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9UT0tFTn0gQWNjZXNzIGtleSBvciB0b2tlbiAob3ZlcnJpZGVzIHRoZSBzdG9yZWQgc2Vzc2lvbilcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTH0gQVBJIGJhc2UgVVJMIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5DTElfQ09ORklHX1BBVEh9IENvbmZpZyBmaWxlIHBhdGggKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEfSBEaXNhYmxlIFNTTCB2ZXJpZmljYXRpb24gaWYgJzAnXG4gICR7RU5WX1ZBUlMuREVCVUd9IEVuYWJsZSBkZWJ1ZyBtb2RlIGlmICd0cnVlJ1xuXG5FeGFtcGxlczpcbiAgJCAke0FQUF9OQU1FfSB2ZXJzaW9uXG4gICQgJHtBUFBfTkFNRX0gYXV0aCBsb2dpblxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGxpc3QgLS1wcm9qZWN0IG15LWFwcFxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGdldCAtLWlkIHBpcGUtMTIzIC0tZm9ybWF0IGpzb25cbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBjcmVhdGUgLWYgcHJvcHMuanNvbiAtLWRlcGxveSAtLXByb2ZpbGUgcHJvZHVjdGlvblxuICAkICR7QVBQX05BTUV9IHRlbXBsYXRlIGluc3RhbnRpYXRlIC1uIHJlYWN0LWphdmFzY3JpcHQgLXAgcmVhY3QgLW8gYWNtZSAtLWlucHV0IG9yZ0lkPTx1dWlkPiAtLW91dHB1dCBwcm9wcy5qc29uXG4gICQgJHtBUFBfTkFNRX0gcGx1Z2luIHVwbG9hZCAtLWZpbGUgcGx1Z2luLnppcFxuICAkICR7QVBQX05BTUV9IGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBpbmZyYSBib290c3RyYXAgLS1hY2NvdW50IDEyMzQ1Njc4OTAxMiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBkZXBsb3kgLS1pZCBwaXBlLTEyMyAtLXByb2ZpbGUgcHJvZHVjdGlvblxuXG5FeGl0IGNvZGVzICgwID0gc3VjY2VzczsgZmFpbHVyZXMgdXNlIGEgc3RhbmRhcmQgY29kZSBieSBlcnJvciB0eXBlKTpcbiAgMSBnZW5lcmFsIMK3IDIgdmFsaWRhdGlvbiDCtyAzIGFwaS1yZXF1ZXN0IMK3IDQgYXV0aCDCtyA1IGZvcmJpZGRlblxuICA2IG5vdC1mb3VuZCDCtyA3IG5ldHdvcmsgwrcgOCBjb25maWcgwrcgOSBmaWxlLXN5c3RlbSDCtyAxMCB0aW1lb3V0XG5cblJ1biAnJHtBUFBfTkFNRX0gPGdyb3VwPiAtLWhlbHAnIHRvIHNlZSBhIGdyb3VwJ3Mgc3ViY29tbWFuZHMuXG5gO1xuXG4vKipcbiAqIFRhc2sgbmFtZXNwYWNlcyDigJQgY29tbWFuZHMgYXJlIGdyb3VwZWQgYnkgdGhlIGpvYiB0aGUgdXNlciBpcyBkb2luZywgbm90IGJ5XG4gKiBpbXBsZW1lbnRhdGlvbi4gRWFjaCBwYXJlbnQgaXMgYSBzdWJjb21tYW5kIGNvbnRhaW5lcjsgdGhlIGxlYWYgdmVyYiBsaXZlcyBpblxuICogdGhlIGNvbW1hbmQgZmlsZSAoZS5nLiBgLmNvbW1hbmQoJ2xpc3QnKWApLCBzbyBgcGlwZWxpbmUgbGlzdGAgcmVhZHMgYXMgYSB0YXNrLlxuICovXG5mdW5jdGlvbiByZWdpc3RlclRhc2tOYW1lc3BhY2VzKCk6IHZvaWQge1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyB0YXNrIG5hbWVzcGFjZXMnKTtcblxuICAvLyBhdXRoIOKAlCBhdXRoZW50aWNhdGUgYW5kIG1hbmFnZSBjcmVkZW50aWFsc1xuICBjb25zdCBhdXRoID0gcHJvZ3JhbS5jb21tYW5kKCdhdXRoJykuZGVzY3JpcHRpb24oJ0F1dGhlbnRpY2F0ZSBhbmQgbWFuYWdlIGNyZWRlbnRpYWxzJyk7XG4gIGxvZ2luKGF1dGgpOyAvLyBhdXRoIGxvZ2luIOKAlCBicm93c2VyIChkZXZpY2UtYXV0aG9yaXphdGlvbikgc2lnbi1pbiwgc3RvcmVkIGxvY2FsbHlcbiAgY3JlYXRlUGF0KGF1dGgpOyAvLyBhdXRoIHBhdCDigJQgY3JlYXRlIGEgbmFtZWQgYWNjZXNzIGtleSAoZGV2aWNlIHNpZ24taW4gKyBicm93c2VyIHN0ZXAtdXApXG5cbiAgLy8gcGlwZWxpbmUg4oCUIGNyZWF0ZSwgaW5zcGVjdCwgYW5kIGRlcGxveSBwaXBlbGluZXNcbiAgY29uc3QgcGlwZWxpbmUgPSBwcm9ncmFtLmNvbW1hbmQoJ3BpcGVsaW5lJykuZGVzY3JpcHRpb24oJ0NyZWF0ZSwgaW5zcGVjdCwgYW5kIGRlcGxveSBwaXBlbGluZXMnKTtcbiAgY3JlYXRlUGlwZWxpbmUocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBjcmVhdGVcbiAgbGlzdFBpcGVsaW5lcyhwaXBlbGluZSk7IC8vIHBpcGVsaW5lIGxpc3RcbiAgZ2V0UGlwZWxpbmUocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBnZXRcbiAgcmVnaXN0ZXIocGlwZWxpbmUpOyAvLyBwaXBlbGluZSByZWdpc3RlciDigJQgcmUtcmVnaXN0ZXIgYSBkZXBsb3llZCBBUk4gKyBkcmFpbiBwZW5kaW5nIGludGVudHNcbiAgc3ludGgocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBzeW50aCDigJQgQ0RLIHN5bnRoZXNpcyBmcm9tIHBpcGVsaW5lIGNvbmZpZ1xuICBkZXBsb3kocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBkZXBsb3kg4oCUIENESyBkZXBsb3kgKC0tYXBwIHByaW50cyBib2lsZXJwbGF0ZSBwYXRoKVxuXG4gIC8vIHBsdWdpbiDigJQgYXV0aG9yLCB2YWxpZGF0ZSwgYW5kIHB1Ymxpc2ggcGx1Z2luc1xuICBjb25zdCBwbHVnaW4gPSBwcm9ncmFtLmNvbW1hbmQoJ3BsdWdpbicpLmRlc2NyaXB0aW9uKCdBdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zJyk7XG4gIG5ld1BsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4gbmV3IOKAlCBzY2FmZm9sZCBhIGxvY2FsIHBsdWdpbiBkaXJlY3RvcnlcbiAgdmFsaWRhdGVQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHZhbGlkYXRlIOKAlCB0aGUgc2VydmVyJ3Mgc2NoZW1hcyArIHRoZSBjYXRhbG9nLW1ldGFkYXRhIHJlcG9ydFxuICB0ZXN0UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiB0ZXN0IOKAlCBydW4gaW5zdGFsbCArIGJ1aWxkIGNvbW1hbmRzIGxvY2FsbHkgaW4gdGhlIGltYWdlXG4gIHB1Ymxpc2hQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHB1Ymxpc2gg4oCUIHByZS1mbGlnaHQsIHNjYW4gcHJldmlldywgYWNjZXB0LW9yLWVkaXQsIHB1Ymxpc2ggcmVxdWVzdFxuICB1cGxvYWRQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHVwbG9hZCDigJQgdXBsb2FkIGFuZCBkZXBsb3lcbiAgZ2V0UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBnZXRcbiAgbGlzdFBsdWdpbnMocGx1Z2luKTsgLy8gcGx1Z2luIGxpc3RcbiAgZGVwcmVjYXRlUGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBkZXByZWNhdGUg4oCUIGRlcHJlY2F0ZSAob3IgLS11bmRvKSBhIHZlcnNpb25cbiAgeWFua1BsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4geWFuayDigJQgc3RvcCBhIHZlcnNpb24gcmVzb2x2aW5nIGZvciBuZXcgc3ludGhzXG5cbiAgLy8gdGVtcGxhdGUg4oCUIGluc3RhbnRpYXRlIGdvbGRlbi1wYXRoIHBpcGVsaW5lIHRlbXBsYXRlcywgdmFsaWRhdGUge3sgLi4uIH19IHN5bnRheFxuICBjb25zdCB0ZW1wbGF0ZSA9IHByb2dyYW0uY29tbWFuZCgndGVtcGxhdGUnKS5kZXNjcmlwdGlvbignSW5zdGFudGlhdGUgcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gdGVtcGxhdGUgc3ludGF4Jyk7XG4gIGluc3RhbnRpYXRlVGVtcGxhdGUodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSBpbnN0YW50aWF0ZSDigJQgcmVuZGVyIGEgdGVtcGxhdGUgaW50byBwaXBlbGluZSBwcm9wc1xuICB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSB2YWxpZGF0ZVxuXG4gIC8vIGluZnJhIOKAlCBzZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmVcbiAgY29uc3QgaW5mcmEgPSBwcm9ncmFtLmNvbW1hbmQoJ2luZnJhJykuZGVzY3JpcHRpb24oJ1NldCB1cCBhbmQgb3BlcmF0ZSBwbGF0Zm9ybSBpbmZyYXN0cnVjdHVyZScpO1xuICBib290c3RyYXAoaW5mcmEpOyAvLyBpbmZyYSBib290c3RyYXAg4oCUIENESyB0b29sa2l0IHN0YWNrXG4gIHNldHVwRXZlbnRzKGluZnJhKTsgLy8gaW5mcmEgc2V0dXAtZXZlbnRzIOKAlCBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb25cbiAgcmVkcml2ZUV2ZW50cyhpbmZyYSk7IC8vIGluZnJhIHJlZHJpdmUtZXZlbnRzIOKAlCBtYW51YWwgRExRIOKGkiBxdWV1ZSByZWRyaXZlIGZhbGxiYWNrXG4gIHN0b3JlVG9rZW4oaW5mcmEpOyAvLyBpbmZyYSBzdG9yZS10b2tlbiDigJQgSldUIHRva2VuIGluIFNlY3JldHMgTWFuYWdlciBmb3IgQ0RLXG4gIHByb3Zpc2lvbihpbmZyYSk7IC8vIGluZnJhIHByb3Zpc2lvbiDigJQgQUktYXNzaXN0ZWQgZGVwbG95L3RlYXJkb3duIG9mIHRoZSBwbGF0Zm9ybVxuXG4gIC8vIGF1ZGl0IOKAlCBvcGVyYXRvciBhdWRpdHMgKGNyb24tZnJpZW5kbHk6IGV4aXQgMSBvbiBmaW5kaW5ncylcbiAgY29uc3QgYXVkaXQgPSBwcm9ncmFtLmNvbW1hbmQoJ2F1ZGl0JykuZGVzY3JpcHRpb24oJ09wZXJhdG9yIGF1ZGl0cyAoY3Jvbi1mcmllbmRseTogZXhpdCAxIG9uIGZpbmRpbmdzKScpO1xuICBhdWRpdFRva2VucyhhdWRpdCk7IC8vIGF1ZGl0IHRva2VucyDigJQgZXhwaXJpbmcgcGxhdGZvcm0gdG9rZW5zIGluIFNlY3JldHMgTWFuYWdlclxuICBhdWRpdFN0YWNrcyhhdWRpdCk7IC8vIGF1ZGl0IHN0YWNrcyDigJQgQ0ZOIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSBkcmlmdFxuXG4gIC8vIG9yZyDigJQgb3JnYW5pemF0aW9uIGRhdGEgb3BlcmF0aW9uc1xuICBjb25zdCBvcmcgPSBwcm9ncmFtLmNvbW1hbmQoJ29yZycpLmRlc2NyaXB0aW9uKCdPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zJyk7XG4gIG9yZ0V4cG9ydChvcmcpOyAvLyBvcmcgZXhwb3J0IOKAlCBHRFBSIHBvcnRhYmlsaXR5IGV4cG9ydFxufVxuXG4vKiogUHJpbnQgc2hlbGwgY29tcGxldGlvbnMgZm9yIGBzaGVsbGAgKGJhc2gsIHpzaCBvciBmaXNoKS4gKi9cbmZ1bmN0aW9uIHByaW50Q29tcGxldGlvbnMoc2hlbGw6IHN0cmluZyk6IHZvaWQge1xuICAvLyBXYWxrIGNvbW1hbmRlcidzIHJlZ2lzdGVyZWQgdHJlZSBzbyBjb21wbGV0aW9ucyBuZXZlciBkcmlmdCBmcm9tIHRoZSBhY3R1YWxcbiAgLy8gc3VyZmFjZS4gYHRvcExldmVsYCBpcyB0aGUgZmlyc3Qtd29yZCBzZXQgKG5hbWVzcGFjZXMgKyBtZXRhIGNvbW1hbmRzKTtcbiAgLy8gYHN1YnNgIG1hcHMgZWFjaCBuYW1lc3BhY2UgdG8gaXRzIGxlYWYgdmVyYnMgZm9yIHNlY29uZC13b3JkIGNvbXBsZXRpb24uXG4gIGNvbnN0IHRvcExldmVsID0gcHJvZ3JhbS5jb21tYW5kcy5tYXAoYyA9PiBjLm5hbWUoKSkuc29ydCgpO1xuICBjb25zdCBzdWJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcbiAgZm9yIChjb25zdCBjIG9mIHByb2dyYW0uY29tbWFuZHMpIHtcbiAgICBpZiAoYy5jb21tYW5kcy5sZW5ndGggPiAwKSBzdWJzW2MubmFtZSgpXSA9IGMuY29tbWFuZHMubWFwKHMgPT4gcy5uYW1lKCkpLnNvcnQoKTtcbiAgfVxuICBjb25zdCB0b3BMZXZlbFN0ciA9IHRvcExldmVsLmpvaW4oJyAnKTtcbiAgc3dpdGNoIChzaGVsbCkge1xuICAgIGNhc2UgJ2Jhc2gnOiB7XG4gICAgICAvLyBUd28tbGV2ZWw6IGNvbXBsZXRlIHRoZSBncm91cCBhdCB3b3JkIDEsIGl0cyBzdWJjb21tYW5kcyBhdCB3b3JkIDIuXG4gICAgICBjb25zdCBjYXNlcyA9IE9iamVjdC5lbnRyaWVzKHN1YnMpXG4gICAgICAgIC5tYXAoKFtucywgbGVhdmVzXSkgPT4gYCAgICAgICR7bnN9KSBDT01QUkVQTFk9KCQoY29tcGdlbiAtVyBcIiR7bGVhdmVzLmpvaW4oJyAnKX1cIiAtLSBcIlxcJHtjdXJ9XCIpKTs7YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBiYXNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucygpIHtcbiAgbG9jYWwgY3VyPVwiXFwke0NPTVBfV09SRFNbQ09NUF9DV09SRF19XCJcbiAgaWYgWyBcIlxcJHtDT01QX0NXT1JEfVwiIC1lcSAxIF07IHRoZW5cbkNPTVBSRVBMWT0oJChjb21wZ2VuIC1XIFwiJHt0b3BMZXZlbFN0cn1cIiAtLSBcIlxcJHtjdXJ9XCIpKVxucmV0dXJuXG4gIGZpXG4gIGNhc2UgXCJcXCR7Q09NUF9XT1JEU1sxXX1cIiBpblxuJHtjYXNlc31cbiAgZXNhY1xufVxuY29tcGxldGUgLUYgX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3pzaCc6IHtcbiAgICAgIGNvbnN0IGNhc2VzID0gT2JqZWN0LmVudHJpZXMoc3VicylcbiAgICAgICAgLm1hcCgoW25zLCBsZWF2ZXNdKSA9PiBgICAgICAgICAke25zfSkgX3ZhbHVlcyAnc3ViY29tbWFuZCcgJHtsZWF2ZXMuam9pbignICcpfTs7YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciB6c2ggY29tcGxldGlvbnNcbl9waXBlbGluZV9tYW5hZ2VyKCkge1xuICBpZiAoKCBDVVJSRU5UID09IDIgKSk7IHRoZW5cbl92YWx1ZXMgJ2NvbW1hbmQnICR7dG9wTGV2ZWwuam9pbignICcpfVxucmV0dXJuXG4gIGZpXG4gIGNhc2UgXCJcXCR7d29yZHNbMl19XCIgaW5cbiR7Y2FzZXN9XG4gIGVzYWNcbn1cbmNvbXBkZWYgX3BpcGVsaW5lX21hbmFnZXIgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2Zpc2gnOiB7XG4gICAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgICAgYGNvbXBsZXRlIC1jIHBpcGVsaW5lLW1hbmFnZXIgLW4gJ19fZmlzaF91c2Vfc3ViY29tbWFuZCcgLWEgJyR7dG9wTGV2ZWxTdHJ9J2AsXG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHN1YnMpLm1hcCgoW25zLCBsZWF2ZXNdKSA9PlxuICAgICAgICAgIGBjb21wbGV0ZSAtYyBwaXBlbGluZS1tYW5hZ2VyIC1uICdfX2Zpc2hfc2Vlbl9zdWJjb21tYW5kX2Zyb20gJHtuc30nIC1hICcke2xlYXZlcy5qb2luKCcgJyl9J2ApLFxuICAgICAgXTtcbiAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgZmlzaCBjb21wbGV0aW9uc1xcbiR7bGluZXMuam9pbignXFxuJyl9YCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gc2hlbGw6ICR7c2hlbGx9LiBVc2UgYmFzaCwgenNoLCBvciBmaXNoLmApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYWxsIENMSSBjb21tYW5kc1xuICovXG5mdW5jdGlvbiByZWdpc3RlckNvbW1hbmRzKCk6IHZvaWQge1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjb21tYW5kcycpO1xuXG4gIC8vIENvbmZpZ3VyZSBwcm9ncmFtXG4gIHByb2dyYW1cbiAgICAubmFtZShBUFBfTkFNRSlcbiAgICAuZGVzY3JpcHRpb24oQVBQX0RFU0NSSVBUSU9OKVxuICAgIC52ZXJzaW9uKEFQUF9WRVJTSU9OLCAnLXYsIC0tdmVyc2lvbicsICdTaG93IENMSSB2ZXJzaW9uJylcbiAgICAub3B0aW9uKCctLWRlYnVnJywgJ0VuYWJsZSBkZWJ1ZyBvdXRwdXQgd2l0aCBzdGFjayB0cmFjZXMnLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXZlcmJvc2UnLCAnU2hvdyBkZXRhaWxlZCBpbmZvcm1hdGlvbicsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnTWluaW1hbCBvdXRwdXQgKGVycm9ycyBvbmx5KScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tbm8tY29sb3InLCAnRGlzYWJsZSBjb2xvcmVkIG91dHB1dCcsIGZhbHNlKVxuICAgIC5hZGRIZWxwVGV4dCgnYWZ0ZXInLCBIRUxQX1RFWFQpO1xuXG4gIC8vIEZhaWwtZmFzdCBwcmVmbGlnaHQ6IGJlZm9yZSBBTlkgY29tbWFuZCdzIGFjdGlvbiBydW5zLCB2ZXJpZnkgdGhlIGxvY2FsXG4gIC8vIHRvb2xzIHRoYXQgY29tbWFuZCBuZWVkcy4gQ29tbWFuZGVyIHNraXBzIHRoaXMgZm9yIC0taGVscC8tLXZlcnNpb24gYW5kIGZvclxuICAvLyBoZWxwIG91dHB1dCwgc28gdGhvc2UgYWx3YXlzIHdvcms7IEFQSS1vbmx5IGNvbW1hbmRzIGRlY2xhcmUgbm8gcmVxdWlyZW1lbnRzXG4gIC8vIGFuZCBwYXNzIHRocm91Z2ggdW50b3VjaGVkLlxuICBwcm9ncmFtLmhvb2soJ3ByZUFjdGlvbicsIChfdGhpc0NvbW1hbmQsIGFjdGlvbkNvbW1hbmQpID0+IHByZWZsaWdodENvbW1hbmRUb29scyhhY3Rpb25Db21tYW5kKSk7XG5cbiAgLy8gVG9wLWxldmVsIG1ldGEgY29tbWFuZHMgKG5vIG5hbWVzcGFjZSkuXG4gIHZlcnNpb24ocHJvZ3JhbSk7XG4gIHN0YXR1cyhwcm9ncmFtKTsgLy8gU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1c1xuXG4gIHJlZ2lzdGVyVGFza05hbWVzcGFjZXMoKTtcblxuICAvLyBTaGVsbCBjb21wbGV0aW9uc1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyBjb21wbGV0aW9ucyBjb21tYW5kJyk7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZCgnY29tcGxldGlvbnMnKVxuICAgIC5kZXNjcmlwdGlvbignR2VuZXJhdGUgc2hlbGwgY29tcGxldGlvbnMgKGJhc2gsIHpzaCwgZmlzaCknKVxuICAgIC5hcmd1bWVudCgnPHNoZWxsPicsICdTaGVsbCB0eXBlOiBiYXNoLCB6c2gsIG9yIGZpc2gnKVxuICAgIC5hY3Rpb24oKHNoZWxsOiBzdHJpbmcpID0+IHtcbiAgICAgIHByaW50Q29tcGxldGlvbnMoc2hlbGwpO1xuICAgIH0pO1xuXG4gIHByaW50RGVidWcoJ0FsbCBjb21tYW5kcyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseScpO1xufVxuXG4vKipcbiAqIEhhbmRsZSBwcm9ncmFtIGVycm9yc1xuICovXG5mdW5jdGlvbiBzZXR1cEVycm9ySGFuZGxlcnMoKTogdm9pZCB7XG4gIC8vIEhhbmRsZSB1bmNhdWdodCBleGNlcHRpb25zXG4gIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignVW5jYXVnaHQgZXhjZXB0aW9uJywge1xuICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBuYW1lOiBlcnJvci5uYW1lLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5jYXVnaHRFeGNlcHRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbnNcbiAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKHJlYXNvbjogdW5rbm93bikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywge1xuICAgICAgcmVhc29uOiBlcnJvck1lc3NhZ2UocmVhc29uKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVycm9yID0gcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb246IG5ldyBFcnJvcihTdHJpbmcocmVhc29uKSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHR5cGU6ICd1bmhhbmRsZWRSZWplY3Rpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR0lOVCAoQ3RybCtDKVxuICBwcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIGludGVycnVwdGVkIGJ5IHVzZXIgKFNJR0lOVCknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTMwKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdJTlRcbiAgfSk7XG5cbiAgLy8gSGFuZGxlIFNJR1RFUk1cbiAgcHJvY2Vzcy5vbignU0lHVEVSTScsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludFdhcm5pbmcoJ1Byb2Nlc3MgdGVybWluYXRlZCAoU0lHVEVSTSknKTtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcm9jZXNzLmV4aXQoMTQzKTsgLy8gU3RhbmRhcmQgZXhpdCBjb2RlIGZvciBTSUdURVJNXG4gIH0pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgQ0xJIHdpdGggb3B0aW9uc1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDbGkob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBzaG93QmFubmVyID0gdHJ1ZSxcbiAgICBtaW5pbWFsQmFubmVyID0gZmFsc2UsXG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgcXVpZXQgPSBmYWxzZSxcbiAgICBub0NvbG9yID0gZmFsc2UsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEhhbmRsZSBjb2xvciBvdXRwdXRcbiAgaWYgKG5vQ29sb3IpIHtcbiAgICBwcm9jZXNzLmVudi5OT19DT0xPUiA9ICcxJztcbiAgfVxuXG4gIC8vIERpc3BsYXkgYmFubmVyXG4gIGlmIChzaG93QmFubmVyICYmICFxdWlldCkge1xuICAgIGlmIChtaW5pbWFsQmFubmVyKSB7XG4gICAgICBtaW5pQmFubmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJhbm5lcih7XG4gICAgICAgIG1pbmltYWw6IGZhbHNlLFxuICAgICAgICBzaG93RGVzY3JpcHRpb246IHRydWUsXG4gICAgICAgIHNob3dUaW1lc3RhbXA6IGRlYnVnIHx8IHZlcmJvc2UsXG4gICAgICAgIHNob3dFeGVjdXRpb25JZDogZGVidWcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXJ0dXAgaW5mb1xuICBkaXNwbGF5U3RhcnR1cEluZm8oeyBkZWJ1ZywgdmVyYm9zZSwgcXVpZXQgfSk7XG5cbiAgLy8gQ2hlY2sgZW52aXJvbm1lbnRcbiAgaWYgKCFxdWlldCkge1xuICAgIGNoZWNrRW52aXJvbm1lbnQoKTtcbiAgfVxuXG4gIC8vIFNldHVwIGVycm9yIGhhbmRsZXJzXG4gIHNldHVwRXJyb3JIYW5kbGVycygpO1xuXG4gIC8vIFJlZ2lzdGVyIGNvbW1hbmRzXG4gIHRyeSB7XG4gICAgcmVnaXN0ZXJDb21tYW5kcygpO1xuICAgIHByaW50RGVidWcoJ0NMSSBpbml0aWFsaXphdGlvbiBjb21wbGV0ZScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IoJ0NMSSBpbml0aWFsaXphdGlvbiBmYWlsZWQnLCB7XG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5DT05GSUdVUkFUSU9OLCB7XG4gICAgICBkZWJ1ZzogZGVidWcgfHwgaXNEZWJ1Z01vZGUoKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnaW5pdGlhbGl6YXRpb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcbiAqL1xuZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgcHJvZ3JhbS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuXG4gICAgLy8gU2hvdyBoZWxwIGlmIG5vIGNvbW1hbmQgcHJvdmlkZWRcbiAgICBjb25zdCBhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpO1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcHJpbnRJbmZvKCdObyBjb21tYW5kIHNwZWNpZmllZCAtIGRpc3BsYXlpbmcgaGVscCcpO1xuICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICBwcm9ncmFtLm91dHB1dEhlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBjb21tYW5kIGV4aXN0c1xuICAgIGNvbnN0IGNvbW1hbmQgPSBhcmdzWzBdO1xuICAgIGlmIChjb21tYW5kICYmICFjb21tYW5kLnN0YXJ0c1dpdGgoJy0nKSkge1xuICAgICAgY29uc3QgY29tbWFuZEV4aXN0cyA9IHByb2dyYW0uY29tbWFuZHMuc29tZShjbWQgPT4gY21kLm5hbWUoKSA9PT0gY29tbWFuZCk7XG5cbiAgICAgIGlmICghY29tbWFuZEV4aXN0cykge1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRFcnJvcihgVW5rbm93biBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEluZm8oJ0F2YWlsYWJsZSBjb21tYW5kczonKTtcbiAgICAgICAgcHJvZ3JhbS5jb21tYW5kcy5mb3JFYWNoKGNtZCA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCDigKIgJHtjbWQubmFtZSgpfSAtICR7Y21kLmRlc2NyaXB0aW9uKCl9YCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByaW50RGVidWcoJ0NvbW1hbmQgbGluZSBhcmd1bWVudHMgcGFyc2VkIHN1Y2Nlc3NmdWxseScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdhcmd1bWVudC1wYXJzaW5nJyxcbiAgICAgICAgYXJndjogcHJvY2Vzcy5hcmd2LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIE1haW4gQ0xJIGVudHJ5IHBvaW50XG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBTdGFuZGFyZCBpbml0aWFsaXphdGlvblxuICogbWFpbigpO1xuICpcbiAqIC8vIE1pbmltYWwgbW9kZVxuICogbWFpbih7IG1pbmltYWxCYW5uZXI6IHRydWUsIHF1aWV0OiB0cnVlIH0pO1xuICpcbiAqIC8vIERlYnVnIG1vZGVcbiAqIG1haW4oeyBkZWJ1ZzogdHJ1ZSwgdmVyYm9zZTogdHJ1ZSB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFpbihvcHRpb25zOiBDbGlPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICAvLyBJbml0aWFsaXplIENMSVxuICAgIGluaXRpYWxpemVDbGkob3B0aW9ucyk7XG5cbiAgICAvLyBQYXJzZSBhcmd1bWVudHMgYW5kIGV4ZWN1dGUgY29tbWFuZFxuICAgIHBhcnNlQXJndW1lbnRzKCk7XG5cbiAgICAvLyBJZiB3ZSByZWFjaCBoZXJlLCBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcbiAgICBwcmludERlYnVnKCdDTEkgZXhlY3V0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBGaW5hbCBjYXRjaC1hbGwgZXJyb3IgaGFuZGxlclxuICAgIGNvbnNvbGUuZXJyb3IoJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRFcnJvcignRmF0YWwgQ0xJIGVycm9yJywge1xuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKG9wdGlvbnMpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdtYWluJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gQ0xJIGlmIGV4ZWN1dGVkIGRpcmVjdGx5LiBFU00gaGFzIG5vIGByZXF1aXJlLm1haW5gOyBjb21wYXJlIHRoZSBpbnZva2VkXG4gKiBzY3JpcHQgdG8gdGhpcyBtb2R1bGUncyBwYXRoLCByZXNvbHZpbmcgc3ltbGlua3Mgb24gYm90aCBzaWRlcyBzbyB0aGUgYGJpbmBcbiAqIHN5bWxpbmsgKG5vZGVfbW9kdWxlcy8uYmluL3BpcGVsaW5lLW1hbmFnZXIg4oaSIGRpc3QvY2xpLmpzKSBzdGlsbCBtYXRjaGVzLlxuICovXG5jb25zdCBpbnZva2VkU2NyaXB0ID0gcHJvY2Vzcy5hcmd2WzFdO1xuY29uc3QgaXNNYWluTW9kdWxlID0gaW52b2tlZFNjcmlwdCAhPT0gdW5kZWZpbmVkXG4gICYmIHJlYWxwYXRoU3luYyhpbnZva2VkU2NyaXB0KSA9PT0gcmVhbHBhdGhTeW5jKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5pZiAoaXNNYWluTW9kdWxlKSB7XG4gIC8vIFBhcnNlIENMSSBvcHRpb25zIGZyb20gZW52aXJvbm1lbnQgb3IgY29tbWFuZCBsaW5lXG4gIGNvbnN0IG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7XG4gICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZScsXG4gICAgLy8gYC0tdG9rZW5gIHByaW50cyBhIGJhcmUgdG9rZW4gZm9yIGAkKOKApilgIGNhcHR1cmUsIHNvIHRoZSBiYW5uZXIgYW5kIHRoZVxuICAgIC8vIHN0YXJ0dXAgY2hyb21lIG11c3Qgbm90IHJlYWNoIHN0ZG91dCBlaXRoZXIuIFNjYW5uZWQgZnJvbSBhcmd2IGxpa2VcbiAgICAvLyBgLS1xdWlldGAgaXMsIGJlY2F1c2UgdGhpcyBydW5zIEJFRk9SRSBDb21tYW5kZXIgcGFyc2VzLlxuICAgIHF1aWV0OiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tcXVpZXQnKSB8fCBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tdG9rZW4nKSxcbiAgICB2ZXJib3NlOiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tdmVyYm9zZScpLFxuICAgIG5vQ29sb3I6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1uby1jb2xvcicpIHx8IHByb2Nlc3MuZW52Lk5PX0NPTE9SID09PSAnMScsXG4gIH07XG5cbiAgbWFpbihvcHRpb25zKTtcbn0iXX0=
501
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9B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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDM0UsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRztLQUM3RSxDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhdWRpdFN0YWNrcyB9IGZyb20gJy4vY29tbWFuZHMvYXVkaXQtc3RhY2tzLmpzJztcbmltcG9ydCB7IGF1ZGl0VG9rZW5zIH0gZnJvbSAnLi9jb21tYW5kcy9hdWRpdC10b2tlbnMuanMnO1xuaW1wb3J0IHsgYm9vdHN0cmFwIH0gZnJvbSAnLi9jb21tYW5kcy9ib290c3RyYXAuanMnO1xuaW1wb3J0IHsgY3JlYXRlUGF0IH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGF0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGlwZWxpbmUuanMnO1xuaW1wb3J0IHsgZGVwbG95IH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3kuanMnO1xuaW1wb3J0IHsgZ2V0UGlwZWxpbmUgfSBmcm9tICcuL2NvbW1hbmRzL2dldC1waXBlbGluZS5qcyc7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL2dldC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUZW1wbGF0ZSB9IGZyb20gJy4vY29tbWFuZHMvaW5zdGFudGlhdGUtdGVtcGxhdGUuanMnO1xuaW1wb3J0IHsgbGlzdFBpcGVsaW5lcyB9IGZyb20gJy4vY29tbWFuZHMvbGlzdC1waXBlbGluZXMuanMnO1xuaW1wb3J0IHsgbGlzdFBsdWdpbnMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy5qcyc7XG5pbXBvcnQgeyBsb2dpbiB9IGZyb20gJy4vY29tbWFuZHMvbG9naW4uanMnO1xuaW1wb3J0IHsgbmV3UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9uZXctcGx1Z2luLmpzJztcbmltcG9ydCB7IG9yZ0V4cG9ydCB9IGZyb20gJy4vY29tbWFuZHMvb3JnLWV4cG9ydC5qcyc7XG5pbXBvcnQgeyBkZXByZWNhdGVQbHVnaW4sIHlhbmtQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL3BsdWdpbi1saWZlY3ljbGUuanMnO1xuaW1wb3J0IHsgcHJvdmlzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy9wcm92aXNpb24uanMnO1xuaW1wb3J0IHsgcHVibGlzaFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvcHVibGlzaC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgcmVkcml2ZUV2ZW50cyB9IGZyb20gJy4vY29tbWFuZHMvcmVkcml2ZS1ldmVudHMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuL2NvbW1hbmRzL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IHJlcG9ydCB9IGZyb20gJy4vY29tbWFuZHMvcmVwb3J0LmpzJztcbmltcG9ydCB7IHNldHVwRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9zZXR1cC1ldmVudHMuanMnO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSAnLi9jb21tYW5kcy9zdGF0dXMuanMnO1xuaW1wb3J0IHsgc3RvcmVUb2tlbiB9IGZyb20gJy4vY29tbWFuZHMvc3RvcmUtdG9rZW4uanMnO1xuaW1wb3J0IHsgc3ludGggfSBmcm9tICcuL2NvbW1hbmRzL3N5bnRoLmpzJztcbmltcG9ydCB7IHRlc3RQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL3Rlc3QtcGx1Z2luLmpzJztcbmltcG9ydCB7IHVwbG9hZFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdXBsb2FkLXBsdWdpbi5qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtcGx1Z2luLmpzJztcbmltcG9ydCB7IHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtdGVtcGxhdGVzLmpzJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24uanMnO1xuaW1wb3J0IHtcbiAgQVBQX05BTUUsXG4gIEFQUF9ERVNDUklQVElPTixcbiAgQVBQX1ZFUlNJT04sXG4gIEVOVl9WQVJTLFxuICBpc0RlYnVnTW9kZSxcbiAgZ2VuZXJhdGVFeGVjdXRpb25JZCxcbn0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBiYW5uZXIsIG1pbmlCYW5uZXIgfSBmcm9tICcuL3V0aWxzL2Jhbm5lci5qcyc7XG5pbXBvcnQgeyBnZXRBcGlDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgbG9hZFNlc3Npb24gfSBmcm9tICcuL3V0aWxzL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nLCBwcmludERlYnVnLCBwcmludFNlY3Rpb24gfSBmcm9tICcuL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmVmbGlnaHRDb21tYW5kVG9vbHMgfSBmcm9tICcuL3V0aWxzL3ByZWZsaWdodC5qcyc7XG5cbi8qKlxuICogQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuaW50ZXJmYWNlIENsaU9wdGlvbnMge1xuICAvKipcbiAgICogU2hvdyBiYW5uZXIgb24gc3RhcnR1cFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaG93QmFubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW1hbCBiYW5uZXIgKG5vIEFTQ0lJIGFydClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1pbmltYWxCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2Ugb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUXVpZXQgbW9kZSAobWluaW1hbCBvdXRwdXQpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vIGNvbG9yIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9Db2xvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZW52aXJvbm1lbnQgYW5kIGRpc3BsYXkgd2FybmluZ3NcbiAqL1xuZnVuY3Rpb24gY2hlY2tFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gTm90IHNpZ25lZCBpbiBBVCBBTEw6IG5laXRoZXIgYW4gZXhwbGljaXQgdG9rZW4gbm9yIGEgc3RvcmVkIGJyb3dzZXJcbiAgLy8gc2lnbi1pbi4gRWl0aGVyIGFsb25lIGlzIGVub3VnaCwgc28gdGhlIHdhcm5pbmcgb25seSBmaXJlcyB3aGVuIGJvdGggYXJlXG4gIC8vIG1pc3Npbmcg4oCUIG90aGVyd2lzZSBgYXV0aCBsb2dpbmAgdXNlcnMgd291bGQgYmUgbmFnZ2VkIG9uIGV2ZXJ5IGNvbW1hbmQuXG4gIGlmICghcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dICYmICFsb2FkU2Vzc2lvbihnZXRBcGlDb25maWcoKS5hcGkuYmFzZVVybCkpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdOb3Qgc2lnbmVkIGluIChubyBQTEFURk9STV9UT0tFTiwgbm8gc3RvcmVkIHNlc3Npb24pJyk7XG4gICAgd2FybmluZ3MucHVzaCgnUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIg4oCUIEFQSSBvcGVyYXRpb25zIHdpbGwgZmFpbCB1bnRpbCB5b3UgZG8nKTtcbiAgfVxuXG4gIC8vIENoZWNrIE5vZGUgdmVyc2lvblxuICBjb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvbjtcbiAgY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobm9kZVZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKVswXSB8fCAnMCcsIDEwKTtcbiAgaWYgKG1ham9yVmVyc2lvbiA8IDI0KSB7XG4gICAgd2FybmluZ3MucHVzaChgTm9kZS5qcyAke25vZGVWZXJzaW9ufSBkZXRlY3RlZCAtIHZlcnNpb24gMjQrIHJlcXVpcmVkIChzZWUgcGFja2FnZS5qc29uIGVuZ2luZXMpYCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRTZWN0aW9uKCdFbnZpcm9ubWVudCBXYXJuaW5ncycpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICBwcmludFdhcm5pbmcod2FybmluZyk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheSBzdGFydHVwIGluZm9ybWF0aW9uXG4gKi9cbmZ1bmN0aW9uIGRpc3BsYXlTdGFydHVwSW5mbyhvcHRpb25zOiBDbGlPcHRpb25zKTogdm9pZCB7XG4gIGlmIChvcHRpb25zLnF1aWV0KSByZXR1cm47XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcgfHwgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIENvbmZpZ3VyYXRpb24nLCB7XG4gICAgICBuYW1lOiBBUFBfTkFNRSxcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjoge1xuICAgICAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcsXG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gPyAnc2V0JzogJ25vdCBzZXQnLFxuICAgICAgICB1cmw6IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMXSB8fCAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByaW50RGVidWcoJ1N0YXJ0aW5nIENMSScsIHtcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFRvcC1sZXZlbCBgLS1oZWxwYCBlcGlsb2d1ZTogY29tbWFuZCBncm91cHMsIGF1dGgsIGVudiB2YXJzLCBleGFtcGxlcywgZXhpdCBjb2Rlcy4gKi9cbmNvbnN0IEhFTFBfVEVYVCA9IGBcbkNvbW1hbmQgZ3JvdXBzOlxuICBhdXRoICAgICAgQXV0aGVudGljYXRlIGFuZCBtYW5hZ2UgY3JlZGVudGlhbHMgKGxvZ2luLCBwYXQpXG4gIHBpcGVsaW5lICBDcmVhdGUsIGluc3BlY3QsIGFuZCBkZXBsb3kgcGlwZWxpbmVzIChjcmVhdGUsIGxpc3QsIGdldCwgcmVnaXN0ZXIsIHN5bnRoLCBkZXBsb3kpXG4gIHBsdWdpbiAgICBBdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zIChuZXcsIHZhbGlkYXRlLCB0ZXN0LCBwdWJsaXNoLCB1cGxvYWQsIGdldCwgbGlzdCwgZGVwcmVjYXRlLCB5YW5rKVxuICB0ZW1wbGF0ZSAgSW5zdGFudGlhdGUgZ29sZGVuLXBhdGggcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gc3ludGF4IChpbnN0YW50aWF0ZSwgdmFsaWRhdGUpXG4gIGluZnJhICAgICBTZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmUgKGJvb3RzdHJhcCwgc2V0dXAtZXZlbnRzLCByZWRyaXZlLWV2ZW50cywgc3RvcmUtdG9rZW4sIHByb3Zpc2lvbilcbiAgYXVkaXQgICAgIE9wZXJhdG9yIGF1ZGl0cywgY3Jvbi1mcmllbmRseSAodG9rZW5zLCBzdGFja3MpXG4gIG9yZyAgICAgICBPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zIChleHBvcnQpXG4gIHN0YXR1cyAvIHZlcnNpb24gLyBjb21wbGV0aW9uc1xuXG5BdXRoZW50aWNhdGlvbjpcbiAgUnVuICcke0FQUF9OQU1FfSBhdXRoIGxvZ2luJyBvbmNlIHBlciBwbGF0Zm9ybSDigJQgaXQgc2lnbnMgeW91IGluIHRocm91Z2ggeW91clxuICBicm93c2VyIChubyBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lKSBhbmQgc3RvcmVzIHRoZSBzZXNzaW9uIHVuZGVyXG4gIH4vLnBpcGVsaW5lLW1hbmFnZXIvY3JlZGVudGlhbHMuanNvbi4gRm9yIENJLCBjcmVhdGUgYW4gYWNjZXNzIGtleSB3aXRoXG4gICcke0FQUF9OQU1FfSBhdXRoIHBhdCcgYW5kIGV4cG9ydCBpdCBhcyAke0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOfSwgd2hpY2ggYWx3YXlzIHdpbnMuXG5cbkVudmlyb25tZW50IFZhcmlhYmxlczpcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9UT0tFTn0gQWNjZXNzIGtleSBvciB0b2tlbiAob3ZlcnJpZGVzIHRoZSBzdG9yZWQgc2Vzc2lvbilcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTH0gQVBJIGJhc2UgVVJMIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5DTElfQ09ORklHX1BBVEh9IENvbmZpZyBmaWxlIHBhdGggKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEfSBEaXNhYmxlIFNTTCB2ZXJpZmljYXRpb24gaWYgJzAnXG4gICR7RU5WX1ZBUlMuREVCVUd9IEVuYWJsZSBkZWJ1ZyBtb2RlIGlmICd0cnVlJ1xuXG5FeGFtcGxlczpcbiAgJCAke0FQUF9OQU1FfSB2ZXJzaW9uXG4gICQgJHtBUFBfTkFNRX0gYXV0aCBsb2dpblxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGxpc3QgLS1wcm9qZWN0IG15LWFwcFxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGdldCAtLWlkIHBpcGUtMTIzIC0tZm9ybWF0IGpzb25cbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBjcmVhdGUgLWYgcHJvcHMuanNvbiAtLWRlcGxveSAtLXByb2ZpbGUgcHJvZHVjdGlvblxuICAkICR7QVBQX05BTUV9IHRlbXBsYXRlIGluc3RhbnRpYXRlIC1uIHJlYWN0LWphdmFzY3JpcHQgLXAgcmVhY3QgLW8gYWNtZSAtLWlucHV0IG9yZ0lkPTx1dWlkPiAtLW91dHB1dCBwcm9wcy5qc29uXG4gICQgJHtBUFBfTkFNRX0gcGx1Z2luIHVwbG9hZCAtLWZpbGUgcGx1Z2luLnppcFxuICAkICR7QVBQX05BTUV9IGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBpbmZyYSBib290c3RyYXAgLS1hY2NvdW50IDEyMzQ1Njc4OTAxMiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBkZXBsb3kgLS1pZCBwaXBlLTEyMyAtLXByb2ZpbGUgcHJvZHVjdGlvblxuXG5FeGl0IGNvZGVzICgwID0gc3VjY2VzczsgZmFpbHVyZXMgdXNlIGEgc3RhbmRhcmQgY29kZSBieSBlcnJvciB0eXBlKTpcbiAgMSBnZW5lcmFsIMK3IDIgdmFsaWRhdGlvbiDCtyAzIGFwaS1yZXF1ZXN0IMK3IDQgYXV0aCDCtyA1IGZvcmJpZGRlblxuICA2IG5vdC1mb3VuZCDCtyA3IG5ldHdvcmsgwrcgOCBjb25maWcgwrcgOSBmaWxlLXN5c3RlbSDCtyAxMCB0aW1lb3V0XG5cblJ1biAnJHtBUFBfTkFNRX0gPGdyb3VwPiAtLWhlbHAnIHRvIHNlZSBhIGdyb3VwJ3Mgc3ViY29tbWFuZHMuXG5gO1xuXG4vKipcbiAqIFRhc2sgbmFtZXNwYWNlcyDigJQgY29tbWFuZHMgYXJlIGdyb3VwZWQgYnkgdGhlIGpvYiB0aGUgdXNlciBpcyBkb2luZywgbm90IGJ5XG4gKiBpbXBsZW1lbnRhdGlvbi4gRWFjaCBwYXJlbnQgaXMgYSBzdWJjb21tYW5kIGNvbnRhaW5lcjsgdGhlIGxlYWYgdmVyYiBsaXZlcyBpblxuICogdGhlIGNvbW1hbmQgZmlsZSAoZS5nLiBgLmNvbW1hbmQoJ2xpc3QnKWApLCBzbyBgcGlwZWxpbmUgbGlzdGAgcmVhZHMgYXMgYSB0YXNrLlxuICovXG5mdW5jdGlvbiByZWdpc3RlclRhc2tOYW1lc3BhY2VzKCk6IHZvaWQge1xuICBwcmludERlYnVnKCdSZWdpc3RlcmluZyB0YXNrIG5hbWVzcGFjZXMnKTtcblxuICAvLyBhdXRoIOKAlCBhdXRoZW50aWNhdGUgYW5kIG1hbmFnZSBjcmVkZW50aWFsc1xuICBjb25zdCBhdXRoID0gcHJvZ3JhbS5jb21tYW5kKCdhdXRoJykuZGVzY3JpcHRpb24oJ0F1dGhlbnRpY2F0ZSBhbmQgbWFuYWdlIGNyZWRlbnRpYWxzJyk7XG4gIGxvZ2luKGF1dGgpOyAvLyBhdXRoIGxvZ2luIOKAlCBicm93c2VyIChkZXZpY2UtYXV0aG9yaXphdGlvbikgc2lnbi1pbiwgc3RvcmVkIGxvY2FsbHlcbiAgY3JlYXRlUGF0KGF1dGgpOyAvLyBhdXRoIHBhdCDigJQgY3JlYXRlIGEgbmFtZWQgYWNjZXNzIGtleSAoZGV2aWNlIHNpZ24taW4gKyBicm93c2VyIHN0ZXAtdXApXG5cbiAgLy8gcGlwZWxpbmUg4oCUIGNyZWF0ZSwgaW5zcGVjdCwgYW5kIGRlcGxveSBwaXBlbGluZXNcbiAgY29uc3QgcGlwZWxpbmUgPSBwcm9ncmFtLmNvbW1hbmQoJ3BpcGVsaW5lJykuZGVzY3JpcHRpb24oJ0NyZWF0ZSwgaW5zcGVjdCwgYW5kIGRlcGxveSBwaXBlbGluZXMnKTtcbiAgY3JlYXRlUGlwZWxpbmUocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBjcmVhdGVcbiAgbGlzdFBpcGVsaW5lcyhwaXBlbGluZSk7IC8vIHBpcGVsaW5lIGxpc3RcbiAgZ2V0UGlwZWxpbmUocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBnZXRcbiAgcmVnaXN0ZXIocGlwZWxpbmUpOyAvLyBwaXBlbGluZSByZWdpc3RlciDigJQgcmUtcmVnaXN0ZXIgYSBkZXBsb3llZCBBUk4gKyBkcmFpbiBwZW5kaW5nIGludGVudHNcbiAgc3ludGgocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBzeW50aCDigJQgQ0RLIHN5bnRoZXNpcyBmcm9tIHBpcGVsaW5lIGNvbmZpZ1xuICBkZXBsb3kocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBkZXBsb3kg4oCUIENESyBkZXBsb3kgKC0tYXBwIHByaW50cyBib2lsZXJwbGF0ZSBwYXRoKVxuXG4gIC8vIHBsdWdpbiDigJQgYXV0aG9yLCB2YWxpZGF0ZSwgYW5kIHB1Ymxpc2ggcGx1Z2luc1xuICBjb25zdCBwbHVnaW4gPSBwcm9ncmFtLmNvbW1hbmQoJ3BsdWdpbicpLmRlc2NyaXB0aW9uKCdBdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zJyk7XG4gIG5ld1BsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4gbmV3IOKAlCBzY2FmZm9sZCBhIGxvY2FsIHBsdWdpbiBkaXJlY3RvcnlcbiAgdmFsaWRhdGVQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHZhbGlkYXRlIOKAlCB0aGUgc2VydmVyJ3Mgc2NoZW1hcyArIHRoZSBjYXRhbG9nLW1ldGFkYXRhIHJlcG9ydFxuICB0ZXN0UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiB0ZXN0IOKAlCBydW4gaW5zdGFsbCArIGJ1aWxkIGNvbW1hbmRzIGxvY2FsbHkgaW4gdGhlIGltYWdlXG4gIHB1Ymxpc2hQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHB1Ymxpc2gg4oCUIHByZS1mbGlnaHQsIHNjYW4gcHJldmlldywgYWNjZXB0LW9yLWVkaXQsIHB1Ymxpc2ggcmVxdWVzdFxuICB1cGxvYWRQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHVwbG9hZCDigJQgdXBsb2FkIGFuZCBkZXBsb3lcbiAgZ2V0UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBnZXRcbiAgbGlzdFBsdWdpbnMocGx1Z2luKTsgLy8gcGx1Z2luIGxpc3RcbiAgZGVwcmVjYXRlUGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBkZXByZWNhdGUg4oCUIGRlcHJlY2F0ZSAob3IgLS11bmRvKSBhIHZlcnNpb25cbiAgeWFua1BsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4geWFuayDigJQgc3RvcCBhIHZlcnNpb24gcmVzb2x2aW5nIGZvciBuZXcgc3ludGhzXG5cbiAgLy8gdGVtcGxhdGUg4oCUIGluc3RhbnRpYXRlIGdvbGRlbi1wYXRoIHBpcGVsaW5lIHRlbXBsYXRlcywgdmFsaWRhdGUge3sgLi4uIH19IHN5bnRheFxuICBjb25zdCB0ZW1wbGF0ZSA9IHByb2dyYW0uY29tbWFuZCgndGVtcGxhdGUnKS5kZXNjcmlwdGlvbignSW5zdGFudGlhdGUgcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gdGVtcGxhdGUgc3ludGF4Jyk7XG4gIGluc3RhbnRpYXRlVGVtcGxhdGUodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSBpbnN0YW50aWF0ZSDigJQgcmVuZGVyIGEgdGVtcGxhdGUgaW50byBwaXBlbGluZSBwcm9wc1xuICB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSB2YWxpZGF0ZVxuXG4gIC8vIGluZnJhIOKAlCBzZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmVcbiAgY29uc3QgaW5mcmEgPSBwcm9ncmFtLmNvbW1hbmQoJ2luZnJhJykuZGVzY3JpcHRpb24oJ1NldCB1cCBhbmQgb3BlcmF0ZSBwbGF0Zm9ybSBpbmZyYXN0cnVjdHVyZScpO1xuICBib290c3RyYXAoaW5mcmEpOyAvLyBpbmZyYSBib290c3RyYXAg4oCUIENESyB0b29sa2l0IHN0YWNrXG4gIHNldHVwRXZlbnRzKGluZnJhKTsgLy8gaW5mcmEgc2V0dXAtZXZlbnRzIOKAlCBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb25cbiAgcmVkcml2ZUV2ZW50cyhpbmZyYSk7IC8vIGluZnJhIHJlZHJpdmUtZXZlbnRzIOKAlCBtYW51YWwgRExRIOKGkiBxdWV1ZSByZWRyaXZlIGZhbGxiYWNrXG4gIHN0b3JlVG9rZW4oaW5mcmEpOyAvLyBpbmZyYSBzdG9yZS10b2tlbiDigJQgSldUIHRva2VuIGluIFNlY3JldHMgTWFuYWdlciBmb3IgQ0RLXG4gIHByb3Zpc2lvbihpbmZyYSk7IC8vIGluZnJhIHByb3Zpc2lvbiDigJQgQUktYXNzaXN0ZWQgZGVwbG95L3RlYXJkb3duIG9mIHRoZSBwbGF0Zm9ybVxuXG4gIC8vIGF1ZGl0IOKAlCBvcGVyYXRvciBhdWRpdHMgKGNyb24tZnJpZW5kbHk6IGV4aXQgMSBvbiBmaW5kaW5ncylcbiAgY29uc3QgYXVkaXQgPSBwcm9ncmFtLmNvbW1hbmQoJ2F1ZGl0JykuZGVzY3JpcHRpb24oJ09wZXJhdG9yIGF1ZGl0cyAoY3Jvbi1mcmllbmRseTogZXhpdCAxIG9uIGZpbmRpbmdzKScpO1xuICBhdWRpdFRva2VucyhhdWRpdCk7IC8vIGF1ZGl0IHRva2VucyDigJQgZXhwaXJpbmcgcGxhdGZvcm0gdG9rZW5zIGluIFNlY3JldHMgTWFuYWdlclxuICBhdWRpdFN0YWNrcyhhdWRpdCk7IC8vIGF1ZGl0IHN0YWNrcyDigJQgQ0ZOIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSBkcmlmdFxuXG4gIC8vIG9yZyDigJQgb3JnYW5pemF0aW9uIGRhdGEgb3BlcmF0aW9uc1xuICBjb25zdCBvcmcgPSBwcm9ncmFtLmNvbW1hbmQoJ29yZycpLmRlc2NyaXB0aW9uKCdPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zJyk7XG4gIG9yZ0V4cG9ydChvcmcpOyAvLyBvcmcgZXhwb3J0IOKAlCBHRFBSIHBvcnRhYmlsaXR5IGV4cG9ydFxuXG4gIC8vIHJlcG9ydCDigJQgdGhlIHN0YWtlaG9sZGVyLXJlcG9ydCBhZGQtb24uIFJlZ2lzdGVyZWQgYXMgaXRzIE9XTiBuYW1lc3BhY2UgcmF0aGVyIHRoYW5cbiAgLy8gdW5kZXIgYG9yZ2AsIGJlY2F1c2UgaXRzIHZlcmJzIGFyZSBhIGxlYWQncyB3b3JrZmxvdyAoY29tcG9zZSwgcHVibGlzaCwgc2hhcmUpLCBub3QgYW5cbiAgLy8gb3JnYW5pemF0aW9uLWRhdGEgb3BlcmF0aW9uLiBUaGUgdHdvIGpvYnMgdGhlIGRhc2hib2FyZCBpcyB0aGUgd3Jvbmcgc2hhcGUgZm9yIGFyZVxuICAvLyBiYWNrZmlsbGluZyBhIHJ1biBvZiBwYXN0IHBlcmlvZHMgYW5kIGRyaXZpbmcgYSBwdWJsaXNoIGZyb20gYW5vdGhlciBzY2hlZHVsZXIuXG4gIHJlcG9ydChwcm9ncmFtKTtcbn1cblxuLyoqIFByaW50IHNoZWxsIGNvbXBsZXRpb25zIGZvciBgc2hlbGxgIChiYXNoLCB6c2ggb3IgZmlzaCkuICovXG5mdW5jdGlvbiBwcmludENvbXBsZXRpb25zKHNoZWxsOiBzdHJpbmcpOiB2b2lkIHtcbiAgLy8gV2FsayBjb21tYW5kZXIncyByZWdpc3RlcmVkIHRyZWUgc28gY29tcGxldGlvbnMgbmV2ZXIgZHJpZnQgZnJvbSB0aGUgYWN0dWFsXG4gIC8vIHN1cmZhY2UuIGB0b3BMZXZlbGAgaXMgdGhlIGZpcnN0LXdvcmQgc2V0IChuYW1lc3BhY2VzICsgbWV0YSBjb21tYW5kcyk7XG4gIC8vIGBzdWJzYCBtYXBzIGVhY2ggbmFtZXNwYWNlIHRvIGl0cyBsZWFmIHZlcmJzIGZvciBzZWNvbmQtd29yZCBjb21wbGV0aW9uLlxuICBjb25zdCB0b3BMZXZlbCA9IHByb2dyYW0uY29tbWFuZHMubWFwKGMgPT4gYy5uYW1lKCkpLnNvcnQoKTtcbiAgY29uc3Qgc3ViczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gIGZvciAoY29uc3QgYyBvZiBwcm9ncmFtLmNvbW1hbmRzKSB7XG4gICAgaWYgKGMuY29tbWFuZHMubGVuZ3RoID4gMCkgc3Vic1tjLm5hbWUoKV0gPSBjLmNvbW1hbmRzLm1hcChzID0+IHMubmFtZSgpKS5zb3J0KCk7XG4gIH1cbiAgY29uc3QgdG9wTGV2ZWxTdHIgPSB0b3BMZXZlbC5qb2luKCcgJyk7XG4gIHN3aXRjaCAoc2hlbGwpIHtcbiAgICBjYXNlICdiYXNoJzoge1xuICAgICAgLy8gVHdvLWxldmVsOiBjb21wbGV0ZSB0aGUgZ3JvdXAgYXQgd29yZCAxLCBpdHMgc3ViY29tbWFuZHMgYXQgd29yZCAyLlxuICAgICAgY29uc3QgY2FzZXMgPSBPYmplY3QuZW50cmllcyhzdWJzKVxuICAgICAgICAubWFwKChbbnMsIGxlYXZlc10pID0+IGAgICAgICAke25zfSkgQ09NUFJFUExZPSgkKGNvbXBnZW4gLVcgXCIke2xlYXZlcy5qb2luKCcgJyl9XCIgLS0gXCJcXCR7Y3VyfVwiKSk7O2ApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgYmFzaCBjb21wbGV0aW9uc1xuX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMoKSB7XG4gIGxvY2FsIGN1cj1cIlxcJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfVwiXG4gIGlmIFsgXCJcXCR7Q09NUF9DV09SRH1cIiAtZXEgMSBdOyB0aGVuXG5DT01QUkVQTFk9KCQoY29tcGdlbiAtVyBcIiR7dG9wTGV2ZWxTdHJ9XCIgLS0gXCJcXCR7Y3VyfVwiKSlcbnJldHVyblxuICBmaVxuICBjYXNlIFwiXFwke0NPTVBfV09SRFNbMV19XCIgaW5cbiR7Y2FzZXN9XG4gIGVzYWNcbn1cbmNvbXBsZXRlIC1GIF9waXBlbGluZV9tYW5hZ2VyX2NvbXBsZXRpb25zIHBpcGVsaW5lLW1hbmFnZXJgKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd6c2gnOiB7XG4gICAgICBjb25zdCBjYXNlcyA9IE9iamVjdC5lbnRyaWVzKHN1YnMpXG4gICAgICAgIC5tYXAoKFtucywgbGVhdmVzXSkgPT4gYCAgICAgICAgJHtuc30pIF92YWx1ZXMgJ3N1YmNvbW1hbmQnICR7bGVhdmVzLmpvaW4oJyAnKX07O2ApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgenNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcigpIHtcbiAgaWYgKCggQ1VSUkVOVCA9PSAyICkpOyB0aGVuXG5fdmFsdWVzICdjb21tYW5kJyAke3RvcExldmVsLmpvaW4oJyAnKX1cbnJldHVyblxuICBmaVxuICBjYXNlIFwiXFwke3dvcmRzWzJdfVwiIGluXG4ke2Nhc2VzfVxuICBlc2FjXG59XG5jb21wZGVmIF9waXBlbGluZV9tYW5hZ2VyIHBpcGVsaW5lLW1hbmFnZXJgKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdmaXNoJzoge1xuICAgICAgY29uc3QgbGluZXMgPSBbXG4gICAgICAgIGBjb21wbGV0ZSAtYyBwaXBlbGluZS1tYW5hZ2VyIC1uICdfX2Zpc2hfdXNlX3N1YmNvbW1hbmQnIC1hICcke3RvcExldmVsU3RyfSdgLFxuICAgICAgICAuLi5PYmplY3QuZW50cmllcyhzdWJzKS5tYXAoKFtucywgbGVhdmVzXSkgPT5cbiAgICAgICAgICBgY29tcGxldGUgLWMgcGlwZWxpbmUtbWFuYWdlciAtbiAnX19maXNoX3NlZW5fc3ViY29tbWFuZF9mcm9tICR7bnN9JyAtYSAnJHtsZWF2ZXMuam9pbignICcpfSdgKSxcbiAgICAgIF07XG4gICAgICBjb25zb2xlLmxvZyhgIyBwaXBlbGluZS1tYW5hZ2VyIGZpc2ggY29tcGxldGlvbnNcXG4ke2xpbmVzLmpvaW4oJ1xcbicpfWApO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIHNoZWxsOiAke3NoZWxsfS4gVXNlIGJhc2gsIHpzaCwgb3IgZmlzaC5gKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGFsbCBDTEkgY29tbWFuZHNcbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJDb21tYW5kcygpOiB2b2lkIHtcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tbWFuZHMnKTtcblxuICAvLyBDb25maWd1cmUgcHJvZ3JhbVxuICBwcm9ncmFtXG4gICAgLm5hbWUoQVBQX05BTUUpXG4gICAgLmRlc2NyaXB0aW9uKEFQUF9ERVNDUklQVElPTilcbiAgICAudmVyc2lvbihBUFBfVkVSU0lPTiwgJy12LCAtLXZlcnNpb24nLCAnU2hvdyBDTEkgdmVyc2lvbicpXG4gICAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgZGVidWcgb3V0cHV0IHdpdGggc3RhY2sgdHJhY2VzJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgZGV0YWlsZWQgaW5mb3JtYXRpb24nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ01pbmltYWwgb3V0cHV0IChlcnJvcnMgb25seSknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ0Rpc2FibGUgY29sb3JlZCBvdXRwdXQnLCBmYWxzZSlcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyJywgSEVMUF9URVhUKTtcblxuICAvLyBGYWlsLWZhc3QgcHJlZmxpZ2h0OiBiZWZvcmUgQU5ZIGNvbW1hbmQncyBhY3Rpb24gcnVucywgdmVyaWZ5IHRoZSBsb2NhbFxuICAvLyB0b29scyB0aGF0IGNvbW1hbmQgbmVlZHMuIENvbW1hbmRlciBza2lwcyB0aGlzIGZvciAtLWhlbHAvLS12ZXJzaW9uIGFuZCBmb3JcbiAgLy8gaGVscCBvdXRwdXQsIHNvIHRob3NlIGFsd2F5cyB3b3JrOyBBUEktb25seSBjb21tYW5kcyBkZWNsYXJlIG5vIHJlcXVpcmVtZW50c1xuICAvLyBhbmQgcGFzcyB0aHJvdWdoIHVudG91Y2hlZC5cbiAgcHJvZ3JhbS5ob29rKCdwcmVBY3Rpb24nLCAoX3RoaXNDb21tYW5kLCBhY3Rpb25Db21tYW5kKSA9PiBwcmVmbGlnaHRDb21tYW5kVG9vbHMoYWN0aW9uQ29tbWFuZCkpO1xuXG4gIC8vIFRvcC1sZXZlbCBtZXRhIGNvbW1hbmRzIChubyBuYW1lc3BhY2UpLlxuICB2ZXJzaW9uKHByb2dyYW0pO1xuICBzdGF0dXMocHJvZ3JhbSk7IC8vIFNob3cgZW52aXJvbm1lbnQgYW5kIGNvbm5lY3Rpdml0eSBzdGF0dXNcblxuICByZWdpc3RlclRhc2tOYW1lc3BhY2VzKCk7XG5cbiAgLy8gU2hlbGwgY29tcGxldGlvbnNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tcGxldGlvbnMgY29tbWFuZCcpO1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbXBsZXRpb25zJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHNoZWxsIGNvbXBsZXRpb25zIChiYXNoLCB6c2gsIGZpc2gpJylcbiAgICAuYXJndW1lbnQoJzxzaGVsbD4nLCAnU2hlbGwgdHlwZTogYmFzaCwgenNoLCBvciBmaXNoJylcbiAgICAuYWN0aW9uKChzaGVsbDogc3RyaW5nKSA9PiB7XG4gICAgICBwcmludENvbXBsZXRpb25zKHNoZWxsKTtcbiAgICB9KTtcblxuICBwcmludERlYnVnKCdBbGwgY29tbWFuZHMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgcHJvZ3JhbSBlcnJvcnNcbiAqL1xuZnVuY3Rpb24gc2V0dXBFcnJvckhhbmRsZXJzKCk6IHZvaWQge1xuICAvLyBIYW5kbGUgdW5jYXVnaHQgZXhjZXB0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuY2F1Z2h0IGV4Y2VwdGlvbicsIHtcbiAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ3VuY2F1Z2h0RXhjZXB0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChyZWFzb246IHVua25vd24pID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHtcbiAgICAgIHJlYXNvbjogZXJyb3JNZXNzYWdlKHJlYXNvbiksXG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvciA9IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uOiBuZXcgRXJyb3IoU3RyaW5nKHJlYXNvbikpO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5oYW5kbGVkUmVqZWN0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdJTlQgKEN0cmwrQylcbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50V2FybmluZygnUHJvY2VzcyBpbnRlcnJ1cHRlZCBieSB1c2VyIChTSUdJTlQpJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDEzMCk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHSU5UXG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdURVJNXG4gIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIHRlcm1pbmF0ZWQgKFNJR1RFUk0pJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDE0Myk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHVEVSTVxuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIENMSSB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ2xpKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgc2hvd0Jhbm5lciA9IHRydWUsXG4gICAgbWluaW1hbEJhbm5lciA9IGZhbHNlLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICAgbm9Db2xvciA9IGZhbHNlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBIYW5kbGUgY29sb3Igb3V0cHV0XG4gIGlmIChub0NvbG9yKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPSAnMSc7XG4gIH1cblxuICAvLyBEaXNwbGF5IGJhbm5lclxuICBpZiAoc2hvd0Jhbm5lciAmJiAhcXVpZXQpIHtcbiAgICBpZiAobWluaW1hbEJhbm5lcikge1xuICAgICAgbWluaUJhbm5lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYW5uZXIoe1xuICAgICAgICBtaW5pbWFsOiBmYWxzZSxcbiAgICAgICAgc2hvd0Rlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBzaG93VGltZXN0YW1wOiBkZWJ1ZyB8fCB2ZXJib3NlLFxuICAgICAgICBzaG93RXhlY3V0aW9uSWQ6IGRlYnVnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzcGxheSBzdGFydHVwIGluZm9cbiAgZGlzcGxheVN0YXJ0dXBJbmZvKHsgZGVidWcsIHZlcmJvc2UsIHF1aWV0IH0pO1xuXG4gIC8vIENoZWNrIGVudmlyb25tZW50XG4gIGlmICghcXVpZXQpIHtcbiAgICBjaGVja0Vudmlyb25tZW50KCk7XG4gIH1cblxuICAvLyBTZXR1cCBlcnJvciBoYW5kbGVyc1xuICBzZXR1cEVycm9ySGFuZGxlcnMoKTtcblxuICAvLyBSZWdpc3RlciBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlZ2lzdGVyQ29tbWFuZHMoKTtcbiAgICBwcmludERlYnVnKCdDTEkgaW5pdGlhbGl6YXRpb24gY29tcGxldGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKCdDTEkgaW5pdGlhbGl6YXRpb24gZmFpbGVkJywge1xuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQ09ORklHVVJBVElPTiwge1xuICAgICAgZGVidWc6IGRlYnVnIHx8IGlzRGVidWdNb2RlKCksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ2luaXRpYWxpemF0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzKCk6IHZvaWQge1xuICB0cnkge1xuICAgIHByb2dyYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuICAgIC8vIFNob3cgaGVscCBpZiBubyBjb21tYW5kIHByb3ZpZGVkXG4gICAgY29uc3QgYXJncyA9IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHByaW50SW5mbygnTm8gY29tbWFuZCBzcGVjaWZpZWQgLSBkaXNwbGF5aW5nIGhlbHAnKTtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgcHJvZ3JhbS5vdXRwdXRIZWxwKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY29tbWFuZCBleGlzdHNcbiAgICBjb25zdCBjb21tYW5kID0gYXJnc1swXTtcbiAgICBpZiAoY29tbWFuZCAmJiAhY29tbWFuZC5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmRFeGlzdHMgPSBwcm9ncmFtLmNvbW1hbmRzLnNvbWUoY21kID0+IGNtZC5uYW1lKCkgPT09IGNvbW1hbmQpO1xuXG4gICAgICBpZiAoIWNvbW1hbmRFeGlzdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50RXJyb3IoYFVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgICAgcHJpbnRJbmZvKCdBdmFpbGFibGUgY29tbWFuZHM6Jyk7XG4gICAgICAgIHByb2dyYW0uY29tbWFuZHMuZm9yRWFjaChjbWQgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAg4oCiICR7Y21kLm5hbWUoKX0gLSAke2NtZC5kZXNjcmlwdGlvbigpfWApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmludERlYnVnKCdDb21tYW5kIGxpbmUgYXJndW1lbnRzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnYXJndW1lbnQtcGFyc2luZycsXG4gICAgICAgIGFyZ3Y6IHByb2Nlc3MuYXJndixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBNYWluIENMSSBlbnRyeSBwb2ludFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gU3RhbmRhcmQgaW5pdGlhbGl6YXRpb25cbiAqIG1haW4oKTtcbiAqXG4gKiAvLyBNaW5pbWFsIG1vZGVcbiAqIG1haW4oeyBtaW5pbWFsQmFubmVyOiB0cnVlLCBxdWlldDogdHJ1ZSB9KTtcbiAqXG4gKiAvLyBEZWJ1ZyBtb2RlXG4gKiBtYWluKHsgZGVidWc6IHRydWUsIHZlcmJvc2U6IHRydWUgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1haW4ob3B0aW9uczogQ2xpT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIHRyeSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBDTElcbiAgICBpbml0aWFsaXplQ2xpKG9wdGlvbnMpO1xuXG4gICAgLy8gUGFyc2UgYXJndW1lbnRzIGFuZCBleGVjdXRlIGNvbW1hbmRcbiAgICBwYXJzZUFyZ3VtZW50cygpO1xuXG4gICAgLy8gSWYgd2UgcmVhY2ggaGVyZSwgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgcHJpbnREZWJ1ZygnQ0xJIGV4ZWN1dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gRmluYWwgY2F0Y2gtYWxsIGVycm9yIGhhbmRsZXJcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ0ZhdGFsIENMSSBlcnJvcicsIHtcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShvcHRpb25zKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHN0YWdlOiAnbWFpbicsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUnVuIENMSSBpZiBleGVjdXRlZCBkaXJlY3RseS4gRVNNIGhhcyBubyBgcmVxdWlyZS5tYWluYDsgY29tcGFyZSB0aGUgaW52b2tlZFxuICogc2NyaXB0IHRvIHRoaXMgbW9kdWxlJ3MgcGF0aCwgcmVzb2x2aW5nIHN5bWxpbmtzIG9uIGJvdGggc2lkZXMgc28gdGhlIGBiaW5gXG4gKiBzeW1saW5rIChub2RlX21vZHVsZXMvLmJpbi9waXBlbGluZS1tYW5hZ2VyIOKGkiBkaXN0L2NsaS5qcykgc3RpbGwgbWF0Y2hlcy5cbiAqL1xuY29uc3QgaW52b2tlZFNjcmlwdCA9IHByb2Nlc3MuYXJndlsxXTtcbmNvbnN0IGlzTWFpbk1vZHVsZSA9IGludm9rZWRTY3JpcHQgIT09IHVuZGVmaW5lZFxuICAmJiByZWFscGF0aFN5bmMoaW52b2tlZFNjcmlwdCkgPT09IHJlYWxwYXRoU3luYyhmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuaWYgKGlzTWFpbk1vZHVsZSkge1xuICAvLyBQYXJzZSBDTEkgb3B0aW9ucyBmcm9tIGVudmlyb25tZW50IG9yIGNvbW1hbmQgbGluZVxuICBjb25zdCBvcHRpb25zOiBDbGlPcHRpb25zID0ge1xuICAgIGRlYnVnOiBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnLFxuICAgIC8vIGAtLXRva2VuYCBwcmludHMgYSBiYXJlIHRva2VuIGZvciBgJCjigKYpYCBjYXB0dXJlLCBzbyB0aGUgYmFubmVyIGFuZCB0aGVcbiAgICAvLyBzdGFydHVwIGNocm9tZSBtdXN0IG5vdCByZWFjaCBzdGRvdXQgZWl0aGVyLiBTY2FubmVkIGZyb20gYXJndiBsaWtlXG4gICAgLy8gYC0tcXVpZXRgIGlzLCBiZWNhdXNlIHRoaXMgcnVucyBCRUZPUkUgQ29tbWFuZGVyIHBhcnNlcy5cbiAgICBxdWlldDogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXF1aWV0JykgfHwgcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXRva2VuJyksXG4gICAgdmVyYm9zZTogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXZlcmJvc2UnKSxcbiAgICBub0NvbG9yOiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tbm8tY29sb3InKSB8fCBwcm9jZXNzLmVudi5OT19DT0xPUiA9PT0gJzEnLFxuICB9O1xuXG4gIG1haW4ob3B0aW9ucyk7XG59Il19
@@ -1 +1 @@
1
- {"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsPpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0HrD"}
1
+ {"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgbpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIrD"}