@pipeline-builder/pipeline-manager 4.4.6 → 4.4.8

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.
Files changed (64) hide show
  1. package/dist/agent/ai.d.ts +11 -0
  2. package/dist/agent/ai.d.ts.map +1 -1
  3. package/dist/agent/ai.js +47 -4
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +9 -2
  6. package/dist/commands/create-pat.d.ts.map +1 -1
  7. package/dist/commands/create-pat.js +3 -1
  8. package/dist/commands/create-pipeline.d.ts.map +1 -1
  9. package/dist/commands/create-pipeline.js +11 -2
  10. package/dist/commands/deploy.d.ts.map +1 -1
  11. package/dist/commands/deploy.js +20 -2
  12. package/dist/commands/report.js +4 -4
  13. package/dist/commands/security-report.d.ts +42 -0
  14. package/dist/commands/security-report.d.ts.map +1 -0
  15. package/dist/commands/security-report.js +89 -0
  16. package/dist/commands/setup-events.d.ts.map +1 -1
  17. package/dist/commands/setup-events.js +14 -1
  18. package/dist/commands/store-token.d.ts +1 -0
  19. package/dist/commands/store-token.d.ts.map +1 -1
  20. package/dist/commands/store-token.js +45 -19
  21. package/dist/commands/synth.d.ts +7 -1
  22. package/dist/commands/synth.d.ts.map +1 -1
  23. package/dist/commands/synth.js +66 -4
  24. package/dist/commands/verify-plugins.d.ts +45 -0
  25. package/dist/commands/verify-plugins.d.ts.map +1 -0
  26. package/dist/commands/verify-plugins.js +134 -0
  27. package/dist/lambda/token-renew-handler.d.ts +3 -1
  28. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  29. package/dist/lambda/token-renew-handler.js +31 -5
  30. package/dist/templates/events-stack.json +10 -0
  31. package/dist/utils/api-client.d.ts.map +1 -1
  32. package/dist/utils/api-client.js +20 -3
  33. package/dist/utils/auth-utils.d.ts.map +1 -1
  34. package/dist/utils/auth-utils.js +3 -1
  35. package/dist/utils/cdk-utils.js +2 -2
  36. package/dist/utils/command-utils.d.ts.map +1 -1
  37. package/dist/utils/command-utils.js +5 -2
  38. package/dist/utils/config-loader.d.ts.map +1 -1
  39. package/dist/utils/config-loader.js +9 -4
  40. package/dist/utils/deploy-runner.d.ts +25 -0
  41. package/dist/utils/deploy-runner.d.ts.map +1 -1
  42. package/dist/utils/deploy-runner.js +34 -5
  43. package/dist/utils/device-auth.d.ts.map +1 -1
  44. package/dist/utils/device-auth.js +4 -3
  45. package/dist/utils/error-handler.d.ts.map +1 -1
  46. package/dist/utils/error-handler.js +8 -1
  47. package/dist/utils/pipeline-config.d.ts +3 -0
  48. package/dist/utils/pipeline-config.d.ts.map +1 -1
  49. package/dist/utils/pipeline-config.js +4 -3
  50. package/dist/utils/platform-secret.d.ts.map +1 -1
  51. package/dist/utils/platform-secret.js +3 -1
  52. package/dist/utils/plugin-resolver.d.ts +41 -3
  53. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  54. package/dist/utils/plugin-resolver.js +125 -21
  55. package/dist/utils/registration-client.d.ts +28 -0
  56. package/dist/utils/registration-client.d.ts.map +1 -0
  57. package/dist/utils/registration-client.js +57 -0
  58. package/dist/utils/request-context.d.ts +11 -0
  59. package/dist/utils/request-context.d.ts.map +1 -0
  60. package/dist/utils/request-context.js +62 -0
  61. package/dist/utils/service-account.d.ts +6 -4
  62. package/dist/utils/service-account.d.ts.map +1 -1
  63. package/dist/utils/service-account.js +14 -9
  64. package/package.json +6 -5
@@ -95,7 +95,7 @@ export function ensureBundlerAvailable() {
95
95
  console.log('fails with: Could not resolve "axios" / "../config/handler-constants.js".');
96
96
  console.log('');
97
97
  console.log('Install with:');
98
- console.log(' npm install -g esbuild@0.28.1 pnpm@10.33.0');
98
+ console.log(' npm install -g esbuild@0.28.1 pnpm@12.14.0');
99
99
  console.log('');
100
100
  console.log('Docs: pipeline-manager.md#prerequisites-for-local-pipeline-deploys');
101
101
  console.log('(Set SKIP_BUNDLER_CHECK=1 to bypass this check.)');
@@ -149,4 +149,4 @@ export function executeCdkShellCommand(command, options = {}) {
149
149
  throw error;
150
150
  }
151
151
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBUUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVksRUFBRSxVQUFVLEdBQUcsV0FBVztJQUNoRSxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNwQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsVUFB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QUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUGF0aCB0byBkaXN0L2JvaWxlcnBsYXRlLmpzLiB0c2MgZW1pdHMgY29tbWFuZHMgYXQgZGlzdC9jb21tYW5kcy8sIHNvXG4gKiBib2lsZXJwbGF0ZSBpcyBvbmUgbGV2ZWwgdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9pbGVycGxhdGVQYXRoKGNhbGxlckRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihjYWxsZXJEaXIsICcuLicsICdib2lsZXJwbGF0ZS5qcycpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0luZm8ge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgQ0xJIHRvb2wgaXMgaW5zdGFsbGVkIGFuZCByZXR1cm5zIGl0cyB2ZXJzaW9uIG91dHB1dC5cbiAqXG4gKiBUcmllcyBgPHRvb2w+IDx2ZXJzaW9uQXJnPmAgZmlyc3QuIElmIHRoYXQgZmFpbHMgKHR5cGljYWxseSBiZWNhdXNlIHRoZSB0b29sXG4gKiBpcyBvbiBQQVRIIHZpYSB0aGUgdXNlcidzIHNoZWxsIHJjIGJ1dCBleGVjU3luYydzIGRlZmF1bHQgYC9iaW4vc2hgIGRvZXNuJ3RcbiAqIHNvdXJjZSBpdCksIGZhbGxzIGJhY2sgdG8gcnVubmluZyB0aHJvdWdoIHRoZSB1c2VyJ3MgbG9naW4raW50ZXJhY3RpdmUgc2hlbGxcbiAqIChgJFNIRUxMIC1pbGNgKSBzbyBub2RlIHZlcnNpb24gbWFuYWdlcnMgbGlrZSBudm0vYXNkZiBhbmQgaG9tZWJyZXcgcGF0aHNcbiAqIGJlY29tZSB2aXNpYmxlLiBzdGRpbiBpcyBpZ25vcmVkIHNvIGFuIGludGVyYWN0aXZlIHNoZWxsIGNhbid0IGJsb2NrIG9uIGlucHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbEluZm8odG9vbDogc3RyaW5nLCB2ZXJzaW9uQXJnID0gJy0tdmVyc2lvbicpOiBDZGtJbmZvIHtcbiAgY29uc3QgY21kID0gYCR7dG9vbH0gJHt2ZXJzaW9uQXJnfWA7XG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoY21kLCB7IGVuY29kaW5nOiAndXRmLTgnLCBzdGRpbzogJ3BpcGUnIH0pO1xuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICB9IGNhdGNoIChmaXJzdEVycm9yKSB7XG4gICAgY29uc3QgdXNlclNoZWxsID0gcHJvY2Vzcy5lbnYuU0hFTEw7XG4gICAgaWYgKHVzZXJTaGVsbCAmJiAhdXNlclNoZWxsLmVuZHNXaXRoKCcvc2gnKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoYCR7dXNlclNoZWxsfSAtaWxjICcke2NtZH0nYCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZTogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgZXJyb3I6IGZpcnN0RXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZpcnN0RXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgcmV0dXJucyBpdHMgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENka0luZm8oKTogQ2RrSW5mbyB7XG4gIHJldHVybiBnZXRUb29sSW5mbygnY2RrJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgYWNjZXNzaWJsZSBvbiB0aGUgUEFUSC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2RrQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0Q2RrSW5mbygpLmF2YWlsYWJsZTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZDsgdGhyb3dzIHdpdGggYSB1c2VyLWZyaWVuZGx5XG4gKiBtZXNzYWdlICsgaW5zdGFsbCBoaW50IHdoZW4gaXQgaXNuJ3QuIFVzZSBhdCB0aGUgdG9wIG9mIGFueSBjb21tYW5kIHRoYXRcbiAqIHNoZWxscyBvdXQgdG8gYGNka2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVDZGtBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChjaGVja0Nka0F2YWlsYWJsZSgpKSByZXR1cm47XG4gIHByaW50RXJyb3IoJ0FXUyBDREsgaXMgbm90IGluc3RhbGxlZCBvciBub3QgYWNjZXNzaWJsZScpO1xuICBjb25zb2xlLmxvZygnSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBDREsgbm90IGZvdW5kJyk7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBsb2NhbCB0b29sY2hhaW4gQ0RLIG5lZWRzIHRvIGJ1bmRsZSB0aGUgUGx1Z2luTG9va3VwIExhbWJkYVxuICogaXMgcHJlc2VudC4gU3ludGggYnVpbGRzIHRoYXQgTGFtYmRhIHZpYSBgTm9kZWpzRnVuY3Rpb25gIChlc2J1aWxkKTsgd2hlblxuICogZXNidWlsZCBpc24ndCBvbiBQQVRILCBDREsgc2lsZW50bHkgZmFsbHMgYmFjayB0byAqKkRvY2tlciBidW5kbGluZyoqLCB3aGljaFxuICogY2FuJ3QgcmVzb2x2ZSB0aGUgaGFuZGxlcidzIGNyb3NzLWRpcmVjdG9yeSBpbXBvcnRzIGFuZCBkaWVzIHdpdGggYW4gb3BhcXVlXG4gKiBgQ291bGQgbm90IHJlc29sdmUgXCJheGlvc1wiYCAvIGBcIi4uL2NvbmZpZy9oYW5kbGVyLWNvbnN0YW50cy5qc1wiYC4gcG5wbSBpcyBhbHNvXG4gKiByZXF1aXJlZCBiZWNhdXNlIHRoZSBoYW5kbGVyJ3MgbG9ja2ZpbGUgaXMgYHBucG0tbG9jay55YW1sYCwgc28gQ0RLIGRyaXZlc1xuICogZXNidWlsZCB0aHJvdWdoIHBucG0uIEZhaWwgZmFzdCBoZXJlIHdpdGggdGhlIGZpeCBpbnN0ZWFkIG9mIGRlZXAgaW4gYSBidW5kbGUuXG4gKlxuICogQnlwYXNzIHdpdGggYFNLSVBfQlVORExFUl9DSEVDSz0xYCAoZS5nLiBhbiBlbnZpcm9ubWVudCB0aGF0IGludGVudGlvbmFsbHlcbiAqIGJ1bmRsZXMgaW4gRG9ja2VyIHdpdGggYSB3b3JraW5nIG1vdW50IHNjb3BlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUJ1bmRsZXJBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChwcm9jZXNzLmVudi5TS0lQX0JVTkRMRVJfQ0hFQ0sgPT09ICcxJykgcmV0dXJuO1xuXG4gIGNvbnN0IG1pc3NpbmcgPSBbJ2VzYnVpbGQnLCAncG5wbSddLmZpbHRlcigodG9vbCkgPT4gIWdldFRvb2xJbmZvKHRvb2wpLmF2YWlsYWJsZSk7XG4gIGlmIChtaXNzaW5nLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gIHByaW50RXJyb3IoYE1pc3NpbmcgbG9jYWwgYnVuZGxpbmcgcHJlcmVxdWlzaXRlJHttaXNzaW5nLmxlbmd0aCA+IDEgPyAncycgOiAnJ306ICR7bWlzc2luZy5qb2luKCcsICcpfWApO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdTeW50aCBidW5kbGVzIHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhIHZpYSBlc2J1aWxkIChDREsgTm9kZWpzRnVuY3Rpb24pLicpO1xuICBjb25zb2xlLmxvZygnV2l0aG91dCBlc2J1aWxkICsgcG5wbSBvbiBQQVRILCBDREsgZmFsbHMgYmFjayB0byBEb2NrZXIgYnVuZGxpbmcsIHdoaWNoJyk7XG4gIGNvbnNvbGUubG9nKCdmYWlscyB3aXRoOiBDb3VsZCBub3QgcmVzb2x2ZSBcImF4aW9zXCIgLyBcIi4uL2NvbmZpZy9oYW5kbGVyLWNvbnN0YW50cy5qc1wiLicpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdJbnN0YWxsIHdpdGg6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBpbnN0YWxsIC1nIGVzYnVpbGRAMC4yOC4xIHBucG1AMTAuMzMuMCcpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdEb2NzOiBwaXBlbGluZS1tYW5hZ2VyLm1kI3ByZXJlcXVpc2l0ZXMtZm9yLWxvY2FsLXBpcGVsaW5lLWRlcGxveXMnKTtcbiAgY29uc29sZS5sb2coJyhTZXQgU0tJUF9CVU5ETEVSX0NIRUNLPTEgdG8gYnlwYXNzIHRoaXMgY2hlY2suKScpO1xuICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgYnVuZGxlciBwcmVyZXF1aXNpdGVzOiAke21pc3Npbmcuam9pbignLCAnKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBDREsgc2hlbGwgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtTaGVsbE9wdGlvbnMge1xuICAvKiogV2hlbiBgdHJ1ZWAsIHByaW50cyB0aGUgZXJyb3IgdG8gc3RkZXJyIG9uIGZhaWx1cmUuICovXG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqIFdoZW4gYHRydWVgLCBpbmhlcml0cyBzdGRpbyBzbyBvdXRwdXQgc3RyZWFtcyB0byB0aGUgdGVybWluYWwuIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgc2hvd091dHB1dD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBpbmplY3QuICovXG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgQ0RLIHNoZWxsIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1NoZWxsUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIENESyBDTEkgY29tbWFuZCBhcyBhIGNoaWxkIHByb2Nlc3MuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgZnVsbCBDREsgQ0xJIGNvbW1hbmQgc3RyaW5nIChlLmcuLCBgY2RrIGJvb3RzdHJhcCAuLi5gKS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZXhlY3V0aW9uIHNldHRpbmdzLlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggYHN1Y2Nlc3NgIGFuZCBgZHVyYXRpb25gIGluIG1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBvcHRpb25zOiBDZGtTaGVsbE9wdGlvbnMgPSB7fSxcbik6IENka1NoZWxsUmVzdWx0IHtcbiAgY29uc3QgeyBkZWJ1ZyA9IGZhbHNlLCBzaG93T3V0cHV0ID0gdHJ1ZSwgZW52OiBleHRyYUVudiB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGVudiA9IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgLi4uZXh0cmFFbnYsXG4gICAgfTtcblxuICAgIGV4ZWNTeW5jKGNvbW1hbmQsIHtcbiAgICAgIHN0ZGlvOiBzaG93T3V0cHV0ID8gWydpbmhlcml0JywgJ2luaGVyaXQnLCAncGlwZSddIDogJ3BpcGUnLFxuICAgICAgZW52LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBkdXJhdGlvbixcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIC8vIEV4dHJhY3Qgc3RkZXJyL3N0ZG91dCBmcm9tIGV4ZWNTeW5jIGVycm9yIHdoZW4gYXZhaWxhYmxlXG4gICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ3N0ZGVycicgaW4gZXJyb3IpIHtcbiAgICAgIGNvbnN0IGV4ZWNFcnJvciA9IGVycm9yIGFzIHsgc3RkZXJyPzogQnVmZmVyIHwgc3RyaW5nOyBzdGRvdXQ/OiBCdWZmZXIgfCBzdHJpbmc7IHN0YXR1cz86IG51bWJlciB9O1xuICAgICAgY29uc3Qgc3RkZXJyID0gZXhlY0Vycm9yLnN0ZGVycj8udG9TdHJpbmcoKS50cmltKCk7XG4gICAgICBjb25zdCBzdGRvdXQgPSBleGVjRXJyb3Iuc3Rkb3V0Py50b1N0cmluZygpLnRyaW0oKTtcblxuICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICBjb25zb2xlLmVycm9yKCdDREsgZGVwbG95bWVudCBmYWlsZWQ6Jyk7XG4gICAgICBpZiAoc3RkZXJyKSBjb25zb2xlLmVycm9yKHN0ZGVycik7XG4gICAgICBpZiAoc3Rkb3V0KSBjb25zb2xlLmVycm9yKHN0ZG91dCk7XG4gICAgICBpZiAoZXhlY0Vycm9yLnN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEV4aXQgY29kZTogJHtleGVjRXJyb3Iuc3RhdHVzfSAoYWZ0ZXIgJHtkdXJhdGlvbn1tcylgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDREsgZXhlY3V0aW9uIGZhaWxlZDonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Nkay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBUUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVksRUFBRSxVQUFVLEdBQUcsV0FBVztJQUNoRSxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNwQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLFNBQVMsVUFB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QUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxNQUFNO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsU0FBUyxDQUFDLE1BQU0sV0FBVyxRQUFRLEtBQUssQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKlxuICogUGF0aCB0byBkaXN0L2JvaWxlcnBsYXRlLmpzLiB0c2MgZW1pdHMgY29tbWFuZHMgYXQgZGlzdC9jb21tYW5kcy8sIHNvXG4gKiBib2lsZXJwbGF0ZSBpcyBvbmUgbGV2ZWwgdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQm9pbGVycGxhdGVQYXRoKGNhbGxlckRpcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihjYWxsZXJEaXIsICcuLicsICdib2lsZXJwbGF0ZS5qcycpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENka0luZm8ge1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgQ0xJIHRvb2wgaXMgaW5zdGFsbGVkIGFuZCByZXR1cm5zIGl0cyB2ZXJzaW9uIG91dHB1dC5cbiAqXG4gKiBUcmllcyBgPHRvb2w+IDx2ZXJzaW9uQXJnPmAgZmlyc3QuIElmIHRoYXQgZmFpbHMgKHR5cGljYWxseSBiZWNhdXNlIHRoZSB0b29sXG4gKiBpcyBvbiBQQVRIIHZpYSB0aGUgdXNlcidzIHNoZWxsIHJjIGJ1dCBleGVjU3luYydzIGRlZmF1bHQgYC9iaW4vc2hgIGRvZXNuJ3RcbiAqIHNvdXJjZSBpdCksIGZhbGxzIGJhY2sgdG8gcnVubmluZyB0aHJvdWdoIHRoZSB1c2VyJ3MgbG9naW4raW50ZXJhY3RpdmUgc2hlbGxcbiAqIChgJFNIRUxMIC1pbGNgKSBzbyBub2RlIHZlcnNpb24gbWFuYWdlcnMgbGlrZSBudm0vYXNkZiBhbmQgaG9tZWJyZXcgcGF0aHNcbiAqIGJlY29tZSB2aXNpYmxlLiBzdGRpbiBpcyBpZ25vcmVkIHNvIGFuIGludGVyYWN0aXZlIHNoZWxsIGNhbid0IGJsb2NrIG9uIGlucHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbEluZm8odG9vbDogc3RyaW5nLCB2ZXJzaW9uQXJnID0gJy0tdmVyc2lvbicpOiBDZGtJbmZvIHtcbiAgY29uc3QgY21kID0gYCR7dG9vbH0gJHt2ZXJzaW9uQXJnfWA7XG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoY21kLCB7IGVuY29kaW5nOiAndXRmLTgnLCBzdGRpbzogJ3BpcGUnIH0pO1xuICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICB9IGNhdGNoIChmaXJzdEVycm9yKSB7XG4gICAgY29uc3QgdXNlclNoZWxsID0gcHJvY2Vzcy5lbnYuU0hFTEw7XG4gICAgaWYgKHVzZXJTaGVsbCAmJiAhdXNlclNoZWxsLmVuZHNXaXRoKCcvc2gnKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZXhlY1N5bmMoYCR7dXNlclNoZWxsfSAtaWxjICcke2NtZH0nYCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGF2YWlsYWJsZTogdHJ1ZSwgdmVyc2lvbjogb3V0cHV0LnRyaW0oKSB9O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZTogZmFsc2UsXG4gICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgZXJyb3I6IGZpcnN0RXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGZpcnN0RXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJyxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgcmV0dXJucyBpdHMgdmVyc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENka0luZm8oKTogQ2RrSW5mbyB7XG4gIHJldHVybiBnZXRUb29sSW5mbygnY2RrJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZCBhbmQgYWNjZXNzaWJsZSBvbiB0aGUgUEFUSC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ2RrQXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0Q2RrSW5mbygpLmF2YWlsYWJsZTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgdGhlIEFXUyBDREsgQ0xJIGlzIGluc3RhbGxlZDsgdGhyb3dzIHdpdGggYSB1c2VyLWZyaWVuZGx5XG4gKiBtZXNzYWdlICsgaW5zdGFsbCBoaW50IHdoZW4gaXQgaXNuJ3QuIFVzZSBhdCB0aGUgdG9wIG9mIGFueSBjb21tYW5kIHRoYXRcbiAqIHNoZWxscyBvdXQgdG8gYGNka2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVDZGtBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChjaGVja0Nka0F2YWlsYWJsZSgpKSByZXR1cm47XG4gIHByaW50RXJyb3IoJ0FXUyBDREsgaXMgbm90IGluc3RhbGxlZCBvciBub3QgYWNjZXNzaWJsZScpO1xuICBjb25zb2xlLmxvZygnSW5zdGFsbCBDREsgd2l0aDogbnBtIGluc3RhbGwgLWcgYXdzLWNkaycpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ0FXUyBDREsgbm90IGZvdW5kJyk7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IHRoZSBsb2NhbCB0b29sY2hhaW4gQ0RLIG5lZWRzIHRvIGJ1bmRsZSB0aGUgUGx1Z2luTG9va3VwIExhbWJkYVxuICogaXMgcHJlc2VudC4gU3ludGggYnVpbGRzIHRoYXQgTGFtYmRhIHZpYSBgTm9kZWpzRnVuY3Rpb25gIChlc2J1aWxkKTsgd2hlblxuICogZXNidWlsZCBpc24ndCBvbiBQQVRILCBDREsgc2lsZW50bHkgZmFsbHMgYmFjayB0byAqKkRvY2tlciBidW5kbGluZyoqLCB3aGljaFxuICogY2FuJ3QgcmVzb2x2ZSB0aGUgaGFuZGxlcidzIGNyb3NzLWRpcmVjdG9yeSBpbXBvcnRzIGFuZCBkaWVzIHdpdGggYW4gb3BhcXVlXG4gKiBgQ291bGQgbm90IHJlc29sdmUgXCJheGlvc1wiYCAvIGBcIi4uL2NvbmZpZy9oYW5kbGVyLWNvbnN0YW50cy5qc1wiYC4gcG5wbSBpcyBhbHNvXG4gKiByZXF1aXJlZCBiZWNhdXNlIHRoZSBoYW5kbGVyJ3MgbG9ja2ZpbGUgaXMgYHBucG0tbG9jay55YW1sYCwgc28gQ0RLIGRyaXZlc1xuICogZXNidWlsZCB0aHJvdWdoIHBucG0uIEZhaWwgZmFzdCBoZXJlIHdpdGggdGhlIGZpeCBpbnN0ZWFkIG9mIGRlZXAgaW4gYSBidW5kbGUuXG4gKlxuICogQnlwYXNzIHdpdGggYFNLSVBfQlVORExFUl9DSEVDSz0xYCAoZS5nLiBhbiBlbnZpcm9ubWVudCB0aGF0IGludGVudGlvbmFsbHlcbiAqIGJ1bmRsZXMgaW4gRG9ja2VyIHdpdGggYSB3b3JraW5nIG1vdW50IHNjb3BlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUJ1bmRsZXJBdmFpbGFibGUoKTogdm9pZCB7XG4gIGlmIChwcm9jZXNzLmVudi5TS0lQX0JVTkRMRVJfQ0hFQ0sgPT09ICcxJykgcmV0dXJuO1xuXG4gIGNvbnN0IG1pc3NpbmcgPSBbJ2VzYnVpbGQnLCAncG5wbSddLmZpbHRlcigodG9vbCkgPT4gIWdldFRvb2xJbmZvKHRvb2wpLmF2YWlsYWJsZSk7XG4gIGlmIChtaXNzaW5nLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gIHByaW50RXJyb3IoYE1pc3NpbmcgbG9jYWwgYnVuZGxpbmcgcHJlcmVxdWlzaXRlJHttaXNzaW5nLmxlbmd0aCA+IDEgPyAncycgOiAnJ306ICR7bWlzc2luZy5qb2luKCcsICcpfWApO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdTeW50aCBidW5kbGVzIHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhIHZpYSBlc2J1aWxkIChDREsgTm9kZWpzRnVuY3Rpb24pLicpO1xuICBjb25zb2xlLmxvZygnV2l0aG91dCBlc2J1aWxkICsgcG5wbSBvbiBQQVRILCBDREsgZmFsbHMgYmFjayB0byBEb2NrZXIgYnVuZGxpbmcsIHdoaWNoJyk7XG4gIGNvbnNvbGUubG9nKCdmYWlscyB3aXRoOiBDb3VsZCBub3QgcmVzb2x2ZSBcImF4aW9zXCIgLyBcIi4uL2NvbmZpZy9oYW5kbGVyLWNvbnN0YW50cy5qc1wiLicpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdJbnN0YWxsIHdpdGg6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIG5wbSBpbnN0YWxsIC1nIGVzYnVpbGRAMC4yOC4xIHBucG1AMTIuMTQuMCcpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdEb2NzOiBwaXBlbGluZS1tYW5hZ2VyLm1kI3ByZXJlcXVpc2l0ZXMtZm9yLWxvY2FsLXBpcGVsaW5lLWRlcGxveXMnKTtcbiAgY29uc29sZS5sb2coJyhTZXQgU0tJUF9CVU5ETEVSX0NIRUNLPTEgdG8gYnlwYXNzIHRoaXMgY2hlY2suKScpO1xuICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgYnVuZGxlciBwcmVyZXF1aXNpdGVzOiAke21pc3Npbmcuam9pbignLCAnKX1gKTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBDREsgc2hlbGwgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtTaGVsbE9wdGlvbnMge1xuICAvKiogV2hlbiBgdHJ1ZWAsIHByaW50cyB0aGUgZXJyb3IgdG8gc3RkZXJyIG9uIGZhaWx1cmUuICovXG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqIFdoZW4gYHRydWVgLCBpbmhlcml0cyBzdGRpbyBzbyBvdXRwdXQgc3RyZWFtcyB0byB0aGUgdGVybWluYWwuIERlZmF1bHRzIHRvIGB0cnVlYC4gKi9cbiAgc2hvd091dHB1dD86IGJvb2xlYW47XG4gIC8qKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBpbmplY3QuICovXG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGEgQ0RLIHNoZWxsIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1NoZWxsUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIENESyBDTEkgY29tbWFuZCBhcyBhIGNoaWxkIHByb2Nlc3MuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgZnVsbCBDREsgQ0xJIGNvbW1hbmQgc3RyaW5nIChlLmcuLCBgY2RrIGJvb3RzdHJhcCAuLi5gKS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgZXhlY3V0aW9uIHNldHRpbmdzLlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggYHN1Y2Nlc3NgIGFuZCBgZHVyYXRpb25gIGluIG1zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChcbiAgY29tbWFuZDogc3RyaW5nLFxuICBvcHRpb25zOiBDZGtTaGVsbE9wdGlvbnMgPSB7fSxcbik6IENka1NoZWxsUmVzdWx0IHtcbiAgY29uc3QgeyBkZWJ1ZyA9IGZhbHNlLCBzaG93T3V0cHV0ID0gdHJ1ZSwgZW52OiBleHRyYUVudiB9ID0gb3B0aW9ucztcbiAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGVudiA9IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgLi4uZXh0cmFFbnYsXG4gICAgfTtcblxuICAgIGV4ZWNTeW5jKGNvbW1hbmQsIHtcbiAgICAgIHN0ZGlvOiBzaG93T3V0cHV0ID8gWydpbmhlcml0JywgJ2luaGVyaXQnLCAncGlwZSddIDogJ3BpcGUnLFxuICAgICAgZW52LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBkdXJhdGlvbixcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIC8vIEV4dHJhY3Qgc3RkZXJyL3N0ZG91dCBmcm9tIGV4ZWNTeW5jIGVycm9yIHdoZW4gYXZhaWxhYmxlXG4gICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ3N0ZGVycicgaW4gZXJyb3IpIHtcbiAgICAgIGNvbnN0IGV4ZWNFcnJvciA9IGVycm9yIGFzIHsgc3RkZXJyPzogQnVmZmVyIHwgc3RyaW5nOyBzdGRvdXQ/OiBCdWZmZXIgfCBzdHJpbmc7IHN0YXR1cz86IG51bWJlciB9O1xuICAgICAgY29uc3Qgc3RkZXJyID0gZXhlY0Vycm9yLnN0ZGVycj8udG9TdHJpbmcoKS50cmltKCk7XG4gICAgICBjb25zdCBzdGRvdXQgPSBleGVjRXJyb3Iuc3Rkb3V0Py50b1N0cmluZygpLnRyaW0oKTtcblxuICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICBjb25zb2xlLmVycm9yKCdDREsgZGVwbG95bWVudCBmYWlsZWQ6Jyk7XG4gICAgICBpZiAoc3RkZXJyKSBjb25zb2xlLmVycm9yKHN0ZGVycik7XG4gICAgICBpZiAoc3Rkb3V0KSBjb25zb2xlLmVycm9yKHN0ZG91dCk7XG4gICAgICBpZiAoZXhlY0Vycm9yLnN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEV4aXQgY29kZTogJHtleGVjRXJyb3Iuc3RhdHVzfSAoYWZ0ZXIgJHtkdXJhdGlvbn1tcylgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDREsgZXhlY3V0aW9uIGZhaWxlZDonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/command-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAQvG;AAED;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAI3D;AAED;;gCAEgC;AAChC,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE7D;AAED;;8EAE8E;AAC9E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAKzD;AA8CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBnF"}
1
+ {"version":3,"file":"command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/command-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU5C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAUvG;AAED;;mFAEmF;AACnF,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAI3D;AAED;;gCAEgC;AAChC,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE7D;AAED;;8EAE8E;AAC9E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAE9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAKzD;AA8CD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAiBnF"}
@@ -8,6 +8,7 @@ import { getSecretValue } from './aws-secrets.js';
8
8
  import { getApiConfig, getConfigWithOptions } from './config-loader.js';
9
9
  import { clearSession, isSessionUsable, loadSession, saveSession, withRefreshLock } from './credential-store.js';
10
10
  import { printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from './output-utils.js';
11
+ import { requestCorrelationHeaders, setInvocationId } from './request-context.js';
11
12
  import { formatDuration, generateExecutionId } from '../config/cli.constants.js';
12
13
  const { bold, cyan, green, magenta } = pico;
13
14
  /**
@@ -20,6 +21,8 @@ const { bold, cyan, green, magenta } = pico;
20
21
  */
21
22
  export function printCommandHeader(title, subtitle, opts) {
22
23
  const executionId = generateExecutionId();
24
+ // The same id rides every platform call as X-Request-Id (see request-context).
25
+ setInvocationId(executionId);
23
26
  if (!opts?.quiet) {
24
27
  printSection(title);
25
28
  console.log(`${magenta(`[EXE-${executionId}]`)} ${cyan(bold(subtitle || title))}`);
@@ -91,7 +94,7 @@ async function renewSession(baseUrl, session) {
91
94
  if (!session.refreshToken)
92
95
  return undefined;
93
96
  try {
94
- const response = await axios.post(`${baseUrl}/api/auth/refresh`, { refreshToken: session.refreshToken }, { headers: { 'Content-Type': 'application/json', 'X-Pb-Client': 'cli' }, timeout: 30_000 });
97
+ const response = await axios.post(`${baseUrl}/api/auth/refresh`, { refreshToken: session.refreshToken }, { headers: { 'Content-Type': 'application/json', 'X-Pb-Client': 'cli', ...requestCorrelationHeaders() }, timeout: 30_000 });
95
98
  const renewed = response.data?.data;
96
99
  if (!renewed?.accessToken)
97
100
  return undefined;
@@ -219,4 +222,4 @@ export function validateEntityId(id, entityName) {
219
222
  }
220
223
  return trimmed;
221
224
  }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tYW5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFlLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFzQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRTVDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYSxFQUFFLFFBQWlCLEVBQUUsSUFBMEI7SUFDN0YsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcs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QUFFLFVBQWtCO0lBQ3pFLElBQUksQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUQsVUFBVSxDQUFDLFdBQVcsVUFBVSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsVUFBVSxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFMUIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ25ELFlBQVksQ0FBQyxHQUFHLFVBQVUsMkJBQTJCLEVBQUU7WUFDckQsUUFBUSxFQUFFLE9BQU87WUFDakIsY0FBYyxFQUFFLDhDQUE4QztZQUM5RCxZQUFZLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHR5cGUgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBnZXRTZWNyZXRWYWx1ZSB9IGZyb20gJy4vYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgdHlwZSBDb25maWcsIGdldEFwaUNvbmZpZywgZ2V0Q29uZmlnV2l0aE9wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgY2xlYXJTZXNzaW9uLCBpc1Nlc3Npb25Vc2FibGUsIGxvYWRTZXNzaW9uLCBzYXZlU2Vzc2lvbiwgd2l0aFJlZnJlc2hMb2NrLCB0eXBlIFN0b3JlZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGdlbmVyYXRlRXhlY3V0aW9uSWQgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEgfSA9IHBpY287XG5cbi8qKlxuICogUHJpbnQgY29tbWFuZCBoZWFkZXIgd2l0aCBzZWN0aW9uIHRpdGxlIGFuZCBleGVjdXRpb24gSUQuXG4gKiBSZXR1cm5zIHRoZSBleGVjdXRpb24gSUQgZm9yIHVzZSBpbiBlcnJvciBoYW5kbGVycyBhbmQgc3VtbWFyaWVzLlxuICpcbiAqIFBhc3MgYHsgcXVpZXQ6IHRydWUgfWAgdG8gc3VwcHJlc3MgdGhlIGRlY29yYXRpdmUgb3V0cHV0IHdoaWxlIHN0aWxsIGdldHRpbmcgdGhlXG4gKiBpZCDigJQgdXNlZCBib3RoIGJ5IGAtLXF1aWV0YCBjYWxsZXJzIGFuZCBieSBgLS1qc29uYCBjb21tYW5kcyAoc28gdGhlIGJhbm5lclxuICogZG9lc24ndCBsYW5kIG9uIHN0ZG91dCBhaGVhZCBvZiB0aGUgSlNPTiBwYXlsb2FkIGFuZCBicmVhayBg4oCmIC0tanNvbiB8IGpxYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludENvbW1hbmRIZWFkZXIodGl0bGU6IHN0cmluZywgc3VidGl0bGU/OiBzdHJpbmcsIG9wdHM/OiB7IHF1aWV0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG4gIGlmICghb3B0cz8ucXVpZXQpIHtcbiAgICBwcmludFNlY3Rpb24odGl0bGUpO1xuICAgIGNvbnNvbGUubG9nKGAke21hZ2VudGEoYFtFWEUtJHtleGVjdXRpb25JZH1dYCl9ICR7Y3lhbihib2xkKHN1YnRpdGxlIHx8IHRpdGxlKSl9YCk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG4gIHJldHVybiBleGVjdXRpb25JZDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tdmVyaWZ5LXNzbGAgLyBgLS1uby12ZXJpZnktc3NsYCBwYWlyLiBUaGUgdHdvIHRvZ2V0aGVyXG4gKiAgZ2l2ZSBDb21tYW5kZXIgYW4gZXhwbGljaXQgdHJpLXN0YXRlIGBvcHRpb25zLnZlcmlmeVNzbGAgKHRydWUvZmFsc2UvdW5kZWZpbmVkKS5cbiAqICBSZXR1cm5zIHRoZSBjb21tYW5kIHNvIGl0IGNvbXBvc2VzOiBgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCd4Jykp4oCmYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3NsT3B0aW9uczxUIGV4dGVuZHMgQ29tbWFuZD4oY21kOiBUKTogVCB7XG4gIHJldHVybiBjbWRcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKSBhcyBUO1xufVxuXG4vKiogQXR0YWNoIHRoZSBzdGFuZGFyZCBgLS1yZWdpb24gPHJlZ2lvbj5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgUmVnaW9uIHJlc29sdXRpb24gKGZsYWcg4oaSIEFXU19SRUdJT04g4oaSIENES19ERUZBVUxUX1JFR0lPTiDihpIgdXMtZWFzdC0xKSBsaXZlcyBpblxuICogIGF3cy1lbnYucmVzb2x2ZUF3c1JlZ2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVnaW9uT3B0aW9uPFQgZXh0ZW5kcyBDb21tYW5kPihjbWQ6IFQpOiBUIHtcbiAgcmV0dXJuIGNtZC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gLyBDREtfREVGQVVMVF9SRUdJT04gLyB1cy1lYXN0LTEpJykgYXMgVDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tcHJvZmlsZSA8cHJvZmlsZT5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgTm8gZGVmYXVsdCBpcyBwaW5uZWQgc28gdGhlIEFXUyBkZWZhdWx0IGNyZWRlbnRpYWwgY2hhaW4gKGVudiB2YXJzLCBTU08sIHJvbGVzKVxuICogIHdvcmtzIG91dCBvZiB0aGUgYm94OyAtLXByb2ZpbGUgb25seSBzZWxlY3RzIGEgc2hhcmVkIHByb2ZpbGUgd2hlbiBzZXQuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFByb2ZpbGVPcHRpb248VCBleHRlbmRzIENvbW1hbmQ+KGNtZDogVCk6IFQge1xuICByZXR1cm4gY21kLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUgKGRlZmF1bHRzIHRvIHRoZSBzdGFuZGFyZCBBV1MgY3JlZGVudGlhbCBjaGFpbiknKSBhcyBUO1xufVxuXG4vKipcbiAqIFByaW50IGV4ZWN1dGlvbiBzdW1tYXJ5IHdpdGggSUQsIGR1cmF0aW9uLCBhbmQgc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRFeGVjdXRpb25TdW1tYXJ5KGV4ZWN1dGlvbklkOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgJ0R1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pLFxuICAgICdTdGF0dXMnOiBncmVlbign4pyTIFN1Y2Nlc3MnKSxcbiAgfSk7XG59XG5cbi8qKlxuICogV2FybiBpZiBTU0wgdmVyaWZpY2F0aW9uIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTc2xXYXJuaW5nKHZlcmlmeVNzbD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgaWYgKHZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgRElTQUJMRUQnKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5ldyBhIHN0b3JlZCBzZXNzaW9uIHdpdGggaXRzIHJlZnJlc2ggdG9rZW4sIHBlcnNpc3QgdGhlIHJvdGF0ZWQgcGFpciwgYW5kXG4gKiByZXR1cm4gdGhlIG5ldyBhY2Nlc3MgdG9rZW4uIFJldHVybnMgdW5kZWZpbmVkIChhbmQgZm9yZ2V0cyB0aGUgc2Vzc2lvbikgd2hlblxuICogdGhlIHBsYXRmb3JtIHJlZnVzZXMgaXQg4oCUIGEgcm90YXRlZC1hd2F5IG9yIHJldm9rZWQgdG9rZW4gaXMgZGVhZCwgYW5kIGtlZXBpbmdcbiAqIGl0IHdvdWxkIG1ha2UgZXZlcnkgbGF0ZXIgY29tbWFuZCBmYWlsIHRoZSBzYW1lIHdheS5cbiAqXG4gKiBgWC1QYi1DbGllbnRgIGlzIG1hbmRhdG9yeSBvbiAvYXV0aC9yZWZyZXNoICh0aGUgQ1NSRiBnYXRlKSBhbmQgaXRzIHZhbHVlIGFsc29cbiAqIHBpY2tzIHRoZSB0cmFuc3BvcnQ6IGFueXRoaW5nIGJ1dCBgd2ViYCBrZWVwcyB0aGUgYm9keSBmbG93IHRoZSBDTEkgdXNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybDogc3RyaW5nLCBzdGFsZTogU3RvcmVkU2Vzc2lvbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIC8vIE9uZSByZWZyZXNoIGF0IGEgdGltZSBwZXIgbWFjaGluZSAoc2VlIGB3aXRoUmVmcmVzaExvY2tgKTogYSBzZWNvbmQgcHJvY2Vzc1xuICAvLyByZS1yZWFkcyB0aGUgc3RvcmUgdW5kZXIgdGhlIGxvY2sgYW5kIHVzZXMgdGhlIHBhaXIgdGhlIGZpcnN0IG9uZSBzYXZlZCxcbiAgLy8gcmF0aGVyIHRoYW4gc3BlbmRpbmcgdGhlIHNhbWUgc2luZ2xlLXVzZSByZWZyZXNoIHRva2VuIGFnYWluLlxuICByZXR1cm4gd2l0aFJlZnJlc2hMb2NrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShjdXJyZW50KSkgcmV0dXJuIGN1cnJlbnQuYWNjZXNzVG9rZW47XG4gICAgcmV0dXJuIHJlbmV3U2Vzc2lvbihiYXNlVXJsLCBjdXJyZW50ID8/IHN0YWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmV3U2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcsIHNlc3Npb246IFN0b3JlZFNlc3Npb24pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIXNlc3Npb24ucmVmcmVzaFRva2VuKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGRhdGE/OiB7IGFjY2Vzc1Rva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH0+KFxuICAgICAgYCR7YmFzZVVybH0vYXBpL2F1dGgvcmVmcmVzaGAsXG4gICAgICB7IHJlZnJlc2hUb2tlbjogc2Vzc2lvbi5yZWZyZXNoVG9rZW4gfSxcbiAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnWC1QYi1DbGllbnQnOiAnY2xpJyB9LCB0aW1lb3V0OiAzMF8wMDAgfSxcbiAgICApO1xuICAgIGNvbnN0IHJlbmV3ZWQgPSByZXNwb25zZS5kYXRhPy5kYXRhO1xuICAgIGlmICghcmVuZXdlZD8uYWNjZXNzVG9rZW4pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgc2F2ZVNlc3Npb24oYmFzZVVybCwge1xuICAgICAgYWNjZXNzVG9rZW46IHJlbmV3ZWQuYWNjZXNzVG9rZW4sXG4gICAgICAuLi4ocmVuZXdlZC5yZWZyZXNoVG9rZW4gPyB7IHJlZnJlc2hUb2tlbjogcmVuZXdlZC5yZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIChyZW5ld2VkLmV4cGlyZXNJbiA/PyA5MDApICogMTAwMCxcbiAgICAgIC4uLihzZXNzaW9uLm9yZ2FuaXphdGlvbklkID8geyBvcmdhbml6YXRpb25JZDogc2Vzc2lvbi5vcmdhbml6YXRpb25JZCB9IDoge30pLFxuICAgIH0pO1xuICAgIHJldHVybiByZW5ld2VkLmFjY2Vzc1Rva2VuO1xuICB9IGNhdGNoIHtcbiAgICBjbGVhclNlc3Npb24oYmFzZVVybCk7XG4gICAgcHJpbnRXYXJuaW5nKCdUaGUgc3RvcmVkIHNlc3Npb24gY291bGQgbm90IGJlIHJlbmV3ZWQg4oCUIHJ1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiIGFnYWluJyk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgYSBwbGF0Zm9ybSBjcmVkZW50aWFsIHVzaW5nIHRocmVlIG1ldGhvZHMgKGluIHByaW9yaXR5IG9yZGVyKTpcbiAqXG4gKiAxLiBQTEFURk9STV9UT0tFTiBlbnYgdmFyIChhIEpXVCwgb3IgYW4gb3BhcXVlIGBwYl9wYXRf4oCmYC9gcGJfc2Ff4oCmYCBrZXkpXG4gKiAyLiB0aGUgc2Vzc2lvbiBgYXV0aCBsb2dpbmAgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtIChyZW5ld2VkIGlmIGl0IGhhcyBleHBpcmVkKVxuICogMy4gLS1zdG9yZS10b2tlbnMgZmxhZyDihpIgdGhlIHNlcnZpY2UtYWNjb3VudCBrZXkgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICpcbiAqIEByZXR1cm5zIHRoZSBiZWFyZXIgY3JlZGVudGlhbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVUb2tlbihvcHRpb25zOiB7XG4gIHN0b3JlVG9rZW5zPzogYm9vbGVhbjtcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIFBhdGggMTogUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICBpZiAocHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4pIHtcbiAgICBwcmludEluZm8oJ1VzaW5nIFBMQVRGT1JNX1RPS0VOIGZyb20gZW52aXJvbm1lbnQnKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU47XG4gIH1cblxuICAvLyBQYXRoIDI6IHRoZSBzdG9yZWQgYnJvd3NlciBzaWduLWluLiBTa2lwcGVkIGVudGlyZWx5IHdoZW4gLS1zdG9yZS10b2tlbnNcbiAgLy8gbmFtZXMgYSBtYWNoaW5lIGNyZWRlbnRpYWwsIHNvIGFuIG9wZXJhdG9yJ3MgbGFwdG9wIHNlc3Npb24gY2FuIG5ldmVyIGJlXG4gIC8vIHVzZWQgd2hlcmUgdGhlIGF1dG9tYXRpb24gY3JlZGVudGlhbCB3YXMgYXNrZWQgZm9yLlxuICBpZiAoIW9wdGlvbnMuc3RvcmVUb2tlbnMpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0QXBpQ29uZmlnKCkuYXBpLmJhc2VVcmw7XG4gICAgY29uc3Qgc3RvcmVkID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShzdG9yZWQpKSB7XG4gICAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2Vzc2lvbiBmcm9tIFwiYXV0aCBsb2dpblwiJyk7XG4gICAgICByZXR1cm4gc3RvcmVkLmFjY2Vzc1Rva2VuO1xuICAgIH1cbiAgICBpZiAoc3RvcmVkKSB7XG4gICAgICBjb25zdCByZW5ld2VkID0gYXdhaXQgcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybCwgc3RvcmVkKTtcbiAgICAgIGlmIChyZW5ld2VkKSB7XG4gICAgICAgIHByaW50SW5mbygnUmVuZXdlZCB0aGUgc3RvcmVkIHNlc3Npb24gZnJvbSBcImF1dGggbG9naW5cIicpO1xuICAgICAgICByZXR1cm4gcmVuZXdlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXRoIDM6IC0tc3RvcmUtdG9rZW5zIOKGkiByZWFkIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gIGlmIChvcHRpb25zLnN0b3JlVG9rZW5zKSB7XG4gICAgY29uc3Qgc2VjcmV0TmFtZSA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1NFQ1JFVF9OQU1FO1xuICAgIGlmICghc2VjcmV0TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQTEFURk9STV9TRUNSRVRfTkFNRSBlbnYgdmFyIGlzIHJlcXVpcmVkIHdpdGggLS1zdG9yZS10b2tlbnMnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ0ZldGNoaW5nIHNlY3JldCBmcm9tIFNlY3JldHMgTWFuYWdlcicsIHsgc2VjcmV0OiBzZWNyZXROYW1lIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0SnNvbiA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHNlY3JldE5hbWUsIHsgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgIGNvbnN0IHNlY3JldCA9IEpTT04ucGFyc2Uoc2VjcmV0SnNvbikgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBwcmludFN1Y2Nlc3MoJ1NlY3JldCByZXRyaWV2ZWQgZnJvbSBTZWNyZXRzIE1hbmFnZXInKTtcblxuICAgIC8vIHN0b3JlLXRva2VuIHdyaXRlcyB0aGUgc2VydmljZS1hY2NvdW50IEtFWSB0byB0aGUgYHBhc3N3b3JkYCBmaWVsZCAoc2NoZW1hOlxuICAgIC8vIHsgdXNlcm5hbWU6IG9yZ0lkLCBwYXNzd29yZDogcGJfc2Ff4oCmIH0g4oCUIHNhdGlzZmllcyBDb2RlQnVpbGQnc1xuICAgIC8vIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHMpLCBub3QgYGFjY2Vzc1Rva2VuYC4gVGhlIGtleSBpcyBwcmVzZW50ZWQgYXMgYVxuICAgIC8vIGJlYXJlciBjcmVkZW50aWFsIGFuZCBleGNoYW5nZWQgc2VydmVyLXNpZGUsIHNvIG5vdGhpbmcgaGVyZSBkZWNvZGVzIGl0LlxuICAgIGlmICghc2VjcmV0LnBhc3N3b3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3JldCBtaXNzaW5nIHBhc3N3b3JkIChzZXJ2aWNlLWFjY291bnQga2V5KSDigJQgcnVuIFwicGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlblwiIHRvIHByb3Zpc2lvbiBvbmUnKTtcbiAgICB9XG5cbiAgICBwcmludEluZm8oJ1VzaW5nIHRoZSBzdG9yZWQgc2VydmljZS1hY2NvdW50IGtleScpO1xuICAgIHJldHVybiBzZWNyZXQucGFzc3dvcmQ7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkLiBVc2Ugb25lIG9mOlxcbicgK1xuICAgICcgIC0gUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIgKGJyb3dzZXIgc2lnbi1pbiwgc3RvcmVkIGZvciB0aGlzIHBsYXRmb3JtKVxcbicgK1xuICAgICcgIC0gU2V0IFBMQVRGT1JNX1RPS0VOIHRvIGFuIGFjY2VzcyBrZXkgZnJvbSBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXRcIlxcbicgK1xuICAgICcgIC0gUGFzcyAtLXN0b3JlLXRva2VucyB3aXRoIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXInLFxuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYW5kIHJldHVybiBhbiBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQuXG4gKlxuICogU3VwcG9ydHMgdGhyZWUgYXV0aCBtZXRob2RzOlxuICogMS4gUExBVEZPUk1fVE9LRU4gZW52IHZhclxuICogMi4gdGhlIHN0b3JlZCBgYXV0aCBsb2dpbmAgc2Vzc2lvbiBmb3IgdGhpcyBwbGF0Zm9ybSAocmVuZXdlZCBvbiBleHBpcnkpXG4gKiAzLiAtLXN0b3JlLXRva2VucyArIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIg4oaSIGZldGNoIHRva2VuIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9uczoge1xuICBzdG9yZVRva2Vucz86IGJvb2xlYW47XG4gIHZlcmlmeVNzbD86IGJvb2xlYW47XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbn0pOiBQcm9taXNlPEFwaUNsaWVudD4ge1xuICAvLyBSZXNvbHZlIHRva2VuIGFuZCBzZXQgaXQgaW4gZW52IHNvIEFwaUNsaWVudC9nZXRDb25maWcgY2FuIGZpbmQgaXRcbiAgaWYgKCFwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgcmVzb2x2ZVRva2VuKG9wdGlvbnMpO1xuICAgIHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOID0gdG9rZW47XG4gIH1cblxuICByZXR1cm4gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGFuZCByZXR1cm4gYW4gYXV0aGVudGljYXRlZCBBUEkgY2xpZW50IChzeW5jIOKAlCByZXF1aXJlcyBQTEFURk9STV9UT0tFTikuXG4gKiBVc2UgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jIGZvciAtLXN0b3JlLXRva2VucyBzdXBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IEFwaUNsaWVudCB7XG4gIGNvbnN0IGNvbmZpZzogQ29uZmlnID0gZ2V0Q29uZmlnV2l0aE9wdGlvbnMob3B0aW9ucyk7XG4gIHByaW50SW5mbygnSW5pdGlhbGl6aW5nIEFQSSBjbGllbnQnLCB7IGJhc2VVcmw6IGNvbmZpZy5hcGkuYmFzZVVybCB9KTtcbiAgY29uc3QgY2xpZW50ID0gbmV3IEFwaUNsaWVudChjb25maWcpO1xuXG4gIGlmICghY2xpZW50LmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgcHJpbnRFcnJvcignTm90IGF1dGhlbnRpY2F0ZWQnLCB7IGhpbnQ6ICdSdW4gXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW5cIiwgc2V0IFBMQVRGT1JNX1RPS0VOLCBvciB1c2UgLS1zdG9yZS10b2tlbnMnIH0pO1xuICAgIHRocm93IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gcmVxdWlyZWQnKTtcbiAgfVxuXG4gIHByaW50U3VjY2VzcygnQVBJIGNsaWVudCBpbml0aWFsaXplZCcpO1xuICByZXR1cm4gY2xpZW50O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgcmVxdWlyZWQgZW50aXR5IElEIChVTElEIG9yIFVVSUQgZm9ybWF0KS5cbiAqIFJldHVybnMgdHJpbW1lZCBJRC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIElEIGlzIGVtcHR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUVudGl0eUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIGVudGl0eU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaWQgfHwgdHlwZW9mIGlkICE9PSAnc3RyaW5nJyB8fCBpZC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnRFcnJvcihgSW52YWxpZCAke2VudGl0eU5hbWV9IElEYCwgeyBwcm92aWRlZDogaWQgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2VudGl0eU5hbWV9IElEIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gIH1cblxuICBjb25zdCB0cmltbWVkID0gaWQudHJpbSgpO1xuXG4gIGlmICh0cmltbWVkLmxlbmd0aCAhPT0gMjYgJiYgdHJpbW1lZC5sZW5ndGggIT09IDM2KSB7XG4gICAgcHJpbnRXYXJuaW5nKGAke2VudGl0eU5hbWV9IElEIGZvcm1hdCBtYXkgYmUgaW52YWxpZGAsIHtcbiAgICAgIHByb3ZpZGVkOiB0cmltbWVkLFxuICAgICAgZXhwZWN0ZWRMZW5ndGg6ICcyNiBjaGFyYWN0ZXJzIChVTElEKSBvciAzNiBjaGFyYWN0ZXJzIChVVUlEKScsXG4gICAgICBhY3R1YWxMZW5ndGg6IHRyaW1tZWQubGVuZ3RoLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWQ7XG59XG5cbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb21tYW5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFlLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFzQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztBQUU1Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWEsRUFBRSxRQUFpQixFQUFFLElBQTBCO0lBQzdGLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixFQUFFLENBQUM7SUFDMUMsK0VBQStFO0lBQy9FLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsV0FBVyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O21GQUVtRjtBQUNuRixNQUFNLFVBQVUsY0FBYyxDQUFvQixHQUFNO0lBQ3RELE9BQU8sR0FBRztTQUNQLE1BQU0sQ0FBQyxjQUFjLEVBQUUscUNBQXFDLENBQUM7U0FDN0QsTUFBTSxDQUFDLGlCQUFpQixFQUFFLHNDQUFzQyxDQUFNLENBQUM7QUFDNUUsQ0FBQztBQUVEOztnQ0FFZ0M7QUFDaEMsTUFBTSxVQUFVLGdCQUFnQixDQUFvQixHQUFNO0lBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxzRUFBc0UsQ0FBTSxDQUFDO0FBQ3RILENBQUM7QUFFRDs7OEVBRThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBb0IsR0FBTTtJQUN6RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsaUVBQWlFLENBQU0sQ0FBQztBQUNuSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLGFBQWEsQ0FBQztRQUNaLGNBQWMsRUFBRSxXQUFXO1FBQzNCLFVBQVUsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO0tBQzdCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBbUI7SUFDakQsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDeEIsWUFBWSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxLQUFvQjtJQUN2RSw4RUFBOEU7SUFDOUUsMkVBQTJFO0lBQzNFLGdFQUFnRTtJQUNoRSxPQUFPLGVBQWUsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQ3pELE9BQU8sWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FBQyxPQUFlLEVBQUUsT0FBc0I7SUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUMvQixHQUFHLE9BQU8sbUJBQW1CLEVBQzdCLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFDdEMsRUFBRSxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxHQUFHLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQzNILENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVc7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ25CLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSTtZQUN6RCxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDOUUsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQzdCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsWUFBWSxDQUFDLG1GQUFtRixDQUFDLENBQUM7UUFDbEcsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLE9BS2xDO0lBQ0MsaUNBQWlDO0lBQ2pDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQixTQUFTLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNuRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0lBQ3BDLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLHNEQUFzRDtJQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDeEQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxPQUFPLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDNUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixTQUFTLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDMUQsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsU0FBUyxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFMUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUEyQixDQUFDO1FBQ2hFLFlBQVksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBRXRELDhFQUE4RTtRQUM5RSxpRUFBaUU7UUFDakUsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkdBQTJHLENBQUMsQ0FBQztRQUMvSCxDQUFDO1FBRUQsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLHdDQUF3QztRQUN4QyxxRkFBcUY7UUFDckYsNEVBQTRFO1FBQzVFLDJEQUEyRCxDQUM1RCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDhCQUE4QixDQUFDLE9BS3BEO0lBQ0MscUVBQXFFO0lBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWdDO0lBQ3hFLE1BQU0sTUFBTSxHQUFXLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSw4RUFBOEUsRUFBRSxDQUFDLENBQUM7UUFDMUgsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBc0IsRUFBRSxVQUFrQjtJQUN6RSxJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVELFVBQVUsQ0FBQyxXQUFXLFVBQVUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsZ0NBQWdDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTFCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNuRCxZQUFZLENBQUMsR0FBRyxVQUFVLDJCQUEyQixFQUFFO1lBQ3JELFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGNBQWMsRUFBRSw4Q0FBOEM7WUFDOUQsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB0eXBlIENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBBcGlDbGllbnQgfSBmcm9tICcuL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0VmFsdWUgfSBmcm9tICcuL2F3cy1zZWNyZXRzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnLCBnZXRBcGlDb25maWcsIGdldENvbmZpZ1dpdGhPcHRpb25zIH0gZnJvbSAnLi9jb25maWctbG9hZGVyLmpzJztcbmltcG9ydCB7IGNsZWFyU2Vzc2lvbiwgaXNTZXNzaW9uVXNhYmxlLCBsb2FkU2Vzc2lvbiwgc2F2ZVNlc3Npb24sIHdpdGhSZWZyZXNoTG9jaywgdHlwZSBTdG9yZWRTZXNzaW9uIH0gZnJvbSAnLi9jcmVkZW50aWFsLXN0b3JlLmpzJztcbmltcG9ydCB7IHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4vb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHJlcXVlc3RDb3JyZWxhdGlvbkhlYWRlcnMsIHNldEludm9jYXRpb25JZCB9IGZyb20gJy4vcmVxdWVzdC1jb250ZXh0LmpzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBnZW5lcmF0ZUV4ZWN1dGlvbklkIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGdyZWVuLCBtYWdlbnRhIH0gPSBwaWNvO1xuXG4vKipcbiAqIFByaW50IGNvbW1hbmQgaGVhZGVyIHdpdGggc2VjdGlvbiB0aXRsZSBhbmQgZXhlY3V0aW9uIElELlxuICogUmV0dXJucyB0aGUgZXhlY3V0aW9uIElEIGZvciB1c2UgaW4gZXJyb3IgaGFuZGxlcnMgYW5kIHN1bW1hcmllcy5cbiAqXG4gKiBQYXNzIGB7IHF1aWV0OiB0cnVlIH1gIHRvIHN1cHByZXNzIHRoZSBkZWNvcmF0aXZlIG91dHB1dCB3aGlsZSBzdGlsbCBnZXR0aW5nIHRoZVxuICogaWQg4oCUIHVzZWQgYm90aCBieSBgLS1xdWlldGAgY2FsbGVycyBhbmQgYnkgYC0tanNvbmAgY29tbWFuZHMgKHNvIHRoZSBiYW5uZXJcbiAqIGRvZXNuJ3QgbGFuZCBvbiBzdGRvdXQgYWhlYWQgb2YgdGhlIEpTT04gcGF5bG9hZCBhbmQgYnJlYWsgYOKApiAtLWpzb24gfCBqcWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRDb21tYW5kSGVhZGVyKHRpdGxlOiBzdHJpbmcsIHN1YnRpdGxlPzogc3RyaW5nLCBvcHRzPzogeyBxdWlldD86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gIGNvbnN0IGV4ZWN1dGlvbklkID0gZ2VuZXJhdGVFeGVjdXRpb25JZCgpO1xuICAvLyBUaGUgc2FtZSBpZCByaWRlcyBldmVyeSBwbGF0Zm9ybSBjYWxsIGFzIFgtUmVxdWVzdC1JZCAoc2VlIHJlcXVlc3QtY29udGV4dCkuXG4gIHNldEludm9jYXRpb25JZChleGVjdXRpb25JZCk7XG4gIGlmICghb3B0cz8ucXVpZXQpIHtcbiAgICBwcmludFNlY3Rpb24odGl0bGUpO1xuICAgIGNvbnNvbGUubG9nKGAke21hZ2VudGEoYFtFWEUtJHtleGVjdXRpb25JZH1dYCl9ICR7Y3lhbihib2xkKHN1YnRpdGxlIHx8IHRpdGxlKSl9YCk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG4gIHJldHVybiBleGVjdXRpb25JZDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tdmVyaWZ5LXNzbGAgLyBgLS1uby12ZXJpZnktc3NsYCBwYWlyLiBUaGUgdHdvIHRvZ2V0aGVyXG4gKiAgZ2l2ZSBDb21tYW5kZXIgYW4gZXhwbGljaXQgdHJpLXN0YXRlIGBvcHRpb25zLnZlcmlmeVNzbGAgKHRydWUvZmFsc2UvdW5kZWZpbmVkKS5cbiAqICBSZXR1cm5zIHRoZSBjb21tYW5kIHNvIGl0IGNvbXBvc2VzOiBgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbS5jb21tYW5kKCd4Jykp4oCmYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3NsT3B0aW9uczxUIGV4dGVuZHMgQ29tbWFuZD4oY21kOiBUKTogVCB7XG4gIHJldHVybiBjbWRcbiAgICAub3B0aW9uKCctLXZlcmlmeS1zc2wnLCAnRW5hYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKVxuICAgIC5vcHRpb24oJy0tbm8tdmVyaWZ5LXNzbCcsICdEaXNhYmxlIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24nKSBhcyBUO1xufVxuXG4vKiogQXR0YWNoIHRoZSBzdGFuZGFyZCBgLS1yZWdpb24gPHJlZ2lvbj5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgUmVnaW9uIHJlc29sdXRpb24gKGZsYWcg4oaSIEFXU19SRUdJT04g4oaSIENES19ERUZBVUxUX1JFR0lPTiDihpIgdXMtZWFzdC0xKSBsaXZlcyBpblxuICogIGF3cy1lbnYucmVzb2x2ZUF3c1JlZ2lvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVnaW9uT3B0aW9uPFQgZXh0ZW5kcyBDb21tYW5kPihjbWQ6IFQpOiBUIHtcbiAgcmV0dXJuIGNtZC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gLyBDREtfREVGQVVMVF9SRUdJT04gLyB1cy1lYXN0LTEpJykgYXMgVDtcbn1cblxuLyoqIEF0dGFjaCB0aGUgc3RhbmRhcmQgYC0tcHJvZmlsZSA8cHJvZmlsZT5gIG9wdGlvbiAob25lIGNhbm9uaWNhbCBkZXNjcmlwdGlvbikuXG4gKiAgTm8gZGVmYXVsdCBpcyBwaW5uZWQgc28gdGhlIEFXUyBkZWZhdWx0IGNyZWRlbnRpYWwgY2hhaW4gKGVudiB2YXJzLCBTU08sIHJvbGVzKVxuICogIHdvcmtzIG91dCBvZiB0aGUgYm94OyAtLXByb2ZpbGUgb25seSBzZWxlY3RzIGEgc2hhcmVkIHByb2ZpbGUgd2hlbiBzZXQuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFByb2ZpbGVPcHRpb248VCBleHRlbmRzIENvbW1hbmQ+KGNtZDogVCk6IFQge1xuICByZXR1cm4gY21kLm9wdGlvbignLS1wcm9maWxlIDxwcm9maWxlPicsICdBV1MgQ0xJIHByb2ZpbGUgKGRlZmF1bHRzIHRvIHRoZSBzdGFuZGFyZCBBV1MgY3JlZGVudGlhbCBjaGFpbiknKSBhcyBUO1xufVxuXG4vKipcbiAqIFByaW50IGV4ZWN1dGlvbiBzdW1tYXJ5IHdpdGggSUQsIGR1cmF0aW9uLCBhbmQgc3RhdHVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRFeGVjdXRpb25TdW1tYXJ5KGV4ZWN1dGlvbklkOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgJ0R1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oZHVyYXRpb24pLFxuICAgICdTdGF0dXMnOiBncmVlbign4pyTIFN1Y2Nlc3MnKSxcbiAgfSk7XG59XG5cbi8qKlxuICogV2FybiBpZiBTU0wgdmVyaWZpY2F0aW9uIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTc2xXYXJuaW5nKHZlcmlmeVNzbD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgaWYgKHZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgRElTQUJMRUQnKTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZW5ldyBhIHN0b3JlZCBzZXNzaW9uIHdpdGggaXRzIHJlZnJlc2ggdG9rZW4sIHBlcnNpc3QgdGhlIHJvdGF0ZWQgcGFpciwgYW5kXG4gKiByZXR1cm4gdGhlIG5ldyBhY2Nlc3MgdG9rZW4uIFJldHVybnMgdW5kZWZpbmVkIChhbmQgZm9yZ2V0cyB0aGUgc2Vzc2lvbikgd2hlblxuICogdGhlIHBsYXRmb3JtIHJlZnVzZXMgaXQg4oCUIGEgcm90YXRlZC1hd2F5IG9yIHJldm9rZWQgdG9rZW4gaXMgZGVhZCwgYW5kIGtlZXBpbmdcbiAqIGl0IHdvdWxkIG1ha2UgZXZlcnkgbGF0ZXIgY29tbWFuZCBmYWlsIHRoZSBzYW1lIHdheS5cbiAqXG4gKiBgWC1QYi1DbGllbnRgIGlzIG1hbmRhdG9yeSBvbiAvYXV0aC9yZWZyZXNoICh0aGUgQ1NSRiBnYXRlKSBhbmQgaXRzIHZhbHVlIGFsc29cbiAqIHBpY2tzIHRoZSB0cmFuc3BvcnQ6IGFueXRoaW5nIGJ1dCBgd2ViYCBrZWVwcyB0aGUgYm9keSBmbG93IHRoZSBDTEkgdXNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFN0b3JlZFNlc3Npb24oYmFzZVVybDogc3RyaW5nLCBzdGFsZTogU3RvcmVkU2Vzc2lvbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIC8vIE9uZSByZWZyZXNoIGF0IGEgdGltZSBwZXIgbWFjaGluZSAoc2VlIGB3aXRoUmVmcmVzaExvY2tgKTogYSBzZWNvbmQgcHJvY2Vzc1xuICAvLyByZS1yZWFkcyB0aGUgc3RvcmUgdW5kZXIgdGhlIGxvY2sgYW5kIHVzZXMgdGhlIHBhaXIgdGhlIGZpcnN0IG9uZSBzYXZlZCxcbiAgLy8gcmF0aGVyIHRoYW4gc3BlbmRpbmcgdGhlIHNhbWUgc2luZ2xlLXVzZSByZWZyZXNoIHRva2VuIGFnYWluLlxuICByZXR1cm4gd2l0aFJlZnJlc2hMb2NrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gbG9hZFNlc3Npb24oYmFzZVVybCk7XG4gICAgaWYgKGlzU2Vzc2lvblVzYWJsZShjdXJyZW50KSkgcmV0dXJuIGN1cnJlbnQuYWNjZXNzVG9rZW47XG4gICAgcmV0dXJuIHJlbmV3U2Vzc2lvbihiYXNlVXJsLCBjdXJyZW50ID8/IHN0YWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmV3U2Vzc2lvbihiYXNlVXJsOiBzdHJpbmcsIHNlc3Npb246IFN0b3JlZFNlc3Npb24pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBpZiAoIXNlc3Npb24ucmVmcmVzaFRva2VuKSByZXR1cm4gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdDx7IGRhdGE/OiB7IGFjY2Vzc1Rva2VuPzogc3RyaW5nOyByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IGV4cGlyZXNJbj86IG51bWJlciB9IH0+KFxuICAgICAgYCR7YmFzZVVybH0vYXBpL2F1dGgvcmVmcmVzaGAsXG4gICAgICB7IHJlZnJlc2hUb2tlbjogc2Vzc2lvbi5yZWZyZXNoVG9rZW4gfSxcbiAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnWC1QYi1DbGllbnQnOiAnY2xpJywgLi4ucmVxdWVzdENvcnJlbGF0aW9uSGVhZGVycygpIH0sIHRpbWVvdXQ6IDMwXzAwMCB9LFxuICAgICk7XG4gICAgY29uc3QgcmVuZXdlZCA9IHJlc3BvbnNlLmRhdGE/LmRhdGE7XG4gICAgaWYgKCFyZW5ld2VkPy5hY2Nlc3NUb2tlbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzYXZlU2Vzc2lvbihiYXNlVXJsLCB7XG4gICAgICBhY2Nlc3NUb2tlbjogcmVuZXdlZC5hY2Nlc3NUb2tlbixcbiAgICAgIC4uLihyZW5ld2VkLnJlZnJlc2hUb2tlbiA/IHsgcmVmcmVzaFRva2VuOiByZW5ld2VkLnJlZnJlc2hUb2tlbiB9IDoge30pLFxuICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgKHJlbmV3ZWQuZXhwaXJlc0luID8/IDkwMCkgKiAxMDAwLFxuICAgICAgLi4uKHNlc3Npb24ub3JnYW5pemF0aW9uSWQgPyB7IG9yZ2FuaXphdGlvbklkOiBzZXNzaW9uLm9yZ2FuaXphdGlvbklkIH0gOiB7fSksXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlbmV3ZWQuYWNjZXNzVG9rZW47XG4gIH0gY2F0Y2gge1xuICAgIGNsZWFyU2Vzc2lvbihiYXNlVXJsKTtcbiAgICBwcmludFdhcm5pbmcoJ1RoZSBzdG9yZWQgc2Vzc2lvbiBjb3VsZCBub3QgYmUgcmVuZXdlZCDigJQgcnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIgYWdhaW4nKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHBsYXRmb3JtIGNyZWRlbnRpYWwgdXNpbmcgdGhyZWUgbWV0aG9kcyAoaW4gcHJpb3JpdHkgb3JkZXIpOlxuICpcbiAqIDEuIFBMQVRGT1JNX1RPS0VOIGVudiB2YXIgKGEgSldULCBvciBhbiBvcGFxdWUgYHBiX3BhdF/igKZgL2BwYl9zYV/igKZgIGtleSlcbiAqIDIuIHRoZSBzZXNzaW9uIGBhdXRoIGxvZ2luYCBzdG9yZWQgZm9yIHRoaXMgcGxhdGZvcm0gKHJlbmV3ZWQgaWYgaXQgaGFzIGV4cGlyZWQpXG4gKiAzLiAtLXN0b3JlLXRva2VucyBmbGFnIOKGkiB0aGUgc2VydmljZS1hY2NvdW50IGtleSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gKlxuICogQHJldHVybnMgdGhlIGJlYXJlciBjcmVkZW50aWFsIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRva2VuKG9wdGlvbnM6IHtcbiAgc3RvcmVUb2tlbnM/OiBib29sZWFuO1xuICB2ZXJpZnlTc2w/OiBib29sZWFuO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG59KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gUGF0aCAxOiBQTEFURk9STV9UT0tFTiBlbnYgdmFyXG4gIGlmIChwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTikge1xuICAgIHByaW50SW5mbygnVXNpbmcgUExBVEZPUk1fVE9LRU4gZnJvbSBlbnZpcm9ubWVudCcpO1xuICAgIHJldHVybiBwcm9jZXNzLmVudi5QTEFURk9STV9UT0tFTjtcbiAgfVxuXG4gIC8vIFBhdGggMjogdGhlIHN0b3JlZCBicm93c2VyIHNpZ24taW4uIFNraXBwZWQgZW50aXJlbHkgd2hlbiAtLXN0b3JlLXRva2Vuc1xuICAvLyBuYW1lcyBhIG1hY2hpbmUgY3JlZGVudGlhbCwgc28gYW4gb3BlcmF0b3IncyBsYXB0b3Agc2Vzc2lvbiBjYW4gbmV2ZXIgYmVcbiAgLy8gdXNlZCB3aGVyZSB0aGUgYXV0b21hdGlvbiBjcmVkZW50aWFsIHdhcyBhc2tlZCBmb3IuXG4gIGlmICghb3B0aW9ucy5zdG9yZVRva2Vucykge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnZXRBcGlDb25maWcoKS5hcGkuYmFzZVVybDtcbiAgICBjb25zdCBzdG9yZWQgPSBsb2FkU2Vzc2lvbihiYXNlVXJsKTtcbiAgICBpZiAoaXNTZXNzaW9uVXNhYmxlKHN0b3JlZCkpIHtcbiAgICAgIHByaW50SW5mbygnVXNpbmcgdGhlIHN0b3JlZCBzZXNzaW9uIGZyb20gXCJhdXRoIGxvZ2luXCInKTtcbiAgICAgIHJldHVybiBzdG9yZWQuYWNjZXNzVG9rZW47XG4gICAgfVxuICAgIGlmIChzdG9yZWQpIHtcbiAgICAgIGNvbnN0IHJlbmV3ZWQgPSBhd2FpdCByZWZyZXNoU3RvcmVkU2Vzc2lvbihiYXNlVXJsLCBzdG9yZWQpO1xuICAgICAgaWYgKHJlbmV3ZWQpIHtcbiAgICAgICAgcHJpbnRJbmZvKCdSZW5ld2VkIHRoZSBzdG9yZWQgc2Vzc2lvbiBmcm9tIFwiYXV0aCBsb2dpblwiJyk7XG4gICAgICAgIHJldHVybiByZW5ld2VkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhdGggMzogLS1zdG9yZS10b2tlbnMg4oaSIHJlYWQgUExBVEZPUk1fU0VDUkVUX05BTUUgZnJvbSBTZWNyZXRzIE1hbmFnZXJcbiAgaWYgKG9wdGlvbnMuc3RvcmVUb2tlbnMpIHtcbiAgICBjb25zdCBzZWNyZXROYW1lID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fU0VDUkVUX05BTUU7XG4gICAgaWYgKCFzZWNyZXROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIgaXMgcmVxdWlyZWQgd2l0aCAtLXN0b3JlLXRva2VucycpO1xuICAgIH1cblxuICAgIHByaW50SW5mbygnRmV0Y2hpbmcgc2VjcmV0IGZyb20gU2VjcmV0cyBNYW5hZ2VyJywgeyBzZWNyZXQ6IHNlY3JldE5hbWUgfSk7XG5cbiAgICBjb25zdCBzZWNyZXRKc29uID0gYXdhaXQgZ2V0U2VjcmV0VmFsdWUoc2VjcmV0TmFtZSwgeyByZWdpb246IG9wdGlvbnMucmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgY29uc3Qgc2VjcmV0ID0gSlNPTi5wYXJzZShzZWNyZXRKc29uKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHByaW50U3VjY2VzcygnU2VjcmV0IHJldHJpZXZlZCBmcm9tIFNlY3JldHMgTWFuYWdlcicpO1xuXG4gICAgLy8gc3RvcmUtdG9rZW4gd3JpdGVzIHRoZSBzZXJ2aWNlLWFjY291bnQgS0VZIHRvIHRoZSBgcGFzc3dvcmRgIGZpZWxkIChzY2hlbWE6XG4gICAgLy8geyB1c2VybmFtZTogb3JnSWQsIHBhc3N3b3JkOiBwYl9zYV/igKYgfSDigJQgc2F0aXNmaWVzIENvZGVCdWlsZCdzXG4gICAgLy8gc2VjcmV0c01hbmFnZXJDcmVkZW50aWFscyksIG5vdCBgYWNjZXNzVG9rZW5gLiBUaGUga2V5IGlzIHByZXNlbnRlZCBhcyBhXG4gICAgLy8gYmVhcmVyIGNyZWRlbnRpYWwgYW5kIGV4Y2hhbmdlZCBzZXJ2ZXItc2lkZSwgc28gbm90aGluZyBoZXJlIGRlY29kZXMgaXQuXG4gICAgaWYgKCFzZWNyZXQucGFzc3dvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2VjcmV0IG1pc3NpbmcgcGFzc3dvcmQgKHNlcnZpY2UtYWNjb3VudCBrZXkpIOKAlCBydW4gXCJwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuXCIgdG8gcHJvdmlzaW9uIG9uZScpO1xuICAgIH1cblxuICAgIHByaW50SW5mbygnVXNpbmcgdGhlIHN0b3JlZCBzZXJ2aWNlLWFjY291bnQga2V5Jyk7XG4gICAgcmV0dXJuIHNlY3JldC5wYXNzd29yZDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnQXV0aGVudGljYXRpb24gcmVxdWlyZWQuIFVzZSBvbmUgb2Y6XFxuJyArXG4gICAgJyAgLSBSdW4gXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW5cIiAoYnJvd3NlciBzaWduLWluLCBzdG9yZWQgZm9yIHRoaXMgcGxhdGZvcm0pXFxuJyArXG4gICAgJyAgLSBTZXQgUExBVEZPUk1fVE9LRU4gdG8gYW4gYWNjZXNzIGtleSBmcm9tIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdFwiXFxuJyArXG4gICAgJyAgLSBQYXNzIC0tc3RvcmUtdG9rZW5zIHdpdGggUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhcicsXG4gICk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhbmQgcmV0dXJuIGFuIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudC5cbiAqXG4gKiBTdXBwb3J0cyB0aHJlZSBhdXRoIG1ldGhvZHM6XG4gKiAxLiBQTEFURk9STV9UT0tFTiBlbnYgdmFyXG4gKiAyLiB0aGUgc3RvcmVkIGBhdXRoIGxvZ2luYCBzZXNzaW9uIGZvciB0aGlzIHBsYXRmb3JtIChyZW5ld2VkIG9uIGV4cGlyeSlcbiAqIDMuIC0tc3RvcmUtdG9rZW5zICsgUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhciDihpIgZmV0Y2ggdG9rZW4gZnJvbSBTZWNyZXRzIE1hbmFnZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zOiB7XG4gIHN0b3JlVG9rZW5zPzogYm9vbGVhbjtcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICBwcm9maWxlPzogc3RyaW5nO1xufSk6IFByb21pc2U8QXBpQ2xpZW50PiB7XG4gIC8vIFJlc29sdmUgdG9rZW4gYW5kIHNldCBpdCBpbiBlbnYgc28gQXBpQ2xpZW50L2dldENvbmZpZyBjYW4gZmluZCBpdFxuICBpZiAoIXByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOKSB7XG4gICAgY29uc3QgdG9rZW4gPSBhd2FpdCByZXNvbHZlVG9rZW4ob3B0aW9ucyk7XG4gICAgcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4gPSB0b2tlbjtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemUgYW5kIHJldHVybiBhbiBhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQgKHN5bmMg4oCUIHJlcXVpcmVzIFBMQVRGT1JNX1RPS0VOKS5cbiAqIFVzZSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMgZm9yIC0tc3RvcmUtdG9rZW5zIHN1cHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnM6IHsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9KTogQXBpQ2xpZW50IHtcbiAgY29uc3QgY29uZmlnOiBDb25maWcgPSBnZXRDb25maWdXaXRoT3B0aW9ucyhvcHRpb25zKTtcbiAgcHJpbnRJbmZvKCdJbml0aWFsaXppbmcgQVBJIGNsaWVudCcsIHsgYmFzZVVybDogY29uZmlnLmFwaS5iYXNlVXJsIH0pO1xuICBjb25zdCBjbGllbnQgPSBuZXcgQXBpQ2xpZW50KGNvbmZpZyk7XG5cbiAgaWYgKCFjbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICBwcmludEVycm9yKCdOb3QgYXV0aGVudGljYXRlZCcsIHsgaGludDogJ1J1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiLCBzZXQgUExBVEZPUk1fVE9LRU4sIG9yIHVzZSAtLXN0b3JlLXRva2VucycgfSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdXRoZW50aWNhdGlvbiByZXF1aXJlZCcpO1xuICB9XG5cbiAgcHJpbnRTdWNjZXNzKCdBUEkgY2xpZW50IGluaXRpYWxpemVkJyk7XG4gIHJldHVybiBjbGllbnQ7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYSByZXF1aXJlZCBlbnRpdHkgSUQgKFVMSUQgb3IgVVVJRCBmb3JtYXQpLlxuICogUmV0dXJucyB0cmltbWVkIElELlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgSUQgaXMgZW1wdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRW50aXR5SWQoaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgZW50aXR5TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpZCB8fCB0eXBlb2YgaWQgIT09ICdzdHJpbmcnIHx8IGlkLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICBwcmludEVycm9yKGBJbnZhbGlkICR7ZW50aXR5TmFtZX0gSURgLCB7IHByb3ZpZGVkOiBpZCB9KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZW50aXR5TmFtZX0gSUQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWQgPSBpZC50cmltKCk7XG5cbiAgaWYgKHRyaW1tZWQubGVuZ3RoICE9PSAyNiAmJiB0cmltbWVkLmxlbmd0aCAhPT0gMzYpIHtcbiAgICBwcmludFdhcm5pbmcoYCR7ZW50aXR5TmFtZX0gSUQgZm9ybWF0IG1heSBiZSBpbnZhbGlkYCwge1xuICAgICAgcHJvdmlkZWQ6IHRyaW1tZWQsXG4gICAgICBleHBlY3RlZExlbmd0aDogJzI2IGNoYXJhY3RlcnMgKFVMSUQpIG9yIDM2IGNoYXJhY3RlcnMgKFVVSUQpJyxcbiAgICAgIGFjdHVhbExlbmd0aDogdHJpbW1lZC5sZW5ndGgsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdHJpbW1lZDtcbn1cblxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,YAAY,EAAE,MAAM,EAAE,CAAC;AA2CvB;;;;;;;;;;;GAWG;AACH;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAaD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAU7E"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD,YAAY,EAAE,MAAM,EAAE,CAAC;AA2CvB;;;;;;;;;;;GAWG;AACH;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CA4CnD;AAED,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAaD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAU7E"}
@@ -85,15 +85,20 @@ export function getApiConfig() {
85
85
  config.api.baseUrl = process.env.PLATFORM_BASE_URL;
86
86
  printDebug('Using PLATFORM_BASE_URL from environment', { baseUrl: config.api.baseUrl });
87
87
  }
88
- if (process.env.TLS_REJECT_UNAUTHORIZED !== undefined) {
89
- const disable = process.env.TLS_REJECT_UNAUTHORIZED === '0';
88
+ // `NODE_TLS_REJECT_UNAUTHORIZED=0` is how a dev synth's relaxation reaches the
89
+ // CodeBuild synth (pipeline-core propagates it into every step, and refuses to
90
+ // set it in production) — honour it like TLS_REJECT_UNAUTHORIZED, under the
91
+ // same production refusal, so no build has to pass `--no-verify-ssl`.
92
+ const tlsReject = process.env.TLS_REJECT_UNAUTHORIZED ?? (process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0' ? '0' : undefined);
93
+ if (tlsReject !== undefined) {
94
+ const disable = tlsReject === '0';
90
95
  if (disable && isProductionEnv()) {
91
96
  printWarning('Ignoring TLS_REJECT_UNAUTHORIZED=0 in production — SSL verification remains enabled');
92
97
  }
93
98
  else {
94
99
  config.api.rejectUnauthorized = !disable;
95
100
  if (disable) {
96
- printWarning('SSL certificate validation disabled via TLS_REJECT_UNAUTHORIZED=0');
101
+ printWarning('SSL certificate validation disabled via TLS_REJECT_UNAUTHORIZED=0 / NODE_TLS_REJECT_UNAUTHORIZED=0');
97
102
  }
98
103
  }
99
104
  }
@@ -160,4 +165,4 @@ export function getConfigWithOptions(options) {
160
165
  }
161
166
  return config;
162
167
  }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLG1CQUFtQixFQUFFLHlCQUF5QjtRQUM5QyxTQUFTLEVBQUUsY0FBYztRQUN6QixlQUFlLEVBQUUscUJBQXFCO1FBQ3RDLGtCQUFrQixFQUFFLElBQUk7S0FDekI7Q0FDRixDQUFD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RCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDckMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7S0FDbEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNoQyx1RUFBdUU7UUFDdkUsNkVBQTZFO1FBQzdFLG1FQUFtRTtRQUNuRSx1QkFBdUIsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGlzU2Vzc2lvblVzYWJsZSwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQsIGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4vdGxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IHR5cGUgeyBDb25maWcgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24g4oCUIEFQSSBlbmRwb2ludCBwYXRocyBhbmQgY29ubmVjdGlvbiBzZXR0aW5ncy5cbiAqL1xuY29uc3QgZGVmYXVsdENvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4gPSB7XG4gIGFwaToge1xuICAgIGJhc2VVcmw6ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJyxcbiAgICB0aW1lb3V0OiAzMF8wMDAsXG4gICAgcGlwZWxpbmVVcmw6ICcvYXBpL3BpcGVsaW5lcycsXG4gICAgcGlwZWxpbmVUZW1wbGF0ZVVybDogJy9hcGkvcGlwZWxpbmUtdGVtcGxhdGVzJyxcbiAgICBwbHVnaW5Vcmw6ICcvYXBpL3BsdWdpbnMnLFxuICAgIHBsdWdpblVwbG9hZFVybDogJy9hcGkvcGx1Z2lucy91cGxvYWQnLFxuICAgIHJlamVjdFVuYXV0aG9yaXplZDogdHJ1ZSxcbiAgfSxcbn07XG5cbi8qKiBVc2VyIGNvbmZpZyBmaWxlIHBhdGg6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbCAqL1xuY29uc3QgVVNFUl9DT05GSUdfUEFUSCA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcucGlwZWxpbmUtbWFuYWdlcicsICdjb25maWcueW1sJyk7XG5cbi8qKlxuICogTG9hZCBhIFlBTUwgY29uZmlnIGZpbGUgYW5kIG1lcmdlIGl0cyBgYXBpYCBzZWN0aW9uIGludG8gdGhlIGNvbmZpZy5cbiAqIFJldHVybnMgdGhlIG1lcmdlZCBjb25maWcgb3IgdGhlIG9yaWdpbmFsIGlmIGZpbGUgZG9lc24ndCBleGlzdCBvciBmYWlscy5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbmZpZ0ZpbGUoZmlsZVBhdGg6IHN0cmluZywgY29uZmlnOiBPbWl0PENvbmZpZywgJ2F1dGgnPik6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkgcmV0dXJuIGNvbmZpZztcblxuICB0cnkge1xuICAgIHByaW50RGVidWcoJ0xvYWRpbmcgY29uZmlndXJhdGlvbicsIHsgcGF0aDogZmlsZVBhdGggfSk7XG4gICAgY29uc3QgcGFyc2VkID0geWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGYtOCcpKTtcbiAgICBpZiAocGFyc2VkPy5hdXRoKSB7XG4gICAgICBwcmludFdhcm5pbmcoJ0F1dGggc2VjdGlvbiBpbiBjb25maWcgZmlsZSBpcyBpZ25vcmVkIOKAlCB1c2UgUExBVEZPUk1fVE9LRU4gZW52IHZhcicpO1xuICAgIH1cbiAgICByZXR1cm4geyBhcGk6IHsgLi4uY29uZmlnLmFwaSwgLi4ucGFyc2VkPy5hcGkgfSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50V2FybmluZygnRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGUsIHVzaW5nIGRlZmF1bHRzJywge1xuICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gZmlsZXMgYW5kIGVudmlyb25tZW50LlxuICpcbiAqIFByaW9yaXR5IChsYXN0IHdpbnMpOlxuICogMS4gQnVpbHQtaW4gZGVmYXVsdHNcbiAqIDIuIFVzZXIgY29uZmlnIGZpbGU6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbFxuICogMy4gUHJvamVjdCBjb25maWcgZmlsZTogQ0xJX0NPTkZJR19QQVRIIG9yIC4vY29uZmlnLnltbFxuICogNC4gRW52aXJvbm1lbnQgdmFyaWFibGVzXG4gKlxuICogQXV0aCB0b2tlbiBjb21lcyBmcm9tIFBMQVRGT1JNX1RPS0VOLCBlbHNlIHRoZSBzdG9yZWQgYGF1dGggbG9naW5gIHNlc3Npb24g4oCUXG4gKiBuZXZlciBmcm9tIGEgY29uZmlnIGZpbGUuXG4gKi9cbi8qKlxuICogUmVzb2x2ZSB0aGUgQVBJL2Nvbm5lY3Rpb24gY29uZmlnIChiYXNlIFVSTCwgU1NMLCB0aW1lb3V0cykgZnJvbSBmaWxlcyBhbmRcbiAqIGVudmlyb25tZW50IFdJVEhPVVQgcmVxdWlyaW5nIGBQTEFURk9STV9UT0tFTmAuXG4gKlxuICogVGhpcyBpcyB0aGUgdG9rZW4tb3B0aW9uYWwgc2xpY2Ugb2Yge0BsaW5rIGdldENvbmZpZ30uIFRoZSBwcmUtYXV0aCBsb2dpbiBzdGVwXG4gKiAoYGVuc3VyZVBsYXRmb3JtVG9rZW5gKSBuZWVkcyB0aGUgcmVzb2x2ZWQgYmFzZSBVUkwgdG8gUE9TVCBgL2FwaS9hdXRoL2xvZ2luYFxuICogKmJlZm9yZSogYW55IHRva2VuIGV4aXN0cyDigJQgY2FsbGluZyBgZ2V0Q29uZmlnKClgIHRoZXJlIHdvdWxkIHRocm93IG9uIHRoZVxuICogbWlzc2luZyB0b2tlbiBhbmQgbWFrZSBpbmxpbmUtbG9naW4gZGVhZC1vbi1hcnJpdmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpQ29uZmlnKCk6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5DTElfQ09ORklHX1BBVEggfHwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2NvbmZpZy55bWwnKTtcblxuICAvLyBMYXllciAxOiBkZWZhdWx0cyDihpIgTGF5ZXIgMjogdXNlciBjb25maWcg4oaSIExheWVyIDM6IHByb2plY3QgY29uZmlnLlxuICAvLyBgYXBpYCBpcyBjb3BpZWQgdG9vOiBhIHNoYWxsb3cgYHsgLi4uZGVmYXVsdENvbmZpZyB9YCBzaGFyZXMgdGhlIFNBTUUgYGFwaWBcbiAgLy8gb2JqZWN0LCBzbyB0aGUgYFBMQVRGT1JNX0JBU0VfVVJMYCBhc3NpZ25tZW50IGJlbG93IG11dGF0ZWQgdGhlIG1vZHVsZS1sZXZlbFxuICAvLyBkZWZhdWx0cyBhbmQgbGVha2VkIG9uZSBjYWxsZXIncyBiYXNlIFVSTCBpbnRvIGV2ZXJ5IGxhdGVyIHJlc29sdXRpb24uXG4gIGxldCBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShVU0VSX0NPTkZJR19QQVRILCB7IGFwaTogeyAuLi5kZWZhdWx0Q29uZmlnLmFwaSB9IH0pO1xuICBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShwcm9qZWN0Q29uZmlnUGF0aCwgY29uZmlnKTtcblxuICAvLyBMYXllciA0OiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXNcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMKSB7XG4gICAgY29uZmlnLmFwaS5iYXNlVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gICAgcHJpbnREZWJ1ZygnVXNpbmcgUExBVEZPUk1fQkFTRV9VUkwgZnJvbSBlbnZpcm9ubWVudCcsIHsgYmFzZVVybDogY29uZmlnLmFwaS5iYXNlVXJsIH0pO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkaXNhYmxlID0gcHJvY2Vzcy5lbnYuVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPT09ICcwJztcbiAgICBpZiAoZGlzYWJsZSAmJiBpc1Byb2R1Y3Rpb25FbnYoKSkge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJZ25vcmluZyBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wIGluIHByb2R1Y3Rpb24g4oCUIFNTTCB2ZXJpZmljYXRpb24gcmVtYWlucyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZpZy5hcGkucmVqZWN0VW5hdXRob3JpemVkID0gIWRpc2FibGU7XG4gICAgICBpZiAoZGlzYWJsZSkge1xuICAgICAgICBwcmludFdhcm5pbmcoJ1NTTCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGRpc2FibGVkIHZpYSBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0wJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQsIDEwKTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZCkgJiYgcGFyc2VkID4gMCkge1xuICAgICAgY29uZmlnLmFwaS51cGxvYWRUaW1lb3V0ID0gcGFyc2VkO1xuICAgICAgcHJpbnREZWJ1ZygnVXNpbmcgVVBMT0FEX1RJTUVPVVQgZnJvbSBlbnZpcm9ubWVudCcsIHsgdXBsb2FkVGltZW91dDogYCR7cGFyc2VkfW1zYCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRXYXJuaW5nKCdJbnZhbGlkIFVQTE9BRF9USU1FT1VUIHZhbHVlLCB1c2luZyBkZWZhdWx0JywgeyBwcm92aWRlZDogcHJvY2Vzcy5lbnYuVVBMT0FEX1RJTUVPVVQgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZygpOiBDb25maWcge1xuICBjb25zdCBjb25maWcgPSBnZXRBcGlDb25maWcoKTtcblxuICAvLyBQTEFURk9STV9UT0tFTiB3aW5zIChhbiBhY2Nlc3Mga2V5IGluIENJLCBvciBhbiBleHBsaWNpdCBleHBvcnQpOyBvdGhlcndpc2VcbiAgLy8gZmFsbCBiYWNrIHRvIHRoZSBzZXNzaW9uIGBhdXRoIGxvZ2luYCBzdG9yZWQgZm9yIFRISVMgcGxhdGZvcm0uIEEgc3RvcmVkXG4gIC8vIHNlc3Npb24gdGhhdCBoYXMgYWxyZWFkeSBleHBpcmVkIGlzIGlnbm9yZWQgcmF0aGVyIHRoYW4gc2VudCBhbmQgcmVqZWN0ZWQg4oCUXG4gIC8vIHRoZSBhc3luYyBwYXRoIChgcmVzb2x2ZVRva2VuYCkgcmVmcmVzaGVzIGl0LCBhbmQgZXZlcnl0aGluZyBlbHNlIHRlbGxzIHRoZVxuICAvLyB1c2VyIHRvIHNpZ24gaW4gYWdhaW4uXG4gIGNvbnN0IHN0b3JlZCA9IGxvYWRTZXNzaW9uKGNvbmZpZy5hcGkuYmFzZVVybCk7XG4gIGNvbnN0IHRva2VuID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fVE9LRU4gfHwgKGlzU2Vzc2lvblVzYWJsZShzdG9yZWQpID8gc3RvcmVkLmFjY2Vzc1Rva2VuIDogdW5kZWZpbmVkKTtcblxuICBpZiAoIXRva2VuKSB7XG4gICAgcHJpbnRFcnJvcignTm90IHNpZ25lZCBpbjogbm8gUExBVEZPUk1fVE9LRU4sIGFuZCBubyB2YWxpZCBzdG9yZWQgc2Vzc2lvbiBmb3IgdGhpcyBwbGF0Zm9ybScpO1xuICAgIHRocm93IG5ldyBFcnJvcignUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIsIG9yIHNldCBQTEFURk9STV9UT0tFTiB0byBhbiBhY2Nlc3Mga2V5Jyk7XG4gIH1cblxuICBpZiAodG9rZW4udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUExBVEZPUk1fVE9LRU4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgfVxuXG4gIGlmICh0b2tlbi5pbmNsdWRlcygnICcpKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdQTEFURk9STV9UT0tFTiBjb250YWlucyB3aGl0ZXNwYWNlIOKAlCB0aGlzIG1heSBjYXVzZSBpc3N1ZXMnKTtcbiAgfVxuXG4gIHByaW50RGVidWcoJ0NvbmZpZ3VyYXRpb24gbG9hZGVkIHN1Y2Nlc3NmdWxseScpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGF1dGg6IHsgdG9rZW4gfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBjb3B5IG9mIGBjb25maWdgIHdpdGggU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZC4gTW9kdWxlLXByaXZhdGUg4oCUIHRoZVxuICogb25seSBjYWxsZXIgaXMgYGdldENvbmZpZ1dpdGhPcHRpb25zYCBiZWxvdy5cbiAqL1xuZnVuY3Rpb24gd2l0aFNTTERpc2FibGVkKGNvbmZpZzogQ29uZmlnKTogQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgYXBpOiB7IC4uLmNvbmZpZy5hcGksIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsbHkgZGlzYWJsaW5nIFNTTCBiYXNlZCBvbiBjb21tYW5kIG9wdGlvbnMuXG4gKiBSZXBsYWNlcyB0aGUgcmVwZWF0ZWQgcGF0dGVybjpcbiAqICAgYG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSA/IHdpdGhTU0xEaXNhYmxlZChnZXRDb25maWcoKSkgOiBnZXRDb25maWcoKWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZ1dpdGhPcHRpb25zKG9wdGlvbnM6IHsgdmVyaWZ5U3NsPzogYm9vbGVhbiB9KTogQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIGlmIChvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UpIHtcbiAgICAvLyBFdmVyeSBhdXRoZW50aWNhdGVkIGNvbW1hbmQgZmxvd3MgaXRzIHRva2VuIHRocm91Z2ggaGVyZSDigJQgcmVmdXNlIHRvXG4gICAgLy8gZGlzYWJsZSBjZXJ0IHZlcmlmaWNhdGlvbiBpbiBwcm9kdWN0aW9uIChtaXJyb3JzIHRoZSBsb2dpbi9yZW5ld2FsIGd1YXJkcylcbiAgICAvLyBzbyBhIE1JVE0gY2FuJ3QgaGFydmVzdCB0aGUgQmVhcmVyIEpXVC4gTm8tb3AgaW4gbm9uLXByb2R1Y3Rpb24uXG4gICAgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQoJ2F1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudCAoLS1uby12ZXJpZnktc3NsKScpO1xuICAgIHJldHVybiB3aXRoU1NMRGlzYWJsZWQoY29uZmlnKTtcbiAgfVxuICByZXR1cm4gY29uZmlnO1xufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jb25maWctbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BFLE9BQU8sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELDBEQUEwRDtBQUMxRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBSS9EOztHQUVHO0FBQ0gsTUFBTSxhQUFhLEdBQXlCO0lBQzFDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSx3QkFBd0I7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLG1CQUFtQixFQUFFLHlCQUF5QjtRQUM5QyxTQUFTLEVBQUUsY0FBYztRQUN6QixlQUFlLEVBQUUscUJBQXFCO1FBQ3RDLGtCQUFrQixFQUFFLElBQUk7S0FDekI7Q0FDRixDQUFD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QUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixZQUFZLENBQUMsNERBQTRELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULElBQUksRUFBRSxFQUFFLEtBQUssRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLE1BQWM7SUFDckMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUU7S0FDbEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNoQyx1RUFBdUU7UUFDdkUsNkVBQTZFO1FBQzdFLG1FQUFtRTtRQUNuRSx1QkFBdUIsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGlzU2Vzc2lvblVzYWJsZSwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgcHJpbnREZWJ1ZywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U3NsRGlzYWJsZUFsbG93ZWQsIGlzUHJvZHVjdGlvbkVudiB9IGZyb20gJy4vdGxzLmpzJztcbmltcG9ydCB7IHR5cGUgQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG4vLyBFU00gaGFzIG5vIF9fZGlybmFtZTsgZGVyaXZlIGl0IGZyb20gdGhpcyBtb2R1bGUncyBVUkwuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuZXhwb3J0IHR5cGUgeyBDb25maWcgfTtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24g4oCUIEFQSSBlbmRwb2ludCBwYXRocyBhbmQgY29ubmVjdGlvbiBzZXR0aW5ncy5cbiAqL1xuY29uc3QgZGVmYXVsdENvbmZpZzogT21pdDxDb25maWcsICdhdXRoJz4gPSB7XG4gIGFwaToge1xuICAgIGJhc2VVcmw6ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJyxcbiAgICB0aW1lb3V0OiAzMF8wMDAsXG4gICAgcGlwZWxpbmVVcmw6ICcvYXBpL3BpcGVsaW5lcycsXG4gICAgcGlwZWxpbmVUZW1wbGF0ZVVybDogJy9hcGkvcGlwZWxpbmUtdGVtcGxhdGVzJyxcbiAgICBwbHVnaW5Vcmw6ICcvYXBpL3BsdWdpbnMnLFxuICAgIHBsdWdpblVwbG9hZFVybDogJy9hcGkvcGx1Z2lucy91cGxvYWQnLFxuICAgIHJlamVjdFVuYXV0aG9yaXplZDogdHJ1ZSxcbiAgfSxcbn07XG5cbi8qKiBVc2VyIGNvbmZpZyBmaWxlIHBhdGg6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbCAqL1xuY29uc3QgVVNFUl9DT05GSUdfUEFUSCA9IHBhdGguam9pbihvcy5ob21lZGlyKCksICcucGlwZWxpbmUtbWFuYWdlcicsICdjb25maWcueW1sJyk7XG5cbi8qKlxuICogTG9hZCBhIFlBTUwgY29uZmlnIGZpbGUgYW5kIG1lcmdlIGl0cyBgYXBpYCBzZWN0aW9uIGludG8gdGhlIGNvbmZpZy5cbiAqIFJldHVybnMgdGhlIG1lcmdlZCBjb25maWcgb3IgdGhlIG9yaWdpbmFsIGlmIGZpbGUgZG9lc24ndCBleGlzdCBvciBmYWlscy5cbiAqL1xuZnVuY3Rpb24gbG9hZENvbmZpZ0ZpbGUoZmlsZVBhdGg6IHN0cmluZywgY29uZmlnOiBPbWl0PENvbmZpZywgJ2F1dGgnPik6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGVQYXRoKSkgcmV0dXJuIGNvbmZpZztcblxuICB0cnkge1xuICAgIHByaW50RGVidWcoJ0xvYWRpbmcgY29uZmlndXJhdGlvbicsIHsgcGF0aDogZmlsZVBhdGggfSk7XG4gICAgY29uc3QgcGFyc2VkID0geWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGYtOCcpKTtcbiAgICBpZiAocGFyc2VkPy5hdXRoKSB7XG4gICAgICBwcmludFdhcm5pbmcoJ0F1dGggc2VjdGlvbiBpbiBjb25maWcgZmlsZSBpcyBpZ25vcmVkIOKAlCB1c2UgUExBVEZPUk1fVE9LRU4gZW52IHZhcicpO1xuICAgIH1cbiAgICByZXR1cm4geyBhcGk6IHsgLi4uY29uZmlnLmFwaSwgLi4ucGFyc2VkPy5hcGkgfSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50V2FybmluZygnRmFpbGVkIHRvIGxvYWQgY29uZmlnIGZpbGUsIHVzaW5nIGRlZmF1bHRzJywge1xuICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uIGZyb20gZmlsZXMgYW5kIGVudmlyb25tZW50LlxuICpcbiAqIFByaW9yaXR5IChsYXN0IHdpbnMpOlxuICogMS4gQnVpbHQtaW4gZGVmYXVsdHNcbiAqIDIuIFVzZXIgY29uZmlnIGZpbGU6IH4vLnBpcGVsaW5lLW1hbmFnZXIvY29uZmlnLnltbFxuICogMy4gUHJvamVjdCBjb25maWcgZmlsZTogQ0xJX0NPTkZJR19QQVRIIG9yIC4vY29uZmlnLnltbFxuICogNC4gRW52aXJvbm1lbnQgdmFyaWFibGVzXG4gKlxuICogQXV0aCB0b2tlbiBjb21lcyBmcm9tIFBMQVRGT1JNX1RPS0VOLCBlbHNlIHRoZSBzdG9yZWQgYGF1dGggbG9naW5gIHNlc3Npb24g4oCUXG4gKiBuZXZlciBmcm9tIGEgY29uZmlnIGZpbGUuXG4gKi9cbi8qKlxuICogUmVzb2x2ZSB0aGUgQVBJL2Nvbm5lY3Rpb24gY29uZmlnIChiYXNlIFVSTCwgU1NMLCB0aW1lb3V0cykgZnJvbSBmaWxlcyBhbmRcbiAqIGVudmlyb25tZW50IFdJVEhPVVQgcmVxdWlyaW5nIGBQTEFURk9STV9UT0tFTmAuXG4gKlxuICogVGhpcyBpcyB0aGUgdG9rZW4tb3B0aW9uYWwgc2xpY2Ugb2Yge0BsaW5rIGdldENvbmZpZ30uIFRoZSBwcmUtYXV0aCBsb2dpbiBzdGVwXG4gKiAoYGVuc3VyZVBsYXRmb3JtVG9rZW5gKSBuZWVkcyB0aGUgcmVzb2x2ZWQgYmFzZSBVUkwgdG8gUE9TVCBgL2FwaS9hdXRoL2xvZ2luYFxuICogKmJlZm9yZSogYW55IHRva2VuIGV4aXN0cyDigJQgY2FsbGluZyBgZ2V0Q29uZmlnKClgIHRoZXJlIHdvdWxkIHRocm93IG9uIHRoZVxuICogbWlzc2luZyB0b2tlbiBhbmQgbWFrZSBpbmxpbmUtbG9naW4gZGVhZC1vbi1hcnJpdmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpQ29uZmlnKCk6IE9taXQ8Q29uZmlnLCAnYXV0aCc+IHtcbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5DTElfQ09ORklHX1BBVEggfHwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2NvbmZpZy55bWwnKTtcblxuICAvLyBMYXllciAxOiBkZWZhdWx0cyDihpIgTGF5ZXIgMjogdXNlciBjb25maWcg4oaSIExheWVyIDM6IHByb2plY3QgY29uZmlnLlxuICAvLyBgYXBpYCBpcyBjb3BpZWQgdG9vOiBhIHNoYWxsb3cgYHsgLi4uZGVmYXVsdENvbmZpZyB9YCBzaGFyZXMgdGhlIFNBTUUgYGFwaWBcbiAgLy8gb2JqZWN0LCBzbyB0aGUgYFBMQVRGT1JNX0JBU0VfVVJMYCBhc3NpZ25tZW50IGJlbG93IG11dGF0ZWQgdGhlIG1vZHVsZS1sZXZlbFxuICAvLyBkZWZhdWx0cyBhbmQgbGVha2VkIG9uZSBjYWxsZXIncyBiYXNlIFVSTCBpbnRvIGV2ZXJ5IGxhdGVyIHJlc29sdXRpb24uXG4gIGxldCBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShVU0VSX0NPTkZJR19QQVRILCB7IGFwaTogeyAuLi5kZWZhdWx0Q29uZmlnLmFwaSB9IH0pO1xuICBjb25maWcgPSBsb2FkQ29uZmlnRmlsZShwcm9qZWN0Q29uZmlnUGF0aCwgY29uZmlnKTtcblxuICAvLyBMYXllciA0OiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvdmVycmlkZXNcbiAgaWYgKHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMKSB7XG4gICAgY29uZmlnLmFwaS5iYXNlVXJsID0gcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkw7XG4gICAgcHJpbnREZWJ1ZygnVXNpbmcgUExBVEZPUk1fQkFTRV9VUkwgZnJvbSBlbnZpcm9ubWVudCcsIHsgYmFzZVVybDogY29uZmlnLmFwaS5iYXNlVXJsIH0pO1xuICB9XG5cbiAgLy8gYE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MGAgaXMgaG93IGEgZGV2IHN5bnRoJ3MgcmVsYXhhdGlvbiByZWFjaGVzIHRoZVxuICAvLyBDb2RlQnVpbGQgc3ludGggKHBpcGVsaW5lLWNvcmUgcHJvcGFnYXRlcyBpdCBpbnRvIGV2ZXJ5IHN0ZXAsIGFuZCByZWZ1c2VzIHRvXG4gIC8vIHNldCBpdCBpbiBwcm9kdWN0aW9uKSDigJQgaG9ub3VyIGl0IGxpa2UgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQsIHVuZGVyIHRoZVxuICAvLyBzYW1lIHByb2R1Y3Rpb24gcmVmdXNhbCwgc28gbm8gYnVpbGQgaGFzIHRvIHBhc3MgYC0tbm8tdmVyaWZ5LXNzbGAuXG4gIGNvbnN0IHRsc1JlamVjdCA9IHByb2Nlc3MuZW52LlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID8/IChwcm9jZXNzLmVudi5OT0RFX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEID09PSAnMCcgPyAnMCcgOiB1bmRlZmluZWQpO1xuICBpZiAodGxzUmVqZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkaXNhYmxlID0gdGxzUmVqZWN0ID09PSAnMCc7XG4gICAgaWYgKGRpc2FibGUgJiYgaXNQcm9kdWN0aW9uRW52KCkpIHtcbiAgICAgIHByaW50V2FybmluZygnSWdub3JpbmcgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCBpbiBwcm9kdWN0aW9uIOKAlCBTU0wgdmVyaWZpY2F0aW9uIHJlbWFpbnMgZW5hYmxlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuYXBpLnJlamVjdFVuYXV0aG9yaXplZCA9ICFkaXNhYmxlO1xuICAgICAgaWYgKGRpc2FibGUpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKCdTU0wgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBkaXNhYmxlZCB2aWEgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCAvIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ9MCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5VUExPQURfVElNRU9VVCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VULCAxMCk7XG4gICAgaWYgKCFpc05hTihwYXJzZWQpICYmIHBhcnNlZCA+IDApIHtcbiAgICAgIGNvbmZpZy5hcGkudXBsb2FkVGltZW91dCA9IHBhcnNlZDtcbiAgICAgIHByaW50RGVidWcoJ1VzaW5nIFVQTE9BRF9USU1FT1VUIGZyb20gZW52aXJvbm1lbnQnLCB7IHVwbG9hZFRpbWVvdXQ6IGAke3BhcnNlZH1tc2AgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByaW50V2FybmluZygnSW52YWxpZCBVUExPQURfVElNRU9VVCB2YWx1ZSwgdXNpbmcgZGVmYXVsdCcsIHsgcHJvdmlkZWQ6IHByb2Nlc3MuZW52LlVQTE9BRF9USU1FT1VUIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0QXBpQ29uZmlnKCk7XG5cbiAgLy8gUExBVEZPUk1fVE9LRU4gd2lucyAoYW4gYWNjZXNzIGtleSBpbiBDSSwgb3IgYW4gZXhwbGljaXQgZXhwb3J0KTsgb3RoZXJ3aXNlXG4gIC8vIGZhbGwgYmFjayB0byB0aGUgc2Vzc2lvbiBgYXV0aCBsb2dpbmAgc3RvcmVkIGZvciBUSElTIHBsYXRmb3JtLiBBIHN0b3JlZFxuICAvLyBzZXNzaW9uIHRoYXQgaGFzIGFscmVhZHkgZXhwaXJlZCBpcyBpZ25vcmVkIHJhdGhlciB0aGFuIHNlbnQgYW5kIHJlamVjdGVkIOKAlFxuICAvLyB0aGUgYXN5bmMgcGF0aCAoYHJlc29sdmVUb2tlbmApIHJlZnJlc2hlcyBpdCwgYW5kIGV2ZXJ5dGhpbmcgZWxzZSB0ZWxscyB0aGVcbiAgLy8gdXNlciB0byBzaWduIGluIGFnYWluLlxuICBjb25zdCBzdG9yZWQgPSBsb2FkU2Vzc2lvbihjb25maWcuYXBpLmJhc2VVcmwpO1xuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LlBMQVRGT1JNX1RPS0VOIHx8IChpc1Nlc3Npb25Vc2FibGUoc3RvcmVkKSA/IHN0b3JlZC5hY2Nlc3NUb2tlbiA6IHVuZGVmaW5lZCk7XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHByaW50RXJyb3IoJ05vdCBzaWduZWQgaW46IG5vIFBMQVRGT1JNX1RPS0VOLCBhbmQgbm8gdmFsaWQgc3RvcmVkIHNlc3Npb24gZm9yIHRoaXMgcGxhdGZvcm0nKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBcInBpcGVsaW5lLW1hbmFnZXIgYXV0aCBsb2dpblwiLCBvciBzZXQgUExBVEZPUk1fVE9LRU4gdG8gYW4gYWNjZXNzIGtleScpO1xuICB9XG5cbiAgaWYgKHRva2VuLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BMQVRGT1JNX1RPS0VOIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAodG9rZW4uaW5jbHVkZXMoJyAnKSkge1xuICAgIHByaW50V2FybmluZygnUExBVEZPUk1fVE9LRU4gY29udGFpbnMgd2hpdGVzcGFjZSDigJQgdGhpcyBtYXkgY2F1c2UgaXNzdWVzJyk7XG4gIH1cblxuICBwcmludERlYnVnKCdDb25maWd1cmF0aW9uIGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBhdXRoOiB7IHRva2VuIH0sXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBgY29uZmlnYCB3aXRoIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWQuIE1vZHVsZS1wcml2YXRlIOKAlCB0aGVcbiAqIG9ubHkgY2FsbGVyIGlzIGBnZXRDb25maWdXaXRoT3B0aW9uc2AgYmVsb3cuXG4gKi9cbmZ1bmN0aW9uIHdpdGhTU0xEaXNhYmxlZChjb25maWc6IENvbmZpZyk6IENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGFwaTogeyAuLi5jb25maWcuYXBpLCByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBjb25maWd1cmF0aW9uLCBvcHRpb25hbGx5IGRpc2FibGluZyBTU0wgYmFzZWQgb24gY29tbWFuZCBvcHRpb25zLlxuICogUmVwbGFjZXMgdGhlIHJlcGVhdGVkIHBhdHRlcm46XG4gKiAgIGBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyB3aXRoU1NMRGlzYWJsZWQoZ2V0Q29uZmlnKCkpIDogZ2V0Q29uZmlnKClgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdXaXRoT3B0aW9ucyhvcHRpb25zOiB7IHZlcmlmeVNzbD86IGJvb2xlYW4gfSk6IENvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICBpZiAob3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlKSB7XG4gICAgLy8gRXZlcnkgYXV0aGVudGljYXRlZCBjb21tYW5kIGZsb3dzIGl0cyB0b2tlbiB0aHJvdWdoIGhlcmUg4oCUIHJlZnVzZSB0b1xuICAgIC8vIGRpc2FibGUgY2VydCB2ZXJpZmljYXRpb24gaW4gcHJvZHVjdGlvbiAobWlycm9ycyB0aGUgbG9naW4vcmVuZXdhbCBndWFyZHMpXG4gICAgLy8gc28gYSBNSVRNIGNhbid0IGhhcnZlc3QgdGhlIEJlYXJlciBKV1QuIE5vLW9wIGluIG5vbi1wcm9kdWN0aW9uLlxuICAgIGFzc2VydFNzbERpc2FibGVBbGxvd2VkKCdhdXRoZW50aWNhdGVkIEFQSSBjbGllbnQgKC0tbm8tdmVyaWZ5LXNzbCknKTtcbiAgICByZXR1cm4gd2l0aFNTTERpc2FibGVkKGNvbmZpZyk7XG4gIH1cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdfQ==
@@ -34,5 +34,30 @@ export interface RunDeployInput {
34
34
  * `pipeline register` to drain later.
35
35
  */
36
36
  export declare function runDeploy(input: RunDeployInput): Promise<void>;
37
+ /** Inputs for {@link registerPipeline}. */
38
+ export interface RegisterPipelineInput {
39
+ client: RegistryClient;
40
+ pipelineUrl: string;
41
+ pipeline: Pick<Pipeline, 'id' | 'orgId' | 'pipelineName' | 'project' | 'organization'>;
42
+ region?: string;
43
+ /** Cloud assembly dir holding the synth's step manifest. */
44
+ output: string;
45
+ /**
46
+ * Queue a failed POST as a pending intent for `pipeline register`. True on an
47
+ * operator's machine; false inside CodeBuild, where the home directory dies
48
+ * with the build and nobody would ever drain it.
49
+ */
50
+ queueOnFailure: boolean;
51
+ }
52
+ /**
53
+ * POST the registry upsert carrying the synth's step manifest — what keeps the
54
+ * platform's record of which plugin digests a pipeline runs (and so its
55
+ * deployed-exposure view) current. Shared by `pipeline deploy` and a
56
+ * self-mutating `pipeline synth` inside CodeBuild.
57
+ *
58
+ * Never throws: registration is best-effort and must not fail a deploy or
59
+ * synth that already succeeded. Returns whether the platform accepted it.
60
+ */
61
+ export declare function registerPipeline(input: RegisterPipelineInput): Promise<boolean>;
37
62
  export {};
38
63
  //# sourceMappingURL=deploy-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../src/utils/deploy-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,uEAAuE;AACvE,UAAU,cAAc;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkGpE"}
1
+ {"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../src/utils/deploy-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,uEAAuE;AACvE,UAAU,cAAc;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DpE;AAED,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DrF"}
@@ -67,9 +67,29 @@ export async function runDeploy(input) {
67
67
  printInfo('Skipping pipeline registry (no platform client)');
68
68
  return;
69
69
  }
70
+ await registerPipeline({
71
+ client: input.platformClient,
72
+ pipelineUrl: input.platformPipelineUrl,
73
+ pipeline,
74
+ region,
75
+ output,
76
+ queueOnFailure: true,
77
+ });
78
+ }
79
+ /**
80
+ * POST the registry upsert carrying the synth's step manifest — what keeps the
81
+ * platform's record of which plugin digests a pipeline runs (and so its
82
+ * deployed-exposure view) current. Shared by `pipeline deploy` and a
83
+ * self-mutating `pipeline synth` inside CodeBuild.
84
+ *
85
+ * Never throws: registration is best-effort and must not fail a deploy or
86
+ * synth that already succeeded. Returns whether the platform accepted it.
87
+ */
88
+ export async function registerPipeline(input) {
89
+ const { pipeline, region, output } = input;
70
90
  if (!pipeline.orgId) {
71
91
  printWarning('Pipeline has no orgId — skipping registration');
72
- return;
92
+ return false;
73
93
  }
74
94
  // Build the payload up-front so a POST failure can persist the SAME payload as a
75
95
  // pending intent for `pipeline register` to drain later (STS lookups aren't retried).
@@ -92,13 +112,21 @@ export async function runDeploy(input) {
92
112
  printWarning('Could not build registry payload — skipping registration', {
93
113
  error: errorMessage(buildError),
94
114
  });
95
- return;
115
+ return false;
96
116
  }
97
117
  try {
98
- await input.platformClient.post(`${input.platformPipelineUrl}/registry`, payload);
99
- printSuccess('Pipeline registered for event reporting', { pipelineId: payload.pipelineId });
118
+ await input.client.post(`${input.pipelineUrl}/registry`, payload);
119
+ printSuccess('Pipeline registered for event reporting', { pipelineId: payload.pipelineId, steps: payload.steps?.length ?? 0 });
120
+ return true;
100
121
  }
101
122
  catch (regError) {
123
+ if (!input.queueOnFailure) {
124
+ printWarning('Pipeline registry update FAILED — the platform\'s step manifest (and the deployed-exposure view built on it) is now stale for this pipeline', {
125
+ pipelineId: payload.pipelineId,
126
+ error: errorMessage(regError),
127
+ });
128
+ return false;
129
+ }
102
130
  try {
103
131
  const intentPath = await writePendingIntent(payload);
104
132
  printWarning('Pipeline registry update failed; queued for retry', {
@@ -113,6 +141,7 @@ export async function runDeploy(input) {
113
141
  queueError: errorMessage(writeErr),
114
142
  });
115
143
  }
144
+ return false;
116
145
  }
117
146
  }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ktcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQyxtRkFBbUY7QUFDbkYsOEVBQThFO0FBQzlFLG1GQUFtRjtBQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBNEIvRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFxQjtJQUNuRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUs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QUNMLENBQUM7UUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLFlBQVksQ0FBQywyREFBMkQsRUFBRTtnQkFDeEUsS0FBSyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQzdCLFVBQVUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBleGVjdXRlQ2RrU2hlbGxDb21tYW5kLCByZXNvbHZlQm9pbGVycGxhdGVQYXRoIH0gZnJvbSAnLi9jZGstdXRpbHMuanMnO1xuaW1wb3J0IHsgZW5zdXJlT3V0cHV0RGlyZWN0b3J5LCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBidWlsZFJlZ2lzdHJ5UGF5bG9hZCwgcmVhZFN0ZXBNYW5pZmVzdCwgd3JpdGVQZW5kaW5nSW50ZW50IH0gZnJvbSAnLi9yZWdpc3RyeS5qcyc7XG5pbXBvcnQgeyBhc3NlcnRTaGVsbFNhZmUsIHNoZWxsUXVvdGUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyB0eXBlIFBpcGVsaW5lIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLy8gRVNNIGhhcyBubyBfX2Rpcm5hbWU7IGRlcml2ZSBpdCBmcm9tIHRoaXMgbW9kdWxlJ3MgVVJMLiBgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aGBcbi8vIHJldHVybnMgYC4uL2JvaWxlcnBsYXRlLmpzYCwgd2hpY2ggaXMgdGhlIHNhbWUgdGFyZ2V0IHdoZXRoZXIgcmVzb2x2ZWQgZnJvbVxuLy8gc3JjL2NvbW1hbmRzIG9yIHNyYy91dGlscyAoYm90aCBhcmUgc2libGluZ3MgdW5kZXIgc3JjLyksIHNvIHRoaXMgc3RheXMgY29ycmVjdC5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG4vKiogTWluaW1hbCBwbGF0Zm9ybSBjbGllbnQgc2hhcGUgbmVlZGVkIHRvIHJlZ2lzdGVyIGEgZGVwbG95ZWQgQVJOLiAqL1xuaW50ZXJmYWNlIFJlZ2lzdHJ5Q2xpZW50IHtcbiAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duKSA9PiBQcm9taXNlPHVua25vd24+O1xufVxuXG4vKiogSW5wdXRzIGZvciB7QGxpbmsgcnVuRGVwbG95fSDigJQgYW4gYWxyZWFkeS1yZXNvbHZlZCBwaXBlbGluZSArIHByb3BzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5EZXBsb3lJbnB1dCB7XG4gIC8qKiBUaGUgcGlwZWxpbmUgYmVpbmcgZGVwbG95ZWQgKGlkL29yZ0lkL25hbWUvcHJvamVjdC9vcmcgZHJpdmUgcmVnaXN0cmF0aW9uKS4gKi9cbiAgcGlwZWxpbmU6IFBpY2s8UGlwZWxpbmUsICdpZCcgfCAnb3JnSWQnIHwgJ3BpcGVsaW5lTmFtZScgfCAncHJvamVjdCcgfCAnb3JnYW5pemF0aW9uJz47XG4gIC8qKiBGdWxseS1yZXNvbHZlZCBwcm9wcyAocGx1Z2lucyBwcmUtcmVzb2x2ZWQsIHJlZ2lzdHJ5IGhvc3QgYmFrZWQsIGlkcyBpbmNsdWRlZCkuICovXG4gIHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBBV1MgcHJvZmlsZSAvIHJlZ2lvbiBmb3IgdGhlIGRlcGxveSArIHJlZ2lzdHJ5IHBheWxvYWQuICovXG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgLyoqIGBjZGsgZGVwbG95IC0tcmVxdWlyZS1hcHByb3ZhbGAgbGV2ZWwgYW5kIGAtLW91dHB1dGAgZGlyLiAqL1xuICByZXF1aXJlQXBwcm92YWw6IHN0cmluZztcbiAgb3V0cHV0OiBzdHJpbmc7XG4gIGRlYnVnPzogYm9vbGVhbjtcbiAgLyoqIEZvciB0aGUgY29tbWFuZCBoZWFkZXIgLyBzdW1tYXJ5IGxpbmUuICovXG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIC8qKiBSZWdpc3RyeSBjYWxsYmFjayDigJQgb21pdCAoZS5nLiAtLWxvY2FsLXNwZWMpIHRvIHNraXAgQVJOIHJlZ2lzdHJhdGlvbi4gKi9cbiAgcGxhdGZvcm1DbGllbnQ/OiBSZWdpc3RyeUNsaWVudDtcbiAgcGxhdGZvcm1QaXBlbGluZVVybD86IHN0cmluZztcbiAgcGxhdGZvcm1CYXNlVXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJ1biBgY2RrIGRlcGxveWAgZm9yIGFuIGFscmVhZHktcmVzb2x2ZWQgcGlwZWxpbmUsIHRoZW4gcmVnaXN0ZXIgdGhlIGRlcGxveWVkXG4gKiBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAoYmVzdC1lZmZvcnQpLiBTaGFyZWQgYnkgYHBpcGVsaW5lIGRlcGxveWAgYW5kXG4gKiBgcGlwZWxpbmUgY3JlYXRlIC0tZGVwbG95YCBzbyB0aGUgdHdvIGVudHJ5IHBvaW50cyBuZXZlciBkcmlmdC5cbiAqXG4gKiBUSFJPV1Mgb24gQ0RLIGZhaWx1cmUgKHRoZSBjYWxsZXIgbWFwcyBpdCB0byBhIG5vbi16ZXJvIGV4aXQgYW5kLCBmb3IgdGhlXG4gKiBjcmVhdGUgcGF0aCwga2VlcHMgdGhlIGNyZWF0ZWQgcmVjb3JkIGFuZCBwcmludHMgdGhlIGBkZXBsb3kgLS1pZGAgcmV0cnkpLlxuICogUmVnaXN0cnkgZmFpbHVyZXMgYXJlIE5PTi1mYXRhbCDigJQgdGhleSdyZSBxdWV1ZWQgdG8gYSBwZW5kaW5nLWludGVudCBmaWxlIGZvclxuICogYHBpcGVsaW5lIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkRlcGxveShpbnB1dDogUnVuRGVwbG95SW5wdXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwaXBlbGluZSwgcHJvcHNXaXRoSWRzLCBwcm9maWxlLCByZWdpb24sIHJlcXVpcmVBcHByb3ZhbCwgb3V0cHV0LCBkZWJ1ZywgZXhlY3V0aW9uSWQgfSA9IGlucHV0O1xuXG4gIGNvbnN0IGVuY29kZWQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcm9wc1dpdGhJZHMpLCAndXRmLTgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbiAgcHJpbnRJbmZvKCdQcmVwYXJpbmcgb3V0cHV0IGRpcmVjdG9yeScsIHsgcGF0aDogb3V0cHV0IH0pO1xuICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0KTtcblxuICAvLyBWYWxpZGF0ZSBFVkVSWSBpbnB1dCB0aGF0IGZsb3dzIGludG8gdGhlIHNoZWxsIChpbnRlcnBvbGF0ZWQgdW5xdW90ZWQgYmVsb3cpLlxuICBpZiAocHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKHByb2ZpbGUsICdwcm9maWxlJyk7XG4gIGFzc2VydFNoZWxsU2FmZShvdXRwdXQsICdvdXRwdXQnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKHJlcXVpcmVBcHByb3ZhbCwgJ3JlcXVpcmUtYXBwcm92YWwnKTtcblxuICAvLyBgYXNzZXJ0U2hlbGxTYWZlYCByZWplY3RzIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIGJ1dCBBTExPV1Mgc3BhY2VzLCBzbyBxdW90ZVxuICAvLyBldmVyeSBpbnRlcnBvbGF0ZWQgdmFsdWUgKGEgcGF0aC9wcm9maWxlIHdpdGggYSBzcGFjZSB3b3VsZCBvdGhlcndpc2Ugc3BsaXRcbiAgLy8gaW50byBleHRyYSBjZGsgYXJncyDigJQgbWF0Y2hpbmcgaG93IHRoZSBhZ2VudCBwYXRoIHF1b3RlcyB0aGVtKS5cbiAgY29uc3Qgc2NyaXB0UGF0aCA9IHJlc29sdmVCb2lsZXJwbGF0ZVBhdGgoX19kaXJuYW1lKTtcbiAgY29uc3QgcHJvZmlsZUFyZyA9IHByb2ZpbGUgPyBgLS1wcm9maWxlPSR7c2hlbGxRdW90ZShwcm9maWxlKX1gIDogJyc7XG4gIGNvbnN0IG91dHB1dEFyZyA9IGAtLW91dHB1dD0ke3NoZWxsUXVvdGUob3V0cHV0KX1gO1xuICBjb25zdCBhcHBBcmcgPSBgLS1hcHA9XCJub2RlICR7c2NyaXB0UGF0aH1cImA7XG4gIGNvbnN0IGNvbW1hbmQgPSBgY2RrIGRlcGxveSAke3Byb2ZpbGVBcmd9IC0tcmVxdWlyZS1hcHByb3ZhbD0ke3NoZWxsUXVvdGUocmVxdWlyZUFwcHJvdmFsKX0gJHtvdXRwdXRBcmd9IC0tbm90aWNlcz1mYWxzZSAke2FwcEFyZ31gO1xuXG4gIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZC5zcGxpdCgnIC0tJylbMF0gKyAnIC4uLicpKTtcbiAgY29uc29sZS5sb2coJycpO1xuXG4gIC8vIEZvcndhcmQgdGhlIHJlc29sdmVkIHBsYXRmb3JtIGJhc2UgVVJMIGludG8gdGhlIENESyBzeW50aCBzdWJwcm9jZXNzIChpdCByZWFkc1xuICAvLyBvbmx5IHByb2Nlc3MuZW52KSBmb3IgdGhlIFBsdWdpbkxvb2t1cCBMYW1iZGEgZW5kcG9pbnQgKyByZWdpc3RyeSBwdWxsLWhvc3RcbiAgLy8gZmFsbGJhY2suIEFic2VudCBpbiBsb2NhbC1zcGVjIG1vZGUuXG4gIGNvbnN0IGNka0VudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgUElQRUxJTkVfUFJPUFM6IGVuY29kZWQgfTtcbiAgaWYgKGlucHV0LnBsYXRmb3JtQmFzZVVybCkgY2RrRW52LlBMQVRGT1JNX0JBU0VfVVJMID0gaW5wdXQucGxhdGZvcm1CYXNlVXJsO1xuXG4gIC8vIFRocm93cyBvbiBmYWlsdXJlIOKAlCBzdXJmYWNlZCBieSB0aGUgY2FsbGVyIGFzIGEgbm9uLXplcm8gZXhpdC5cbiAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7IGRlYnVnLCBzaG93T3V0cHV0OiB0cnVlLCBlbnY6IGNka0VudiB9KTtcblxuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRGVwbG95bWVudCBDb21wbGV0ZScpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAnT3V0cHV0IERpcmVjdG9yeSc6IG91dHB1dCxcbiAgICAnU3RhdHVzJzogJ+KckyBTdWNjZXNzJyxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgdGhlIHBpcGVsaW5lIEFSTiBmb3IgZXZlbnQgcmVwb3J0aW5nIChub24tYmxvY2tpbmcpLiBTa2lwcGVkIHdoZW5cbiAgLy8gdGhlcmUncyBubyBwbGF0Zm9ybSBjbGllbnQgKGxvY2FsLXNwZWMpIG9yIG5vIG9yZ0lkIHRvIHNjb3BlIGl0IHRvLlxuICBpZiAoIWlucHV0LnBsYXRmb3JtQ2xpZW50IHx8ICFpbnB1dC5wbGF0Zm9ybVBpcGVsaW5lVXJsKSB7XG4gICAgcHJpbnRJbmZvKCdTa2lwcGluZyBwaXBlbGluZSByZWdpc3RyeSAobm8gcGxhdGZvcm0gY2xpZW50KScpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXBpcGVsaW5lLm9yZ0lkKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSBoYXMgbm8gb3JnSWQg4oCUIHNraXBwaW5nIHJlZ2lzdHJhdGlvbicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEJ1aWxkIHRoZSBwYXlsb2FkIHVwLWZyb250IHNvIGEgUE9TVCBmYWlsdXJlIGNhbiBwZXJzaXN0IHRoZSBTQU1FIHBheWxvYWQgYXMgYVxuICAvLyBwZW5kaW5nIGludGVudCBmb3IgYHBpcGVsaW5lIHJlZ2lzdGVyYCB0byBkcmFpbiBsYXRlciAoU1RTIGxvb2t1cHMgYXJlbid0IHJldHJpZWQpLlxuICBsZXQgcGF5bG9hZDtcbiAgdHJ5IHtcbiAgICBwYXlsb2FkID0gYXdhaXQgYnVpbGRSZWdpc3RyeVBheWxvYWQoXG4gICAgICB7XG4gICAgICAgIGlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgcHJvamVjdDogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgb3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICB9LFxuICAgICAgcmVnaW9uLFxuICAgICk7XG4gICAgLy8gVGhlIHN5bnRoJ3Mgc3RlcCBtYW5pZmVzdCByaWRlcyB0aGUgc2FtZSByZWdpc3RyYXRpb24g4oCUIGFuZCB0aGVcbiAgICAvLyBwZW5kaW5nIGludGVudCwgc28gYSByZXRyaWVkIHJlZ2lzdHJhdGlvbiBzdGlsbCBjYXJyaWVzIGl0LlxuICAgIGNvbnN0IHN0ZXBzID0gYXdhaXQgcmVhZFN0ZXBNYW5pZmVzdChvdXRwdXQpO1xuICAgIGlmIChzdGVwcykgcGF5bG9hZC5zdGVwcyA9IHN0ZXBzO1xuICB9IGNhdGNoIChidWlsZEVycm9yKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShidWlsZEVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGlucHV0LnBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7aW5wdXQucGxhdGZvcm1QaXBlbGluZVVybH0vcmVnaXN0cnlgLCBwYXlsb2FkKTtcbiAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkIH0pO1xuICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkOyBxdWV1ZWQgZm9yIHJldHJ5Jywge1xuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKHJlZ0Vycm9yKSxcbiAgICAgICAgcmV0cnk6ICdwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHJlZ2lzdGVyJyxcbiAgICAgICAgaW50ZW50OiBpbnRlbnRQYXRoLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAod3JpdGVFcnIpIHtcbiAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZCAocmV0cnkgcXVldWUgYWxzbyBmYWlsZWQpJywge1xuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKHJlZ0Vycm9yKSxcbiAgICAgICAgcXVldWVFcnJvcjogZXJyb3JNZXNzYWdlKHdyaXRlRXJyKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ktcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekUsT0FBTyxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBRWxELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQyxtRkFBbUY7QUFDbkYsOEVBQThFO0FBQzlFLG1GQUFtRjtBQUNuRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBNEIvRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFxQjtJQUNuRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUs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QUNsRSxZQUFZLENBQUMseUNBQXlDLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFBQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsWUFBWSxDQUFDLDZJQUE2SSxFQUFFO2dCQUMxSixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQzlCLEtBQUssRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO2FBQzlCLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckQsWUFBWSxDQUFDLG1EQUFtRCxFQUFFO2dCQUNoRSxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsS0FBSyxFQUFFLG9DQUFvQztnQkFDM0MsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7WUFDbEIsWUFBWSxDQUFDLDJEQUEyRCxFQUFFO2dCQUN4RSxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsVUFBVSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4vY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYnVpbGRSZWdpc3RyeVBheWxvYWQsIHJlYWRTdGVwTWFuaWZlc3QsIHdyaXRlUGVuZGluZ0ludGVudCB9IGZyb20gJy4vcmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlLCBzaGVsbFF1b3RlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0gfSA9IHBpY287XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC4gYHJlc29sdmVCb2lsZXJwbGF0ZVBhdGhgXG4vLyByZXR1cm5zIGAuLi9ib2lsZXJwbGF0ZS5qc2AsIHdoaWNoIGlzIHRoZSBzYW1lIHRhcmdldCB3aGV0aGVyIHJlc29sdmVkIGZyb21cbi8vIHNyYy9jb21tYW5kcyBvciBzcmMvdXRpbHMgKGJvdGggYXJlIHNpYmxpbmdzIHVuZGVyIHNyYy8pLCBzbyB0aGlzIHN0YXlzIGNvcnJlY3QuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuLyoqIE1pbmltYWwgcGxhdGZvcm0gY2xpZW50IHNoYXBlIG5lZWRlZCB0byByZWdpc3RlciBhIGRlcGxveWVkIEFSTi4gKi9cbmludGVyZmFjZSBSZWdpc3RyeUNsaWVudCB7XG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgYm9keTogdW5rbm93bikgPT4gUHJvbWlzZTx1bmtub3duPjtcbn1cblxuLyoqIElucHV0cyBmb3Ige0BsaW5rIHJ1bkRlcGxveX0g4oCUIGFuIGFscmVhZHktcmVzb2x2ZWQgcGlwZWxpbmUgKyBwcm9wcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRGVwbG95SW5wdXQge1xuICAvKiogVGhlIHBpcGVsaW5lIGJlaW5nIGRlcGxveWVkIChpZC9vcmdJZC9uYW1lL3Byb2plY3Qvb3JnIGRyaXZlIHJlZ2lzdHJhdGlvbikuICovXG4gIHBpcGVsaW5lOiBQaWNrPFBpcGVsaW5lLCAnaWQnIHwgJ29yZ0lkJyB8ICdwaXBlbGluZU5hbWUnIHwgJ3Byb2plY3QnIHwgJ29yZ2FuaXphdGlvbic+O1xuICAvKiogRnVsbHktcmVzb2x2ZWQgcHJvcHMgKHBsdWdpbnMgcHJlLXJlc29sdmVkLCByZWdpc3RyeSBob3N0IGJha2VkLCBpZHMgaW5jbHVkZWQpLiAqL1xuICBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogQVdTIHByb2ZpbGUgLyByZWdpb24gZm9yIHRoZSBkZXBsb3kgKyByZWdpc3RyeSBwYXlsb2FkLiAqL1xuICBwcm9maWxlPzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBgY2RrIGRlcGxveSAtLXJlcXVpcmUtYXBwcm92YWxgIGxldmVsIGFuZCBgLS1vdXRwdXRgIGRpci4gKi9cbiAgcmVxdWlyZUFwcHJvdmFsOiBzdHJpbmc7XG4gIG91dHB1dDogc3RyaW5nO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIC8qKiBGb3IgdGhlIGNvbW1hbmQgaGVhZGVyIC8gc3VtbWFyeSBsaW5lLiAqL1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICAvKiogUmVnaXN0cnkgY2FsbGJhY2sg4oCUIG9taXQgKGUuZy4gLS1sb2NhbC1zcGVjKSB0byBza2lwIEFSTiByZWdpc3RyYXRpb24uICovXG4gIHBsYXRmb3JtQ2xpZW50PzogUmVnaXN0cnlDbGllbnQ7XG4gIHBsYXRmb3JtUGlwZWxpbmVVcmw/OiBzdHJpbmc7XG4gIHBsYXRmb3JtQmFzZVVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdW4gYGNkayBkZXBsb3lgIGZvciBhbiBhbHJlYWR5LXJlc29sdmVkIHBpcGVsaW5lLCB0aGVuIHJlZ2lzdGVyIHRoZSBkZXBsb3llZFxuICogQVJOIGZvciBldmVudCByZXBvcnRpbmcgKGJlc3QtZWZmb3J0KS4gU2hhcmVkIGJ5IGBwaXBlbGluZSBkZXBsb3lgIGFuZFxuICogYHBpcGVsaW5lIGNyZWF0ZSAtLWRlcGxveWAgc28gdGhlIHR3byBlbnRyeSBwb2ludHMgbmV2ZXIgZHJpZnQuXG4gKlxuICogVEhST1dTIG9uIENESyBmYWlsdXJlICh0aGUgY2FsbGVyIG1hcHMgaXQgdG8gYSBub24temVybyBleGl0IGFuZCwgZm9yIHRoZVxuICogY3JlYXRlIHBhdGgsIGtlZXBzIHRoZSBjcmVhdGVkIHJlY29yZCBhbmQgcHJpbnRzIHRoZSBgZGVwbG95IC0taWRgIHJldHJ5KS5cbiAqIFJlZ2lzdHJ5IGZhaWx1cmVzIGFyZSBOT04tZmF0YWwg4oCUIHRoZXkncmUgcXVldWVkIHRvIGEgcGVuZGluZy1pbnRlbnQgZmlsZSBmb3JcbiAqIGBwaXBlbGluZSByZWdpc3RlcmAgdG8gZHJhaW4gbGF0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5EZXBsb3koaW5wdXQ6IFJ1bkRlcGxveUlucHV0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGlwZWxpbmUsIHByb3BzV2l0aElkcywgcHJvZmlsZSwgcmVnaW9uLCByZXF1aXJlQXBwcm92YWwsIG91dHB1dCwgZGVidWcsIGV4ZWN1dGlvbklkIH0gPSBpbnB1dDtcblxuICBjb25zdCBlbmNvZGVkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSwgJ3V0Zi04JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHByaW50SW5mbygnUHJlcGFyaW5nIG91dHB1dCBkaXJlY3RvcnknLCB7IHBhdGg6IG91dHB1dCB9KTtcbiAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dCk7XG5cbiAgLy8gVmFsaWRhdGUgRVZFUlkgaW5wdXQgdGhhdCBmbG93cyBpbnRvIHRoZSBzaGVsbCAoaW50ZXJwb2xhdGVkIHVucXVvdGVkIGJlbG93KS5cbiAgaWYgKHByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShwcm9maWxlLCAncHJvZmlsZScpO1xuICBhc3NlcnRTaGVsbFNhZmUob3V0cHV0LCAnb3V0cHV0Jyk7XG4gIGFzc2VydFNoZWxsU2FmZShyZXF1aXJlQXBwcm92YWwsICdyZXF1aXJlLWFwcHJvdmFsJyk7XG5cbiAgLy8gYGFzc2VydFNoZWxsU2FmZWAgcmVqZWN0cyBzaGVsbCBtZXRhY2hhcmFjdGVycyBidXQgQUxMT1dTIHNwYWNlcywgc28gcXVvdGVcbiAgLy8gZXZlcnkgaW50ZXJwb2xhdGVkIHZhbHVlIChhIHBhdGgvcHJvZmlsZSB3aXRoIGEgc3BhY2Ugd291bGQgb3RoZXJ3aXNlIHNwbGl0XG4gIC8vIGludG8gZXh0cmEgY2RrIGFyZ3Mg4oCUIG1hdGNoaW5nIGhvdyB0aGUgYWdlbnQgcGF0aCBxdW90ZXMgdGhlbSkuXG4gIGNvbnN0IHNjcmlwdFBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gIGNvbnN0IHByb2ZpbGVBcmcgPSBwcm9maWxlID8gYC0tcHJvZmlsZT0ke3NoZWxsUXVvdGUocHJvZmlsZSl9YCA6ICcnO1xuICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtzaGVsbFF1b3RlKG91dHB1dCl9YDtcbiAgY29uc3QgYXBwQXJnID0gYC0tYXBwPVwibm9kZSAke3NjcmlwdFBhdGh9XCJgO1xuICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtzaGVsbFF1b3RlKHJlcXVpcmVBcHByb3ZhbCl9ICR7b3V0cHV0QXJnfSAtLW5vdGljZXM9ZmFsc2UgJHthcHBBcmd9YDtcblxuICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQuc3BsaXQoJyAtLScpWzBdICsgJyAuLi4nKSk7XG4gIGNvbnNvbGUubG9nKCcnKTtcblxuICAvLyBGb3J3YXJkIHRoZSByZXNvbHZlZCBwbGF0Zm9ybSBiYXNlIFVSTCBpbnRvIHRoZSBDREsgc3ludGggc3VicHJvY2VzcyAoaXQgcmVhZHNcbiAgLy8gb25seSBwcm9jZXNzLmVudikgZm9yIHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhIGVuZHBvaW50ICsgcmVnaXN0cnkgcHVsbC1ob3N0XG4gIC8vIGZhbGxiYWNrLiBBYnNlbnQgaW4gbG9jYWwtc3BlYyBtb2RlLlxuICBjb25zdCBjZGtFbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFBJUEVMSU5FX1BST1BTOiBlbmNvZGVkIH07XG4gIGlmIChpbnB1dC5wbGF0Zm9ybUJhc2VVcmwpIGNka0Vudi5QTEFURk9STV9CQVNFX1VSTCA9IGlucHV0LnBsYXRmb3JtQmFzZVVybDtcblxuICAvLyBUaHJvd3Mgb24gZmFpbHVyZSDigJQgc3VyZmFjZWQgYnkgdGhlIGNhbGxlciBhcyBhIG5vbi16ZXJvIGV4aXQuXG4gIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwgeyBkZWJ1Zywgc2hvd091dHB1dDogdHJ1ZSwgZW52OiBjZGtFbnYgfSk7XG5cbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ0RlcGxveW1lbnQgQ29tcGxldGUnKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgJ091dHB1dCBEaXJlY3RvcnknOiBvdXRwdXQsXG4gICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHRoZSBwaXBlbGluZSBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAobm9uLWJsb2NraW5nKS4gU2tpcHBlZCB3aGVuXG4gIC8vIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gY2xpZW50IChsb2NhbC1zcGVjKSBvciBubyBvcmdJZCB0byBzY29wZSBpdCB0by5cbiAgaWYgKCFpbnB1dC5wbGF0Zm9ybUNsaWVudCB8fCAhaW5wdXQucGxhdGZvcm1QaXBlbGluZVVybCkge1xuICAgIHByaW50SW5mbygnU2tpcHBpbmcgcGlwZWxpbmUgcmVnaXN0cnkgKG5vIHBsYXRmb3JtIGNsaWVudCknKTtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgcmVnaXN0ZXJQaXBlbGluZSh7XG4gICAgY2xpZW50OiBpbnB1dC5wbGF0Zm9ybUNsaWVudCxcbiAgICBwaXBlbGluZVVybDogaW5wdXQucGxhdGZvcm1QaXBlbGluZVVybCxcbiAgICBwaXBlbGluZSxcbiAgICByZWdpb24sXG4gICAgb3V0cHV0LFxuICAgIHF1ZXVlT25GYWlsdXJlOiB0cnVlLFxuICB9KTtcbn1cblxuLyoqIElucHV0cyBmb3Ige0BsaW5rIHJlZ2lzdGVyUGlwZWxpbmV9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclBpcGVsaW5lSW5wdXQge1xuICBjbGllbnQ6IFJlZ2lzdHJ5Q2xpZW50O1xuICBwaXBlbGluZVVybDogc3RyaW5nO1xuICBwaXBlbGluZTogUGljazxQaXBlbGluZSwgJ2lkJyB8ICdvcmdJZCcgfCAncGlwZWxpbmVOYW1lJyB8ICdwcm9qZWN0JyB8ICdvcmdhbml6YXRpb24nPjtcbiAgcmVnaW9uPzogc3RyaW5nO1xuICAvKiogQ2xvdWQgYXNzZW1ibHkgZGlyIGhvbGRpbmcgdGhlIHN5bnRoJ3Mgc3RlcCBtYW5pZmVzdC4gKi9cbiAgb3V0cHV0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRdWV1ZSBhIGZhaWxlZCBQT1NUIGFzIGEgcGVuZGluZyBpbnRlbnQgZm9yIGBwaXBlbGluZSByZWdpc3RlcmAuIFRydWUgb24gYW5cbiAgICogb3BlcmF0b3IncyBtYWNoaW5lOyBmYWxzZSBpbnNpZGUgQ29kZUJ1aWxkLCB3aGVyZSB0aGUgaG9tZSBkaXJlY3RvcnkgZGllc1xuICAgKiB3aXRoIHRoZSBidWlsZCBhbmQgbm9ib2R5IHdvdWxkIGV2ZXIgZHJhaW4gaXQuXG4gICAqL1xuICBxdWV1ZU9uRmFpbHVyZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQT1NUIHRoZSByZWdpc3RyeSB1cHNlcnQgY2FycnlpbmcgdGhlIHN5bnRoJ3Mgc3RlcCBtYW5pZmVzdCDigJQgd2hhdCBrZWVwcyB0aGVcbiAqIHBsYXRmb3JtJ3MgcmVjb3JkIG9mIHdoaWNoIHBsdWdpbiBkaWdlc3RzIGEgcGlwZWxpbmUgcnVucyAoYW5kIHNvIGl0c1xuICogZGVwbG95ZWQtZXhwb3N1cmUgdmlldykgY3VycmVudC4gU2hhcmVkIGJ5IGBwaXBlbGluZSBkZXBsb3lgIGFuZCBhXG4gKiBzZWxmLW11dGF0aW5nIGBwaXBlbGluZSBzeW50aGAgaW5zaWRlIENvZGVCdWlsZC5cbiAqXG4gKiBOZXZlciB0aHJvd3M6IHJlZ2lzdHJhdGlvbiBpcyBiZXN0LWVmZm9ydCBhbmQgbXVzdCBub3QgZmFpbCBhIGRlcGxveSBvclxuICogc3ludGggdGhhdCBhbHJlYWR5IHN1Y2NlZWRlZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBwbGF0Zm9ybSBhY2NlcHRlZCBpdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyUGlwZWxpbmUoaW5wdXQ6IFJlZ2lzdGVyUGlwZWxpbmVJbnB1dCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IHBpcGVsaW5lLCByZWdpb24sIG91dHB1dCB9ID0gaW5wdXQ7XG4gIGlmICghcGlwZWxpbmUub3JnSWQpIHtcbiAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIGhhcyBubyBvcmdJZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQnVpbGQgdGhlIHBheWxvYWQgdXAtZnJvbnQgc28gYSBQT1NUIGZhaWx1cmUgY2FuIHBlcnNpc3QgdGhlIFNBTUUgcGF5bG9hZCBhcyBhXG4gIC8vIHBlbmRpbmcgaW50ZW50IGZvciBgcGlwZWxpbmUgcmVnaXN0ZXJgIHRvIGRyYWluIGxhdGVyIChTVFMgbG9va3VwcyBhcmVuJ3QgcmV0cmllZCkuXG4gIGxldCBwYXlsb2FkO1xuICB0cnkge1xuICAgIHBheWxvYWQgPSBhd2FpdCBidWlsZFJlZ2lzdHJ5UGF5bG9hZChcbiAgICAgIHtcbiAgICAgICAgaWQ6IHBpcGVsaW5lLmlkLFxuICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgIHBpcGVsaW5lTmFtZTogcGlwZWxpbmUucGlwZWxpbmVOYW1lLFxuICAgICAgICBwcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICBvcmdhbml6YXRpb246IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgIH0sXG4gICAgICByZWdpb24sXG4gICAgKTtcbiAgICAvLyBUaGUgc3ludGgncyBzdGVwIG1hbmlmZXN0IHJpZGVzIHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiDigJQgYW5kIHRoZVxuICAgIC8vIHBlbmRpbmcgaW50ZW50LCBzbyBhIHJldHJpZWQgcmVnaXN0cmF0aW9uIHN0aWxsIGNhcnJpZXMgaXQuXG4gICAgY29uc3Qgc3RlcHMgPSBhd2FpdCByZWFkU3RlcE1hbmlmZXN0KG91dHB1dCk7XG4gICAgaWYgKHN0ZXBzKSBwYXlsb2FkLnN0ZXBzID0gc3RlcHM7XG4gIH0gY2F0Y2ggKGJ1aWxkRXJyb3IpIHtcbiAgICBwcmludFdhcm5pbmcoJ0NvdWxkIG5vdCBidWlsZCByZWdpc3RyeSBwYXlsb2FkIOKAlCBza2lwcGluZyByZWdpc3RyYXRpb24nLCB7XG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGJ1aWxkRXJyb3IpLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgaW5wdXQuY2xpZW50LnBvc3QoYCR7aW5wdXQucGlwZWxpbmVVcmx9L3JlZ2lzdHJ5YCwgcGF5bG9hZCk7XG4gICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSByZWdpc3RlcmVkIGZvciBldmVudCByZXBvcnRpbmcnLCB7IHBpcGVsaW5lSWQ6IHBheWxvYWQucGlwZWxpbmVJZCwgc3RlcHM6IHBheWxvYWQuc3RlcHM/Lmxlbmd0aCA/PyAwIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgIGlmICghaW5wdXQucXVldWVPbkZhaWx1cmUpIHtcbiAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIEZBSUxFRCDigJQgdGhlIHBsYXRmb3JtXFwncyBzdGVwIG1hbmlmZXN0IChhbmQgdGhlIGRlcGxveWVkLWV4cG9zdXJlIHZpZXcgYnVpbHQgb24gaXQpIGlzIG5vdyBzdGFsZSBmb3IgdGhpcyBwaXBlbGluZScsIHtcbiAgICAgICAgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkLFxuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKHJlZ0Vycm9yKSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgaW50ZW50UGF0aCA9IGF3YWl0IHdyaXRlUGVuZGluZ0ludGVudChwYXlsb2FkKTtcbiAgICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgcmVnaXN0cnkgdXBkYXRlIGZhaWxlZDsgcXVldWVkIGZvciByZXRyeScsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShyZWdFcnJvciksXG4gICAgICAgIHJldHJ5OiAncGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSByZWdpc3RlcicsXG4gICAgICAgIGludGVudDogaW50ZW50UGF0aCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKHdyaXRlRXJyKSB7XG4gICAgICBwcmludFdhcm5pbmcoJ1BpcGVsaW5lIHJlZ2lzdHJ5IHVwZGF0ZSBmYWlsZWQgKHJldHJ5IHF1ZXVlIGFsc28gZmFpbGVkKScsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShyZWdFcnJvciksXG4gICAgICAgIHF1ZXVlRXJyb3I6IGVycm9yTWVzc2FnZSh3cml0ZUVyciksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../src/utils/device-auth.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AASD,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iFAAiF;AACjF,qBAAa,eAAgB,SAAQ,KAAK;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAlD,YAAY,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAGjD;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACjF,OAAO,CAAC,kBAAkB,CAAC,CAoB7B;AAED,uDAAuD;AACvD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAiB7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,KAAK,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAkD9B;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsBlD"}
1
+ {"version":3,"file":"device-auth.d.ts","sourceRoot":"","sources":["../../src/utils/device-auth.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AASD,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iFAAiF;AACjF,qBAAa,eAAgB,SAAQ,KAAK;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAlD,YAAY,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAGjD;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACjF,OAAO,CAAC,kBAAkB,CAAC,CAoB7B;AAED,uDAAuD;AACvD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAiB7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,kBAAkB,EACxB,KAAK,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAkD9B;AAUD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsBlD"}