@pipeline-builder/pipeline-manager 4.4.16 → 4.4.17

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 (176) hide show
  1. package/dist/agent/ai.d.ts.map +1 -1
  2. package/dist/agent/ai.js +1 -1
  3. package/dist/agent/bootstrap.d.ts.map +1 -1
  4. package/dist/agent/bootstrap.js +1 -1
  5. package/dist/agent/env-file.d.ts.map +1 -1
  6. package/dist/agent/env-file.js +1 -1
  7. package/dist/agent/executor.d.ts.map +1 -1
  8. package/dist/agent/executor.js +1 -1
  9. package/dist/agent/health.d.ts.map +1 -1
  10. package/dist/agent/health.js +1 -1
  11. package/dist/agent/ports.d.ts.map +1 -1
  12. package/dist/agent/ports.js +1 -1
  13. package/dist/agent/post-steps.d.ts.map +1 -1
  14. package/dist/agent/post-steps.js +1 -1
  15. package/dist/agent/prereqs.d.ts.map +1 -1
  16. package/dist/agent/prereqs.js +1 -1
  17. package/dist/agent/targets.d.ts.map +1 -1
  18. package/dist/agent/targets.js +1 -1
  19. package/dist/agent/tools.d.ts.map +1 -1
  20. package/dist/agent/tools.js +1 -1
  21. package/dist/agent/troubleshoot.d.ts.map +1 -1
  22. package/dist/agent/troubleshoot.js +1 -1
  23. package/dist/boilerplate.d.ts.map +1 -1
  24. package/dist/boilerplate.js +1 -1
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +1 -1
  27. package/dist/commands/audit-stacks.d.ts.map +1 -1
  28. package/dist/commands/audit-stacks.js +1 -1
  29. package/dist/commands/audit-tokens.d.ts.map +1 -1
  30. package/dist/commands/audit-tokens.js +1 -1
  31. package/dist/commands/bootstrap.d.ts.map +1 -1
  32. package/dist/commands/bootstrap.js +1 -1
  33. package/dist/commands/create-pat.d.ts.map +1 -1
  34. package/dist/commands/create-pat.js +1 -1
  35. package/dist/commands/create-pipeline.d.ts.map +1 -1
  36. package/dist/commands/create-pipeline.js +1 -1
  37. package/dist/commands/deploy.d.ts.map +1 -1
  38. package/dist/commands/deploy.js +1 -1
  39. package/dist/commands/entity-get.d.ts.map +1 -1
  40. package/dist/commands/entity-get.js +1 -1
  41. package/dist/commands/entity-list.d.ts.map +1 -1
  42. package/dist/commands/entity-list.js +1 -1
  43. package/dist/commands/get-pipeline.d.ts.map +1 -1
  44. package/dist/commands/get-pipeline.js +1 -1
  45. package/dist/commands/get-plugin.d.ts.map +1 -1
  46. package/dist/commands/get-plugin.js +1 -1
  47. package/dist/commands/instantiate-template.d.ts.map +1 -1
  48. package/dist/commands/instantiate-template.js +1 -1
  49. package/dist/commands/list-pipelines.d.ts.map +1 -1
  50. package/dist/commands/list-pipelines.js +1 -1
  51. package/dist/commands/list-plugins.d.ts.map +1 -1
  52. package/dist/commands/list-plugins.js +1 -1
  53. package/dist/commands/login.d.ts.map +1 -1
  54. package/dist/commands/login.js +1 -1
  55. package/dist/commands/new-plugin.d.ts.map +1 -1
  56. package/dist/commands/new-plugin.js +1 -1
  57. package/dist/commands/org-export.d.ts.map +1 -1
  58. package/dist/commands/org-export.js +1 -1
  59. package/dist/commands/plugin-lifecycle.d.ts.map +1 -1
  60. package/dist/commands/plugin-lifecycle.js +1 -1
  61. package/dist/commands/provision-steps.d.ts.map +1 -1
  62. package/dist/commands/provision-steps.js +1 -1
  63. package/dist/commands/provision.d.ts.map +1 -1
  64. package/dist/commands/provision.js +1 -1
  65. package/dist/commands/publish-plugin.d.ts.map +1 -1
  66. package/dist/commands/publish-plugin.js +1 -1
  67. package/dist/commands/redrive-events.d.ts.map +1 -1
  68. package/dist/commands/redrive-events.js +1 -1
  69. package/dist/commands/register.d.ts.map +1 -1
  70. package/dist/commands/register.js +1 -1
  71. package/dist/commands/report.d.ts.map +1 -1
  72. package/dist/commands/report.js +1 -1
  73. package/dist/commands/security-report.d.ts.map +1 -1
  74. package/dist/commands/security-report.js +1 -1
  75. package/dist/commands/setup-events.d.ts.map +1 -1
  76. package/dist/commands/setup-events.js +1 -1
  77. package/dist/commands/status.d.ts.map +1 -1
  78. package/dist/commands/status.js +1 -1
  79. package/dist/commands/store-token.d.ts.map +1 -1
  80. package/dist/commands/store-token.js +1 -1
  81. package/dist/commands/synth.d.ts.map +1 -1
  82. package/dist/commands/synth.js +1 -1
  83. package/dist/commands/test-plugin.d.ts.map +1 -1
  84. package/dist/commands/test-plugin.js +1 -1
  85. package/dist/commands/upload-plugin.d.ts.map +1 -1
  86. package/dist/commands/upload-plugin.js +1 -1
  87. package/dist/commands/validate-plugin.d.ts.map +1 -1
  88. package/dist/commands/validate-plugin.js +1 -1
  89. package/dist/commands/validate-templates.d.ts.map +1 -1
  90. package/dist/commands/validate-templates.js +1 -1
  91. package/dist/commands/verify-plugins.d.ts.map +1 -1
  92. package/dist/commands/verify-plugins.js +1 -1
  93. package/dist/commands/version.d.ts.map +1 -1
  94. package/dist/commands/version.js +1 -1
  95. package/dist/config/cli.constants.d.ts.map +1 -1
  96. package/dist/config/cli.constants.js +1 -1
  97. package/dist/config/plugin-catalog-assets.d.ts.map +1 -1
  98. package/dist/config/plugin-catalog-assets.js +1 -1
  99. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  100. package/dist/types/config.d.ts.map +1 -1
  101. package/dist/types/config.js +1 -1
  102. package/dist/types/error.d.ts.map +1 -1
  103. package/dist/types/error.js +1 -1
  104. package/dist/types/index.d.ts.map +1 -1
  105. package/dist/types/index.js +1 -1
  106. package/dist/types/pipeline-template.d.ts.map +1 -1
  107. package/dist/types/pipeline-template.js +1 -1
  108. package/dist/types/pipeline.d.ts.map +1 -1
  109. package/dist/types/pipeline.js +1 -1
  110. package/dist/types/plugin.d.ts.map +1 -1
  111. package/dist/types/plugin.js +1 -1
  112. package/dist/utils/api-client.d.ts.map +1 -1
  113. package/dist/utils/api-client.js +1 -1
  114. package/dist/utils/audit-log.d.ts.map +1 -1
  115. package/dist/utils/audit-log.js +1 -1
  116. package/dist/utils/auth-guard.d.ts.map +1 -1
  117. package/dist/utils/auth-guard.js +1 -1
  118. package/dist/utils/auth-utils.d.ts.map +1 -1
  119. package/dist/utils/auth-utils.js +1 -1
  120. package/dist/utils/aws-env.d.ts.map +1 -1
  121. package/dist/utils/aws-env.js +1 -1
  122. package/dist/utils/aws-secrets.d.ts.map +1 -1
  123. package/dist/utils/aws-secrets.js +1 -1
  124. package/dist/utils/banner.d.ts.map +1 -1
  125. package/dist/utils/banner.js +1 -1
  126. package/dist/utils/catalog-prompt.d.ts.map +1 -1
  127. package/dist/utils/catalog-prompt.js +1 -1
  128. package/dist/utils/cdk-utils.d.ts.map +1 -1
  129. package/dist/utils/cdk-utils.js +1 -1
  130. package/dist/utils/command-utils.d.ts.map +1 -1
  131. package/dist/utils/command-utils.js +1 -1
  132. package/dist/utils/config-loader.d.ts.map +1 -1
  133. package/dist/utils/config-loader.js +1 -1
  134. package/dist/utils/credential-store.d.ts.map +1 -1
  135. package/dist/utils/credential-store.js +1 -1
  136. package/dist/utils/cron.d.ts.map +1 -1
  137. package/dist/utils/cron.js +1 -1
  138. package/dist/utils/deploy-runner.d.ts.map +1 -1
  139. package/dist/utils/deploy-runner.js +1 -1
  140. package/dist/utils/device-auth.d.ts.map +1 -1
  141. package/dist/utils/device-auth.js +1 -1
  142. package/dist/utils/error-handler.d.ts.map +1 -1
  143. package/dist/utils/error-handler.js +1 -1
  144. package/dist/utils/list-command-utils.d.ts.map +1 -1
  145. package/dist/utils/list-command-utils.js +1 -1
  146. package/dist/utils/output-utils.d.ts.map +1 -1
  147. package/dist/utils/output-utils.js +1 -1
  148. package/dist/utils/pipeline-config.d.ts.map +1 -1
  149. package/dist/utils/pipeline-config.js +1 -1
  150. package/dist/utils/platform-secret.d.ts.map +1 -1
  151. package/dist/utils/platform-secret.js +1 -1
  152. package/dist/utils/plugin-docker.d.ts.map +1 -1
  153. package/dist/utils/plugin-docker.js +1 -1
  154. package/dist/utils/plugin-package.d.ts.map +1 -1
  155. package/dist/utils/plugin-package.js +1 -1
  156. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  157. package/dist/utils/plugin-resolver.js +1 -1
  158. package/dist/utils/plugin-scan.d.ts.map +1 -1
  159. package/dist/utils/plugin-scan.js +1 -1
  160. package/dist/utils/plugin-zip.d.ts.map +1 -1
  161. package/dist/utils/plugin-zip.js +1 -1
  162. package/dist/utils/preflight.d.ts.map +1 -1
  163. package/dist/utils/preflight.js +1 -1
  164. package/dist/utils/registration-client.d.ts.map +1 -1
  165. package/dist/utils/registration-client.js +1 -1
  166. package/dist/utils/registry.d.ts.map +1 -1
  167. package/dist/utils/registry.js +1 -1
  168. package/dist/utils/request-context.d.ts.map +1 -1
  169. package/dist/utils/request-context.js +1 -1
  170. package/dist/utils/response-utils.d.ts.map +1 -1
  171. package/dist/utils/response-utils.js +1 -1
  172. package/dist/utils/service-account.d.ts.map +1 -1
  173. package/dist/utils/service-account.js +1 -1
  174. package/dist/utils/tls.d.ts.map +1 -1
  175. package/dist/utils/tls.js +1 -1
  176. package/package.json +9 -9
@@ -175,4 +175,4 @@ export function createPat(program) {
175
175
  }
176
176
  });
177
177
  }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUtcGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFZckMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFFN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFnQjtJQUN4QyxjQUFjLENBQUMsT0FBTztTQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsV0FBVyxDQUFDLDBFQUEwRSxD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QUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7YUFDbEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBzd2l0Y2hPcmdhbml6YXRpb24gfSBmcm9tICcuLi91dGlscy9hdXRoLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IGJlZ2luRGV2aWNlQXBwcm92YWwsIERldmljZUF1dGhFcnJvciwgcG9sbEZvckRldmljZVRva2VuIH0gZnJvbSAnLi4vdXRpbHMvZGV2aWNlLWF1dGguanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludERlYnVnLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyByZXF1ZXN0Q29ycmVsYXRpb25IZWFkZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVxdWVzdC1jb250ZXh0LmpzJztcblxuY29uc3QgeyBib2xkLCBncmVlbiwgeWVsbG93IH0gPSBwaWNvO1xuXG4vKiogQ3JlYXRlLWtleSByZXNwb25zZSDigJQgdGhlIHJhdyBrZXkgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLiAqL1xuaW50ZXJmYWNlIENyZWF0ZUFjY2Vzc0tleVJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZGF0YToge1xuICAgIC8qKiBUaGUgb3BhcXVlIGtleSAoYHBiX3BhdF/igKZgKS4gT25seSBpdHMgaGFzaCBpcyBzdG9yZWQgc2VydmVyLXNpZGUuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgYWNjZXNzS2V5OiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGlzcGxheTogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU/OiBzdHJpbmcgfCBudWxsIH07XG4gIH07XG59XG5cbmNvbnN0IE1BWF9FWFBJUkVTX0RBWVMgPSAzNjU7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgcGF0YCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIE1pbnRzIGEgbmFtZWQgQUNDRVNTIEtFWSAoYHBiX3BhdF/igKZgKSDigJQgYSBkdXJhYmxlLCBpbmRpdmlkdWFsbHktcmV2b2NhYmxlIEFQSVxuICogY3JlZGVudGlhbCDigJQgZm9yIENJL2F1dG9tYXRpb24uIFVubGlrZSBhIHNlc3Npb24sIGEga2V5IGlzIHRoZSByaWdodFxuICogbG9uZy1saXZlZCBjcmVkZW50aWFsIGZvciBzY3JpcHRzLlxuICpcbiAqIFRoZSBrZXkgaXMgT1BBUVVFOiBpdCBjYXJyaWVzIG5vIGNsYWltcywgYW5kIGVhY2ggc2VydmljZSB0cmFkZXMgaXQgYXRcbiAqIHBsYXRmb3JtJ3MgL2F1dGgvdG9rZW4vZXhjaGFuZ2UgZm9yIGEgNS1taW51dGUgdG9rZW4sIHNvIHJldm9raW5nIGl0IHRha2VzXG4gKiBlZmZlY3QgZXZlcnl3aGVyZSB3aXRoaW4gZml2ZSBtaW51dGVzLlxuICpcbiAqIENyZWF0aW5nIG9uZSBpcyBzdGVwLXVwIGdhdGVkIHNlcnZlci1zaWRlLCB5ZXQgdGhlIENMSSBob2xkcyBubyBwYXNzd29yZDogdGhlXG4gKiBkZXZpY2UgZmxvdyBhc2tzIGZvciB0aGUgc3RlcC11cCBJTiBUSEUgQlJPV1NFUiwgd2hlcmUgdGhlXG4gKiBhY2NvdW50J3MgcmVhbCBmYWN0b3JzIGxpdmUsIGFuZCB0aGUgYXBwcm92ZWQgcG9sbCByZXR1cm5zIGJvdGggdGhlIHNlc3Npb25cbiAqIGFuZCBhIHNob3J0LWxpdmVkIHN0ZXAtdXAgdG9rZW4uIFRoZSBrZXkgYmluZHMgdG8gdGhlIHVzZXIncyBhY3RpdmUgb3JnOyBwYXNzXG4gKiBgLS1vcmdgIHRvIHN3aXRjaCBmaXJzdCAod2hpY2ggcGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcpLlxuICpcbiAqIFRoZSByYXcga2V5IGlzIHByaW50ZWQgT05DRSDigJQgb25seSBpdHMgaGFzaCBpcyBzdG9yZWQsIHNvIGl0IGNhbiBuZXZlciBiZSByZWFkXG4gKiBiYWNrLiBgLS1xdWlldGAgcHJpbnRzIG9ubHkgYGV4cG9ydCBQTEFURk9STV9UT0tFTj3igKZgIHNvIGl0IGNhbiBiZSBgZXZhbGAnZDtcbiAqIHRoZSBrZXkgaXMgaXRzZWxmIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpLWRlcGxveVxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2kgLS1leHBpcmVzLWRheXMgMzAgLS1vcmcgPG9yZ0lkPlxuICogZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpIC0tcXVpZXQpXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdChwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKHByb2dyYW1cbiAgICAuY29tbWFuZCgncGF0JylcbiAgICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5hbWVkIGFjY2VzcyBrZXkgKGxvbmctbGl2ZWQsIG9wYXF1ZSBDTEkvYXV0b21hdGlvbiBjcmVkZW50aWFsKScpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctLW5hbWUgPG5hbWU+JywgJ0h1bWFuLXJlYWRhYmxlIGtleSBuYW1lIChlLmcuIGNpLWRlcGxveSknKVxuICAgIC5vcHRpb24oJy0tZXhwaXJlcy1kYXlzIDxkYXlzPicsIGBLZXkgbGlmZXRpbWUgaW4gZGF5cyAoMS0ke01BWF9FWFBJUkVTX0RBWVN9KWAsICc5MCcpXG4gICAgLm9wdGlvbignLS1zY29wZSA8c2NvcGU+JywgJ09wdGlvbmFsIGNhcGFiaWxpdHkgc2NvcGUgKGxlYXN0LXByaXZpbGVnZSBrZXkpJylcbiAgICAub3B0aW9uKCctLW9yZyA8b3JnSWQ+JywgJ0JpbmQgdGhlIGtleSB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiAoc3dpdGNoZXMgYWN0aXZlIG9yZyknKVxuICAgIC5vcHRpb24oJy0tbm8tYnJvd3NlcicsICdOZXZlciBvcGVuIGEgYnJvd3NlciDigJQgcHJpbnQgdGhlIHZlcmlmaWNhdGlvbiBVUkwgaW5zdGVhZCcpXG4gICAgLm9wdGlvbignLS11cmwgPHVybD4nLCAnUGxhdGZvcm0gYmFzZSBVUkwnLCBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCAnaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0MycpKVxuICAgIC5vcHRpb24oJy0tcXVpZXQnLCAnT25seSBwcmludCB0aGUgZXhwb3J0IHN0YXRlbWVudCAodXNlZnVsIGZvciBldmFsKScpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgLy8gU0VDVVJJVFk6IHRoZSBwb2xsIHJldHVybnMgYSBzZXNzaW9uIEFORCBhIHN0ZXAtdXAgdG9rZW4sIGFuZCB0aGUgcmVzcG9uc2VcbiAgICAgIC8vIGJlbG93IGNhcnJpZXMgdGhlIHJhdyBrZXkuIE5vbmUgb2YgdGhhdCBtYXkgY3Jvc3MgYW4gdW52ZXJpZmllZCBjb25uZWN0aW9uXG4gICAgICAvLyBpbiBwcm9kdWN0aW9uLiBNaXJyb3JzIHRoZSBndWFyZCBpbiBgbG9naW5gLlxuICAgICAgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICBjb25zdCBxdWlldCA9IG9wdGlvbnMucXVpZXQgPz8gZmFsc2U7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIEFjY2VzcyBLZXknLCAnQ3JlYXRlIEFjY2VzcyBLZXknLCB7IHF1aWV0IH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBWYWxpZGF0ZSBuYW1lLlxuICAgICAgICBjb25zdCBuYW1lID0gdHlwZW9mIG9wdGlvbnMubmFtZSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLm5hbWUudHJpbSgpIDogJyc7XG4gICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0tleSBuYW1lIGlzIHJlcXVpcmVkICgtLW5hbWUpJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0tleSBuYW1lIG11c3QgYmUgMTAwIGNoYXJhY3RlcnMgb3IgZmV3ZXInKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGF0ZSBleHBpcnkg4oaSIHNlY29uZHMuXG4gICAgICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKE51bWJlcihvcHRpb25zLmV4cGlyZXNEYXlzKSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKGRheXMpIHx8IGRheXMgPCAxIHx8IGRheXMgPiBNQVhfRVhQSVJFU19EQVlTKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcihgLS1leHBpcmVzLWRheXMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgJHtNQVhfRVhQSVJFU19EQVlTfWApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHBpcmVzSW4gPSBkYXlzICogODY0MDA7XG5cbiAgICAgICAgY29uc3QgaHR0cHNBZ2VudCA9IGNyZWRlbnRpYWxIdHRwc0FnZW50KG9wdGlvbnMudmVyaWZ5U3NsKTtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IFRJTUVPVVRTLkhUVFBfUkVRVUVTVDtcbiAgICAgICAgY29uc3QgdHJhbnNwb3J0ID0geyB1cmw6IG9wdGlvbnMudXJsLCBodHRwc0FnZW50LCB0aW1lb3V0IH07XG5cbiAgICAgICAgLy8gMSkgRGV2aWNlIHNpZ24taW4sIGFza2luZyBmb3IgdGhlIHN0ZXAtdXAgdGhlIGNyZWF0ZSBjYWxsIG5lZWRzLlxuICAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgYmVnaW5EZXZpY2VBcHByb3ZhbCh0cmFuc3BvcnQsIHtcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICBicm93c2VyOiBvcHRpb25zLmJyb3dzZXIsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICBzdGVwVXA6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBwb2xsRm9yRGV2aWNlVG9rZW4odHJhbnNwb3J0LCBjb2RlKTtcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvbi5hY2Nlc3NfdG9rZW47XG4gICAgICAgIGNvbnN0IHN0ZXBVcFRva2VuID0gc2Vzc2lvbi5zdGVwX3VwX3Rva2VuO1xuICAgICAgICBpZiAoIXN0ZXBVcFRva2VuKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignVGhlIGFwcHJvdmFsIGRpZCBub3QgcmV0dXJuIGEgc3RlcC11cCBjb25maXJtYXRpb24g4oCUIGFwcHJvdmUgdGhlIGNvZGUgcHJvbXB0bHkgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMikgT3B0aW9uYWxseSBiaW5kIHRvIGEgc3BlY2lmaWMgb3JnIChwZXJzaXN0cyBhcyB0aGUgYWN0aXZlIG9yZywgd2hpY2hcbiAgICAgICAgLy8gICAgdGhlIGtleSBpbmhlcml0cykuIFJvdGF0ZXMgdGhlIHNlc3Npb24sIGJ1dCB0aGUgc3RlcC11cCB0b2tlbiBpc1xuICAgICAgICAvLyAgICBib3VuZCB0byB0aGUgdXNlciwgbm90IHRoZSBzZXNzaW9uLCBzbyBpdCBzdXJ2aXZlcyB0aGUgc3dpdGNoLlxuICAgICAgICBpZiAob3B0aW9ucy5vcmcpIHtcbiAgICAgICAgICBpZiAoIXF1aWV0KSBwcmludEluZm8oJ1N3aXRjaGluZyB0byBvcmdhbml6YXRpb24nLCB7IG9yZ0lkOiBvcHRpb25zLm9yZyB9KTtcbiAgICAgICAgICBhY2Nlc3NUb2tlbiA9IChhd2FpdCBzd2l0Y2hPcmdhbml6YXRpb24oe1xuICAgICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICAgIG9yZ0lkOiBvcHRpb25zLm9yZyxcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB9KSkuYWNjZXNzVG9rZW47XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzKSBDcmVhdGUgdGhlIGFjY2VzcyBrZXkuIFRoZSBzdGVwLXVwIHRva2VuIGlzIHNob3J0LWxpdmVkICh+NjBzKSBhbmRcbiAgICAgICAgLy8gICAgc2luZ2xlLXVzZSwgc28gaXQgaXMgc3BlbnQgaW1tZWRpYXRlbHkuXG4gICAgICAgIGNvbnN0IGtleVVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvdXNlci9rZXlzYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBrZXlVcmwgfSk7XG4gICAgICAgIGNvbnN0IGtleVJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8Q3JlYXRlQWNjZXNzS2V5UmVzcG9uc2U+KFxuICAgICAgICAgIGtleVVybCxcbiAgICAgICAgICB7IG5hbWUsIGV4cGlyZXNJbiwgLi4uKG9wdGlvbnMuc2NvcGUgPyB7IHNjb3BlOiBvcHRpb25zLnNjb3BlIH0gOiB7fSkgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAsXG4gICAgICAgICAgICAgICdYLVN0ZXAtVXAtVG9rZW4nOiBzdGVwVXBUb2tlbixcbiAgICAgICAgICAgICAgLi4ucmVxdWVzdENvcnJlbGF0aW9uSGVhZGVycygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qga2V5ID0ga2V5UmVzLmRhdGE/LmRhdGE/LmtleTtcbiAgICAgICAgY29uc3QgbWV0YSA9IGtleVJlcy5kYXRhPy5kYXRhPy5hY2Nlc3NLZXk7XG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIGtleSBmYWlsZWQ6IG5vIGtleSBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWlldCBtb2RlOiBlbWl0IG9ubHkgdGhlIGV4cG9ydCBsaW5lICh0aGUga2V5IGlzIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwpLlxuICAgICAgICBpZiAocXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPSR7a2V5fWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdBY2Nlc3Mga2V5IGNyZWF0ZWQnKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnTmFtZSc6IG1ldGE/Lm5hbWUgPz8gbmFtZSxcbiAgICAgICAgICAnS2V5IElEJzogbWV0YT8uaWQgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0tleSc6IG1ldGE/LmRpc3BsYXkgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0V4cGlyZXMnOiBtZXRhPy5leHBpcmVzQXQgPz8gYCR7ZGF5c30gZGF5KHMpYCxcbiAgICAgICAgICAuLi4obWV0YT8uc2NvcGUgPyB7IFNjb3BlOiBtZXRhLnNjb3BlIH0gOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHllbGxvdyhib2xkKCdDb3B5IHlvdXIga2V5IG5vdyDigJQgb25seSBpdHMgaGFzaCBpcyBzdG9yZWQsIHNvIGl0IHdpbGwgbm90IGJlIHNob3duIGFnYWluOicpKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGtleSkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB1c2UgaXQgYXMgUExBVEZPUk1fVE9LRU4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHM6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKCcgIGV4cG9ydCBQTEFURk9STV9UT0tFTj08dG9rZW4+JykpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICAjIG9yOiAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lICR7bmFtZX0gLS1xdWlldClgKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZXZpY2VBdXRoRXJyb3IpIHtcbiAgICAgICAgICBwcmludEVycm9yKGBDcmVhdGUga2V5IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWAsIHsgcmVhc29uOiBlcnJvci5jb2RlIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aW9zLmlzQXhpb3NFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IucmVzcG9uc2U/LmRhdGEgYXMgeyBtZXNzYWdlPzogc3RyaW5nIH0pPy5tZXNzYWdlO1xuICAgICAgICAgIHByaW50RXJyb3IoJ0NyZWF0ZSBrZXkgZmFpbGVkJywge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdjcmVhdGUtcGF0JywgZXhlY3V0aW9uSWQsIHVybDogb3B0aW9ucy51cmwgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1wYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQVlyQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWdCO0lBQ3hDLGNBQWMsQ0FBQyxPQUFPO1NBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsMEVBQTBFLENBQUM7U0FDdkYsY0FBYyxD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QUMsRUFBRSxDQUFDO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTthQUNsRSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgVElNRU9VVFMgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZCwgY3JlZGVudGlhbEh0dHBzQWdlbnQsIHN3aXRjaE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uL3V0aWxzL2F1dGgtdXRpbHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYmVnaW5EZXZpY2VBcHByb3ZhbCwgRGV2aWNlQXV0aEVycm9yLCBwb2xsRm9yRGV2aWNlVG9rZW4gfSBmcm9tICcuLi91dGlscy9kZXZpY2UtYXV0aC5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHJlcXVlc3RDb3JyZWxhdGlvbkhlYWRlcnMgfSBmcm9tICcuLi91dGlscy9yZXF1ZXN0LWNvbnRleHQuanMnO1xuXG5jb25zdCB7IGJvbGQsIGdyZWVuLCB5ZWxsb3cgfSA9IHBpY287XG5cbi8qKiBDcmVhdGUta2V5IHJlc3BvbnNlIOKAlCB0aGUgcmF3IGtleSBpcyByZXR1cm5lZCBleGFjdGx5IG9uY2UuICovXG5pbnRlcmZhY2UgQ3JlYXRlQWNjZXNzS2V5UmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhOiB7XG4gICAgLyoqIFRoZSBvcGFxdWUga2V5IChgcGJfcGF0X+KApmApLiBPbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCBzZXJ2ZXItc2lkZS4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICBhY2Nlc3NLZXk6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBkaXNwbGF5OiBzdHJpbmc7IGV4cGlyZXNBdDogc3RyaW5nOyBzY29wZT86IHN0cmluZyB8IG51bGwgfTtcbiAgfTtcbn1cblxuY29uc3QgTUFYX0VYUElSRVNfREFZUyA9IDM2NTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBwYXRgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogTWludHMgYSBuYW1lZCBBQ0NFU1MgS0VZIChgcGJfcGF0X+KApmApIOKAlCBhIGR1cmFibGUsIGluZGl2aWR1YWxseS1yZXZvY2FibGUgQVBJXG4gKiBjcmVkZW50aWFsIOKAlCBmb3IgQ0kvYXV0b21hdGlvbi4gVW5saWtlIGEgc2Vzc2lvbiwgYSBrZXkgaXMgdGhlIHJpZ2h0XG4gKiBsb25nLWxpdmVkIGNyZWRlbnRpYWwgZm9yIHNjcmlwdHMuXG4gKlxuICogVGhlIGtleSBpcyBPUEFRVUU6IGl0IGNhcnJpZXMgbm8gY2xhaW1zLCBhbmQgZWFjaCBzZXJ2aWNlIHRyYWRlcyBpdCBhdFxuICogcGxhdGZvcm0ncyAvYXV0aC90b2tlbi9leGNoYW5nZSBmb3IgYSA1LW1pbnV0ZSB0b2tlbiwgc28gcmV2b2tpbmcgaXQgdGFrZXNcbiAqIGVmZmVjdCBldmVyeXdoZXJlIHdpdGhpbiBmaXZlIG1pbnV0ZXMuXG4gKlxuICogQ3JlYXRpbmcgb25lIGlzIHN0ZXAtdXAgZ2F0ZWQgc2VydmVyLXNpZGUsIHlldCB0aGUgQ0xJIGhvbGRzIG5vIHBhc3N3b3JkOiB0aGVcbiAqIGRldmljZSBmbG93IGFza3MgZm9yIHRoZSBzdGVwLXVwIElOIFRIRSBCUk9XU0VSLCB3aGVyZSB0aGVcbiAqIGFjY291bnQncyByZWFsIGZhY3RvcnMgbGl2ZSwgYW5kIHRoZSBhcHByb3ZlZCBwb2xsIHJldHVybnMgYm90aCB0aGUgc2Vzc2lvblxuICogYW5kIGEgc2hvcnQtbGl2ZWQgc3RlcC11cCB0b2tlbi4gVGhlIGtleSBiaW5kcyB0byB0aGUgdXNlcidzIGFjdGl2ZSBvcmc7IHBhc3NcbiAqIGAtLW9yZ2AgdG8gc3dpdGNoIGZpcnN0ICh3aGljaCBwZXJzaXN0cyBhcyB0aGUgYWN0aXZlIG9yZykuXG4gKlxuICogVGhlIHJhdyBrZXkgaXMgcHJpbnRlZCBPTkNFIOKAlCBvbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCwgc28gaXQgY2FuIG5ldmVyIGJlIHJlYWRcbiAqIGJhY2suIGAtLXF1aWV0YCBwcmludHMgb25seSBgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPeKApmAgc28gaXQgY2FuIGJlIGBldmFsYCdkO1xuICogdGhlIGtleSBpcyBpdHNlbGYgYSB2YWxpZCBCZWFyZXIgY3JlZGVudGlhbC5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2ktZGVwbG95XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtLWV4cGlyZXMtZGF5cyAzMCAtLW9yZyA8b3JnSWQ+XG4gKiBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2kgLS1xdWlldClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdwYXQnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmFtZWQgYWNjZXNzIGtleSAobG9uZy1saXZlZCwgb3BhcXVlIENMSS9hdXRvbWF0aW9uIGNyZWRlbnRpYWwpJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy0tbmFtZSA8bmFtZT4nLCAnSHVtYW4tcmVhZGFibGUga2V5IG5hbWUgKGUuZy4gY2ktZGVwbG95KScpXG4gICAgLm9wdGlvbignLS1leHBpcmVzLWRheXMgPGRheXM+JywgYEtleSBsaWZldGltZSBpbiBkYXlzICgxLSR7TUFYX0VYUElSRVNfREFZU30pYCwgJzkwJylcbiAgICAub3B0aW9uKCctLXNjb3BlIDxzY29wZT4nLCAnT3B0aW9uYWwgY2FwYWJpbGl0eSBzY29wZSAobGVhc3QtcHJpdmlsZWdlIGtleSknKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnQmluZCB0aGUga2V5IHRvIGEgc3BlY2lmaWMgb3JnYW5pemF0aW9uIChzd2l0Y2hlcyBhY3RpdmUgb3JnKScpXG4gICAgLm9wdGlvbignLS1uby1icm93c2VyJywgJ05ldmVyIG9wZW4gYSBicm93c2VyIOKAlCBwcmludCB0aGUgdmVyaWZpY2F0aW9uIFVSTCBpbnN0ZWFkJylcbiAgICAub3B0aW9uKCctLXVybCA8dXJsPicsICdQbGF0Zm9ybSBiYXNlIFVSTCcsIHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJykpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBTRUNVUklUWTogdGhlIHBvbGwgcmV0dXJucyBhIHNlc3Npb24gQU5EIGEgc3RlcC11cCB0b2tlbiwgYW5kIHRoZSByZXNwb25zZVxuICAgICAgLy8gYmVsb3cgY2FycmllcyB0aGUgcmF3IGtleS4gTm9uZSBvZiB0aGF0IG1heSBjcm9zcyBhbiB1bnZlcmlmaWVkIGNvbm5lY3Rpb25cbiAgICAgIC8vIGluIHByb2R1Y3Rpb24uIE1pcnJvcnMgdGhlIGd1YXJkIGluIGBsb2dpbmAuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDcmVhdGUgQWNjZXNzIEtleScsICdDcmVhdGUgQWNjZXNzIEtleScsIHsgcXVpZXQgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIG5hbWUuXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0eXBlb2Ygb3B0aW9ucy5uYW1lID09PSAnc3RyaW5nJyA/IG9wdGlvbnMubmFtZS50cmltKCkgOiAnJztcbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignS2V5IG5hbWUgaXMgcmVxdWlyZWQgKC0tbmFtZSknKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUubGVuZ3RoID4gMTAwKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignS2V5IG5hbWUgbXVzdCBiZSAxMDAgY2hhcmFjdGVycyBvciBmZXdlcicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGV4cGlyeSDihpIgc2Vjb25kcy5cbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKG9wdGlvbnMuZXhwaXJlc0RheXMpKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IE1BWF9FWFBJUkVTX0RBWVMpIHtcbiAgICAgICAgICBwcmludEVycm9yKGAtLWV4cGlyZXMtZGF5cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9FWFBJUkVTX0RBWVN9YCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IGRheXMgKiA4NjQwMDtcblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gY3JlZGVudGlhbEh0dHBzQWdlbnQob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gVElNRU9VVFMuSFRUUF9SRVFVRVNUO1xuICAgICAgICBjb25zdCB0cmFuc3BvcnQgPSB7IHVybDogb3B0aW9ucy51cmwsIGh0dHBzQWdlbnQsIHRpbWVvdXQgfTtcblxuICAgICAgICAvLyAxKSBEZXZpY2Ugc2lnbi1pbiwgYXNraW5nIGZvciB0aGUgc3RlcC11cCB0aGUgY3JlYXRlIGNhbGwgbmVlZHMuXG4gICAgICAgIGNvbnN0IGNvZGUgPSBhd2FpdCBiZWdpbkRldmljZUFwcHJvdmFsKHRyYW5zcG9ydCwge1xuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIGJyb3dzZXI6IG9wdGlvbnMuYnJvd3NlcixcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgIHN0ZXBVcDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IHBvbGxGb3JEZXZpY2VUb2tlbih0cmFuc3BvcnQsIGNvZGUpO1xuICAgICAgICBsZXQgYWNjZXNzVG9rZW4gPSBzZXNzaW9uLmFjY2Vzc190b2tlbjtcbiAgICAgICAgY29uc3Qgc3RlcFVwVG9rZW4gPSBzZXNzaW9uLnN0ZXBfdXBfdG9rZW47XG4gICAgICAgIGlmICghc3RlcFVwVG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdUaGUgYXBwcm92YWwgZGlkIG5vdCByZXR1cm4gYSBzdGVwLXVwIGNvbmZpcm1hdGlvbiDigJQgYXBwcm92ZSB0aGUgY29kZSBwcm9tcHRseSBhbmQgdHJ5IGFnYWluLicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyKSBPcHRpb25hbGx5IGJpbmQgdG8gYSBzcGVjaWZpYyBvcmcgKHBlcnNpc3RzIGFzIHRoZSBhY3RpdmUgb3JnLCB3aGljaFxuICAgICAgICAvLyAgICB0aGUga2V5IGluaGVyaXRzKS4gUm90YXRlcyB0aGUgc2Vzc2lvbiwgYnV0IHRoZSBzdGVwLXVwIHRva2VuIGlzXG4gICAgICAgIC8vICAgIGJvdW5kIHRvIHRoZSB1c2VyLCBub3QgdGhlIHNlc3Npb24sIHNvIGl0IHN1cnZpdmVzIHRoZSBzd2l0Y2guXG4gICAgICAgIGlmIChvcHRpb25zLm9yZykge1xuICAgICAgICAgIGlmICghcXVpZXQpIHByaW50SW5mbygnU3dpdGNoaW5nIHRvIG9yZ2FuaXphdGlvbicsIHsgb3JnSWQ6IG9wdGlvbnMub3JnIH0pO1xuICAgICAgICAgIGFjY2Vzc1Rva2VuID0gKGF3YWl0IHN3aXRjaE9yZ2FuaXphdGlvbih7XG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pKS5hY2Nlc3NUb2tlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMpIENyZWF0ZSB0aGUgYWNjZXNzIGtleS4gVGhlIHN0ZXAtdXAgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpIGFuZFxuICAgICAgICAvLyAgICBzaW5nbGUtdXNlLCBzbyBpdCBpcyBzcGVudCBpbW1lZGlhdGVseS5cbiAgICAgICAgY29uc3Qga2V5VXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS91c2VyL2tleXNgO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IGtleVVybCB9KTtcbiAgICAgICAgY29uc3Qga2V5UmVzID0gYXdhaXQgYXhpb3MucG9zdDxDcmVhdGVBY2Nlc3NLZXlSZXNwb25zZT4oXG4gICAgICAgICAga2V5VXJsLFxuICAgICAgICAgIHsgbmFtZSwgZXhwaXJlc0luLCAuLi4ob3B0aW9ucy5zY29wZSA/IHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSA6IHt9KSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICAgICAgICAgICAgJ1gtU3RlcC1VcC1Ub2tlbic6IHN0ZXBVcFRva2VuLFxuICAgICAgICAgICAgICAuLi5yZXF1ZXN0Q29ycmVsYXRpb25IZWFkZXJzKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBrZXkgPSBrZXlSZXMuZGF0YT8uZGF0YT8ua2V5O1xuICAgICAgICBjb25zdCBtZXRhID0ga2V5UmVzLmRhdGE/LmRhdGE/LmFjY2Vzc0tleTtcbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUga2V5IGZhaWxlZDogbm8ga2V5IGluIHJlc3BvbnNlJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFQSV9SRVFVRVNUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFF1aWV0IG1vZGU6IGVtaXQgb25seSB0aGUgZXhwb3J0IGxpbmUgKHRoZSBrZXkgaXMgYSB2YWxpZCBCZWFyZXIgY3JlZGVudGlhbCkuXG4gICAgICAgIGlmIChxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBleHBvcnQgUExBVEZPUk1fVE9LRU49JHtrZXl9YCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ0FjY2VzcyBrZXkgY3JlYXRlZCcpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdOYW1lJzogbWV0YT8ubmFtZSA/PyBuYW1lLFxuICAgICAgICAgICdLZXkgSUQnOiBtZXRhPy5pZCA/PyAnKHVua25vd24pJyxcbiAgICAgICAgICAnS2V5JzogbWV0YT8uZGlzcGxheSA/PyAnKHVua25vd24pJyxcbiAgICAgICAgICAnRXhwaXJlcyc6IG1ldGE/LmV4cGlyZXNBdCA/PyBgJHtkYXlzfSBkYXkocylgLFxuICAgICAgICAgIC4uLihtZXRhPy5zY29wZSA/IHsgU2NvcGU6IG1ldGEuc2NvcGUgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgY29uc29sZS5sb2coeWVsbG93KGJvbGQoJ0NvcHkgeW91ciBrZXkgbm93IOKAlCBvbmx5IGl0cyBoYXNoIGlzIHN0b3JlZCwgc28gaXQgd2lsbCBub3QgYmUgc2hvd24gYWdhaW46JykpKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oa2V5KSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdUaXA6IHVzZSBpdCBhcyBQTEFURk9STV9UT0tFTiBmb3Igc3Vic2VxdWVudCBjb21tYW5kczonKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oJyAgZXhwb3J0IFBMQVRGT1JNX1RPS0VOPTx0b2tlbj4nKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKGAgICMgb3I6ICBldmFsICQocGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgJHtuYW1lfSAtLXF1aWV0KWApKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERldmljZUF1dGhFcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoYENyZWF0ZSBrZXkgZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCwgeyByZWFzb246IGVycm9yLmNvZGUgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVycm9yLnJlc3BvbnNlPy5zdGF0dXM7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlcnJvci5yZXNwb25zZT8uZGF0YSBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfSk/Lm1lc3NhZ2U7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIGtleSBmYWlsZWQnLCB7XG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA/PyAnbm8gcmVzcG9uc2UnLFxuICAgICAgICAgICAgLi4uKG1lc3NhZ2UgPyB7IG1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2NyZWF0ZS1wYXQnLCBleGVjdXRpb25JZCwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAybpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIrD"}
1
+ {"version":3,"file":"create-pipeline.d.ts","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAybpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIrD"}
@@ -471,4 +471,4 @@ export function createPipeline(program) {
471
471
  }
472
472
  });
473
473
  }
474
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuSCxPQUFPLEVBQStGLE1BQU0sbUJBQW1CLENBQUM7QUFDaEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSw4QkFBOEIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoTSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7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Q0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVc7b0JBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7b0JBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBmb3JtYXRGaWxlU2l6ZSwgRklMRV9TSVpFX0xJTUlUUywgZGVmYXVsdFBpcGVsaW5lTmFtZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSwgdHlwZSBDcmVhdGVQaXBlbGluZVJlcXVlc3QsIHR5cGUgUGxhdGZvcm1EZXBsb3lDb25maWcgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCB3aXRoU3NsT3B0aW9ucywgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24gfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IHJ1bkRlcGxveSB9IGZyb20gJy4uL3V0aWxzL2RlcGxveS1ydW5uZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGZldGNoUGlwZWxpbmVQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BpcGVsaW5lLWNvbmZpZy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUmVnaXN0cmF0aW9uQ2xpZW50IH0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cmF0aW9uLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5pbXBvcnQgeyByZWxheFRsc0ZvckNsaSB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiB9ID0gcGljbztcblxuLyoqIFBhcnNlZCBgcGlwZWxpbmUgY3JlYXRlYCBmbGFncy4gKi9cbmludGVyZmFjZSBDcmVhdGVQaXBlbGluZU9wdGlvbnMge1xuICBmaWxlOiBzdHJpbmc7XG4gIHByb2plY3Q/OiBzdHJpbmc7XG4gIG9yZ2FuaXphdGlvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgdmlzaWJpbGl0eT86IENyZWF0ZVBpcGVsaW5lUmVxdWVzdFsndmlzaWJpbGl0eSddO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICB1cHNlcnQ/OiBib29sZWFuO1xuICBkZXBsb3k/OiBib29sZWFuO1xuICByZXF1aXJlQXBwcm92YWw6IHN0cmluZztcbiAgb3V0cHV0OiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZztcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgZHJ5UnVuPzogYm9vbGVhbjtcbiAgc3RvcmVUb2tlbnM/OiBib29sZWFuO1xufVxuXG4vKiogVmFsaWRhdGUgdGhlIHByb3BzIGZpbGUgKGV4aXN0cywgc2l6ZSBjYXApIGFuZCBwYXJzZSBpdCBhcyBhIEpTT04gb2JqZWN0LiAqL1xuZnVuY3Rpb24gcmVhZFByb3BzRmlsZShmaWxlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdGaWxlIFZhbGlkYXRpb24nKTtcblxuICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcbiAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbm90IGZvdW5kJywgeyBwYXRoOiBmaWxlIH0pO1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGV9YCwgJ2ZpbGUnKTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVFeHQgPSBwYXRoLmV4dG5hbWUoZmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGZpbGVFeHQgIT09ICcuanNvbicpIHtcbiAgICBwcmludFdhcm5pbmcoJ0ZpbGUgZXh0ZW5zaW9uIGlzIG5vdCAuanNvbicsIHsgZXh0ZW5zaW9uOiBmaWxlRXh0IH0pO1xuICB9XG5cbiAgY29uc3QgZmlsZVN0YXRzID0gZnMuc3RhdFN5bmMoZmlsZSk7XG4gIGlmIChmaWxlU3RhdHMuc2l6ZSA+IEZJTEVfU0laRV9MSU1JVFMuUElQRUxJTkVfUFJPUFMpIHtcbiAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgaXMgdG9vIGxhcmdlJywge1xuICAgICAgc2l6ZTogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgbGltaXQ6IGZvcm1hdEZpbGVTaXplKEZJTEVfU0laRV9MSU1JVFMuUElQRUxJTkVfUFJPUFMpLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBleGNlZWRzIHNpemUgbGltaXQnLCAnZmlsZScpO1xuICB9XG5cbiAgcHJpbnRTdWNjZXNzKCdGaWxlIHZhbGlkYXRpb24gcGFzc2VkJyk7XG4gIHByaW50S2V5VmFsdWUoe1xuICAgICdGaWxlIFBhdGgnOiBmaWxlLFxuICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgJ0V4dGVuc2lvbic6IGZpbGVFeHQsXG4gIH0pO1xuXG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRJbmZvKCdSZWFkaW5nIHBpcGVsaW5lIHByb3BlcnRpZXMuLi4nKTtcblxuICBsZXQgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB0cnkge1xuICAgIHByb3BzID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0Zi04JykpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IoJ0ludmFsaWQgSlNPTiBpbiBwcm9wZXJ0aWVzIGZpbGUnLCB7XG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICAgIGhpbnQ6ICdFbnN1cmUgdGhlIGZpbGUgY29udGFpbnMgdmFsaWQgSlNPTiBzeW50YXgnLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBtdXN0IGNvbnRhaW4gdmFsaWQgSlNPTicsICdmaWxlJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHByb3BzICE9PSAnb2JqZWN0JyB8fCBwcm9wcyA9PT0gbnVsbCkge1xuICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcHJvcGVydGllcyBmb3JtYXQnLCB7XG4gICAgICB0eXBlOiB0eXBlb2YgcHJvcHMsXG4gICAgICBoaW50OiAnUHJvcGVydGllcyBtdXN0IGJlIGEgSlNPTiBvYmplY3QnLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcsICdmaWxlJyk7XG4gIH1cblxuICBjb25zdCBwcm9wQ291bnQgPSBPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoO1xuICBwcmludFN1Y2Nlc3MoJ1Byb3BlcnRpZXMgcGFyc2VkIHN1Y2Nlc3NmdWxseScpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnVG90YWwgS2V5cyc6IHByb3BDb3VudC50b1N0cmluZygpLFxuICAgICdTYW1wbGUgS2V5cyc6IE9iamVjdC5rZXlzKHByb3BzKS5zbGljZSgwLCA1KS5qb2luKCcsICcpICsgKHByb3BDb3VudCA+IDUgPyAnLi4uJyA6ICcnKSxcbiAgfSk7XG4gIGlmIChwcm9wQ291bnQgPT09IDApIHtcbiAgICBwcmludFdhcm5pbmcoJ1Byb3BlcnRpZXMgb2JqZWN0IGlzIGVtcHR5IC0gcGlwZWxpbmUgd2lsbCBoYXZlIG5vIGNvbmZpZ3VyYXRpb24nKTtcbiAgfVxuICByZXR1cm4gcHJvcHM7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGNyZWF0ZSByZXF1ZXN0LiBQcm9qZWN0ICYgb3JnYW5pemF0aW9uIHByZWZlciB0aGUgQ0xJIGZsYWdzIGFuZFxuICogZmFsbCBiYWNrIHRvIHZhbHVlcyBlbWJlZGRlZCBpbiB0aGUgcHJvcHMgZmlsZSAoYnVpbGRlclByb3BzKS5cbiAqL1xuZnVuY3Rpb24gYnVpbGRDcmVhdGVQYXlsb2FkKG9wdGlvbnM6IENyZWF0ZVBpcGVsaW5lT3B0aW9ucywgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0IHtcbiAgY29uc3QgcmVzb2x2ZWRQcm9qZWN0ID0gb3B0aW9ucy5wcm9qZWN0ID8/IChwcm9wcy5wcm9qZWN0IGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHJlc29sdmVkT3JnYW5pemF0aW9uID0gb3B0aW9ucy5vcmdhbml6YXRpb24gPz8gKHByb3BzLm9yZ2FuaXphdGlvbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIGlmICghcmVzb2x2ZWRQcm9qZWN0KSB7XG4gICAgcHJpbnRFcnJvcignUHJvamVjdCBpcyByZXF1aXJlZCcsIHtcbiAgICAgIGhpbnQ6ICdQcm92aWRlIC1wLy0tcHJvamVjdCBmbGFnIG9yIGluY2x1ZGUgXCJwcm9qZWN0XCIgaW4gdGhlIHByb3BzIGZpbGUnLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb2plY3QgaXMgcmVxdWlyZWQnLCAncHJvamVjdCcpO1xuICB9XG4gIGlmICghcmVzb2x2ZWRPcmdhbml6YXRpb24pIHtcbiAgICBwcmludEVycm9yKCdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnLCB7XG4gICAgICBoaW50OiAnUHJvdmlkZSAtby8tLW9yZ2FuaXphdGlvbiBmbGFnIG9yIGluY2x1ZGUgXCJvcmdhbml6YXRpb25cIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT3JnYW5pemF0aW9uIGlzIHJlcXVpcmVkJywgJ29yZ2FuaXphdGlvbicpO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBwaXBlbGluZU5hbWUgd2l0aCB0aGUgc2hhcmVkIGRlZmF1bHQgKG1pcnJvcnMgcGlwZWxpbmUtY29yZSdzXG4gIC8vIHBpcGVsaW5lLWNvbmZpZ3VyYXRpb24udHMpIHNvIGNyZWF0ZSArIHJlZ2lzdHJ5ICsgQ0RLIGFsbCBhZ3JlZS5cbiAgY29uc3QgcmVzb2x2ZWRQaXBlbGluZU5hbWUgPSBvcHRpb25zLm5hbWVcbiAgICA/PyAocHJvcHMucGlwZWxpbmVOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICA/PyBkZWZhdWx0UGlwZWxpbmVOYW1lKHJlc29sdmVkT3JnYW5pemF0aW9uLCByZXNvbHZlZFByb2plY3QpO1xuXG4gIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVBpcGVsaW5lUmVxdWVzdCA9IHtcbiAgICBwcm9qZWN0OiByZXNvbHZlZFByb2plY3QsXG4gICAgb3JnYW5pemF0aW9uOiByZXNvbHZlZE9yZ2FuaXphdGlvbixcbiAgICBwaXBlbGluZU5hbWU6IHJlc29sdmVkUGlwZWxpbmVOYW1lLFxuICAgIHByb3BzLFxuICB9O1xuICBpZiAob3B0aW9ucy52aXNpYmlsaXR5KSBwYXlsb2FkLnZpc2liaWxpdHkgPSBvcHRpb25zLnZpc2liaWxpdHk7XG4gIGlmIChvcHRpb25zLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSBwYXlsb2FkLmlzQWN0aXZlID0gb3B0aW9ucy5hY3RpdmU7XG4gIHJldHVybiBwYXlsb2FkO1xufVxuXG4vKiogV2hldGhlciBhbiBBUEkgZXJyb3IgaXMgdGhlIDQwOSBhIHRha2VuIChwcm9qZWN0LCBvcmdhbml6YXRpb24pIHNsb3QgcmV0dXJucy4gKi9cbmZ1bmN0aW9uIGNvbmZsaWN0U3RhdHVzKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlcyA9IChlcnJvciBhcyB7IHJlc3BvbnNlPzogeyBzdGF0dXM/OiBudW1iZXIgfSB9IHwgbnVsbCk/LnJlc3BvbnNlO1xuICByZXR1cm4gcmVzPy5zdGF0dXMgPT09IDQwOTtcbn1cblxuLyoqIE9uZSByZWFzb24gYSBjcmVhdGUgd291bGQgYmUgcmVmdXNlZCwgYXMgYFBPU1QgL3BpcGVsaW5lcy92YWxpZGF0ZWAgcmVwb3J0cyBpdC4gKi9cbmludGVyZmFjZSBWYWxpZGF0aW9uUHJvYmxlbSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqIFRoZSBzdGFnZS9wbHVnaW4vSUFNIHByb2plY3Rpb24gdGhlIHNlcnZlciBkZXJpdmVzIGZyb20gdGhlIGNvbmZpZy4gKi9cbmludGVyZmFjZSBTdHJ1Y3R1cmVQcmV2aWV3IHtcbiAgc3RhZ2VzOiBBcnJheTx7XG4gICAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gICAgY29kZVBpcGVsaW5lU3RhZ2U6IHN0cmluZztcbiAgICBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgICBzdGVwczogQXJyYXk8eyBwbHVnaW46IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nOyBwb3NpdGlvbjogc3RyaW5nIH0+O1xuICB9PjtcbiAgaWFtOiB7IHJvbGVUeXBlOiBzdHJpbmc7IGNhbGxlclN1cHBsaWVkOiBib29sZWFuOyByb2xlUmVmPzogc3RyaW5nIH07XG4gIHBsdWdpbnM6IHN0cmluZ1tdO1xufVxuXG4vKiogV2hhdCBhbiB1cGRhdGUgd291bGQgY2hhbmdlLCByZWxhdGl2ZSB0byB0aGUgc3RvcmVkIGNvbmZpZ3VyYXRpb24uICovXG5pbnRlcmZhY2UgU3RydWN0dXJlRGlmZiB7XG4gIHN0YWdlc0FkZGVkOiBzdHJpbmdbXTtcbiAgc3RhZ2VzUmVtb3ZlZDogc3RyaW5nW107XG4gIHN0YWdlc0NoYW5nZWQ6IHN0cmluZ1tdO1xuICBwbHVnaW5zQWRkZWQ6IHN0cmluZ1tdO1xuICBwbHVnaW5zUmVtb3ZlZDogc3RyaW5nW107XG4gIGlhbUNoYW5nZWQ/OiB7IGZyb206IHsgcm9sZVR5cGU6IHN0cmluZyB9OyB0bzogeyByb2xlVHlwZTogc3RyaW5nIH0gfTtcbiAgdW5jaGFuZ2VkOiBib29sZWFuO1xufVxuXG4vKiogVGhlIHZhbGlkYXRlIGVuZHBvaW50J3MgcmVwb3J0LiAqL1xuaW50ZXJmYWNlIFZhbGlkYXRlUmVwb3J0IHtcbiAgdmFsaWQ6IGJvb2xlYW47XG4gIHByb2JsZW1zOiBWYWxpZGF0aW9uUHJvYmxlbVtdO1xuICB3YXJuaW5nczogVmFsaWRhdGlvblByb2JsZW1bXTtcbiAgbm9ybWFsaXplZD86IHsgcHJvamVjdDogc3RyaW5nOyBvcmdhbml6YXRpb246IHN0cmluZzsgcGlwZWxpbmVOYW1lOiBzdHJpbmc7IHZpc2liaWxpdHk6IHN0cmluZyB9O1xuICBzbG90PzogeyB0YWtlbjogYm9vbGVhbjsgcGlwZWxpbmVJZD86IHN0cmluZzsgcGlwZWxpbmVOYW1lPzogc3RyaW5nOyBkZWxldGVkPzogYm9vbGVhbiB9O1xuICBkZXBsb3lzPzogQXJyYXk8eyBzdGFnZTogc3RyaW5nOyBlbnZpcm9ubWVudDogc3RyaW5nOyBpbmZlcnJlZDogYm9vbGVhbiB9PjtcbiAgZGVwbG95c1RhZz86IHN0cmluZztcbiAgcXVvdGE/OiB7IHVzZWQ6IG51bWJlcjsgbGltaXQ6IG51bWJlcjsgcmVtYWluaW5nOiBudW1iZXI7IHVubGltaXRlZDogYm9vbGVhbjsgcmVzZXRBdDogc3RyaW5nIH07XG4gIHByZXZpZXc/OiBTdHJ1Y3R1cmVQcmV2aWV3O1xuICBkaWZmPzogU3RydWN0dXJlRGlmZjtcbn1cblxuLyoqXG4gKiBQcmludCB0aGUgc3RydWN0dXJlIHRoZSBjb25maWcgd2lsbCBidWlsZC4gVGhpcyBpcyB0aGUgcGFydCBhIHJldmlld2VyIHNpZ25zXG4gKiBvZmYgb24g4oCUIHN0YWdlIG9yZGVyLCB0aGUgcGx1Z2luIFZFUlNJT05TIGVhY2ggc3RlcCByZXNvbHZlcyB0bywgd2hpY2ggc3RhZ2VzXG4gKiBkZXBsb3kgd2hlcmUsIGFuZCB3aGV0aGVyIHRoZSBwaXBlbGluZSBhc3N1bWVzIGEgY2FsbGVyLXN1cHBsaWVkIElBTSByb2xlLlxuICovXG5mdW5jdGlvbiBwcmludFByZXZpZXcocHJldmlldzogU3RydWN0dXJlUHJldmlldyk6IHZvaWQge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRHJ5IFJ1biAtIFdoYXQgVGhpcyBXb3VsZCBCdWlsZCcpO1xuICBpZiAocHJldmlldy5zdGFnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdObyBzdGFnZXMgZGVjbGFyZWQg4oCUIHRoaXMgcGlwZWxpbmUgd291bGQgYnVpbGQgbm90aGluZy4nKTtcbiAgfVxuICBmb3IgKGNvbnN0IFtpLCBzdGFnZV0gb2YgcHJldmlldy5zdGFnZXMuZW50cmllcygpKSB7XG4gICAgY29uc3QgZGVwbG95ID0gc3RhZ2UuZW52aXJvbm1lbnQgPyBgICR7Y3lhbihg4oaSIGRlcGxveXMgdG8gJHtzdGFnZS5lbnZpcm9ubWVudH1gKX1gIDogJyc7XG4gICAgY29uc29sZS5sb2coYCAgJHtib2xkKGAke2kgKyAxfS4gJHtzdGFnZS5zdGFnZU5hbWV9YCl9ICR7ZGltKGAoJHtzdGFnZS5jb2RlUGlwZWxpbmVTdGFnZX0pYCl9JHtkZXBsb3l9YCk7XG4gICAgaWYgKHN0YWdlLnN0ZXBzLmxlbmd0aCA9PT0gMCkgY29uc29sZS5sb2coYCAgICAgJHtkaW0oJyhubyBzdGVwcyknKX1gKTtcbiAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RhZ2Uuc3RlcHMpIHtcbiAgICAgIC8vIGBsYXRlc3RgIGlzIGNhbGxlZCBvdXQgYmVjYXVzZSBhbiB1bnBpbm5lZCBwbHVnaW4gcmVzb2x2ZXMgdG8gd2hhdGV2ZXIgaXNcbiAgICAgIC8vIG5ld2VzdCBhdCBzeW50aCDigJQgdGhlIGRpZmZlcmVuY2UgYSByZXZpZXdlciBtb3N0IG5lZWRzIHRvIHNlZS5cbiAgICAgIGNvbnN0IHZlcnNpb24gPSBzdGVwLnZlcnNpb24gPT09ICdsYXRlc3QnID8gYCR7c3RlcC52ZXJzaW9ufSAodW5waW5uZWQpYCA6IHN0ZXAudmVyc2lvbjtcbiAgICAgIGNvbnNvbGUubG9nKGAgICAgICR7ZGltKCfigKInKX0gJHtzdGVwLnBsdWdpbn1AJHt2ZXJzaW9ufSR7c3RlcC5wb3NpdGlvbiA9PT0gJ3Bvc3QnID8gZGltKCcgW3Bvc3RdJykgOiAnJ31gKTtcbiAgICB9XG4gIH1cbiAgcHJpbnRJbmZvKCdJQU0nLCBwcmV2aWV3LmlhbS5jYWxsZXJTdXBwbGllZFxuICAgID8geyByb2xlOiBgJHtwcmV2aWV3LmlhbS5yb2xlVHlwZX0g4oCUIGNhbGxlci1zdXBwbGllZCR7cHJldmlldy5pYW0ucm9sZVJlZiA/IGA6ICR7cHJldmlldy5pYW0ucm9sZVJlZn1gIDogJyd9YCB9XG4gICAgOiB7IHJvbGU6IGAke3ByZXZpZXcuaWFtLnJvbGVUeXBlfSAocGxhdGZvcm0tbWFuYWdlZClgIH0pO1xuICBpZiAocHJldmlldy5pYW0uY2FsbGVyU3VwcGxpZWQpIHtcbiAgICBwcmludFdhcm5pbmcoJ1RoaXMgcGlwZWxpbmUgYXNzdW1lcyBhIHJvbGUgdGhlIGNvbmZpZyBuYW1lcywgc28gaXRzIHBlcm1pc3Npb25zIGFyZSB3aGF0ZXZlciB0aGF0IHJvbGUgYWxyZWFkeSBob2xkcy4nKTtcbiAgfVxufVxuXG4vKiogUHJpbnQgd2hhdCBhbiB1cGRhdGUgd291bGQgQ0hBTkdFLCBmb3IgYSBzbG90IHRoYXQgaXMgYWxyZWFkeSBvY2N1cGllZC4gKi9cbmZ1bmN0aW9uIHByaW50RGlmZihkaWZmOiBTdHJ1Y3R1cmVEaWZmKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIC0gV2hhdCBXb3VsZCBDaGFuZ2UnKTtcbiAgaWYgKGRpZmYudW5jaGFuZ2VkKSB7XG4gICAgcHJpbnRJbmZvKCdObyBzdHJ1Y3R1cmFsIGNoYW5nZSDigJQgc3RhZ2VzLCBwbHVnaW5zIGFuZCBJQU0gYXJlIGlkZW50aWNhbCB0byB0aGUgc3RvcmVkIGNvbmZpZ3VyYXRpb24nKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgcm93czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBpZiAoZGlmZi5zdGFnZXNBZGRlZC5sZW5ndGgpIHJvd3NbJ1N0YWdlcyBhZGRlZCddID0gZGlmZi5zdGFnZXNBZGRlZC5qb2luKCcsICcpO1xuICBpZiAoZGlmZi5zdGFnZXNSZW1vdmVkLmxlbmd0aCkgcm93c1snU3RhZ2VzIHJlbW92ZWQnXSA9IGRpZmYuc3RhZ2VzUmVtb3ZlZC5qb2luKCcsICcpO1xuICBpZiAoZGlmZi5zdGFnZXNDaGFuZ2VkLmxlbmd0aCkgcm93c1snU3RhZ2VzIGNoYW5nZWQnXSA9IGRpZmYuc3RhZ2VzQ2hhbmdlZC5qb2luKCcsICcpO1xuICBpZiAoZGlmZi5wbHVnaW5zQWRkZWQubGVuZ3RoKSByb3dzWydQbHVnaW5zIGFkZGVkJ10gPSBkaWZmLnBsdWdpbnNBZGRlZC5qb2luKCcsICcpO1xuICBpZiAoZGlmZi5wbHVnaW5zUmVtb3ZlZC5sZW5ndGgpIHJvd3NbJ1BsdWdpbnMgcmVtb3ZlZCddID0gZGlmZi5wbHVnaW5zUmVtb3ZlZC5qb2luKCcsICcpO1xuICBwcmludEtleVZhbHVlKHJvd3MpO1xuICBpZiAoZGlmZi5pYW1DaGFuZ2VkKSB7XG4gICAgcHJpbnRXYXJuaW5nKGBJQU0gcm9sZSBjaGFuZ2VzOiAke2RpZmYuaWFtQ2hhbmdlZC5mcm9tLnJvbGVUeXBlfSDihpIgJHtkaWZmLmlhbUNoYW5nZWQudG8ucm9sZVR5cGV9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBgLS1kcnktcnVuYDogYXNrIHRoZSBzZXJ2ZXIgdG8gcnVuIGV2ZXJ5IGNyZWF0ZS10aW1lIGNoZWNrIGFuZCBwcmludCB0aGUgcmVzdWx0LlxuICpcbiAqIFRoaXMgdXNlZCB0byBwcmludCB0aGUgcmVxdWVzdCBib2R5IGFuZCBhIGdyZWVuIFwi4pyTIFZhbGlkYXRpb24gY29tcGxldGVcIiwgaGF2aW5nXG4gKiB2YWxpZGF0ZWQgbm90aGluZyBzZXJ2ZXItc2lkZSDigJQgc28gYSBjb25maWcgdGhhdCBhIGNvbXBsaWFuY2UgcnVsZSwgYSBwbHVnaW5cbiAqIGNvbnRyYWN0IG9yIGFuIGV4aGF1c3RlZCBxdW90YSB3b3VsZCByZWplY3QgcmVwb3J0ZWQgc3VjY2Vzcy4gTm90aGluZyBhYm91dCBhXG4gKiBwYXlsb2FkIGVjaG8gaXMgYSB2YWxpZGF0aW9uLlxuICpcbiAqIFRIUk9XUyB3aGVuIHRoZSBjb25maWcgaXMgaW52YWxpZCwgc28gYC0tZHJ5LXJ1bmAgZXhpdHMgbm9uLXplcm8gYW5kIGEgQ0kgc3RlcFxuICogdGhhdCBydW5zIGl0IGZhaWxzIGluc3RlYWQgb2YgcGFzc2luZyBvbiBhIHByaW50ZWQgZXJyb3IuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkRyeVJ1bihcbiAgb3B0aW9uczogQ3JlYXRlUGlwZWxpbmVPcHRpb25zLFxuICBwYXlsb2FkOiBDcmVhdGVQaXBlbGluZVJlcXVlc3QsXG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudD4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRHJ5IFJ1biAtIFJlcXVlc3QgUHJldmlldycpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSk7XG5cbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBTZXJ2ZXIgVmFsaWRhdGlvbicpO1xuICBjb25zdCBzcGlubmVyID0gb3JhKCdWYWxpZGF0aW5nIGFnYWluc3QgdGVtcGxhdGVzLCBwbHVnaW4gY29udHJhY3RzLCBjb21wbGlhbmNlIGFuZCBxdW90YS4uLicpLnN0YXJ0KCk7XG4gIGxldCByZXBvcnQ6IFZhbGlkYXRlUmVwb3J0O1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5wb3N0PHsgZGF0YT86IFZhbGlkYXRlUmVwb3J0IH0gJiBWYWxpZGF0ZVJlcG9ydD4oXG4gICAgICBgJHtjb25maWcuYXBpLnBpcGVsaW5lVXJsfS92YWxpZGF0ZWAsIHBheWxvYWQsXG4gICAgKTtcbiAgICByZXBvcnQgPSAocmVzLmRhdGEgPz8gcmVzKSBhcyBWYWxpZGF0ZVJlcG9ydDtcbiAgICBzcGlubmVyLnN0b3AoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBzcGlubmVyLmZhaWwoJ1ZhbGlkYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCcpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgaWYgKHJlcG9ydC5ub3JtYWxpemVkKSB7XG4gICAgcHJpbnRJbmZvKCdOb3JtYWxpemVkIGlkZW50aXR5Jywge1xuICAgICAgcHJvamVjdDogcmVwb3J0Lm5vcm1hbGl6ZWQucHJvamVjdCxcbiAgICAgIG9yZ2FuaXphdGlvbjogcmVwb3J0Lm5vcm1hbGl6ZWQub3JnYW5pemF0aW9uLFxuICAgICAgcGlwZWxpbmVOYW1lOiByZXBvcnQubm9ybWFsaXplZC5waXBlbGluZU5hbWUsXG4gICAgICB2aXNpYmlsaXR5OiByZXBvcnQubm9ybWFsaXplZC52aXNpYmlsaXR5LFxuICAgIH0pO1xuICB9XG4gIGlmIChyZXBvcnQucXVvdGEpIHtcbiAgICBwcmludEluZm8oJ1BpcGVsaW5lIHF1b3RhJywgcmVwb3J0LnF1b3RhLnVubGltaXRlZFxuICAgICAgPyB7IGxpbWl0OiAndW5saW1pdGVkJyB9XG4gICAgICA6IHsgdXNlZDogcmVwb3J0LnF1b3RhLnVzZWQsIGxpbWl0OiByZXBvcnQucXVvdGEubGltaXQsIHJlbWFpbmluZzogcmVwb3J0LnF1b3RhLnJlbWFpbmluZyB9KTtcbiAgfVxuICAvLyBBIHRha2VuIHNsb3QgaXMgdGhlIG9uZSBkcnktcnVuIGZpbmRpbmcgdGhhdCBpcyBOT1QgYSBjb25maWcgcHJvYmxlbTogdGhlXG4gIC8vIGNvbmZpZyBpcyB2YWxpZCBhbmQgdGhlIGNyZWF0ZSB3b3VsZCBzdGlsbCA0MDksIGJlY2F1c2Ugb25lIHBpcGVsaW5lIHBlclxuICAvLyAocHJvamVjdCwgb3JnYW5pemF0aW9uKSBpcyBhIHVuaXF1ZW5lc3MgcnVsZSwgbm90IGEgdmFsaWRhdGlvbiBydWxlLiBTYXlpbmcgc29cbiAgLy8gaGVyZSBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgYXNraW5nIHRoZSBzZXJ2ZXIg4oCUIGEgQ0kgZHJ5LXJ1biB0aGF0IHBhc3NlcyBhbmRcbiAgLy8gdGhlbiA0MDlzIG9uIHRoZSByZWFsIGNyZWF0ZSBoYXMgdG9sZCBub2JvZHkgYW55dGhpbmcuIFRoZSBzZXJ2ZXIncyBtZXNzYWdlXG4gIC8vIG5hbWVzIGA/dXBzZXJ0PXRydWVgOyBhIENMSSB1c2VyIGhhcyBgLS11cHNlcnRgLlxuICBpZiAocmVwb3J0LnNsb3Q/LnRha2VuKSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSByZXBvcnQuc2xvdC5waXBlbGluZU5hbWUgPz8gcmVwb3J0LnNsb3QucGlwZWxpbmVJZCA/PyAnYW4gZXhpc3RpbmcgcGlwZWxpbmUnO1xuICAgIGlmIChvcHRpb25zLnVwc2VydCkge1xuICAgICAgcHJpbnRJbmZvKGBUaGlzIHByb2plY3Qvb3JnYW5pemF0aW9uIGFscmVhZHkgaGFzICR7ZXhpc3Rpbmd9IOKAlCAtLXVwc2VydCB3b3VsZCBvdmVyd3JpdGUgaXRgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICBgVGhpcyBwcm9qZWN0L29yZ2FuaXphdGlvbiBhbHJlYWR5IGhhcyAke2V4aXN0aW5nfSwgc28gY3JlYXRpbmcgd291bGQgZmFpbCB3aXRoIGEgNDA5LiBgXG4gICAgICAgICsgJ1JlLXJ1biB3aXRoIC0tdXBzZXJ0IHRvIG92ZXJ3cml0ZSBpdCwgb3IgZWRpdCB0aGUgZXhpc3Rpbmcgb25lLicsXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChyZXBvcnQuc2xvdD8uZGVsZXRlZCkge1xuICAgIHByaW50SW5mbygnQSBkZWxldGVkIHBpcGVsaW5lIGhvbGRzIHRoaXMgcHJvamVjdC9vcmdhbml6YXRpb24g4oCUIGNyZWF0aW5nIHdpbGwgcmV1c2UgdGhlIHNsb3QnKTtcbiAgfVxuICBpZiAocmVwb3J0LnByZXZpZXcpIHByaW50UHJldmlldyhyZXBvcnQucHJldmlldyk7XG4gIGlmIChyZXBvcnQuZGlmZikgcHJpbnREaWZmKHJlcG9ydC5kaWZmKTtcblxuICBpZiAocmVwb3J0LmRlcGxveXMgJiYgcmVwb3J0LmRlcGxveXMubGVuZ3RoID4gMCkge1xuICAgIHByaW50SW5mbygnRE9SQSBkZXBsb3kgYXR0cmlidXRpb24nLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICByZXBvcnQuZGVwbG95cy5tYXAoKGQpID0+IFtkLnN0YWdlLCBgJHtkLmVudmlyb25tZW50fSR7ZC5pbmZlcnJlZCA/ICcgKGluZmVycmVkKScgOiAnJ31gXSksXG4gICAgKSk7XG4gIH0gZWxzZSB7XG4gICAgcHJpbnRXYXJuaW5nKCdObyBzdGFnZSBkZWNsYXJlcyBhbiBlbnZpcm9ubWVudCDigJQgdGhpcyBwaXBlbGluZSBwcm9kdWNlcyBubyBET1JBIGRlcGxveSBzaWduYWwuJyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHcgb2YgcmVwb3J0Lndhcm5pbmdzID8/IFtdKSBwcmludFdhcm5pbmcoYFske3cuc3RhZ2V9XSAke3cubWVzc2FnZX1gKTtcblxuICBjb25zb2xlLmxvZygnJyk7XG4gIGlmICghcmVwb3J0LnZhbGlkKSB7XG4gICAgZm9yIChjb25zdCBwcm9ibGVtIG9mIHJlcG9ydC5wcm9ibGVtcyA/PyBbXSkge1xuICAgICAgcHJpbnRFcnJvcihgWyR7cHJvYmxlbS5zdGFnZX1dICR7cHJvYmxlbS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICAvLyBOb24temVybyBleGl0OiBhIGRyeSBydW4gdGhhdCBmb3VuZCByZWFsIHByb2JsZW1zIG11c3QgYmUgUkVELiBQcmludGluZyB0aGVtXG4gICAgLy8gYW5kIHJldHVybmluZyAwIGlzIGhvdyBhIGJyb2tlbiBjb25maWcgcmVhY2hlcyBhIHBpcGVsaW5lLlxuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgUGlwZWxpbmUgY29uZmlndXJhdGlvbiBpcyBub3QgdmFsaWQgKCR7cmVwb3J0LnByb2JsZW1zPy5sZW5ndGggPz8gMH0gcHJvYmxlbShzKSkg4oCUIG5vdGhpbmcgd2FzIGNyZWF0ZWRgLFxuICAgICAgJ3Byb3BzJyxcbiAgICApO1xuICB9XG5cbiAgcHJpbnRTdWNjZXNzKCfinJMgQ29uZmlndXJhdGlvbiBpcyB2YWxpZCAtIG5vIHBpcGVsaW5lIGNyZWF0ZWQgKGRyeSBydW4gbW9kZSknKTtcbiAgY29uc29sZS5sb2coJycpO1xuICBpZiAob3B0aW9ucy5kZXBsb3kpIHtcbiAgICBwcmludEluZm8oJ1dpdGggLS1kZXBsb3ksIHRoZSBwaXBlbGluZSB3b3VsZCBiZSBkZXBsb3llZCB2aWEgQ0RLIGFmdGVyIGNyZWF0aW9uJywge1xuICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIHx8ICcoZGVmYXVsdCknLFxuICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiB8fCAnKGRlZmF1bHQpJyxcbiAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgfSk7XG4gIH1cbiAgcHJpbnRJbmZvKCdUbyBjcmVhdGUgdGhlIHBpcGVsaW5lLCBydW4gdGhlIGNvbW1hbmQgd2l0aG91dCAtLWRyeS1ydW4nKTtcbn1cblxuLyoqIFByaW50IHRoZSBjcmVhdGVkIHBpcGVsaW5lIGFuZCBzYXZlIGl0IHRvIGAuL291dHB1dC9waXBlbGluZS08aWQ+Lmpzb25gLiAqL1xuZnVuY3Rpb24gcmVwb3J0Q3JlYXRlZFBpcGVsaW5lKHBpcGVsaW5lOiBQaXBlbGluZSwgZXhlY3V0aW9uSWQ6IHN0cmluZywgcmVxdWVzdER1cmF0aW9uOiBudW1iZXIsIHN0YXJ0VGltZTogbnVtYmVyKTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCfinJMgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ1BpcGVsaW5lIElEJzogZ3JlZW4oYm9sZChwaXBlbGluZS5pZCkpLFxuICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAnT3JnYW5pemF0aW9uJzogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICdOYW1lJzogcGlwZWxpbmUucGlwZWxpbmVOYW1lIHx8ICcobm90IHNldCknLFxuICAgICdWaXNpYmlsaXR5JzogcGlwZWxpbmUudmlzaWJpbGl0eSB8fCAnb3JnJyxcbiAgICAnRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCA/ICdZZXMnIDogJ05vJyxcbiAgICAnQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgJ1Byb3BlcnRpZXMnOiBwaXBlbGluZS5wcm9wcyA/IGAke09iamVjdC5rZXlzKHBpcGVsaW5lLnByb3BzKS5sZW5ndGh9IGtleXNgIDogJyhub3QgcmV0dXJuZWQpJyxcbiAgfSk7XG5cbiAgaWYgKHBpcGVsaW5lLmNyZWF0ZWRBdCkge1xuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBwcmludEtleVZhbHVlKHsgJ0NyZWF0ZWQgQXQnOiBwaXBlbGluZS5jcmVhdGVkQXQgfSk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50S2V5VmFsdWUoe1xuICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAnUmVxdWVzdCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKHJlcXVlc3REdXJhdGlvbiksXG4gICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dERpciA9ICcuL291dHB1dCc7XG4gIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXREaXIpO1xuICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgYHBpcGVsaW5lLSR7cGlwZWxpbmUuaWR9Lmpzb25gKTtcbiAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlLCBKU09OLnN0cmluZ2lmeShwaXBlbGluZSwgbnVsbCwgMikpO1xuXG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBkZXRhaWxzIHNhdmVkIHRvIGZpbGUnKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ091dHB1dCBGaWxlJzogb3V0cHV0RmlsZSxcbiAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZnMuc3RhdFN5bmMob3V0cHV0RmlsZSkuc2l6ZSksXG4gIH0pO1xufVxuXG4vKipcbiAqIGAtLWRlcGxveWA6IHJ1biB0aGUgc2FtZSBDREsgZGVwbG95ICsgQVJOIHJlZ2lzdHJhdGlvbiBhcyBgcGlwZWxpbmUgZGVwbG95XG4gKiAtLWlkYC4gVGhlIHJlY29yZCBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgYXV0aG9yaXRhdGl2ZTogaWYgdGhlIGRlcGxveSBmYWlscyBpdFxuICogaXMgS0VQVCBhbmQgdGhlIGV4YWN0IHJldHJ5IGlzIHN1cmZhY2VkIHJhdGhlciB0aGFuIHJvbGxlZCBiYWNrIChuZXZlclxuICogZmFsc2UtZ3JlZW4pLlxuICovXG5hc3luYyBmdW5jdGlvbiBkZXBsb3lDcmVhdGVkUGlwZWxpbmUoXG4gIG9wdGlvbnM6IENyZWF0ZVBpcGVsaW5lT3B0aW9ucyxcbiAgcGlwZWxpbmVJZDogc3RyaW5nLFxuICBleGVjdXRpb25JZDogc3RyaW5nLFxuICBkZWJ1ZzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRGVwbG95aW5nIFBpcGVsaW5lJyk7XG4gIHRyeSB7XG4gICAgLy8gRGVwbG95IHRvdWNoZXMgdGhlIEFXUyBTREsgKyB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3M7IHJlbGF4IFRMUyB0aGVcbiAgICAvLyBzYW1lIHdheSBgZGVwbG95YCBkb2VzIChyZWZ1c2VkIGluIHByb2R1Y3Rpb24gYnkgcmVsYXhUbHNGb3JDbGkpLlxuICAgIHJlbGF4VGxzRm9yQ2xpKG9wdGlvbnMudmVyaWZ5U3NsLCBwcmludFdhcm5pbmcpO1xuICAgIC8vIFRoZSBhc3luYyBjbGllbnQgYWRkcyAtLXN0b3JlLXRva2VucyAoU2VjcmV0cyBNYW5hZ2VyKSBzdXBwb3J0IGFuZFxuICAgIC8vIGJhY2tzIEJPVEggdGhlIHByb3BzIGZldGNoIGFuZCB0aGUgcmVnaXN0cnkgY2FsbGJhY2suXG4gICAgY29uc3QgZGVwbG95Q2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgIGNvbnN0IGRlcGxveUNvbmZpZyA9IGRlcGxveUNsaWVudC5nZXRDb25maWcoKSBhcyBQbGF0Zm9ybURlcGxveUNvbmZpZztcbiAgICAvLyBSZS1mZXRjaCB0aGUganVzdC1jcmVhdGVkIHBpcGVsaW5lIHNvIHBsdWdpbnMgYXJlIHJlc29sdmVkIGFuZCB0aGVcbiAgICAvLyByZWdpc3RyeSBob3N0IGlzIGJha2VkIEVYQUNUTFkgYXMgYGRlcGxveSAtLWlkYCBkb2VzIOKAlCBubyBkcmlmdC5cbiAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKGRlcGxveUNsaWVudCwgcGlwZWxpbmVJZCk7XG4gICAgYXdhaXQgcnVuRGVwbG95KHtcbiAgICAgIHBpcGVsaW5lOiBmZXRjaGVkLnBpcGVsaW5lLFxuICAgICAgcHJvcHNXaXRoSWRzOiBmZXRjaGVkLnByb3BzV2l0aElkcyxcbiAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgIGRlYnVnLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAvLyBSZWdpc3RlcmVkIHdpdGggdGhlIGBwaXBlbGluZS1yZWdpc3RlcmAga2V5IHVuZGVyIC0tc3RvcmUtdG9rZW5zIOKAlCB0aGVcbiAgICAgIC8vIHBsYXRmb3JtIGtleSByZWFkcyBwaXBlbGluZXMgYW5kIHBsdWdpbnMgb25seS5cbiAgICAgIHBsYXRmb3JtQ2xpZW50OiBhd2FpdCByZXNvbHZlUmVnaXN0cmF0aW9uQ2xpZW50KHtcbiAgICAgICAgY2xpZW50OiBkZXBsb3lDbGllbnQsXG4gICAgICAgIHN0b3JlVG9rZW5zOiBvcHRpb25zLnN0b3JlVG9rZW5zLFxuICAgICAgICBvcmdJZDogZmV0Y2hlZC5waXBlbGluZS5vcmdJZCxcbiAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgfSksXG4gICAgICBwbGF0Zm9ybVBpcGVsaW5lVXJsOiBkZXBsb3lDb25maWcuYXBpLnBpcGVsaW5lVXJsLFxuICAgICAgcGxhdGZvcm1CYXNlVXJsOiBkZXBsb3lDb25maWcuYXBpLmJhc2VVcmwsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGRlcGxveUVycm9yKSB7XG4gICAgcHJpbnRFcnJvcignUGlwZWxpbmUgd2FzIGNyZWF0ZWQgYnV0IHRoZSBkZXBsb3kgZmFpbGVkJywge1xuICAgICAgcGlwZWxpbmVJZCxcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZGVwbG95RXJyb3IpLFxuICAgICAgcmV0cnk6IGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIGRlcGxveSAtLWlkICR7cGlwZWxpbmVJZH1gLFxuICAgIH0pO1xuICAgIC8vIFJlLXRocm93IHNvIHRoZSBwcm9jZXNzIGV4aXRzIG5vbi16ZXJvLiBUaGUgcmVjb3JkIGlzIGludGVudGlvbmFsbHlcbiAgICAvLyByZXRhaW5lZCDigJQgcmUtcnVuIHRoZSBkZXBsb3kgd2l0aCB0aGUgY29tbWFuZCBhYm92ZS5cbiAgICB0aHJvdyBkZXBsb3lFcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGNyZWF0ZS1waXBlbGluZWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBBY2NlcHRzIGEgcGlwZWxpbmUgcHJvcGVydGllcyBKU09OIGZpbGUsIHZhbGlkYXRlcyBpdCwgcmVzb2x2ZXNcbiAqIHByb2plY3Qvb3JnYW5pemF0aW9uIGZyb20gQ0xJIGZsYWdzIG9yIHRoZSBwcm9wcyBmaWxlLCBhbmRcbiAqIGNyZWF0ZXMgdGhlIHBpcGVsaW5lIHZpYSB0aGUgcGxhdGZvcm0gQVBJLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGlwZWxpbmUocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhcbiAgICB3aXRoUmVnaW9uT3B0aW9uKFxuICAgICAgd2l0aFByb2ZpbGVPcHRpb24ocHJvZ3JhbVxuICAgICAgICAuY29tbWFuZCgnY3JlYXRlJylcbiAgICAgICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuZXcgcGlwZWxpbmUg4oCUIGFuZCBvcHRpb25hbGx5IGRlcGxveSBpdCB3aXRoIC0tZGVwbG95JylcbiAgICAgICAgLnJlcXVpcmVkT3B0aW9uKCctZiwgLS1maWxlIDxmaWxlPicsICdQYXRoIHRvIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlJylcbiAgICAgICAgLm9wdGlvbignLXAsIC0tcHJvamVjdCA8cHJvamVjdD4nLCAnUHJvamVjdCBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAgICAgLm9wdGlvbignLW8sIC0tb3JnYW5pemF0aW9uIDxvcmdhbml6YXRpb24+JywgJ09yZ2FuaXphdGlvbiBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAgICAgLm9wdGlvbignLW4sIC0tbmFtZSA8bmFtZT4nLCAnUGlwZWxpbmUgbmFtZScpXG4gICAgICAgIC5vcHRpb24oJy1hLCAtLXZpc2liaWxpdHkgPHJ1bmc+JywgJ1NoYXJpbmcgcnVuZyAocHJpdmF0ZXxvcmd8cHVibGljKS4gUGlwZWxpbmVzIGRlZmF1bHQgdG8gb3JnIOKAlCBhIHRlYW0gYXNzZXQgaXMgdmlzaWJsZSB0byB0aGUgdGVhbS4nLCAnb3JnJylcbiAgICAgICAgLy8gTm8gYC0tZGVmYXVsdGA6IGBwaXBlbGluZV9wcm9qZWN0X29yZ191bmlxdWVgIGFsbG93cyBvbmUgcGlwZWxpbmUgcGVyXG4gICAgICAgIC8vIChwcm9qZWN0LCBvcmdhbml6YXRpb24sIG9yZyksIHNvIHRoZSBjcmVhdGVkIHJvdyBJUyBpdHMgc2xvdCdzIGRlZmF1bHQuXG4gICAgICAgIC5vcHRpb24oJy0tYWN0aXZlJywgJ1NldCBwaXBlbGluZSBhcyBhY3RpdmUnLCB0cnVlKVxuICAgICAgICAub3B0aW9uKCctLW5vLWFjdGl2ZScsICdDcmVhdGUgdGhlIHBpcGVsaW5lIGFzIGluYWN0aXZlJylcbiAgICAgICAgLm9wdGlvbignLS11cHNlcnQnLCAnT3ZlcndyaXRlIGFuIGV4aXN0aW5nIHBpcGVsaW5lIGZvciB0aGUgc2FtZSBwcm9qZWN0L29yZ2FuaXphdGlvbiAob3RoZXJ3aXNlIGEgdGFrZW4gc2xvdCBpcyBhIDQwOSknLCBmYWxzZSlcbiAgICAgICAgLy8gLS1kZXBsb3k6IGFmdGVyIGNyZWF0aW5nIHRoZSByZWNvcmQsIHJ1biB0aGUgc2FtZSBDREsgZGVwbG95ICsgQVJOXG4gICAgICAgIC8vIHJlZ2lzdHJhdGlvbiBhcyBgcGlwZWxpbmUgZGVwbG95IC0taWRgIChzaGFyZWQgcnVuRGVwbG95KS4gVGhlIGZsYWdzXG4gICAgICAgIC8vIGJlbG93IGFwcGx5IG9ubHkgd2l0aCAtLWRlcGxveS5cbiAgICAgICAgLm9wdGlvbignLS1kZXBsb3knLCAnRGVwbG95IHRoZSBwaXBlbGluZSB3aXRoIEFXUyBDREsgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpbmcgaXQnLCBmYWxzZSlcbiAgICAgICAgLm9wdGlvbignLS1yZXF1aXJlLWFwcHJvdmFsIDxhcHByb3ZhbD4nLCAnRGVwbG95IGFwcHJvdmFsIGxldmVsOiBuZXZlcnxhbnktY2hhbmdlfGJyb2FkZW5pbmcuIERlZmF1bHRzIHRvIGBicm9hZGVuaW5nYDogYSBkZXBsb3kgdGhhdCB3aWRlbnMgSUFNIHN0b3BzIGZvciBjb25maXJtYXRpb24uIFBhc3MgYG5ldmVyYCBmb3IgdW5hdHRlbmRlZCBydW5zLiAod2l0aCAtLWRlcGxveSknLCAnYnJvYWRlbmluZycpXG4gICAgICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5ICh3aXRoIC0tZGVwbG95KScsICdjZGsub3V0JylcbiAgICAgICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnRGVwbG95IGF1dGggdmlhIEFXUyBTZWNyZXRzIE1hbmFnZXIgdG9rZW4gKHdpdGggLS1kZXBsb3k7IHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FKScsIGZhbHNlKSksXG4gICAgKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tZHJ5LXJ1bicsICdWYWxpZGF0ZSBpbnB1dHMgd2l0aG91dCBjcmVhdGluZyBwaXBlbGluZScsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IENyZWF0ZVBpcGVsaW5lT3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ0NyZWF0ZSBQaXBlbGluZScsICdDcmVhdGluZyBQaXBlbGluZScpO1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgdHJ5IHtcblxuICAgICAgICAvLyBEaXNwbGF5IHBhcmFtZXRlcnNcbiAgICAgICAgcHJpbnRJbmZvKCdDb25maWd1cmF0aW9uJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdQcm9qZWN0Jzogb3B0aW9ucy5wcm9qZWN0IHx8ICcoZnJvbSBwcm9wcyBmaWxlKScsXG4gICAgICAgICAgJ09yZ2FuaXphdGlvbic6IG9wdGlvbnMub3JnYW5pemF0aW9uIHx8ICcoZnJvbSBwcm9wcyBmaWxlKScsXG4gICAgICAgICAgJ05hbWUnOiBvcHRpb25zLm5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ1Zpc2liaWxpdHknOiBvcHRpb25zLnZpc2liaWxpdHksXG4gICAgICAgICAgJ0FjdGl2ZSc6IG9wdGlvbnMuYWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdPdmVyd3JpdGUgRXhpc3RpbmcnOiBvcHRpb25zLnVwc2VydCA/ICdZZXMgKC0tdXBzZXJ0KScgOiAnTm8nLFxuICAgICAgICAgICdEZXBsb3kgQWZ0ZXIgQ3JlYXRlJzogb3B0aW9ucy5kZXBsb3kgPyBgWWVzIChwcm9maWxlOiAke29wdGlvbnMucHJvZmlsZSB8fCAnZGVmYXVsdCd9KWAgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzIEZpbGUnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ1NTTCBWZXJpZmljYXRpb24nOiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnLFxuICAgICAgICAgICdEcnkgUnVuJzogb3B0aW9ucy5kcnlSdW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zdCBwcm9wcyA9IHJlYWRQcm9wc0ZpbGUob3B0aW9ucy5maWxlKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGJ1aWxkQ3JlYXRlUGF5bG9hZChvcHRpb25zLCBwcm9wcyk7XG5cbiAgICAgICAgLy8gQ3JlYXRlZCBiZWZvcmUgdGhlIGRyeS1ydW4gYnJhbmNoOiAtLWRyeS1ydW4gbm93IGNhbGxzIHRoZSBzZXJ2ZXIsIHNvIGl0XG4gICAgICAgIC8vIG5lZWRzIHRoZSBzYW1lIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHRoZSBjcmVhdGUgZG9lcy5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY2xpZW50LmdldENvbmZpZygpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGF3YWl0IHJ1bkRyeVJ1bihvcHRpb25zLCBwYXlsb2FkLCBjbGllbnQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBwaXBlbGluZVxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignQ3JlYXRpbmcgUGlwZWxpbmUnKTtcblxuICAgICAgICBjb25zdCBzcGlubmVyID0gb3JhKCdDcmVhdGluZyBwaXBlbGluZS4uLicpLnN0YXJ0KCk7XG4gICAgICAgIGxldCByYXdSZXNwb25zZTogUGlwZWxpbmVSZXNwb25zZTtcbiAgICAgICAgbGV0IHJlcXVlc3REdXJhdGlvbjogbnVtYmVyO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgcmF3UmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxQaXBlbGluZVJlc3BvbnNlPihcbiAgICAgICAgICAgIG9wdGlvbnMudXBzZXJ0ID8gYCR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0/dXBzZXJ0PXRydWVgIDogY29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZChvcHRpb25zLnVwc2VydCA/ICdQaXBlbGluZSBjcmVhdGVkIG9yIHVwZGF0ZWQnIDogJ1BpcGVsaW5lIGNyZWF0ZWQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBzcGlubmVyLmZhaWwoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgIC8vIEEgNDA5IG1lYW5zIHRoZSAocHJvamVjdCwgb3JnYW5pemF0aW9uKSBzbG90IGlzIHRha2VuLiBUaGUgc2VydmVyJ3NcbiAgICAgICAgICAvLyBtZXNzYWdlIG5hbWVzIGA/dXBzZXJ0PXRydWVgOyB0cmFuc2xhdGUgaXQgdG8gdGhlIGZsYWcgYSBDTEkgdXNlciBoYXMuXG4gICAgICAgICAgaWYgKGNvbmZsaWN0U3RhdHVzKGVycm9yKSAmJiAhb3B0aW9ucy51cHNlcnQpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZygnVGhhdCBwcm9qZWN0L29yZ2FuaXphdGlvbiBhbHJlYWR5IGhhcyBhIHBpcGVsaW5lLiBSZS1ydW4gd2l0aCAtLXVwc2VydCB0byBvdmVyd3JpdGUgaXQsIG9yIGVkaXQgdGhlIGV4aXN0aW5nIG9uZS4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmF3UmVzcG9uc2UsICdwaXBlbGluZScsICdpZCcpO1xuXG4gICAgICAgIGlmICghcGlwZWxpbmU/LmlkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmF3UmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyYXdSZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCAtIG5vIHZhbGlkIHBpcGVsaW5lIGRhdGEgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcG9ydENyZWF0ZWRQaXBlbGluZShwaXBlbGluZSwgZXhlY3V0aW9uSWQsIHJlcXVlc3REdXJhdGlvbiwgc3RhcnRUaW1lKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5kZXBsb3kpIHtcbiAgICAgICAgICBhd2FpdCBkZXBsb3lDcmVhdGVkUGlwZWxpbmUob3B0aW9ucywgcGlwZWxpbmUuaWQsIGV4ZWN1dGlvbklkLCBwcm9ncmFtLm9wdHMoKS5kZWJ1Zyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOZXh0IHN0ZXBzXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdOZXh0IFN0ZXBzJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGRpbSgnWW91IGNhbiBub3c6JykpO1xuICAgICAgICBpZiAoIW9wdGlvbnMuZGVwbG95KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gRGVwbG95OiAke2JvbGQoYGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gVmlldzogJHtib2xkKGBnZXQtcGlwZWxpbmUgLS1pZCAke3BpcGVsaW5lLmlkfWApfWApO1xuICAgICAgICBjb25zb2xlLmxvZyhgICAke2N5YW4oJ+KAoicpfSBBUEk6ICR7Y29uZmlnLmFwaS5iYXNlVXJsfSR7Y29uZmlnLmFwaS5waXBlbGluZVVybH0vJHtwaXBlbGluZS5pZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLXBpcGVsaW5lJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgcHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBvcHRpb25zLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xufSJdfQ==
474
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvY3JlYXRlLXBpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25ILE9BQU8sRUFBK0YsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hNLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUs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QUFDO1lBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtvQkFDbEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDdkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEZpbGVTaXplLCBGSUxFX1NJWkVfTElNSVRTLCBkZWZhdWx0UGlwZWxpbmVOYW1lIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSwgdHlwZSBQaXBlbGluZVJlc3BvbnNlLCB0eXBlIENyZWF0ZVBpcGVsaW5lUmVxdWVzdCwgdHlwZSBQbGF0Zm9ybURlcGxveUNvbmZpZyB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMsIHdpdGhTc2xPcHRpb25zLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgcnVuRGVwbG95IH0gZnJvbSAnLi4vdXRpbHMvZGVwbG95LXJ1bm5lci5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgZW5zdXJlT3V0cHV0RGlyZWN0b3J5LCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZmV0Y2hQaXBlbGluZVByb3BzIH0gZnJvbSAnLi4vdXRpbHMvcGlwZWxpbmUtY29uZmlnLmpzJztcbmltcG9ydCB7IHJlc29sdmVSZWdpc3RyYXRpb25DbGllbnQgfSBmcm9tICcuLi91dGlscy9yZWdpc3RyYXRpb24tY2xpZW50LmpzJztcbmltcG9ydCB7IGV4dHJhY3RTaW5nbGVSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLXV0aWxzLmpzJztcbmltcG9ydCB7IHJlbGF4VGxzRm9yQ2xpIH0gZnJvbSAnLi4vdXRpbHMvdGxzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0sIGdyZWVuIH0gPSBwaWNvO1xuXG4vKiogUGFyc2VkIGBwaXBlbGluZSBjcmVhdGVgIGZsYWdzLiAqL1xuaW50ZXJmYWNlIENyZWF0ZVBpcGVsaW5lT3B0aW9ucyB7XG4gIGZpbGU6IHN0cmluZztcbiAgcHJvamVjdD86IHN0cmluZztcbiAgb3JnYW5pemF0aW9uPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICB2aXNpYmlsaXR5PzogQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0Wyd2aXNpYmlsaXR5J107XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIHVwc2VydD86IGJvb2xlYW47XG4gIGRlcGxveT86IGJvb2xlYW47XG4gIHJlcXVpcmVBcHByb3ZhbDogc3RyaW5nO1xuICBvdXRwdXQ6IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbiAgcmVnaW9uPzogc3RyaW5nO1xuICB2ZXJpZnlTc2w/OiBib29sZWFuO1xuICBkcnlSdW4/OiBib29sZWFuO1xuICBzdG9yZVRva2Vucz86IGJvb2xlYW47XG59XG5cbi8qKiBWYWxpZGF0ZSB0aGUgcHJvcHMgZmlsZSAoZXhpc3RzLCBzaXplIGNhcCkgYW5kIHBhcnNlIGl0IGFzIGEgSlNPTiBvYmplY3QuICovXG5mdW5jdGlvbiByZWFkUHJvcHNGaWxlKGZpbGU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ0ZpbGUgVmFsaWRhdGlvbicpO1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBub3QgZm91bmQnLCB7IHBhdGg6IGZpbGUgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gLCAnZmlsZScpO1xuICB9XG5cbiAgY29uc3QgZmlsZUV4dCA9IHBhdGguZXh0bmFtZShmaWxlKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoZmlsZUV4dCAhPT0gJy5qc29uJykge1xuICAgIHByaW50V2FybmluZygnRmlsZSBleHRlbnNpb24gaXMgbm90IC5qc29uJywgeyBleHRlbnNpb246IGZpbGVFeHQgfSk7XG4gIH1cblxuICBjb25zdCBmaWxlU3RhdHMgPSBmcy5zdGF0U3luYyhmaWxlKTtcbiAgaWYgKGZpbGVTdGF0cy5zaXplID4gRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUykge1xuICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBpcyB0b28gbGFyZ2UnLCB7XG4gICAgICBzaXplOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICBsaW1pdDogZm9ybWF0RmlsZVNpemUoRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUyksXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBmaWxlIGV4Y2VlZHMgc2l6ZSBsaW1pdCcsICdmaWxlJyk7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoJ0ZpbGUgdmFsaWRhdGlvbiBwYXNzZWQnKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ0ZpbGUgUGF0aCc6IGZpbGUsXG4gICAgJ0ZpbGUgU2l6ZSc6IGZvcm1hdEZpbGVTaXplKGZpbGVTdGF0cy5zaXplKSxcbiAgICAnRXh0ZW5zaW9uJzogZmlsZUV4dCxcbiAgfSk7XG5cbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludEluZm8oJ1JlYWRpbmcgcGlwZWxpbmUgcHJvcGVydGllcy4uLicpO1xuXG4gIGxldCBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHRyeSB7XG4gICAgcHJvcHMgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlLCAndXRmLTgnKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcignSW52YWxpZCBKU09OIGluIHByb3BlcnRpZXMgZmlsZScsIHtcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBmaWxlIG11c3QgY29udGFpbiB2YWxpZCBKU09OJywgJ2ZpbGUnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0JywgJ2ZpbGUnKTtcbiAgfVxuXG4gIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG4gIHByaW50U3VjY2VzcygnUHJvcGVydGllcyBwYXJzZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIHByaW50S2V5VmFsdWUoe1xuICAgICdUb3RhbCBLZXlzJzogcHJvcENvdW50LnRvU3RyaW5nKCksXG4gICAgJ1NhbXBsZSBLZXlzJzogT2JqZWN0LmtleXMocHJvcHMpLnNsaWNlKDAsIDUpLmpvaW4oJywgJykgKyAocHJvcENvdW50ID4gNSA/ICcuLi4nIDogJycpLFxuICB9KTtcbiAgaWYgKHByb3BDb3VudCA9PT0gMCkge1xuICAgIHByaW50V2FybmluZygnUHJvcGVydGllcyBvYmplY3QgaXMgZW1wdHkgLSBwaXBlbGluZSB3aWxsIGhhdmUgbm8gY29uZmlndXJhdGlvbicpO1xuICB9XG4gIHJldHVybiBwcm9wcztcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgY3JlYXRlIHJlcXVlc3QuIFByb2plY3QgJiBvcmdhbml6YXRpb24gcHJlZmVyIHRoZSBDTEkgZmxhZ3MgYW5kXG4gKiBmYWxsIGJhY2sgdG8gdmFsdWVzIGVtYmVkZGVkIGluIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICovXG5mdW5jdGlvbiBidWlsZENyZWF0ZVBheWxvYWQob3B0aW9uczogQ3JlYXRlUGlwZWxpbmVPcHRpb25zLCBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBDcmVhdGVQaXBlbGluZVJlcXVlc3Qge1xuICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvamVjdCBpcyByZXF1aXJlZCcsICdwcm9qZWN0Jyk7XG4gIH1cbiAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICB9KTtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnLCAnb3JnYW5pemF0aW9uJyk7XG4gIH1cblxuICAvLyBSZXNvbHZlIHBpcGVsaW5lTmFtZSB3aXRoIHRoZSBzaGFyZWQgZGVmYXVsdCAobWlycm9ycyBwaXBlbGluZS1jb3JlJ3NcbiAgLy8gcGlwZWxpbmUtY29uZmlndXJhdGlvbi50cykgc28gY3JlYXRlICsgcmVnaXN0cnkgKyBDREsgYWxsIGFncmVlLlxuICBjb25zdCByZXNvbHZlZFBpcGVsaW5lTmFtZSA9IG9wdGlvbnMubmFtZVxuICAgID8/IChwcm9wcy5waXBlbGluZU5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKVxuICAgID8/IGRlZmF1bHRQaXBlbGluZU5hbWUocmVzb2x2ZWRPcmdhbml6YXRpb24sIHJlc29sdmVkUHJvamVjdCk7XG5cbiAgY29uc3QgcGF5bG9hZDogQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0ID0ge1xuICAgIHByb2plY3Q6IHJlc29sdmVkUHJvamVjdCxcbiAgICBvcmdhbml6YXRpb246IHJlc29sdmVkT3JnYW5pemF0aW9uLFxuICAgIHBpcGVsaW5lTmFtZTogcmVzb2x2ZWRQaXBlbGluZU5hbWUsXG4gICAgcHJvcHMsXG4gIH07XG4gIGlmIChvcHRpb25zLnZpc2liaWxpdHkpIHBheWxvYWQudmlzaWJpbGl0eSA9IG9wdGlvbnMudmlzaWJpbGl0eTtcbiAgaWYgKG9wdGlvbnMuYWN0aXZlICE9PSB1bmRlZmluZWQpIHBheWxvYWQuaXNBY3RpdmUgPSBvcHRpb25zLmFjdGl2ZTtcbiAgcmV0dXJuIHBheWxvYWQ7XG59XG5cbi8qKiBXaGV0aGVyIGFuIEFQSSBlcnJvciBpcyB0aGUgNDA5IGEgdGFrZW4gKHByb2plY3QsIG9yZ2FuaXphdGlvbikgc2xvdCByZXR1cm5zLiAqL1xuZnVuY3Rpb24gY29uZmxpY3RTdGF0dXMoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgY29uc3QgcmVzID0gKGVycm9yIGFzIHsgcmVzcG9uc2U/OiB7IHN0YXR1cz86IG51bWJlciB9IH0gfCBudWxsKT8ucmVzcG9uc2U7XG4gIHJldHVybiByZXM/LnN0YXR1cyA9PT0gNDA5O1xufVxuXG4vKiogT25lIHJlYXNvbiBhIGNyZWF0ZSB3b3VsZCBiZSByZWZ1c2VkLCBhcyBgUE9TVCAvcGlwZWxpbmVzL3ZhbGlkYXRlYCByZXBvcnRzIGl0LiAqL1xuaW50ZXJmYWNlIFZhbGlkYXRpb25Qcm9ibGVtIHtcbiAgc3RhZ2U6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKiogVGhlIHN0YWdlL3BsdWdpbi9JQU0gcHJvamVjdGlvbiB0aGUgc2VydmVyIGRlcml2ZXMgZnJvbSB0aGUgY29uZmlnLiAqL1xuaW50ZXJmYWNlIFN0cnVjdHVyZVByZXZpZXcge1xuICBzdGFnZXM6IEFycmF5PHtcbiAgICBzdGFnZU5hbWU6IHN0cmluZztcbiAgICBjb2RlUGlwZWxpbmVTdGFnZTogc3RyaW5nO1xuICAgIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAgIHN0ZXBzOiBBcnJheTx7IHBsdWdpbjogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmc7IHBvc2l0aW9uOiBzdHJpbmcgfT47XG4gIH0+O1xuICBpYW06IHsgcm9sZVR5cGU6IHN0cmluZzsgY2FsbGVyU3VwcGxpZWQ6IGJvb2xlYW47IHJvbGVSZWY/OiBzdHJpbmcgfTtcbiAgcGx1Z2luczogc3RyaW5nW107XG59XG5cbi8qKiBXaGF0IGFuIHVwZGF0ZSB3b3VsZCBjaGFuZ2UsIHJlbGF0aXZlIHRvIHRoZSBzdG9yZWQgY29uZmlndXJhdGlvbi4gKi9cbmludGVyZmFjZSBTdHJ1Y3R1cmVEaWZmIHtcbiAgc3RhZ2VzQWRkZWQ6IHN0cmluZ1tdO1xuICBzdGFnZXNSZW1vdmVkOiBzdHJpbmdbXTtcbiAgc3RhZ2VzQ2hhbmdlZDogc3RyaW5nW107XG4gIHBsdWdpbnNBZGRlZDogc3RyaW5nW107XG4gIHBsdWdpbnNSZW1vdmVkOiBzdHJpbmdbXTtcbiAgaWFtQ2hhbmdlZD86IHsgZnJvbTogeyByb2xlVHlwZTogc3RyaW5nIH07IHRvOiB7IHJvbGVUeXBlOiBzdHJpbmcgfSB9O1xuICB1bmNoYW5nZWQ6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgdmFsaWRhdGUgZW5kcG9pbnQncyByZXBvcnQuICovXG5pbnRlcmZhY2UgVmFsaWRhdGVSZXBvcnQge1xuICB2YWxpZDogYm9vbGVhbjtcbiAgcHJvYmxlbXM6IFZhbGlkYXRpb25Qcm9ibGVtW107XG4gIHdhcm5pbmdzOiBWYWxpZGF0aW9uUHJvYmxlbVtdO1xuICBub3JtYWxpemVkPzogeyBwcm9qZWN0OiBzdHJpbmc7IG9yZ2FuaXphdGlvbjogc3RyaW5nOyBwaXBlbGluZU5hbWU6IHN0cmluZzsgdmlzaWJpbGl0eTogc3RyaW5nIH07XG4gIHNsb3Q/OiB7IHRha2VuOiBib29sZWFuOyBwaXBlbGluZUlkPzogc3RyaW5nOyBwaXBlbGluZU5hbWU/OiBzdHJpbmc7IGRlbGV0ZWQ/OiBib29sZWFuIH07XG4gIGRlcGxveXM/OiBBcnJheTx7IHN0YWdlOiBzdHJpbmc7IGVudmlyb25tZW50OiBzdHJpbmc7IGluZmVycmVkOiBib29sZWFuIH0+O1xuICBkZXBsb3lzVGFnPzogc3RyaW5nO1xuICBxdW90YT86IHsgdXNlZDogbnVtYmVyOyBsaW1pdDogbnVtYmVyOyByZW1haW5pbmc6IG51bWJlcjsgdW5saW1pdGVkOiBib29sZWFuOyByZXNldEF0OiBzdHJpbmcgfTtcbiAgcHJldmlldz86IFN0cnVjdHVyZVByZXZpZXc7XG4gIGRpZmY/OiBTdHJ1Y3R1cmVEaWZmO1xufVxuXG4vKipcbiAqIFByaW50IHRoZSBzdHJ1Y3R1cmUgdGhlIGNvbmZpZyB3aWxsIGJ1aWxkLiBUaGlzIGlzIHRoZSBwYXJ0IGEgcmV2aWV3ZXIgc2lnbnNcbiAqIG9mZiBvbiDigJQgc3RhZ2Ugb3JkZXIsIHRoZSBwbHVnaW4gVkVSU0lPTlMgZWFjaCBzdGVwIHJlc29sdmVzIHRvLCB3aGljaCBzdGFnZXNcbiAqIGRlcGxveSB3aGVyZSwgYW5kIHdoZXRoZXIgdGhlIHBpcGVsaW5lIGFzc3VtZXMgYSBjYWxsZXItc3VwcGxpZWQgSUFNIHJvbGUuXG4gKi9cbmZ1bmN0aW9uIHByaW50UHJldmlldyhwcmV2aWV3OiBTdHJ1Y3R1cmVQcmV2aWV3KTogdm9pZCB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIC0gV2hhdCBUaGlzIFdvdWxkIEJ1aWxkJyk7XG4gIGlmIChwcmV2aWV3LnN0YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICBwcmludFdhcm5pbmcoJ05vIHN0YWdlcyBkZWNsYXJlZCDigJQgdGhpcyBwaXBlbGluZSB3b3VsZCBidWlsZCBub3RoaW5nLicpO1xuICB9XG4gIGZvciAoY29uc3QgW2ksIHN0YWdlXSBvZiBwcmV2aWV3LnN0YWdlcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBkZXBsb3kgPSBzdGFnZS5lbnZpcm9ubWVudCA/IGAgJHtjeWFuKGDihpIgZGVwbG95cyB0byAke3N0YWdlLmVudmlyb25tZW50fWApfWAgOiAnJztcbiAgICBjb25zb2xlLmxvZyhgICAke2JvbGQoYCR7aSArIDF9LiAke3N0YWdlLnN0YWdlTmFtZX1gKX0gJHtkaW0oYCgke3N0YWdlLmNvZGVQaXBlbGluZVN0YWdlfSlgKX0ke2RlcGxveX1gKTtcbiAgICBpZiAoc3RhZ2Uuc3RlcHMubGVuZ3RoID09PSAwKSBjb25zb2xlLmxvZyhgICAgICAke2RpbSgnKG5vIHN0ZXBzKScpfWApO1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGFnZS5zdGVwcykge1xuICAgICAgLy8gYGxhdGVzdGAgaXMgY2FsbGVkIG91dCBiZWNhdXNlIGFuIHVucGlubmVkIHBsdWdpbiByZXNvbHZlcyB0byB3aGF0ZXZlciBpc1xuICAgICAgLy8gbmV3ZXN0IGF0IHN5bnRoIOKAlCB0aGUgZGlmZmVyZW5jZSBhIHJldmlld2VyIG1vc3QgbmVlZHMgdG8gc2VlLlxuICAgICAgY29uc3QgdmVyc2lvbiA9IHN0ZXAudmVyc2lvbiA9PT0gJ2xhdGVzdCcgPyBgJHtzdGVwLnZlcnNpb259ICh1bnBpbm5lZClgIDogc3RlcC52ZXJzaW9uO1xuICAgICAgY29uc29sZS5sb2coYCAgICAgJHtkaW0oJ+KAoicpfSAke3N0ZXAucGx1Z2lufUAke3ZlcnNpb259JHtzdGVwLnBvc2l0aW9uID09PSAncG9zdCcgPyBkaW0oJyBbcG9zdF0nKSA6ICcnfWApO1xuICAgIH1cbiAgfVxuICBwcmludEluZm8oJ0lBTScsIHByZXZpZXcuaWFtLmNhbGxlclN1cHBsaWVkXG4gICAgPyB7IHJvbGU6IGAke3ByZXZpZXcuaWFtLnJvbGVUeXBlfSDigJQgY2FsbGVyLXN1cHBsaWVkJHtwcmV2aWV3LmlhbS5yb2xlUmVmID8gYDogJHtwcmV2aWV3LmlhbS5yb2xlUmVmfWAgOiAnJ31gIH1cbiAgICA6IHsgcm9sZTogYCR7cHJldmlldy5pYW0ucm9sZVR5cGV9IChwbGF0Zm9ybS1tYW5hZ2VkKWAgfSk7XG4gIGlmIChwcmV2aWV3LmlhbS5jYWxsZXJTdXBwbGllZCkge1xuICAgIHByaW50V2FybmluZygnVGhpcyBwaXBlbGluZSBhc3N1bWVzIGEgcm9sZSB0aGUgY29uZmlnIG5hbWVzLCBzbyBpdHMgcGVybWlzc2lvbnMgYXJlIHdoYXRldmVyIHRoYXQgcm9sZSBhbHJlYWR5IGhvbGRzLicpO1xuICB9XG59XG5cbi8qKiBQcmludCB3aGF0IGFuIHVwZGF0ZSB3b3VsZCBDSEFOR0UsIGZvciBhIHNsb3QgdGhhdCBpcyBhbHJlYWR5IG9jY3VwaWVkLiAqL1xuZnVuY3Rpb24gcHJpbnREaWZmKGRpZmY6IFN0cnVjdHVyZURpZmYpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBXaGF0IFdvdWxkIENoYW5nZScpO1xuICBpZiAoZGlmZi51bmNoYW5nZWQpIHtcbiAgICBwcmludEluZm8oJ05vIHN0cnVjdHVyYWwgY2hhbmdlIOKAlCBzdGFnZXMsIHBsdWdpbnMgYW5kIElBTSBhcmUgaWRlbnRpY2FsIHRvIHRoZSBzdG9yZWQgY29uZmlndXJhdGlvbicpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCByb3dzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGlmIChkaWZmLnN0YWdlc0FkZGVkLmxlbmd0aCkgcm93c1snU3RhZ2VzIGFkZGVkJ10gPSBkaWZmLnN0YWdlc0FkZGVkLmpvaW4oJywgJyk7XG4gIGlmIChkaWZmLnN0YWdlc1JlbW92ZWQubGVuZ3RoKSByb3dzWydTdGFnZXMgcmVtb3ZlZCddID0gZGlmZi5zdGFnZXNSZW1vdmVkLmpvaW4oJywgJyk7XG4gIGlmIChkaWZmLnN0YWdlc0NoYW5nZWQubGVuZ3RoKSByb3dzWydTdGFnZXMgY2hhbmdlZCddID0gZGlmZi5zdGFnZXNDaGFuZ2VkLmpvaW4oJywgJyk7XG4gIGlmIChkaWZmLnBsdWdpbnNBZGRlZC5sZW5ndGgpIHJvd3NbJ1BsdWdpbnMgYWRkZWQnXSA9IGRpZmYucGx1Z2luc0FkZGVkLmpvaW4oJywgJyk7XG4gIGlmIChkaWZmLnBsdWdpbnNSZW1vdmVkLmxlbmd0aCkgcm93c1snUGx1Z2lucyByZW1vdmVkJ10gPSBkaWZmLnBsdWdpbnNSZW1vdmVkLmpvaW4oJywgJyk7XG4gIHByaW50S2V5VmFsdWUocm93cyk7XG4gIGlmIChkaWZmLmlhbUNoYW5nZWQpIHtcbiAgICBwcmludFdhcm5pbmcoYElBTSByb2xlIGNoYW5nZXM6ICR7ZGlmZi5pYW1DaGFuZ2VkLmZyb20ucm9sZVR5cGV9IOKGkiAke2RpZmYuaWFtQ2hhbmdlZC50by5yb2xlVHlwZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIGAtLWRyeS1ydW5gOiBhc2sgdGhlIHNlcnZlciB0byBydW4gZXZlcnkgY3JlYXRlLXRpbWUgY2hlY2sgYW5kIHByaW50IHRoZSByZXN1bHQuXG4gKlxuICogVGhpcyB1c2VkIHRvIHByaW50IHRoZSByZXF1ZXN0IGJvZHkgYW5kIGEgZ3JlZW4gXCLinJMgVmFsaWRhdGlvbiBjb21wbGV0ZVwiLCBoYXZpbmdcbiAqIHZhbGlkYXRlZCBub3RoaW5nIHNlcnZlci1zaWRlIOKAlCBzbyBhIGNvbmZpZyB0aGF0IGEgY29tcGxpYW5jZSBydWxlLCBhIHBsdWdpblxuICogY29udHJhY3Qgb3IgYW4gZXhoYXVzdGVkIHF1b3RhIHdvdWxkIHJlamVjdCByZXBvcnRlZCBzdWNjZXNzLiBOb3RoaW5nIGFib3V0IGFcbiAqIHBheWxvYWQgZWNobyBpcyBhIHZhbGlkYXRpb24uXG4gKlxuICogVEhST1dTIHdoZW4gdGhlIGNvbmZpZyBpcyBpbnZhbGlkLCBzbyBgLS1kcnktcnVuYCBleGl0cyBub24temVybyBhbmQgYSBDSSBzdGVwXG4gKiB0aGF0IHJ1bnMgaXQgZmFpbHMgaW5zdGVhZCBvZiBwYXNzaW5nIG9uIGEgcHJpbnRlZCBlcnJvci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuRHJ5UnVuKFxuICBvcHRpb25zOiBDcmVhdGVQaXBlbGluZU9wdGlvbnMsXG4gIHBheWxvYWQ6IENyZWF0ZVBpcGVsaW5lUmVxdWVzdCxcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdEcnkgUnVuIC0gUmVxdWVzdCBQcmV2aWV3Jyk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQsIG51bGwsIDIpKTtcblxuICBjb25zb2xlLmxvZygnJyk7XG4gIHByaW50U2VjdGlvbignRHJ5IFJ1biAtIFNlcnZlciBWYWxpZGF0aW9uJyk7XG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ1ZhbGlkYXRpbmcgYWdhaW5zdCB0ZW1wbGF0ZXMsIHBsdWdpbiBjb250cmFjdHMsIGNvbXBsaWFuY2UgYW5kIHF1b3RhLi4uJykuc3RhcnQoKTtcbiAgbGV0IHJlcG9ydDogVmFsaWRhdGVSZXBvcnQ7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LnBvc3Q8eyBkYXRhPzogVmFsaWRhdGVSZXBvcnQgfSAmIFZhbGlkYXRlUmVwb3J0PihcbiAgICAgIGAke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9L3ZhbGlkYXRlYCwgcGF5bG9hZCxcbiAgICApO1xuICAgIHJlcG9ydCA9IChyZXMuZGF0YSA/PyByZXMpIGFzIFZhbGlkYXRlUmVwb3J0O1xuICAgIHNwaW5uZXIuc3RvcCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbCgnVmFsaWRhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkJyk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBpZiAocmVwb3J0Lm5vcm1hbGl6ZWQpIHtcbiAgICBwcmludEluZm8oJ05vcm1hbGl6ZWQgaWRlbnRpdHknLCB7XG4gICAgICBwcm9qZWN0OiByZXBvcnQubm9ybWFsaXplZC5wcm9qZWN0LFxuICAgICAgb3JnYW5pemF0aW9uOiByZXBvcnQubm9ybWFsaXplZC5vcmdhbml6YXRpb24sXG4gICAgICBwaXBlbGluZU5hbWU6IHJlcG9ydC5ub3JtYWxpemVkLnBpcGVsaW5lTmFtZSxcbiAgICAgIHZpc2liaWxpdHk6IHJlcG9ydC5ub3JtYWxpemVkLnZpc2liaWxpdHksXG4gICAgfSk7XG4gIH1cbiAgaWYgKHJlcG9ydC5xdW90YSkge1xuICAgIHByaW50SW5mbygnUGlwZWxpbmUgcXVvdGEnLCByZXBvcnQucXVvdGEudW5saW1pdGVkXG4gICAgICA/IHsgbGltaXQ6ICd1bmxpbWl0ZWQnIH1cbiAgICAgIDogeyB1c2VkOiByZXBvcnQucXVvdGEudXNlZCwgbGltaXQ6IHJlcG9ydC5xdW90YS5saW1pdCwgcmVtYWluaW5nOiByZXBvcnQucXVvdGEucmVtYWluaW5nIH0pO1xuICB9XG4gIC8vIEEgdGFrZW4gc2xvdCBpcyB0aGUgb25lIGRyeS1ydW4gZmluZGluZyB0aGF0IGlzIE5PVCBhIGNvbmZpZyBwcm9ibGVtOiB0aGVcbiAgLy8gY29uZmlnIGlzIHZhbGlkIGFuZCB0aGUgY3JlYXRlIHdvdWxkIHN0aWxsIDQwOSwgYmVjYXVzZSBvbmUgcGlwZWxpbmUgcGVyXG4gIC8vIChwcm9qZWN0LCBvcmdhbml6YXRpb24pIGlzIGEgdW5pcXVlbmVzcyBydWxlLCBub3QgYSB2YWxpZGF0aW9uIHJ1bGUuIFNheWluZyBzb1xuICAvLyBoZXJlIGlzIHRoZSB3aG9sZSBwb2ludCBvZiBhc2tpbmcgdGhlIHNlcnZlciDigJQgYSBDSSBkcnktcnVuIHRoYXQgcGFzc2VzIGFuZFxuICAvLyB0aGVuIDQwOXMgb24gdGhlIHJlYWwgY3JlYXRlIGhhcyB0b2xkIG5vYm9keSBhbnl0aGluZy4gVGhlIHNlcnZlcidzIG1lc3NhZ2VcbiAgLy8gbmFtZXMgYD91cHNlcnQ9dHJ1ZWA7IGEgQ0xJIHVzZXIgaGFzIGAtLXVwc2VydGAuXG4gIGlmIChyZXBvcnQuc2xvdD8udGFrZW4pIHtcbiAgICBjb25zdCBleGlzdGluZyA9IHJlcG9ydC5zbG90LnBpcGVsaW5lTmFtZSA/PyByZXBvcnQuc2xvdC5waXBlbGluZUlkID8/ICdhbiBleGlzdGluZyBwaXBlbGluZSc7XG4gICAgaWYgKG9wdGlvbnMudXBzZXJ0KSB7XG4gICAgICBwcmludEluZm8oYFRoaXMgcHJvamVjdC9vcmdhbml6YXRpb24gYWxyZWFkeSBoYXMgJHtleGlzdGluZ30g4oCUIC0tdXBzZXJ0IHdvdWxkIG92ZXJ3cml0ZSBpdGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgIGBUaGlzIHByb2plY3Qvb3JnYW5pemF0aW9uIGFscmVhZHkgaGFzICR7ZXhpc3Rpbmd9LCBzbyBjcmVhdGluZyB3b3VsZCBmYWlsIHdpdGggYSA0MDkuIGBcbiAgICAgICAgKyAnUmUtcnVuIHdpdGggLS11cHNlcnQgdG8gb3ZlcndyaXRlIGl0LCBvciBlZGl0IHRoZSBleGlzdGluZyBvbmUuJyxcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHJlcG9ydC5zbG90Py5kZWxldGVkKSB7XG4gICAgcHJpbnRJbmZvKCdBIGRlbGV0ZWQgcGlwZWxpbmUgaG9sZHMgdGhpcyBwcm9qZWN0L29yZ2FuaXphdGlvbiDigJQgY3JlYXRpbmcgd2lsbCByZXVzZSB0aGUgc2xvdCcpO1xuICB9XG4gIGlmIChyZXBvcnQucHJldmlldykgcHJpbnRQcmV2aWV3KHJlcG9ydC5wcmV2aWV3KTtcbiAgaWYgKHJlcG9ydC5kaWZmKSBwcmludERpZmYocmVwb3J0LmRpZmYpO1xuXG4gIGlmIChyZXBvcnQuZGVwbG95cyAmJiByZXBvcnQuZGVwbG95cy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRJbmZvKCdET1JBIGRlcGxveSBhdHRyaWJ1dGlvbicsIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIHJlcG9ydC5kZXBsb3lzLm1hcCgoZCkgPT4gW2Quc3RhZ2UsIGAke2QuZW52aXJvbm1lbnR9JHtkLmluZmVycmVkID8gJyAoaW5mZXJyZWQpJyA6ICcnfWBdKSxcbiAgICApKTtcbiAgfSBlbHNlIHtcbiAgICBwcmludFdhcm5pbmcoJ05vIHN0YWdlIGRlY2xhcmVzIGFuIGVudmlyb25tZW50IOKAlCB0aGlzIHBpcGVsaW5lIHByb2R1Y2VzIG5vIERPUkEgZGVwbG95IHNpZ25hbC4nKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgdyBvZiByZXBvcnQud2FybmluZ3MgPz8gW10pIHByaW50V2FybmluZyhgWyR7dy5zdGFnZX1dICR7dy5tZXNzYWdlfWApO1xuXG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgaWYgKCFyZXBvcnQudmFsaWQpIHtcbiAgICBmb3IgKGNvbnN0IHByb2JsZW0gb2YgcmVwb3J0LnByb2JsZW1zID8/IFtdKSB7XG4gICAgICBwcmludEVycm9yKGBbJHtwcm9ibGVtLnN0YWdlfV0gJHtwcm9ibGVtLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIC8vIE5vbi16ZXJvIGV4aXQ6IGEgZHJ5IHJ1biB0aGF0IGZvdW5kIHJlYWwgcHJvYmxlbXMgbXVzdCBiZSBSRUQuIFByaW50aW5nIHRoZW1cbiAgICAvLyBhbmQgcmV0dXJuaW5nIDAgaXMgaG93IGEgYnJva2VuIGNvbmZpZyByZWFjaGVzIGEgcGlwZWxpbmUuXG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgIGBQaXBlbGluZSBjb25maWd1cmF0aW9uIGlzIG5vdCB2YWxpZCAoJHtyZXBvcnQucHJvYmxlbXM/Lmxlbmd0aCA/PyAwfSBwcm9ibGVtKHMpKSDigJQgbm90aGluZyB3YXMgY3JlYXRlZGAsXG4gICAgICAncHJvcHMnLFxuICAgICk7XG4gIH1cblxuICBwcmludFN1Y2Nlc3MoJ+KckyBDb25maWd1cmF0aW9uIGlzIHZhbGlkIC0gbm8gcGlwZWxpbmUgY3JlYXRlZCAoZHJ5IHJ1biBtb2RlKScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGlmIChvcHRpb25zLmRlcGxveSkge1xuICAgIHByaW50SW5mbygnV2l0aCAtLWRlcGxveSwgdGhlIHBpcGVsaW5lIHdvdWxkIGJlIGRlcGxveWVkIHZpYSBDREsgYWZ0ZXIgY3JlYXRpb24nLCB7XG4gICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfHwgJyhkZWZhdWx0KScsXG4gICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uIHx8ICcoZGVmYXVsdCknLFxuICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICB9KTtcbiAgfVxuICBwcmludEluZm8oJ1RvIGNyZWF0ZSB0aGUgcGlwZWxpbmUsIHJ1biB0aGUgY29tbWFuZCB3aXRob3V0IC0tZHJ5LXJ1bicpO1xufVxuXG4vKiogUHJpbnQgdGhlIGNyZWF0ZWQgcGlwZWxpbmUgYW5kIHNhdmUgaXQgdG8gYC4vb3V0cHV0L3BpcGVsaW5lLTxpZD4uanNvbmAuICovXG5mdW5jdGlvbiByZXBvcnRDcmVhdGVkUGlwZWxpbmUocGlwZWxpbmU6IFBpcGVsaW5lLCBleGVjdXRpb25JZDogc3RyaW5nLCByZXF1ZXN0RHVyYXRpb246IG51bWJlciwgc3RhcnRUaW1lOiBudW1iZXIpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ+KckyBQaXBlbGluZSBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgJ1Zpc2liaWxpdHknOiBwaXBlbGluZS52aXNpYmlsaXR5IHx8ICdvcmcnLFxuICAgICdEZWZhdWx0JzogcGlwZWxpbmUuaXNEZWZhdWx0ID8gJ1llcycgOiAnTm8nLFxuICAgICdBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAnUHJvcGVydGllcyc6IHBpcGVsaW5lLnByb3BzID8gYCR7T2JqZWN0LmtleXMocGlwZWxpbmUucHJvcHMpLmxlbmd0aH0ga2V5c2AgOiAnKG5vdCByZXR1cm5lZCknLFxuICB9KTtcblxuICBpZiAocGlwZWxpbmUuY3JlYXRlZEF0KSB7XG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50S2V5VmFsdWUoeyAnQ3JlYXRlZCBBdCc6IHBpcGVsaW5lLmNyZWF0ZWRBdCB9KTtcbiAgfVxuXG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICdSZXF1ZXN0IER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24ocmVxdWVzdER1cmF0aW9uKSxcbiAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgfSk7XG5cbiAgY29uc3Qgb3V0cHV0RGlyID0gJy4vb3V0cHV0JztcbiAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dERpcik7XG4gIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgcGlwZWxpbmUtJHtwaXBlbGluZS5pZH0uanNvbmApO1xuICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG5cbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGRldGFpbHMgc2F2ZWQgdG8gZmlsZScpO1xuICBwcmludEtleVZhbHVlKHtcbiAgICAnT3V0cHV0IEZpbGUnOiBvdXRwdXRGaWxlLFxuICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmcy5zdGF0U3luYyhvdXRwdXRGaWxlKS5zaXplKSxcbiAgfSk7XG59XG5cbi8qKlxuICogYC0tZGVwbG95YDogcnVuIHRoZSBzYW1lIENESyBkZXBsb3kgKyBBUk4gcmVnaXN0cmF0aW9uIGFzIGBwaXBlbGluZSBkZXBsb3lcbiAqIC0taWRgLiBUaGUgcmVjb3JkIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBhdXRob3JpdGF0aXZlOiBpZiB0aGUgZGVwbG95IGZhaWxzIGl0XG4gKiBpcyBLRVBUIGFuZCB0aGUgZXhhY3QgcmV0cnkgaXMgc3VyZmFjZWQgcmF0aGVyIHRoYW4gcm9sbGVkIGJhY2sgKG5ldmVyXG4gKiBmYWxzZS1ncmVlbikuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlcGxveUNyZWF0ZWRQaXBlbGluZShcbiAgb3B0aW9uczogQ3JlYXRlUGlwZWxpbmVPcHRpb25zLFxuICBwaXBlbGluZUlkOiBzdHJpbmcsXG4gIGV4ZWN1dGlvbklkOiBzdHJpbmcsXG4gIGRlYnVnOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgcHJpbnRTZWN0aW9uKCdEZXBsb3lpbmcgUGlwZWxpbmUnKTtcbiAgdHJ5IHtcbiAgICAvLyBEZXBsb3kgdG91Y2hlcyB0aGUgQVdTIFNESyArIHRoZSBDREsgc3ludGggc3VicHJvY2VzczsgcmVsYXggVExTIHRoZVxuICAgIC8vIHNhbWUgd2F5IGBkZXBsb3lgIGRvZXMgKHJlZnVzZWQgaW4gcHJvZHVjdGlvbiBieSByZWxheFRsc0ZvckNsaSkuXG4gICAgcmVsYXhUbHNGb3JDbGkob3B0aW9ucy52ZXJpZnlTc2wsIHByaW50V2FybmluZyk7XG4gICAgLy8gVGhlIGFzeW5jIGNsaWVudCBhZGRzIC0tc3RvcmUtdG9rZW5zIChTZWNyZXRzIE1hbmFnZXIpIHN1cHBvcnQgYW5kXG4gICAgLy8gYmFja3MgQk9USCB0aGUgcHJvcHMgZmV0Y2ggYW5kIHRoZSByZWdpc3RyeSBjYWxsYmFjay5cbiAgICBjb25zdCBkZXBsb3lDbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgY29uc3QgZGVwbG95Q29uZmlnID0gZGVwbG95Q2xpZW50LmdldENvbmZpZygpIGFzIFBsYXRmb3JtRGVwbG95Q29uZmlnO1xuICAgIC8vIFJlLWZldGNoIHRoZSBqdXN0LWNyZWF0ZWQgcGlwZWxpbmUgc28gcGx1Z2lucyBhcmUgcmVzb2x2ZWQgYW5kIHRoZVxuICAgIC8vIHJlZ2lzdHJ5IGhvc3QgaXMgYmFrZWQgRVhBQ1RMWSBhcyBgZGVwbG95IC0taWRgIGRvZXMg4oCUIG5vIGRyaWZ0LlxuICAgIGNvbnN0IGZldGNoZWQgPSBhd2FpdCBmZXRjaFBpcGVsaW5lUHJvcHMoZGVwbG95Q2xpZW50LCBwaXBlbGluZUlkKTtcbiAgICBhd2FpdCBydW5EZXBsb3koe1xuICAgICAgcGlwZWxpbmU6IGZldGNoZWQucGlwZWxpbmUsXG4gICAgICBwcm9wc1dpdGhJZHM6IGZldGNoZWQucHJvcHNXaXRoSWRzLFxuICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICBvdXRwdXQ6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgZGVidWcsXG4gICAgICBleGVjdXRpb25JZCxcbiAgICAgIC8vIFJlZ2lzdGVyZWQgd2l0aCB0aGUgYHBpcGVsaW5lLXJlZ2lzdGVyYCBrZXkgdW5kZXIgLS1zdG9yZS10b2tlbnMg4oCUIHRoZVxuICAgICAgLy8gcGxhdGZvcm0ga2V5IHJlYWRzIHBpcGVsaW5lcyBhbmQgcGx1Z2lucyBvbmx5LlxuICAgICAgcGxhdGZvcm1DbGllbnQ6IGF3YWl0IHJlc29sdmVSZWdpc3RyYXRpb25DbGllbnQoe1xuICAgICAgICBjbGllbnQ6IGRlcGxveUNsaWVudCxcbiAgICAgICAgc3RvcmVUb2tlbnM6IG9wdGlvbnMuc3RvcmVUb2tlbnMsXG4gICAgICAgIG9yZ0lkOiBmZXRjaGVkLnBpcGVsaW5lLm9yZ0lkLFxuICAgICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uLFxuICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICB9KSxcbiAgICAgIHBsYXRmb3JtUGlwZWxpbmVVcmw6IGRlcGxveUNvbmZpZy5hcGkucGlwZWxpbmVVcmwsXG4gICAgICBwbGF0Zm9ybUJhc2VVcmw6IGRlcGxveUNvbmZpZy5hcGkuYmFzZVVybCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZGVwbG95RXJyb3IpIHtcbiAgICBwcmludEVycm9yKCdQaXBlbGluZSB3YXMgY3JlYXRlZCBidXQgdGhlIGRlcGxveSBmYWlsZWQnLCB7XG4gICAgICBwaXBlbGluZUlkLFxuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShkZXBsb3lFcnJvciksXG4gICAgICByZXRyeTogYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgZGVwbG95IC0taWQgJHtwaXBlbGluZUlkfWAsXG4gICAgfSk7XG4gICAgLy8gUmUtdGhyb3cgc28gdGhlIHByb2Nlc3MgZXhpdHMgbm9uLXplcm8uIFRoZSByZWNvcmQgaXMgaW50ZW50aW9uYWxseVxuICAgIC8vIHJldGFpbmVkIOKAlCByZS1ydW4gdGhlIGRlcGxveSB3aXRoIHRoZSBjb21tYW5kIGFib3ZlLlxuICAgIHRocm93IGRlcGxveUVycm9yO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgY3JlYXRlLXBpcGVsaW5lYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEFjY2VwdHMgYSBwaXBlbGluZSBwcm9wZXJ0aWVzIEpTT04gZmlsZSwgdmFsaWRhdGVzIGl0LCByZXNvbHZlc1xuICogcHJvamVjdC9vcmdhbml6YXRpb24gZnJvbSBDTEkgZmxhZ3Mgb3IgdGhlIHByb3BzIGZpbGUsIGFuZFxuICogY3JlYXRlcyB0aGUgcGlwZWxpbmUgdmlhIHRoZSBwbGF0Zm9ybSBBUEkuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQaXBlbGluZShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKFxuICAgIHdpdGhSZWdpb25PcHRpb24oXG4gICAgICB3aXRoUHJvZmlsZU9wdGlvbihwcm9ncmFtXG4gICAgICAgIC5jb21tYW5kKCdjcmVhdGUnKVxuICAgICAgICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5ldyBwaXBlbGluZSDigJQgYW5kIG9wdGlvbmFsbHkgZGVwbG95IGl0IHdpdGggLS1kZXBsb3knKVxuICAgICAgICAucmVxdWlyZWRPcHRpb24oJy1mLCAtLWZpbGUgPGZpbGU+JywgJ1BhdGggdG8gcGlwZWxpbmUgcHJvcGVydGllcyBKU09OIGZpbGUnKVxuICAgICAgICAub3B0aW9uKCctcCwgLS1wcm9qZWN0IDxwcm9qZWN0PicsICdQcm9qZWN0IG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgICAgICAub3B0aW9uKCctbywgLS1vcmdhbml6YXRpb24gPG9yZ2FuaXphdGlvbj4nLCAnT3JnYW5pemF0aW9uIG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgICAgICAub3B0aW9uKCctbiwgLS1uYW1lIDxuYW1lPicsICdQaXBlbGluZSBuYW1lJylcbiAgICAgICAgLm9wdGlvbignLWEsIC0tdmlzaWJpbGl0eSA8cnVuZz4nLCAnU2hhcmluZyBydW5nIChwcml2YXRlfG9yZ3xwdWJsaWMpLiBQaXBlbGluZXMgZGVmYXVsdCB0byBvcmcg4oCUIGEgdGVhbSBhc3NldCBpcyB2aXNpYmxlIHRvIHRoZSB0ZWFtLicsICdvcmcnKVxuICAgICAgICAvLyBObyBgLS1kZWZhdWx0YDogYHBpcGVsaW5lX3Byb2plY3Rfb3JnX3VuaXF1ZWAgYWxsb3dzIG9uZSBwaXBlbGluZSBwZXJcbiAgICAgICAgLy8gKHByb2plY3QsIG9yZ2FuaXphdGlvbiwgb3JnKSwgc28gdGhlIGNyZWF0ZWQgcm93IElTIGl0cyBzbG90J3MgZGVmYXVsdC5cbiAgICAgICAgLm9wdGlvbignLS1hY3RpdmUnLCAnU2V0IHBpcGVsaW5lIGFzIGFjdGl2ZScsIHRydWUpXG4gICAgICAgIC5vcHRpb24oJy0tbm8tYWN0aXZlJywgJ0NyZWF0ZSB0aGUgcGlwZWxpbmUgYXMgaW5hY3RpdmUnKVxuICAgICAgICAub3B0aW9uKCctLXVwc2VydCcsICdPdmVyd3JpdGUgYW4gZXhpc3RpbmcgcGlwZWxpbmUgZm9yIHRoZSBzYW1lIHByb2plY3Qvb3JnYW5pemF0aW9uIChvdGhlcndpc2UgYSB0YWtlbiBzbG90IGlzIGEgNDA5KScsIGZhbHNlKVxuICAgICAgICAvLyAtLWRlcGxveTogYWZ0ZXIgY3JlYXRpbmcgdGhlIHJlY29yZCwgcnVuIHRoZSBzYW1lIENESyBkZXBsb3kgKyBBUk5cbiAgICAgICAgLy8gcmVnaXN0cmF0aW9uIGFzIGBwaXBlbGluZSBkZXBsb3kgLS1pZGAgKHNoYXJlZCBydW5EZXBsb3kpLiBUaGUgZmxhZ3NcbiAgICAgICAgLy8gYmVsb3cgYXBwbHkgb25seSB3aXRoIC0tZGVwbG95LlxuICAgICAgICAub3B0aW9uKCctLWRlcGxveScsICdEZXBsb3kgdGhlIHBpcGVsaW5lIHdpdGggQVdTIENESyBpbW1lZGlhdGVseSBhZnRlciBjcmVhdGluZyBpdCcsIGZhbHNlKVxuICAgICAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdEZXBsb3kgYXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZy4gRGVmYXVsdHMgdG8gYGJyb2FkZW5pbmdgOiBhIGRlcGxveSB0aGF0IHdpZGVucyBJQU0gc3RvcHMgZm9yIGNvbmZpcm1hdGlvbi4gUGFzcyBgbmV2ZXJgIGZvciB1bmF0dGVuZGVkIHJ1bnMuICh3aXRoIC0tZGVwbG95KScsICdicm9hZGVuaW5nJylcbiAgICAgICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnkgKHdpdGggLS1kZXBsb3kpJywgJ2Nkay5vdXQnKVxuICAgICAgICAub3B0aW9uKCctLXN0b3JlLXRva2VucycsICdEZXBsb3kgYXV0aCB2aWEgQVdTIFNlY3JldHMgTWFuYWdlciB0b2tlbiAod2l0aCAtLWRlcGxveTsgcmVxdWlyZXMgUExBVEZPUk1fU0VDUkVUX05BTUUpJywgZmFsc2UpKSxcbiAgICApLFxuICApXG4gICAgLm9wdGlvbignLS1kcnktcnVuJywgJ1ZhbGlkYXRlIGlucHV0cyB3aXRob3V0IGNyZWF0aW5nIHBpcGVsaW5lJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9uczogQ3JlYXRlUGlwZWxpbmVPcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnVmlzaWJpbGl0eSc6IG9wdGlvbnMudmlzaWJpbGl0eSxcbiAgICAgICAgICAnQWN0aXZlJzogb3B0aW9ucy5hY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ092ZXJ3cml0ZSBFeGlzdGluZyc6IG9wdGlvbnMudXBzZXJ0ID8gJ1llcyAoLS11cHNlcnQpJyA6ICdObycsXG4gICAgICAgICAgJ0RlcGxveSBBZnRlciBDcmVhdGUnOiBvcHRpb25zLmRlcGxveSA/IGBZZXMgKHByb2ZpbGU6ICR7b3B0aW9ucy5wcm9maWxlIHx8ICdkZWZhdWx0J30pYCA6ICdObycsXG4gICAgICAgICAgJ1Byb3BlcnRpZXMgRmlsZSc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnU1NMIFZlcmlmaWNhdGlvbic6IG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSA/ICdEaXNhYmxlZCcgOiAnRW5hYmxlZCcsXG4gICAgICAgICAgJ0RyeSBSdW4nOiBvcHRpb25zLmRyeVJ1biA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIGNvbnN0IHByb3BzID0gcmVhZFByb3BzRmlsZShvcHRpb25zLmZpbGUpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYnVpbGRDcmVhdGVQYXlsb2FkKG9wdGlvbnMsIHByb3BzKTtcblxuICAgICAgICAvLyBDcmVhdGVkIGJlZm9yZSB0aGUgZHJ5LXJ1biBicmFuY2g6IC0tZHJ5LXJ1biBub3cgY2FsbHMgdGhlIHNlcnZlciwgc28gaXRcbiAgICAgICAgLy8gbmVlZHMgdGhlIHNhbWUgYXV0aGVudGljYXRlZCBjbGllbnQgdGhlIGNyZWF0ZSBkb2VzLlxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICAgICAgYXdhaXQgcnVuRHJ5UnVuKG9wdGlvbnMsIHBheWxvYWQsIGNsaWVudCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIHBpcGVsaW5lXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGluZyBQaXBlbGluZScpO1xuXG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0NyZWF0aW5nIHBpcGVsaW5lLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJhd1Jlc3BvbnNlOiBQaXBlbGluZVJlc3BvbnNlO1xuICAgICAgICBsZXQgcmVxdWVzdER1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICByYXdSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgb3B0aW9ucy51cHNlcnQgPyBgJHtjb25maWcuYXBpLnBpcGVsaW5lVXJsfT91cHNlcnQ9dHJ1ZWAgOiBjb25maWcuYXBpLnBpcGVsaW5lVXJsLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlcXVlc3REdXJhdGlvbiA9IERhdGUubm93KCkgLSByZXF1ZXN0U3RhcnQ7XG4gICAgICAgICAgc3Bpbm5lci5zdWNjZWVkKG9wdGlvbnMudXBzZXJ0ID8gJ1BpcGVsaW5lIGNyZWF0ZWQgb3IgdXBkYXRlZCcgOiAnUGlwZWxpbmUgY3JlYXRlZCcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXIuZmFpbCgnUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgLy8gQSA0MDkgbWVhbnMgdGhlIChwcm9qZWN0LCBvcmdhbml6YXRpb24pIHNsb3QgaXMgdGFrZW4uIFRoZSBzZXJ2ZXInc1xuICAgICAgICAgIC8vIG1lc3NhZ2UgbmFtZXMgYD91cHNlcnQ9dHJ1ZWA7IHRyYW5zbGF0ZSBpdCB0byB0aGUgZmxhZyBhIENMSSB1c2VyIGhhcy5cbiAgICAgICAgICBpZiAoY29uZmxpY3RTdGF0dXMoZXJyb3IpICYmICFvcHRpb25zLnVwc2VydCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKCdUaGF0IHByb2plY3Qvb3JnYW5pemF0aW9uIGFscmVhZHkgaGFzIGEgcGlwZWxpbmUuIFJlLXJ1biB3aXRoIC0tdXBzZXJ0IHRvIG92ZXJ3cml0ZSBpdCwgb3IgZWRpdCB0aGUgZXhpc3Rpbmcgb25lLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBpcGVsaW5lID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyYXdSZXNwb25zZSwgJ3BpcGVsaW5lJywgJ2lkJyk7XG5cbiAgICAgICAgaWYgKCFwaXBlbGluZT8uaWQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIHBpcGVsaW5lIHJlc3BvbnNlJywge1xuICAgICAgICAgICAgcmVzcG9uc2VLZXlzOiByYXdSZXNwb25zZSA/IE9iamVjdC5rZXlzKHJhd1Jlc3BvbnNlKSA6ICcobnVsbCknLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIC0gbm8gdmFsaWQgcGlwZWxpbmUgZGF0YSByZWNlaXZlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVwb3J0Q3JlYXRlZFBpcGVsaW5lKHBpcGVsaW5lLCBleGVjdXRpb25JZCwgcmVxdWVzdER1cmF0aW9uLCBzdGFydFRpbWUpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmRlcGxveSkge1xuICAgICAgICAgIGF3YWl0IGRlcGxveUNyZWF0ZWRQaXBlbGluZShvcHRpb25zLCBwaXBlbGluZS5pZCwgZXhlY3V0aW9uSWQsIHByb2dyYW0ub3B0cygpLmRlYnVnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5leHQgc3RlcHNcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ05leHQgU3RlcHMnKTtcbiAgICAgICAgY29uc29sZS5sb2coZGltKCdZb3UgY2FuIG5vdzonKSk7XG4gICAgICAgIGlmICghb3B0aW9ucy5kZXBsb3kpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2N5YW4oJ+KAoicpfSBEZXBsb3k6ICR7Ym9sZChgZGVwbG95IC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgICAke2N5YW4oJ+KAoicpfSBWaWV3OiAke2JvbGQoYGdldC1waXBlbGluZSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IEFQSTogJHtjb25maWcuYXBpLmJhc2VVcmx9JHtjb25maWcuYXBpLnBpcGVsaW5lVXJsfS8ke3BpcGVsaW5lLmlkfWApO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdjcmVhdGUtcGlwZWxpbmUnLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwcm9qZWN0OiBvcHRpb25zLnByb2plY3QsXG4gICAgICAgICAgICBvcmdhbml6YXRpb246IG9wdGlvbnMub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICAgIGRyeVJ1bjogb3B0aW9ucy5kcnlSdW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59Il19
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgK7C"}
1
+ {"version":3,"file":"deploy.d.ts","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgK7C"}
@@ -172,4 +172,4 @@ export function deploy(program) {
172
172
  }
173
173
  });
174
174
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUE0QyxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxPQUFnQjtJQUNyQyxjQUFjLENBQ1os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Z0JBQ1gscUVBQXFFO2dCQUNyRSx3RUFBd0U7Z0JBQ3hFLGNBQWMsRUFBRSxjQUFjLElBQUksTUFBTSx5QkFBeUIsQ0FBQztvQkFDaEUsTUFBTSxFQUFFLGNBQWM7b0JBQ3RCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDaEMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO29CQUNyQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07b0JBQ3RCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztpQkFDekIsQ0FBQztnQkFDRixtQkFBbUIsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQ3BELGVBQWUsRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLE9BQU87YUFDN0MsQ0FBQyxDQUFDO1lBQ0gsdUVBQXVFO1lBQ3ZFLHFEQUFxRDtZQUNyRCx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLFdBQVc7b0JBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO29CQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7aUJBQzdCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgTG9va3VwV2FybmluZyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyB0eXBlIFBpcGVsaW5lLCB0eXBlIFBsYXRmb3JtRGVwbG95Q29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgYXVkaXRMb2cgfSBmcm9tICcuLi91dGlscy9hdWRpdC1sb2cuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24sIHdpdGhTc2xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBydW5EZXBsb3kgfSBmcm9tICcuLi91dGlscy9kZXBsb3ktcnVubmVyLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBmZXRjaFBpcGVsaW5lUHJvcHMsIHByaW50UmVzb2x2ZWRPckV4aXQgfSBmcm9tICcuLi91dGlscy9waXBlbGluZS1jb25maWcuanMnO1xuaW1wb3J0IHsgcHJpbnRMb29rdXBXYXJuaW5nU3VtbWFyeSB9IGZyb20gJy4uL3V0aWxzL3BsdWdpbi1yZXNvbHZlci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUmVnaXN0cmF0aW9uQ2xpZW50IH0gZnJvbSAnLi4vdXRpbHMvcmVnaXN0cmF0aW9uLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBzZXRQaXBlbGluZUlkIH0gZnJvbSAnLi4vdXRpbHMvcmVxdWVzdC1jb250ZXh0LmpzJztcbmltcG9ydCB7IHJlbGF4VGxzRm9yQ2xpIH0gZnJvbSAnLi4vdXRpbHMvdGxzLmpzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBkZXBsb3lgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogRmV0Y2hlcyBwaXBlbGluZSBwcm9wZXJ0aWVzIGJ5IElEIGZyb20gdGhlIHBsYXRmb3JtIEFQSSwgdGhlblxuICogcnVucyBgY2RrIGRlcGxveWAgdG8gcHJvdmlzaW9uIHRoZSBwaXBlbGluZSBpbmZyYXN0cnVjdHVyZSBpbiBBV1MuXG4gKiBGb3Igc3ludGhlc2lzIG9ubHksIHVzZSBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBzeW50aGAuXG4gKlxuICogUmVxdWlyZXMgc2VydmljZSBjcmVkZW50aWFscyB0byBiZSBwcmUtc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKiBDcmVhdGUgdGhlbSBmaXJzdCB3aXRoOiBgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbmBcbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKFxuICAgIHdpdGhSZWdpb25PcHRpb24oXG4gICAgICB3aXRoUHJvZmlsZU9wdGlvbihwcm9ncmFtXG4gICAgICAgIC5jb21tYW5kKCdkZXBsb3knKVxuICAgICAgICAuZGVzY3JpcHRpb24oJ0RlcGxveSBwaXBlbGluZSBieSBJRCB1c2luZyBBV1MgQ0RLLCBvciAtLWxvY2FsLXNwZWMgdG8gZGVwbG95IGEgbG9jYWwgcGlwZWxpbmUuanNvbiB3aXRob3V0IHRoZSBwbGF0Zm9ybScpXG4gICAgICAgIC5vcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnUGlwZWxpbmUgSUQgKGZldGNoZXMgY29uZmlnIGZyb20gdGhlIHBsYXRmb3JtKScpXG4gICAgICAgIC5vcHRpb24oJy0tbG9jYWwtc3BlYyA8cGF0aD4nLCAnUGF0aCB0byBhIGxvY2FsIHBpcGVsaW5lLmpzb24g4oCUIGRlcGxveXMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBwbGF0Zm9ybSAobm8gYXV0aCwgbm8gY29tcGxpYW5jZSwgbm8gcGx1Z2luIGxvb2t1cCknKSlcbiAgICAgICAgLm9wdGlvbignLS1yZXF1aXJlLWFwcHJvdmFsIDxhcHByb3ZhbD4nLCAnRGVwbG95IGFwcHJvdmFsIGxldmVsOiBuZXZlcnxhbnktY2hhbmdlfGJyb2FkZW5pbmcuIERlZmF1bHRzIHRvIGBicm9hZGVuaW5nYDogYSBkZXBsb3kgdGhhdCB3aWRlbnMgSUFNIHN0b3BzIGZvciBjb25maXJtYXRpb24uIFBhc3MgYG5ldmVyYCBmb3IgdW5hdHRlbmRlZCBydW5zLicsICdicm9hZGVuaW5nJylcbiAgICAgICAgLm9wdGlvbignLS1vdXRwdXQgPGRpcj4nLCAnQ0RLIG91dHB1dCBkaXJlY3RvcnknLCAnY2RrLm91dCcpXG4gICAgICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0F1dGhlbnRpY2F0ZSB1c2luZyB0b2tlbiBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FIGVudiB2YXIpJywgZmFsc2UpLFxuICAgICksXG4gIClcbiAgICAub3B0aW9uKCctLXNob3ctcmVzb2x2ZWQnLCAnUHJpbnQgdGhlIHJlc29sdmVkIHBpcGVsaW5lIGNvbmZpZyAod2l0aCB7eyAuLi4gfX0gdGVtcGxhdGVzIGV4cGFuZGVkKSBhbmQgZXhpdCB3aXRob3V0IGRlcGxveWluZycsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdQaXBlbGluZSBEZXBsb3knKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTXV0dWFsbHkgZXhjbHVzaXZlIGlucHV0IHNvdXJjZXMg4oCUIHZhbGlkYXRlZCBJTlNJREUgdGhlIHRyeSBzbyBmYWlsdXJlcyByb3V0ZVxuICAgICAgICAvLyB0aHJvdWdoIGhhbmRsZUVycm9yIChjb25zaXN0ZW50IGV4aXQgY29kZS9mb3JtYXQpIGxpa2UgZXZlcnkgb3RoZXIgY29tbWFuZC5cbiAgICAgICAgaWYgKCFvcHRpb25zLmlkICYmICFvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIC0taWQgPHBpcGVsaW5lLWlkPiBvciAtLWxvY2FsLXNwZWMgPHBhdGg+IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuaWQgJiYgb3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0taWQgYW5kIC0tbG9jYWwtc3BlYyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdWRpdExvZygnZGVwbG95JywgeyBleGVjdXRpb25JZCwgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuICAgICAgICAvLyBBdHRyaWJ1dGVzIHRoaXMgZGVwbG95J3MgcGxhdGZvcm0gY2FsbHMgdG8gdGhlIHBpcGVsaW5lICh1c2FnZSBsZWRnZXIpLlxuICAgICAgICBzZXRQaXBlbGluZUlkKG9wdGlvbnMuaWQpO1xuXG4gICAgICAgIHByaW50SW5mbygnRGVwbG95bWVudCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgIGF3c1Byb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBvdXRwdXREaXI6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIFByb3BhZ2F0ZSB0byBwcm9jZXNzLmVudiBzbyBDREsgY29uc3RydWN0cyAoTGFtYmRhLCBDb2RlQnVpbGQpIGluaGVyaXQgaXQsXG4gICAgICAgIC8vIGJ1dCByZWZ1c2UgaW4gcHJvZHVjdGlvbiAoc2VlIHJlbGF4VGxzRm9yQ2xpKSDigJQgdGhlIGZsYWcgZGlzYWJsZXMgY2VydFxuICAgICAgICAvLyB2YWxpZGF0aW9uIGZvciBBTEwgb3V0Ym91bmQgVExTLCBpbmNsdWRpbmcgdGhlIEFXUyBTREsuXG4gICAgICAgIHJlbGF4VGxzRm9yQ2xpKG9wdGlvbnMudmVyaWZ5U3NsLCBwcmludFdhcm5pbmcpO1xuXG4gICAgICAgIC8vIExvY2FsLXRvb2wgcHJlcmVxdWlzaXRlcyAoY2RrICsgZXNidWlsZC9wbnBtKSBhcmUgdmVyaWZpZWQgdXAgZnJvbnQgYnlcbiAgICAgICAgLy8gdGhlIENMSSdzIHByZUFjdGlvbiBob29rLCBzbyBieSBoZXJlIHRoZXkncmUgZ3VhcmFudGVlZCBwcmVzZW50LlxuXG4gICAgICAgIGxldCBwaXBlbGluZTogUGlwZWxpbmU7XG4gICAgICAgIGxldCBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBsZXQgcGx1Z2luV2FybmluZ3M6IHJlYWRvbmx5IExvb2t1cFdhcm5pbmdbXSA9IFtdO1xuICAgICAgICAvLyBSZW1vdGUtbW9kZSByZWdpc3RyeS1wb3N0IGhhbmRsZXMg4oCUIG51bGwgaW4gLS1sb2NhbC1zcGVjIG1vZGUuXG4gICAgICAgIGxldCBwbGF0Zm9ybUNsaWVudDogQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmM+PiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IHBsYXRmb3JtQ29uZmlnOiBQbGF0Zm9ybURlcGxveUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5sb2NhbFNwZWMpIHtcbiAgICAgICAgICAvLyAtLWxvY2FsLXNwZWM6IHJlYWQgcGlwZWxpbmUuanNvbiBmcm9tIGRpc2s7IG5vIHBsYXRmb3JtIGNvbnRhY3QuXG4gICAgICAgICAgLy8gQ29tcGxpYW5jZSAvIHF1b3RhIC8gcGx1Z2luLWxvb2t1cCBmZWF0dXJlcyBhbGwgcmVxdWlyZSB0aGUgcGxhdGZvcm0g4oCUXG4gICAgICAgICAgLy8gdGhpcyBtb2RlIGlzIGZvciBhaXItZ2FwcGVkIG9yIHNpbXBsZSBzdGFuZGFsb25lIENESyBkZXBsb3ltZW50cy5cbiAgICAgICAgICBjb25zdCBhYnNQYXRoID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMubG9jYWxTcGVjKTtcbiAgICAgICAgICBwcmludEluZm8oJ0xvYWRpbmcgbG9jYWwgcGlwZWxpbmUgc3BlYycsIHsgcGF0aDogYWJzUGF0aCB9KTtcbiAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYWJzUGF0aCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgc3BlYyBmaWxlIG5vdCBmb3VuZDogJHthYnNQYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByYXcgPSBmcy5yZWFkRmlsZVN5bmMoYWJzUGF0aCwgJ3V0Zi04Jyk7XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpIGFzIFBhcnRpYWw8UGlwZWxpbmU+ICYgeyBwcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH07XG4gICAgICAgICAgaWYgKCFwYXJzZWQucHJvcHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgc3BlYyBmaWxlIGlzIG1pc3NpbmcgcmVxdWlyZWQgJ3Byb3BzJyBmaWVsZDogJHthYnNQYXRofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwaXBlbGluZSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZWQuaWQgPz8gJ2xvY2FsJyxcbiAgICAgICAgICAgIHByb2plY3Q6IHBhcnNlZC5wcm9qZWN0ID8/ICdsb2NhbC1wcm9qZWN0JyxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcGFyc2VkLm9yZ2FuaXphdGlvbiA/PyAnbG9jYWwtb3JnJyxcbiAgICAgICAgICAgIG9yZ0lkOiBwYXJzZWQub3JnSWQsXG4gICAgICAgICAgICBpc0RlZmF1bHQ6IHBhcnNlZC5pc0RlZmF1bHQgPz8gZmFsc2UsXG4gICAgICAgICAgICBpc0FjdGl2ZTogcGFyc2VkLmlzQWN0aXZlID8/IHRydWUsXG4gICAgICAgICAgICBwcm9wczogcGFyc2VkLnByb3BzLFxuICAgICAgICAgIH0gYXMgUGlwZWxpbmU7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdMb2NhbCBzcGVjIGxvYWRlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgU291cmNlOiBhYnNQYXRoLFxuICAgICAgICAgICAgUHJvamVjdDogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgIE9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb3BzV2l0aElkcyA9IHtcbiAgICAgICAgICAgIC4uLnBpcGVsaW5lLnByb3BzLFxuICAgICAgICAgICAgLi4uKHBpcGVsaW5lLm9yZ0lkICYmIHsgb3JnSWQ6IHBpcGVsaW5lLm9yZ0lkIH0pLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZW1vdGUgcGF0aDogZmV0Y2ggY29uZmlnIGZyb20gcGxhdGZvcm0gQVBJLiBmZXRjaFBpcGVsaW5lUHJvcHMgZG9lc1xuICAgICAgICAgIC8vIHRoZSBmZXRjaCArIHBsdWdpbiBwcmUtcmVzb2x1dGlvbiArIHJlZ2lzdHJ5IHB1bGwtaG9zdCBiYWtlIOKAlCBzaGFyZWRcbiAgICAgICAgICAvLyB2ZXJiYXRpbSB3aXRoIGBzeW50aGAgc28gdGhlIHR3byBuZXZlciBkcmlmdC5cbiAgICAgICAgICBwbGF0Zm9ybUNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICBwbGF0Zm9ybUNvbmZpZyA9IHBsYXRmb3JtQ2xpZW50LmdldENvbmZpZygpIGFzIFBsYXRmb3JtRGVwbG95Q29uZmlnO1xuXG4gICAgICAgICAgcHJpbnRJbmZvKCdGZXRjaGluZyBwaXBlbGluZSBjb25maWd1cmF0aW9uJywgeyBpZDogb3B0aW9ucy5pZCB9KTtcbiAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKHBsYXRmb3JtQ2xpZW50LCBvcHRpb25zLmlkKTtcbiAgICAgICAgICBwaXBlbGluZSA9IGZldGNoZWQucGlwZWxpbmU7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0gZmV0Y2hlZC5wcm9wc1dpdGhJZHM7XG4gICAgICAgICAgcGx1Z2luV2FybmluZ3MgPSBmZXRjaGVkLnBsdWdpbldhcm5pbmdzO1xuXG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBjb25maWd1cmF0aW9uIHJldHJpZXZlZCcpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0lEJzogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAnUHJvamVjdCc6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgJ0lzIERlZmF1bHQnOiBwaXBlbGluZS5pc0RlZmF1bHQsXG4gICAgICAgICAgICAnSXMgQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLXNob3ctcmVzb2x2ZWQ6IHByaW50IHJlc29sdmVkIGNvbmZpZyBhbmQgZXhpdCAobm8gQ0RLIGRlcGxveSlcbiAgICAgICAgaWYgKChvcHRpb25zIGFzIHsgc2hvd1Jlc29sdmVkPzogYm9vbGVhbiB9KS5zaG93UmVzb2x2ZWQpIHtcbiAgICAgICAgICBhd2FpdCBwcmludFJlc29sdmVkT3JFeGl0KHByb3BzV2l0aElkcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RlcHMgNeKAkzkgKGVuY29kZSBwcm9wcyDihpIgY2RrIGRlcGxveSDihpIgcmVnaXN0ZXIgQVJOKSBhcmUgc2hhcmVkIHdpdGhcbiAgICAgICAgLy8gYHBpcGVsaW5lIGNyZWF0ZSAtLWRlcGxveWAgdmlhIHJ1bkRlcGxveSBzbyB0aGUgdHdvIG5ldmVyIGRyaWZ0LlxuICAgICAgICBhd2FpdCBydW5EZXBsb3koe1xuICAgICAgICAgIHBpcGVsaW5lLFxuICAgICAgICAgIHByb3BzV2l0aElkcyxcbiAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgIC8vIFRoZSByZWdpc3RyeSBjYWxsYmFjaydzIGNyZWRlbnRpYWw6IHRoZSBvcGVyYXRvcidzIG93biwgb3Ig4oCUIHVuZGVyXG4gICAgICAgICAgLy8gLS1zdG9yZS10b2tlbnMg4oCUIHRoZSBgcGlwZWxpbmUtcmVnaXN0ZXJgIGtleSwgbmV2ZXIgdGhlIHBsYXRmb3JtIG9uZS5cbiAgICAgICAgICBwbGF0Zm9ybUNsaWVudDogcGxhdGZvcm1DbGllbnQgJiYgYXdhaXQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkNsaWVudCh7XG4gICAgICAgICAgICBjbGllbnQ6IHBsYXRmb3JtQ2xpZW50LFxuICAgICAgICAgICAgc3RvcmVUb2tlbnM6IG9wdGlvbnMuc3RvcmVUb2tlbnMsXG4gICAgICAgICAgICBvcmdJZDogcGlwZWxpbmUub3JnSWQsXG4gICAgICAgICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uLFxuICAgICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHBsYXRmb3JtUGlwZWxpbmVVcmw6IHBsYXRmb3JtQ29uZmlnPy5hcGkucGlwZWxpbmVVcmwsXG4gICAgICAgICAgcGxhdGZvcm1CYXNlVXJsOiBwbGF0Zm9ybUNvbmZpZz8uYXBpLmJhc2VVcmwsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBHcmFkZWQgcGx1Z2luIHdhcm5pbmdzIGFyZSByZXBvcnRlZCwgbmV2ZXIgZW5mb3JjZWQg4oCUIHN1bW1hcml6ZSB0aGVtXG4gICAgICAgIC8vIGFmdGVyIHRoZSBDREsgb3V0cHV0IHNvIHRoZXkgYXJlbid0IGxvc3QgYWJvdmUgaXQuXG4gICAgICAgIHByaW50TG9va3VwV2FybmluZ1N1bW1hcnkocGx1Z2luV2FybmluZ3MpO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnZGVwbG95JyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgcGlwZWxpbmVJZDogb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZGVwbG95LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQTRDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsOEJBQThCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckssT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLE9BQWdCO0lBQ3JDLGNBQWMsQ0FDWixnQkFBZ0IsQ0FDZCxpQkFB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Q3JFLHdFQUF3RTtnQkFDeEUsY0FBYyxFQUFFLGNBQWMsSUFBSSxNQUFNLHlCQUF5QixDQUFDO29CQUNoRSxNQUFNLEVBQUUsY0FBYztvQkFDdEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUNoQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7b0JBQ3JCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2lCQUN6QixDQUFDO2dCQUNGLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsV0FBVztnQkFDcEQsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLENBQUMsT0FBTzthQUM3QyxDQUFDLENBQUM7WUFDSCx1RUFBdUU7WUFDdkUscURBQXFEO1lBQ3JELHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTVDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxJQUFJO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsUUFBUTtvQkFDakIsV0FBVztvQkFDWCxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBMb29rdXBXYXJuaW5nIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGxhdGZvcm1EZXBsb3lDb25maWcgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiwgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IHJ1bkRlcGxveSB9IGZyb20gJy4uL3V0aWxzL2RlcGxveS1ydW5uZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGZldGNoUGlwZWxpbmVQcm9wcywgcHJpbnRSZXNvbHZlZE9yRXhpdCB9IGZyb20gJy4uL3V0aWxzL3BpcGVsaW5lLWNvbmZpZy5qcyc7XG5pbXBvcnQgeyBwcmludExvb2t1cFdhcm5pbmdTdW1tYXJ5IH0gZnJvbSAnLi4vdXRpbHMvcGx1Z2luLXJlc29sdmVyLmpzJztcbmltcG9ydCB7IHJlc29sdmVSZWdpc3RyYXRpb25DbGllbnQgfSBmcm9tICcuLi91dGlscy9yZWdpc3RyYXRpb24tY2xpZW50LmpzJztcbmltcG9ydCB7IHNldFBpcGVsaW5lSWQgfSBmcm9tICcuLi91dGlscy9yZXF1ZXN0LWNvbnRleHQuanMnO1xuaW1wb3J0IHsgcmVsYXhUbHNGb3JDbGkgfSBmcm9tICcuLi91dGlscy90bHMuanMnO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGRlcGxveWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBGZXRjaGVzIHBpcGVsaW5lIHByb3BlcnRpZXMgYnkgSUQgZnJvbSB0aGUgcGxhdGZvcm0gQVBJLCB0aGVuXG4gKiBydW5zIGBjZGsgZGVwbG95YCB0byBwcm92aXNpb24gdGhlIHBpcGVsaW5lIGluZnJhc3RydWN0dXJlIGluIEFXUy5cbiAqIEZvciBzeW50aGVzaXMgb25seSwgdXNlIGBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIHN5bnRoYC5cbiAqXG4gKiBSZXF1aXJlcyBzZXJ2aWNlIGNyZWRlbnRpYWxzIHRvIGJlIHByZS1zdG9yZWQgaW4gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqIENyZWF0ZSB0aGVtIGZpcnN0IHdpdGg6IGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuYFxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMoXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihcbiAgICAgIHdpdGhQcm9maWxlT3B0aW9uKHByb2dyYW1cbiAgICAgICAgLmNvbW1hbmQoJ2RlcGxveScpXG4gICAgICAgIC5kZXNjcmlwdGlvbignRGVwbG95IHBpcGVsaW5lIGJ5IElEIHVzaW5nIEFXUyBDREssIG9yIC0tbG9jYWwtc3BlYyB0byBkZXBsb3kgYSBsb2NhbCBwaXBlbGluZS5qc29uIHdpdGhvdXQgdGhlIHBsYXRmb3JtJylcbiAgICAgICAgLm9wdGlvbignLWksIC0taWQgPGlkPicsICdQaXBlbGluZSBJRCAoZmV0Y2hlcyBjb25maWcgZnJvbSB0aGUgcGxhdGZvcm0pJylcbiAgICAgICAgLm9wdGlvbignLS1sb2NhbC1zcGVjIDxwYXRoPicsICdQYXRoIHRvIGEgbG9jYWwgcGlwZWxpbmUuanNvbiDigJQgZGVwbG95cyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHBsYXRmb3JtIChubyBhdXRoLCBubyBjb21wbGlhbmNlLCBubyBwbHVnaW4gbG9va3VwKScpKVxuICAgICAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdEZXBsb3kgYXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZy4gRGVmYXVsdHMgdG8gYGJyb2FkZW5pbmdgOiBhIGRlcGxveSB0aGF0IHdpZGVucyBJQU0gc3RvcHMgZm9yIGNvbmZpcm1hdGlvbi4gUGFzcyBgbmV2ZXJgIGZvciB1bmF0dGVuZGVkIHJ1bnMuJywgJ2Jyb2FkZW5pbmcnKVxuICAgICAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeScsICdjZGsub3V0JylcbiAgICAgICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnQXV0aGVudGljYXRlIHVzaW5nIHRva2VuIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlciAocmVxdWlyZXMgUExBVEZPUk1fU0VDUkVUX05BTUUgZW52IHZhciknLCBmYWxzZSksXG4gICAgKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tc2hvdy1yZXNvbHZlZCcsICdQcmludCB0aGUgcmVzb2x2ZWQgcGlwZWxpbmUgY29uZmlnICh3aXRoIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgZXhwYW5kZWQpIGFuZCBleGl0IHdpdGhvdXQgZGVwbG95aW5nJywgZmFsc2UpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoJ1BpcGVsaW5lIERlcGxveScpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBNdXR1YWxseSBleGNsdXNpdmUgaW5wdXQgc291cmNlcyDigJQgdmFsaWRhdGVkIElOU0lERSB0aGUgdHJ5IHNvIGZhaWx1cmVzIHJvdXRlXG4gICAgICAgIC8vIHRocm91Z2ggaGFuZGxlRXJyb3IgKGNvbnNpc3RlbnQgZXhpdCBjb2RlL2Zvcm1hdCkgbGlrZSBldmVyeSBvdGhlciBjb21tYW5kLlxuICAgICAgICBpZiAoIW9wdGlvbnMuaWQgJiYgIW9wdGlvbnMubG9jYWxTcGVjKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgLS1pZCA8cGlwZWxpbmUtaWQ+IG9yIC0tbG9jYWwtc3BlYyA8cGF0aD4gaXMgcmVxdWlyZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pZCAmJiBvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLS1pZCBhbmQgLS1sb2NhbC1zcGVjIGFyZSBtdXR1YWxseSBleGNsdXNpdmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1ZGl0TG9nKCdkZXBsb3knLCB7IGV4ZWN1dGlvbklkLCBwaXBlbGluZUlkOiBvcHRpb25zLmlkLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIC8vIEF0dHJpYnV0ZXMgdGhpcyBkZXBsb3kncyBwbGF0Zm9ybSBjYWxscyB0byB0aGUgcGlwZWxpbmUgKHVzYWdlIGxlZGdlcikuXG4gICAgICAgIHNldFBpcGVsaW5lSWQob3B0aW9ucy5pZCk7XG5cbiAgICAgICAgcHJpbnRJbmZvKCdEZXBsb3ltZW50IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICAgICAgYXdzUHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIG91dHB1dERpcjogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgLy8gUHJvcGFnYXRlIHRvIHByb2Nlc3MuZW52IHNvIENESyBjb25zdHJ1Y3RzIChMYW1iZGEsIENvZGVCdWlsZCkgaW5oZXJpdCBpdCxcbiAgICAgICAgLy8gYnV0IHJlZnVzZSBpbiBwcm9kdWN0aW9uIChzZWUgcmVsYXhUbHNGb3JDbGkpIOKAlCB0aGUgZmxhZyBkaXNhYmxlcyBjZXJ0XG4gICAgICAgIC8vIHZhbGlkYXRpb24gZm9yIEFMTCBvdXRib3VuZCBUTFMsIGluY2x1ZGluZyB0aGUgQVdTIFNESy5cbiAgICAgICAgcmVsYXhUbHNGb3JDbGkob3B0aW9ucy52ZXJpZnlTc2wsIHByaW50V2FybmluZyk7XG5cbiAgICAgICAgLy8gTG9jYWwtdG9vbCBwcmVyZXF1aXNpdGVzIChjZGsgKyBlc2J1aWxkL3BucG0pIGFyZSB2ZXJpZmllZCB1cCBmcm9udCBieVxuICAgICAgICAvLyB0aGUgQ0xJJ3MgcHJlQWN0aW9uIGhvb2ssIHNvIGJ5IGhlcmUgdGhleSdyZSBndWFyYW50ZWVkIHByZXNlbnQuXG5cbiAgICAgICAgbGV0IHBpcGVsaW5lOiBQaXBlbGluZTtcbiAgICAgICAgbGV0IHByb3BzV2l0aElkczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGxldCBwbHVnaW5XYXJuaW5nczogcmVhZG9ubHkgTG9va3VwV2FybmluZ1tdID0gW107XG4gICAgICAgIC8vIFJlbW90ZS1tb2RlIHJlZ2lzdHJ5LXBvc3QgaGFuZGxlcyDigJQgbnVsbCBpbiAtLWxvY2FsLXNwZWMgbW9kZS5cbiAgICAgICAgbGV0IHBsYXRmb3JtQ2xpZW50OiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYz4+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcGxhdGZvcm1Db25maWc6IFBsYXRmb3JtRGVwbG95Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmxvY2FsU3BlYykge1xuICAgICAgICAgIC8vIC0tbG9jYWwtc3BlYzogcmVhZCBwaXBlbGluZS5qc29uIGZyb20gZGlzazsgbm8gcGxhdGZvcm0gY29udGFjdC5cbiAgICAgICAgICAvLyBDb21wbGlhbmNlIC8gcXVvdGEgLyBwbHVnaW4tbG9va3VwIGZlYXR1cmVzIGFsbCByZXF1aXJlIHRoZSBwbGF0Zm9ybSDigJRcbiAgICAgICAgICAvLyB0aGlzIG1vZGUgaXMgZm9yIGFpci1nYXBwZWQgb3Igc2ltcGxlIHN0YW5kYWxvbmUgQ0RLIGRlcGxveW1lbnRzLlxuICAgICAgICAgIGNvbnN0IGFic1BhdGggPSBwYXRoLnJlc29sdmUob3B0aW9ucy5sb2NhbFNwZWMpO1xuICAgICAgICAgIHByaW50SW5mbygnTG9hZGluZyBsb2NhbCBwaXBlbGluZSBzcGVjJywgeyBwYXRoOiBhYnNQYXRoIH0pO1xuICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhhYnNQYXRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgbm90IGZvdW5kOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJhdyA9IGZzLnJlYWRGaWxlU3luYyhhYnNQYXRoLCAndXRmLTgnKTtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdykgYXMgUGFydGlhbDxQaXBlbGluZT4gJiB7IHByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcbiAgICAgICAgICBpZiAoIXBhcnNlZC5wcm9wcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBzcGVjIGZpbGUgaXMgbWlzc2luZyByZXF1aXJlZCAncHJvcHMnIGZpZWxkOiAke2Fic1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBpcGVsaW5lID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlZC5pZCA/PyAnbG9jYWwnLFxuICAgICAgICAgICAgcHJvamVjdDogcGFyc2VkLnByb2plY3QgPz8gJ2xvY2FsLXByb2plY3QnLFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBwYXJzZWQub3JnYW5pemF0aW9uID8/ICdsb2NhbC1vcmcnLFxuICAgICAgICAgICAgb3JnSWQ6IHBhcnNlZC5vcmdJZCxcbiAgICAgICAgICAgIGlzRGVmYXVsdDogcGFyc2VkLmlzRGVmYXVsdCA/PyBmYWxzZSxcbiAgICAgICAgICAgIGlzQWN0aXZlOiBwYXJzZWQuaXNBY3RpdmUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIHByb3BzOiBwYXJzZWQucHJvcHMsXG4gICAgICAgICAgfSBhcyBQaXBlbGluZTtcbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ0xvY2FsIHNwZWMgbG9hZGVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICBTb3VyY2U6IGFic1BhdGgsXG4gICAgICAgICAgICBQcm9qZWN0OiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICAgT3JnYW5pemF0aW9uOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvcHNXaXRoSWRzID0ge1xuICAgICAgICAgICAgLi4ucGlwZWxpbmUucHJvcHMsXG4gICAgICAgICAgICAuLi4ocGlwZWxpbmUub3JnSWQgJiYgeyBvcmdJZDogcGlwZWxpbmUub3JnSWQgfSksXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlbW90ZSBwYXRoOiBmZXRjaCBjb25maWcgZnJvbSBwbGF0Zm9ybSBBUEkuIGZldGNoUGlwZWxpbmVQcm9wcyBkb2VzXG4gICAgICAgICAgLy8gdGhlIGZldGNoICsgcGx1Z2luIHByZS1yZXNvbHV0aW9uICsgcmVnaXN0cnkgcHVsbC1ob3N0IGJha2Ug4oCUIHNoYXJlZFxuICAgICAgICAgIC8vIHZlcmJhdGltIHdpdGggYHN5bnRoYCBzbyB0aGUgdHdvIG5ldmVyIGRyaWZ0LlxuICAgICAgICAgIHBsYXRmb3JtQ2xpZW50ID0gYXdhaXQgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jKG9wdGlvbnMpO1xuICAgICAgICAgIHBsYXRmb3JtQ29uZmlnID0gcGxhdGZvcm1DbGllbnQuZ2V0Q29uZmlnKCkgYXMgUGxhdGZvcm1EZXBsb3lDb25maWc7XG5cbiAgICAgICAgICBwcmludEluZm8oJ0ZldGNoaW5nIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24nLCB7IGlkOiBvcHRpb25zLmlkIH0pO1xuICAgICAgICAgIGNvbnN0IGZldGNoZWQgPSBhd2FpdCBmZXRjaFBpcGVsaW5lUHJvcHMocGxhdGZvcm1DbGllbnQsIG9wdGlvbnMuaWQpO1xuICAgICAgICAgIHBpcGVsaW5lID0gZmV0Y2hlZC5waXBlbGluZTtcbiAgICAgICAgICBwcm9wc1dpdGhJZHMgPSBmZXRjaGVkLnByb3BzV2l0aElkcztcbiAgICAgICAgICBwbHVnaW5XYXJuaW5ncyA9IGZldGNoZWQucGx1Z2luV2FybmluZ3M7XG5cbiAgICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmV0cmlldmVkJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnSUQnOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcGlwZWxpbmUucHJvamVjdCxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICAnSXMgRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCxcbiAgICAgICAgICAgICdJcyBBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tc2hvdy1yZXNvbHZlZDogcHJpbnQgcmVzb2x2ZWQgY29uZmlnIGFuZCBleGl0IChubyBDREsgZGVwbG95KVxuICAgICAgICBpZiAoKG9wdGlvbnMgYXMgeyBzaG93UmVzb2x2ZWQ/OiBib29sZWFuIH0pLnNob3dSZXNvbHZlZCkge1xuICAgICAgICAgIGF3YWl0IHByaW50UmVzb2x2ZWRPckV4aXQocHJvcHNXaXRoSWRzKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGVwcyA14oCTOSAoZW5jb2RlIHByb3BzIOKGkiBjZGsgZGVwbG95IOKGkiByZWdpc3RlciBBUk4pIGFyZSBzaGFyZWQgd2l0aFxuICAgICAgICAvLyBgcGlwZWxpbmUgY3JlYXRlIC0tZGVwbG95YCB2aWEgcnVuRGVwbG95IHNvIHRoZSB0d28gbmV2ZXIgZHJpZnQuXG4gICAgICAgIGF3YWl0IHJ1bkRlcGxveSh7XG4gICAgICAgICAgcGlwZWxpbmUsXG4gICAgICAgICAgcHJvcHNXaXRoSWRzLFxuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uLFxuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgLy8gVGhlIHJlZ2lzdHJ5IGNhbGxiYWNrJ3MgY3JlZGVudGlhbDogdGhlIG9wZXJhdG9yJ3Mgb3duLCBvciDigJQgdW5kZXJcbiAgICAgICAgICAvLyAtLXN0b3JlLXRva2VucyDigJQgdGhlIGBwaXBlbGluZS1yZWdpc3RlcmAga2V5LCBuZXZlciB0aGUgcGxhdGZvcm0gb25lLlxuICAgICAgICAgIHBsYXRmb3JtQ2xpZW50OiBwbGF0Zm9ybUNsaWVudCAmJiBhd2FpdCByZXNvbHZlUmVnaXN0cmF0aW9uQ2xpZW50KHtcbiAgICAgICAgICAgIGNsaWVudDogcGxhdGZvcm1DbGllbnQsXG4gICAgICAgICAgICBzdG9yZVRva2Vuczogb3B0aW9ucy5zdG9yZVRva2VucyxcbiAgICAgICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcGxhdGZvcm1QaXBlbGluZVVybDogcGxhdGZvcm1Db25maWc/LmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICBwbGF0Zm9ybUJhc2VVcmw6IHBsYXRmb3JtQ29uZmlnPy5hcGkuYmFzZVVybCxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEdyYWRlZCBwbHVnaW4gd2FybmluZ3MgYXJlIHJlcG9ydGVkLCBuZXZlciBlbmZvcmNlZCDigJQgc3VtbWFyaXplIHRoZW1cbiAgICAgICAgLy8gYWZ0ZXIgdGhlIENESyBvdXRwdXQgc28gdGhleSBhcmVuJ3QgbG9zdCBhYm92ZSBpdC5cbiAgICAgICAgcHJpbnRMb29rdXBXYXJuaW5nU3VtbWFyeShwbHVnaW5XYXJuaW5ncyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmQ6ICdkZXBsb3knLFxuICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICBwaXBlbGluZUlkOiBvcHRpb25zLmlkLFxuICAgICAgICAgICAgdmVyaWZ5U3NsOiBvcHRpb25zLnZlcmlmeVNzbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"entity-get.d.ts","sourceRoot":"","sources":["../../src/commands/entity-get.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC3D,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,qDAAqD;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC/D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df"}
1
+ {"version":3,"file":"entity-get.d.ts","sources":["../../src/commands/entity-get.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC3D,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,qDAAqD;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtG,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC/D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Df"}
@@ -66,4 +66,4 @@ export async function runGetEntity(program, options, spec) {
66
66
  });
67
67
  }
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9lbnRpdHktZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEosT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBc0NyQjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQ2hDLE9BQWdCLEVBQ2hCLE9BQXlCLEVBQ3pCLElBQTRCO0lBRTVCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV2QyxJQUFJLENBQUM7UUFDSCxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksV0FBVztTQUN0QyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLFlBQVksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFVLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLFVBQVUsQ0FBQyxNQUFNLEtBQUssb0JBQW9CLENBQUMsQ0FBQztZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixLQUFLLGFBQWEsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JELGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFN0MsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUNqQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3BCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztZQUMzQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1NBQ3JGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyB0eXBlIE91dHB1dEZvcm1hdCB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4uL3V0aWxzL2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludEV4ZWN1dGlvblN1bW1hcnksIHByaW50U3NsV2FybmluZywgdmFsaWRhdGVFbnRpdHlJZCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBvdXRwdXREYXRhLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGV4dHJhY3RTaW5nbGVSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLXV0aWxzLmpzJztcblxuY29uc3QgeyBkaW0gfSA9IHBpY287XG5cbi8qKiBPcHRpb25zIGNvbW1vbiB0byB0aGUgc2luZ2xlLWVudGl0eSBgZ2V0YCBjb21tYW5kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW50aXR5T3B0aW9ucyB7XG4gIGlkOiBzdHJpbmc7XG4gIGZvcm1hdDogT3V0cHV0Rm9ybWF0O1xuICBvdXRwdXQ/OiBzdHJpbmc7XG4gIHZlcmlmeVNzbD86IGJvb2xlYW47XG4gIHNob3dQcm9wcz86IGJvb2xlYW47XG4gIHNob3dNZXRhZGF0YT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyLWVudGl0eSBjb25maWd1cmF0aW9uIGZvciB7QGxpbmsgcnVuR2V0RW50aXR5fS4gQ2FwdHVyZXMgZXZlcnl0aGluZyB0aGF0XG4gKiBkaWZmZXJzIGJldHdlZW4gYGdldC1waXBlbGluZWAgYW5kIGBnZXQtcGx1Z2luYDsgdGhlIHN1cnJvdW5kaW5nIHNjYWZmb2xkXG4gKiAoaGVhZGVyLCBTU0wgd2FybmluZywgZmV0Y2gsIHN1bW1hcnkgdGFibGUsIGV4ZWN1dGlvbiBzdW1tYXJ5LCBmaWxlIG91dHB1dCxcbiAqIGVycm9yIGhhbmRsaW5nKSBpcyBpZGVudGljYWwgYW5kIGxpdmVzIGluIHRoZSBydW5uZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW50aXR5U3BlYzxURW50aXR5IGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+IHtcbiAgLyoqIFRpdGxlLWNhc2UgZW50aXR5IGxhYmVsLCBlLmcuIGAnUGlwZWxpbmUnYC4gRHJpdmVzIGhlYWRlcnMgYW5kIG1lc3NhZ2VzLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogUmVzcG9uc2UtZW52ZWxvcGUga2V5IHRoZSBlbnRpdHkgaXMgbmVzdGVkIHVuZGVyLCBlLmcuIGAncGlwZWxpbmUnYC4gKi9cbiAgcmVzcG9uc2VLZXk6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRoZSBzaW5nbGUtZW50aXR5IEdFVCBVUkwgZnJvbSB0aGUgYXV0aGVudGljYXRlZCBjbGllbnQuICovXG4gIHVybEZvcjogKGNsaWVudDogQXBpQ2xpZW50LCBpZDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIC8qKiBPcmRlcmVkIGtleS92YWx1ZSBzdW1tYXJ5IHJlbmRlcmVkIGFzIGEgdGFibGUuICovXG4gIHN1bW1hcnk6IChlbnRpdHk6IFRFbnRpdHkpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKipcbiAgICogT3B0aW9uYWwgZXh0cmEgSlNPTiBibG9jayBzaG93biBhZnRlciB0aGUgc3VtbWFyeSAocGlwZWxpbmUgcHJvcGVydGllcyAvXG4gICAqIHBsdWdpbiBtZXRhZGF0YSkuIFJldHVybiBgbnVsbGAgdG8gb21pdC5cbiAgICovXG4gIGV4dHJhPzogKG9wdGlvbnM6IEdldEVudGl0eU9wdGlvbnMsIGVudGl0eTogVEVudGl0eSkgPT4geyBpbmZvTGFiZWw6IHN0cmluZzsgcGF5bG9hZDogb2JqZWN0IH0gfCBudWxsO1xuICAvKiogQ29tbWFuZCBuYW1lIGZvciBlcnJvci1oYW5kbGVyIGNvbnRleHQsIGUuZy4gYCdnZXQtcGlwZWxpbmUnYC4gKi9cbiAgY29tbWFuZE5hbWU6IHN0cmluZztcbiAgLyoqIEtleSB1bmRlciB3aGljaCB0aGUgaWQgaXMgcmVwb3J0ZWQgaW4gZXJyb3IgY29udGV4dCwgZS5nLiBgJ3BpcGVsaW5lSWQnYC4gKi9cbiAgaWRDb250ZXh0S2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU2hhcmVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzaW5nbGUtZW50aXR5IGBnZXRgIGNvbW1hbmRzLiBGZXRjaGVzIG9uZSBlbnRpdHlcbiAqIGJ5IElELCBwcmludHMgYSBzdW1tYXJ5IChhbmQgb3B0aW9uYWwgcHJvcGVydGllcy9tZXRhZGF0YSBibG9jayksIGFuZCB3cml0ZXNcbiAqIHRoZSByYXcgZW50aXR5IGluIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuR2V0RW50aXR5PFRFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4oXG4gIHByb2dyYW06IENvbW1hbmQsXG4gIG9wdGlvbnM6IEdldEVudGl0eU9wdGlvbnMsXG4gIHNwZWM6IEdldEVudGl0eVNwZWM8VEVudGl0eT4sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoYEdldCAke3NwZWMubGFiZWx9YCk7XG4gIGNvbnN0IGxvd2VyID0gc3BlYy5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuXG4gIHRyeSB7XG4gICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcbiAgICBwcmludEluZm8oJ1JlcXVlc3QgcGFyYW1ldGVycycsIHtcbiAgICAgIGlkOiBvcHRpb25zLmlkLFxuICAgICAgZm9ybWF0OiBvcHRpb25zLmZvcm1hdCxcbiAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQgfHwgJyhjb25zb2xlKScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnRpdHlJZCA9IHZhbGlkYXRlRW50aXR5SWQob3B0aW9ucy5pZCwgc3BlYy5sYWJlbCk7XG4gICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcblxuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBwcmludFNlY3Rpb24oYEZldGNoaW5nICR7c3BlYy5sYWJlbH1gKTtcblxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KHNwZWMudXJsRm9yKGNsaWVudCwgZW50aXR5SWQpKTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICBjb25zdCBlbnRpdHkgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8VEVudGl0eT4ocmVzcG9uc2UsIHNwZWMucmVzcG9uc2VLZXksICdpZCcpO1xuICAgIGlmICghZW50aXR5KSB7XG4gICAgICBwcmludEVycm9yKGBObyAke2xvd2VyfSByZXR1cm5lZCBmcm9tIEFQSWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgJHtsb3dlcn0gd2l0aCBJRDogJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgcHJpbnRTZWN0aW9uKGAke3NwZWMubGFiZWx9IFJldHJpZXZlZCBTdWNjZXNzZnVsbHlgKTtcbiAgICBwcmludEtleVZhbHVlKHNwZWMuc3VtbWFyeShlbnRpdHkpKTtcblxuICAgIGNvbnN0IGV4dHJhID0gc3BlYy5leHRyYT8uKG9wdGlvbnMsIGVudGl0eSk7XG4gICAgaWYgKGV4dHJhKSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBwcmludEluZm8oZXh0cmEuaW5mb0xhYmVsLCB7IGtleXM6IE9iamVjdC5rZXlzKGV4dHJhLnBheWxvYWQpLmxlbmd0aCB9KTtcbiAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV4dHJhLnBheWxvYWQsIG51bGwsIDIpKTtcbiAgICAgIGNvbnNvbGUubG9nKGRpbSgn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCkpKTtcbiAgICB9XG5cbiAgICBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQsIGR1cmF0aW9uKTtcblxuICAgIG91dHB1dERhdGEoZW50aXR5LCB7XG4gICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgZmlsZTogb3B0aW9ucy5vdXRwdXQsXG4gICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMub3V0cHV0KSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBwcmludFN1Y2Nlc3MoYCR7c3BlYy5sYWJlbH0gZGF0YSBzYXZlZGAsIHsgcGF0aDogb3B0aW9ucy5vdXRwdXQgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogc3BlYy5jb21tYW5kTmFtZSwgZXhlY3V0aW9uSWQsIFtzcGVjLmlkQ29udGV4dEtleV06IG9wdGlvbnMuaWQgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdldC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2VudGl0eS1nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwSixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFzQ3JCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FDaEMsT0FBZ0IsRUFDaEIsT0FBeUIsRUFDekIsSUFBNEI7SUFFNUIsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXZDLElBQUksQ0FBQztRQUNILGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkMsU0FBUyxDQUFDLG9CQUFvQixFQUFFO1lBQzlCLEVB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QUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO1lBQzNCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7U0FDckYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IHR5cGUgT3V0cHV0Rm9ybWF0IH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgQXBpQ2xpZW50IH0gZnJvbSAnLi4vdXRpbHMvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCBwcmludENvbW1hbmRIZWFkZXIsIHByaW50RXhlY3V0aW9uU3VtbWFyeSwgcHJpbnRTc2xXYXJuaW5nLCB2YWxpZGF0ZUVudGl0eUlkIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IG91dHB1dERhdGEsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UtdXRpbHMuanMnO1xuXG5jb25zdCB7IGRpbSB9ID0gcGljbztcblxuLyoqIE9wdGlvbnMgY29tbW9uIHRvIHRoZSBzaW5nbGUtZW50aXR5IGBnZXRgIGNvbW1hbmRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFbnRpdHlPcHRpb25zIHtcbiAgaWQ6IHN0cmluZztcbiAgZm9ybWF0OiBPdXRwdXRGb3JtYXQ7XG4gIG91dHB1dD86IHN0cmluZztcbiAgdmVyaWZ5U3NsPzogYm9vbGVhbjtcbiAgc2hvd1Byb3BzPzogYm9vbGVhbjtcbiAgc2hvd01ldGFkYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQZXItZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIHtAbGluayBydW5HZXRFbnRpdHl9LiBDYXB0dXJlcyBldmVyeXRoaW5nIHRoYXRcbiAqIGRpZmZlcnMgYmV0d2VlbiBgZ2V0LXBpcGVsaW5lYCBhbmQgYGdldC1wbHVnaW5gOyB0aGUgc3Vycm91bmRpbmcgc2NhZmZvbGRcbiAqIChoZWFkZXIsIFNTTCB3YXJuaW5nLCBmZXRjaCwgc3VtbWFyeSB0YWJsZSwgZXhlY3V0aW9uIHN1bW1hcnksIGZpbGUgb3V0cHV0LFxuICogZXJyb3IgaGFuZGxpbmcpIGlzIGlkZW50aWNhbCBhbmQgbGl2ZXMgaW4gdGhlIHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFbnRpdHlTcGVjPFRFbnRpdHkgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4ge1xuICAvKiogVGl0bGUtY2FzZSBlbnRpdHkgbGFiZWwsIGUuZy4gYCdQaXBlbGluZSdgLiBEcml2ZXMgaGVhZGVycyBhbmQgbWVzc2FnZXMuICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBSZXNwb25zZS1lbnZlbG9wZSBrZXkgdGhlIGVudGl0eSBpcyBuZXN0ZWQgdW5kZXIsIGUuZy4gYCdwaXBlbGluZSdgLiAqL1xuICByZXNwb25zZUtleTogc3RyaW5nO1xuICAvKiogQnVpbGQgdGhlIHNpbmdsZS1lbnRpdHkgR0VUIFVSTCBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIGNsaWVudC4gKi9cbiAgdXJsRm9yOiAoY2xpZW50OiBBcGlDbGllbnQsIGlkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIE9yZGVyZWQga2V5L3ZhbHVlIHN1bW1hcnkgcmVuZGVyZWQgYXMgYSB0YWJsZS4gKi9cbiAgc3VtbWFyeTogKGVudGl0eTogVEVudGl0eSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBPcHRpb25hbCBleHRyYSBKU09OIGJsb2NrIHNob3duIGFmdGVyIHRoZSBzdW1tYXJ5IChwaXBlbGluZSBwcm9wZXJ0aWVzIC9cbiAgICogcGx1Z2luIG1ldGFkYXRhKS4gUmV0dXJuIGBudWxsYCB0byBvbWl0LlxuICAgKi9cbiAgZXh0cmE/OiAob3B0aW9uczogR2V0RW50aXR5T3B0aW9ucywgZW50aXR5OiBURW50aXR5KSA9PiB7IGluZm9MYWJlbDogc3RyaW5nOyBwYXlsb2FkOiBvYmplY3QgfSB8IG51bGw7XG4gIC8qKiBDb21tYW5kIG5hbWUgZm9yIGVycm9yLWhhbmRsZXIgY29udGV4dCwgZS5nLiBgJ2dldC1waXBlbGluZSdgLiAqL1xuICBjb21tYW5kTmFtZTogc3RyaW5nO1xuICAvKiogS2V5IHVuZGVyIHdoaWNoIHRoZSBpZCBpcyByZXBvcnRlZCBpbiBlcnJvciBjb250ZXh0LCBlLmcuIGAncGlwZWxpbmVJZCdgLiAqL1xuICBpZENvbnRleHRLZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTaGFyZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNpbmdsZS1lbnRpdHkgYGdldGAgY29tbWFuZHMuIEZldGNoZXMgb25lIGVudGl0eVxuICogYnkgSUQsIHByaW50cyBhIHN1bW1hcnkgKGFuZCBvcHRpb25hbCBwcm9wZXJ0aWVzL21ldGFkYXRhIGJsb2NrKSwgYW5kIHdyaXRlc1xuICogdGhlIHJhdyBlbnRpdHkgaW4gdGhlIHJlcXVlc3RlZCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5HZXRFbnRpdHk8VEVudGl0eSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9PihcbiAgcHJvZ3JhbTogQ29tbWFuZCxcbiAgb3B0aW9uczogR2V0RW50aXR5T3B0aW9ucyxcbiAgc3BlYzogR2V0RW50aXR5U3BlYzxURW50aXR5Pixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcihgR2V0ICR7c3BlYy5sYWJlbH1gKTtcbiAgY29uc3QgbG93ZXIgPSBzcGVjLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgdHJ5IHtcbiAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgIHByaW50SW5mbygnUmVxdWVzdCBwYXJhbWV0ZXJzJywge1xuICAgICAgaWQ6IG9wdGlvbnMuaWQsXG4gICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCB8fCAnKGNvbnNvbGUpJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVudGl0eUlkID0gdmFsaWRhdGVFbnRpdHlJZChvcHRpb25zLmlkLCBzcGVjLmxhYmVsKTtcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuXG4gICAgY29uc29sZS5sb2coJycpO1xuICAgIHByaW50U2VjdGlvbihgRmV0Y2hpbmcgJHtzcGVjLmxhYmVsfWApO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoc3BlYy51cmxGb3IoY2xpZW50LCBlbnRpdHlJZCkpO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgIGNvbnN0IGVudGl0eSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxURW50aXR5PihyZXNwb25zZSwgc3BlYy5yZXNwb25zZUtleSwgJ2lkJyk7XG4gICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgIHByaW50RXJyb3IoYE5vICR7bG93ZXJ9IHJldHVybmVkIGZyb20gQVBJYCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSAke2xvd2VyfSB3aXRoIElEOiAke2VudGl0eUlkfWApO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICBwcmludFNlY3Rpb24oYCR7c3BlYy5sYWJlbH0gUmV0cmlldmVkIFN1Y2Nlc3NmdWxseWApO1xuICAgIHByaW50S2V5VmFsdWUoc3BlYy5zdW1tYXJ5KGVudGl0eSkpO1xuXG4gICAgY29uc3QgZXh0cmEgPSBzcGVjLmV4dHJhPy4ob3B0aW9ucywgZW50aXR5KTtcbiAgICBpZiAoZXh0cmEpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIHByaW50SW5mbyhleHRyYS5pbmZvTGFiZWwsIHsga2V5czogT2JqZWN0LmtleXMoZXh0cmEucGF5bG9hZCkubGVuZ3RoIH0pO1xuICAgICAgY29uc29sZS5sb2coZGltKCfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKSkpO1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXh0cmEucGF5bG9hZCwgbnVsbCwgMikpO1xuICAgICAgY29uc29sZS5sb2coZGltKCfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKSkpO1xuICAgIH1cblxuICAgIHByaW50RXhlY3V0aW9uU3VtbWFyeShleGVjdXRpb25JZCwgZHVyYXRpb24pO1xuXG4gICAgb3V0cHV0RGF0YShlbnRpdHksIHtcbiAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQsXG4gICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgIHNpbGVudDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5vdXRwdXQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgIHByaW50U3VjY2VzcyhgJHtzcGVjLmxhYmVsfSBkYXRhIHNhdmVkYCwgeyBwYXRoOiBvcHRpb25zLm91dHB1dCB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDogeyBjb21tYW5kOiBzcGVjLmNvbW1hbmROYW1lLCBleGVjdXRpb25JZCwgW3NwZWMuaWRDb250ZXh0S2V5XTogb3B0aW9ucy5pZCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"entity-list.d.ts","sourceRoot":"","sources":["../../src/commands/entity-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAsB,KAAK,kBAAkB,EAA6C,MAAM,gCAAgC,CAAC;AAIxI;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB;IACvE,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,4EAA4E;IAC5E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACtF,+DAA+D;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,mEAAmE;IACnE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,iFAAiF;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACpE,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB,EAC3E,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAClG,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAuFf"}
1
+ {"version":3,"file":"entity-list.d.ts","sources":["../../src/commands/entity-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAsB,KAAK,kBAAkB,EAA6C,MAAM,gCAAgC,CAAC;AAIxI;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB;IACvE,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,4EAA4E;IAC5E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACtF,+DAA+D;IAC/D,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,mEAAmE;IACnE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,iFAAiF;IACjF,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;IACpE,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,SAAS,kBAAkB,EAC3E,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EAClG,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAuFf"}