obsidian-integration-testing 12.3.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/lib/cjs/adb.cjs +1 -1
  2. package/dist/lib/cjs/app-config.cjs +1 -1
  3. package/dist/lib/cjs/app-config.d.cts +1 -1
  4. package/dist/lib/cjs/appium-dependencies.cjs +1 -1
  5. package/dist/lib/cjs/appium-session-config.cjs +1 -1
  6. package/dist/lib/cjs/connect-to-cdp.cjs +1 -1
  7. package/dist/lib/cjs/demo-vault-bootstrap.cjs +1 -1
  8. package/dist/lib/cjs/desktop-only-plugin-skip-error.cjs +1 -1
  9. package/dist/lib/cjs/device-readiness.cjs +1 -1
  10. package/dist/lib/cjs/device-settings.cjs +1 -1
  11. package/dist/lib/cjs/device-settings.d.cts +1 -1
  12. package/dist/lib/cjs/emulator-reaper.cjs +1 -1
  13. package/dist/lib/cjs/emulator-reaper.d.cts +2 -2
  14. package/dist/lib/cjs/emulator-reclaim.cjs +1 -1
  15. package/dist/lib/cjs/emulator-reclaim.d.cts +17 -17
  16. package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
  17. package/dist/lib/cjs/eval-in-obsidian.d.cts +5 -0
  18. package/dist/lib/cjs/fit-screenshot.cjs +1 -1
  19. package/dist/lib/cjs/generate-function-call.cjs +1 -1
  20. package/dist/lib/cjs/generate-function-call.d.cts +1 -1
  21. package/dist/lib/cjs/global-setup-core.cjs +1 -1
  22. package/dist/lib/cjs/global-setup-core.d.cts +4 -4
  23. package/dist/lib/cjs/integration-setup-failed-error.cjs +1 -1
  24. package/dist/lib/cjs/jest/global-setup.cjs +1 -1
  25. package/dist/lib/cjs/jest/global-setup.d.cts +3 -3
  26. package/dist/lib/cjs/leftover-cleanup.cjs +1 -1
  27. package/dist/lib/cjs/leftover-cleanup.d.cts +2 -2
  28. package/dist/lib/cjs/library.cjs +1 -1
  29. package/dist/lib/cjs/mobile-input.cjs +1 -1
  30. package/dist/lib/cjs/namespace-bootstrap.cjs +13 -3
  31. package/dist/lib/cjs/obsidian-instance.cjs +1 -1
  32. package/dist/lib/cjs/obsidian-version-switch.cjs +1 -1
  33. package/dist/lib/cjs/open-obsidian-settings-tab.cjs +1 -1
  34. package/dist/lib/cjs/owned-vault-seed.cjs +3 -3
  35. package/dist/lib/cjs/process-capture.cjs +1 -1
  36. package/dist/lib/cjs/process-capture.d.cts +5 -5
  37. package/dist/lib/cjs/process-exit-message.cjs +1 -1
  38. package/dist/lib/cjs/process-exit-message.d.cts +2 -2
  39. package/dist/lib/cjs/run-version-matrix.cjs +3 -3
  40. package/dist/lib/cjs/run-version-matrix.d.cts +1 -1
  41. package/dist/lib/cjs/setup-lock.cjs +1 -1
  42. package/dist/lib/cjs/temporary-vault.cjs +3 -1
  43. package/dist/lib/cjs/transport-appium.cjs +3 -1
  44. package/dist/lib/cjs/transport-desktop-cdp.cjs +7 -5
  45. package/dist/lib/cjs/transport-factory.cjs +2 -2
  46. package/dist/lib/cjs/transport-options.cjs +1 -1
  47. package/dist/lib/cjs/vault-teardown-verdict.cjs +1 -1
  48. package/dist/lib/cjs/version-matrix.cjs +1 -1
  49. package/dist/lib/cjs/version-matrix.d.cts +2 -2
  50. package/dist/lib/cjs/vitest/global-setup.cjs +1 -1
  51. package/dist/lib/cjs/vitest/global-setup.d.cts +3 -3
  52. package/dist/lib/cjs/webview-cdp.cjs +1 -1
  53. package/dist/lib/esm/adb.mjs +1 -1
  54. package/dist/lib/esm/app-config.d.mts +1 -1
  55. package/dist/lib/esm/app-config.mjs +1 -1
  56. package/dist/lib/esm/appium-dependencies.mjs +1 -1
  57. package/dist/lib/esm/appium-session-config.mjs +1 -1
  58. package/dist/lib/esm/connect-to-cdp.mjs +1 -1
  59. package/dist/lib/esm/demo-vault-bootstrap.mjs +1 -1
  60. package/dist/lib/esm/desktop-only-plugin-skip-error.mjs +1 -1
  61. package/dist/lib/esm/device-readiness.mjs +1 -1
  62. package/dist/lib/esm/device-settings.d.mts +1 -1
  63. package/dist/lib/esm/device-settings.mjs +1 -1
  64. package/dist/lib/esm/emulator-reaper.d.mts +2 -2
  65. package/dist/lib/esm/emulator-reaper.mjs +1 -1
  66. package/dist/lib/esm/emulator-reclaim.d.mts +17 -17
  67. package/dist/lib/esm/emulator-reclaim.mjs +1 -1
  68. package/dist/lib/esm/eval-in-obsidian.d.mts +5 -0
  69. package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
  70. package/dist/lib/esm/fit-screenshot.mjs +1 -1
  71. package/dist/lib/esm/generate-function-call.d.mts +1 -1
  72. package/dist/lib/esm/generate-function-call.mjs +1 -1
  73. package/dist/lib/esm/global-setup-core.d.mts +4 -4
  74. package/dist/lib/esm/global-setup-core.mjs +1 -1
  75. package/dist/lib/esm/integration-setup-failed-error.mjs +1 -1
  76. package/dist/lib/esm/jest/global-setup.d.mts +3 -3
  77. package/dist/lib/esm/jest/global-setup.mjs +1 -1
  78. package/dist/lib/esm/leftover-cleanup.d.mts +2 -2
  79. package/dist/lib/esm/leftover-cleanup.mjs +1 -1
  80. package/dist/lib/esm/library.mjs +1 -1
  81. package/dist/lib/esm/mobile-input.mjs +1 -1
  82. package/dist/lib/esm/namespace-bootstrap.mjs +13 -3
  83. package/dist/lib/esm/obsidian-instance.mjs +1 -1
  84. package/dist/lib/esm/obsidian-version-switch.mjs +1 -1
  85. package/dist/lib/esm/open-obsidian-settings-tab.mjs +1 -1
  86. package/dist/lib/esm/owned-vault-seed.mjs +3 -3
  87. package/dist/lib/esm/process-capture.d.mts +5 -5
  88. package/dist/lib/esm/process-capture.mjs +1 -1
  89. package/dist/lib/esm/process-exit-message.d.mts +2 -2
  90. package/dist/lib/esm/process-exit-message.mjs +1 -1
  91. package/dist/lib/esm/run-version-matrix.d.mts +1 -1
  92. package/dist/lib/esm/run-version-matrix.mjs +3 -3
  93. package/dist/lib/esm/setup-lock.mjs +1 -1
  94. package/dist/lib/esm/temporary-vault.mjs +3 -1
  95. package/dist/lib/esm/transport-appium.mjs +3 -1
  96. package/dist/lib/esm/transport-desktop-cdp.mjs +7 -5
  97. package/dist/lib/esm/transport-factory.mjs +2 -2
  98. package/dist/lib/esm/transport-options.mjs +1 -1
  99. package/dist/lib/esm/vault-teardown-verdict.mjs +1 -1
  100. package/dist/lib/esm/version-matrix.d.mts +2 -2
  101. package/dist/lib/esm/version-matrix.mjs +1 -1
  102. package/dist/lib/esm/vitest/global-setup.d.mts +3 -3
  103. package/dist/lib/esm/vitest/global-setup.mjs +1 -1
  104. package/dist/lib/esm/webview-cdp.mjs +1 -1
  105. package/package.json +1 -7
@@ -58,4 +58,4 @@ async function runAdbTextWithoutDevice(commandArguments) {
58
58
  runAdbText,
59
59
  runAdbTextWithoutDevice
60
60
  });
61
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJ1bnMgYGFkYmAgYW5kIGhhbmRzIGJhY2sgd2hhdCBpdCBwcmludGVkIFx1MjAxNCBhcyB0ZXh0LCBvciBhcyByYXcgYnl0ZXMuXG4gKlxuICogVGhlIGhhcm5lc3MgYWxyZWFkeSBzaGVsbHMgb3V0IHRvIGBhZGJgIGluIGhhbGYgYSBkb3plbiBwbGFjZXMgaW5zaWRlXG4gKiBgdHJhbnNwb3J0LWZhY3RvcnlgIC8gYHRyYW5zcG9ydC1hcHBpdW1gLCBidXQgYWx3YXlzIHRocm91Z2ggYGV4ZWNgLCB3aGljaFxuICogZGVjb2RlcyBzdGRvdXQgYXMgVVRGLTguIFRoYXQgaXMgZmluZSBmb3IgYGRldmljZXNgIGFuZCBgc2V0dGluZ3MgZ2V0YCBhbmRcbiAqIGZhdGFsbHkgd3JvbmcgZm9yIGBleGVjLW91dCBzY3JlZW5jYXAgLXBgLCB3aG9zZSBzdGRvdXQgaXMgYSBQTkc6IGRlY29kaW5nIGl0XG4gKiBhcyB0ZXh0IGNvcnJ1cHRzIGV2ZXJ5IGJ5dGUgYWJvdmUgMHg3Ri4gSGVuY2UgdGhlIHR3byBydW5uZXJzIGhlcmUgXHUyMDE0IHRoZSBzYW1lXG4gKiBjb21tYW5kIHNoYXBlLCBkaWZmZXJpbmcgb25seSBpbiB3aGV0aGVyIHRoZSBvdXRwdXQgaXMgZGVjb2RlZC5cbiAqXG4gKiBUaGVzZSBhcmUgdGhlIHByb2Nlc3MgbGF5ZXIgZm9yIHRoZSBkZXZpY2UtZmFjaW5nIGhlbHBlcnMgYSBjYXB0dXJlIHN1aXRlXG4gKiB1c2VzIChgZGV2aWNlLXNjcmVlbnNob3RgLCBgZGV2aWNlLXNldHRpbmdzYCwgYHNvZnQta2V5Ym9hcmRgKTsgdGhleSBhcmUgbm90IGFcbiAqIGdlbmVyYWwtcHVycG9zZSBhZGIgd3JhcHBlciBhbmQgZGVsaWJlcmF0ZWx5IGRvIG5vdCB0cnkgdG8gYmVjb21lIG9uZS5cbiAqXG4gKiBFdmVyeSBmdW5jdGlvbiBoZXJlIHNoZWxscyBvdXQsIHNvIHRoZSB3aG9sZSBtb2R1bGUgaXMgaW50ZWdyYXRpb24tdGltZSBjb2RlLlxuICogVGhhdCBpcyBhbHNvIHdoeSB0aGUgcGFyc2luZyBhbmQgZ2VvbWV0cnkgdGhlc2UgaGVscGVycyBkZXBlbmQgb24gbGl2ZSBpblxuICogdGhlaXIgb3duIG1vZHVsZXMgXHUyMDE0IHRoZSBzYW1lIHNwbGl0IGBhZGItZGV2aWNlLWxpc3RgIGFscmVhZHkgaGFzIGZyb20gdGhlXG4gKiB0cmFuc3BvcnQgZmFjdG9yeSwgc28gYSBzb3J0IHJ1bGUgY2FuIG5ldmVyIG1vdmUgYSB1bml0LXRlc3RlZCBmdW5jdGlvblxuICogaW5zaWRlIGEgY292ZXJhZ2UtaWdub3JlZCBibG9jay5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChzaGVsbHMgb3V0IHRvIGEgcmVhbCBkZXZpY2UpIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJ1bkFkYkJpbmFyeX0gYW5kIHtAbGluayBydW5BZGJUZXh0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5BZGJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwYXNzIGFmdGVyIGAtcyA8ZGV2aWNlSWQ+YCwgZS5nLiBgWydzaGVsbCcsICdpbnB1dCcsICd0YXAnLCAnMTAnLCAnMjAnXWAuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kQXJndW1lbnRzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLCBhcyBgYWRiIGRldmljZXNgIGxpc3RzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNjcmVlbmNhcCBvZiBhIDkwMHgxNjAwIGRldmljZSBydW5zIHRvIGFib3V0IDEwMCBLQiwgYnV0IGEgdGFibGV0IEFWRCdzIGZyYW1lYnVmZmVyIGlzIHNldmVyYWwgTUIgYW5kXG4gKiB0aGUgZGVmYXVsdCAxIE1pQiBgbWF4QnVmZmVyYCBmYWlscyB0aGUgY2FsbCByYXRoZXIgdGhhbiByZXR1cm5pbmcgYSB1c2FibGUgaW1hZ2UuXG4gKi9cbmNvbnN0IE9VVFBVVF9NQVhfQlVGRkVSX0lOX0JZVEVTID0gNjdfMTA4Xzg2NDtcblxuLyoqXG4gKiBSdW5zIGBhZGIgLXMgPGRldmljZUlkPiA8Y29tbWFuZEFyZ3VtZW50cz5gIGFuZCByZXR1cm5zIHN0ZG91dCAqKnVuZGVjb2RlZCoqLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGV2aWNlIGFuZCB0aGUgYXJndW1lbnRzIHRvIHJ1bi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJhdyBzdGRvdXQgYnl0ZXMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFkYiBjb3VsZCBub3QgYmUgcnVuLCBvciBleGl0ZWQgbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5BZGJCaW5hcnkocGFyYW1zOiBSdW5BZGJQYXJhbXMpOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3QgY29tbWFuZEFyZ3VtZW50cyA9IFsnLXMnLCBwYXJhbXMuZGV2aWNlSWQsIC4uLnBhcmFtcy5jb21tYW5kQXJndW1lbnRzXTtcblxuICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGV4ZWNGaWxlKCdhZGInLCBjb21tYW5kQXJndW1lbnRzLCB7IGVuY29kaW5nOiAnYnVmZmVyJywgbWF4QnVmZmVyOiBPVVRQVVRfTUFYX0JVRkZFUl9JTl9CWVRFUyB9LCAoZXJyb3IsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBydW4gJ2FkYiAke2NvbW1hbmRBcmd1bWVudHMuam9pbignICcpfSc6ICR7ZXJyb3IubWVzc2FnZX0uIElzIEFEQiBpbnN0YWxsZWQgYW5kIGluIFBBVEg/YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyBgYWRiIC1zIDxkZXZpY2VJZD4gPGNvbW1hbmRBcmd1bWVudHM+YCBhbmQgcmV0dXJucyBzdGRvdXQgYXMgdHJpbW1lZCB0ZXh0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGV2aWNlIGFuZCB0aGUgYXJndW1lbnRzIHRvIHJ1bi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gc3Rkb3V0LCB3aXRoIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYWRiIGNvdWxkIG5vdCBiZSBydW4sIG9yIGV4aXRlZCBub24temVyby5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkFkYlRleHQocGFyYW1zOiBSdW5BZGJQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5BZGJCaW5hcnkocGFyYW1zKTtcbiAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShzdGRvdXQpLnRyaW0oKTtcbn1cblxuLyoqXG4gKiBSdW5zIGBhZGIgPGNvbW1hbmRBcmd1bWVudHM+YCB3aXRoIG5vIGRldmljZSBzZWxlY3RlZC5cbiAqXG4gKiBPbmx5IGBkZXZpY2VzYCBuZWVkcyB0aGlzIFx1MjAxNCBldmVyeSBvdGhlciBjYWxsIGluIHRoaXMgZmFtaWx5IGFkZHJlc3NlcyBvbmUgZGV2aWNlLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyB0byBydW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHN0ZG91dCwgd2l0aCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFkYiBjb3VsZCBub3QgYmUgcnVuLCBvciBleGl0ZWQgbm9uLXplcm8uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5BZGJUZXh0V2l0aG91dERldmljZShjb21tYW5kQXJndW1lbnRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZXhlY0ZpbGUoJ2FkYicsIFsuLi5jb21tYW5kQXJndW1lbnRzXSwgeyBlbmNvZGluZzogJ3V0Zi04JywgbWF4QnVmZmVyOiBPVVRQVVRfTUFYX0JVRkZFUl9JTl9CWVRFUyB9LCAoZXJyb3IsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byBydW4gJ2FkYiAke2NvbW1hbmRBcmd1bWVudHMuam9pbignICcpfSc6ICR7ZXJyb3IubWVzc2FnZX0uIElzIEFEQiBpbnN0YWxsZWQgYW5kIGluIFBBVEg/YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoc3Rkb3V0LnRyaW0oKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkEsZ0NBQXlCO0FBcUJ6QixNQUFNLDZCQUE2QjtBQVNuQyxlQUFzQixhQUFhLFFBQTJDO0FBQzVFLFFBQU0sbUJBQW1CLENBQUMsTUFBTSxPQUFPLFVBQVUsR0FBRyxPQUFPLGdCQUFnQjtBQUUzRSxTQUFPLE1BQU0sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQzVDLDRDQUFTLE9BQU8sa0JBQWtCLEVBQUUsVUFBVSxVQUFVLFdBQVcsMkJBQTJCLEdBQUcsQ0FBQyxPQUFPLFdBQVc7QUFDbEgsVUFBSSxPQUFPO0FBQ1QsZUFBTyxJQUFJLE1BQU0sc0JBQXNCLGlCQUFpQixLQUFLLEdBQUcsQ0FBQyxNQUFNLE1BQU0sT0FBTyxpQ0FBaUMsQ0FBQztBQUN0SDtBQUFBLE1BQ0Y7QUFFQSxjQUFRLE1BQU07QUFBQSxJQUNoQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFTQSxlQUFzQixXQUFXLFFBQXVDO0FBQ3RFLFFBQU0sU0FBUyxNQUFNLGFBQWEsTUFBTTtBQUN4QyxTQUFPLElBQUksWUFBWSxFQUFFLE9BQU8sTUFBTSxFQUFFLEtBQUs7QUFDL0M7QUFXQSxlQUFzQix3QkFBd0Isa0JBQXNEO0FBQ2xHLFNBQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDNUMsNENBQVMsT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsRUFBRSxVQUFVLFNBQVMsV0FBVywyQkFBMkIsR0FBRyxDQUFDLE9BQU8sV0FBVztBQUN0SCxVQUFJLE9BQU87QUFDVCxlQUFPLElBQUksTUFBTSxzQkFBc0IsaUJBQWlCLEtBQUssR0FBRyxDQUFDLE1BQU0sTUFBTSxPQUFPLGlDQUFpQyxDQUFDO0FBQ3RIO0FBQUEsTUFDRjtBQUVBLGNBQVEsT0FBTyxLQUFLLENBQUM7QUFBQSxJQUN2QixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
61
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJ1bnMgYGFkYmAgYW5kIGhhbmRzIGJhY2sgd2hhdCBpdCBwcmludGVkIFx1MjAxNCBhcyB0ZXh0LCBvciBhcyByYXcgYnl0ZXMuXG4gKlxuICogVGhlIGhhcm5lc3MgYWxyZWFkeSBzaGVsbHMgb3V0IHRvIGBhZGJgIGluIGhhbGYgYSBkb3plbiBwbGFjZXMgaW5zaWRlXG4gKiBgdHJhbnNwb3J0LWZhY3RvcnlgIC8gYHRyYW5zcG9ydC1hcHBpdW1gLCBidXQgYWx3YXlzIHRocm91Z2ggYGV4ZWNgLCB3aGljaFxuICogZGVjb2RlcyBzdGRvdXQgYXMgVVRGLTguIFRoYXQgaXMgZmluZSBmb3IgYGRldmljZXNgIGFuZCBgc2V0dGluZ3MgZ2V0YCBhbmRcbiAqIGZhdGFsbHkgd3JvbmcgZm9yIGBleGVjLW91dCBzY3JlZW5jYXAgLXBgLCB3aG9zZSBzdGRvdXQgaXMgYSBQTkc6IGRlY29kaW5nIGl0XG4gKiBhcyB0ZXh0IGNvcnJ1cHRzIGV2ZXJ5IGJ5dGUgYWJvdmUgMHg3Ri4gSGVuY2UgdGhlIHR3byBydW5uZXJzIGhlcmUgXHUyMDE0IHRoZSBzYW1lXG4gKiBjb21tYW5kIHNoYXBlLCBkaWZmZXJpbmcgb25seSBpbiB3aGV0aGVyIHRoZSBvdXRwdXQgaXMgZGVjb2RlZC5cbiAqXG4gKiBUaGVzZSBhcmUgdGhlIHByb2Nlc3MgbGF5ZXIgZm9yIHRoZSBkZXZpY2UtZmFjaW5nIGhlbHBlcnMgYSBjYXB0dXJlIHN1aXRlXG4gKiB1c2VzIChgZGV2aWNlLXNjcmVlbnNob3RgLCBgZGV2aWNlLXNldHRpbmdzYCwgYHNvZnQta2V5Ym9hcmRgKTsgdGhleSBhcmUgbm90IGFcbiAqIGdlbmVyYWwtcHVycG9zZSBhZGIgd3JhcHBlciBhbmQgZGVsaWJlcmF0ZWx5IGRvIG5vdCB0cnkgdG8gYmVjb21lIG9uZS5cbiAqXG4gKiBFdmVyeSBmdW5jdGlvbiBoZXJlIHNoZWxscyBvdXQsIHNvIHRoZSB3aG9sZSBtb2R1bGUgaXMgaW50ZWdyYXRpb24tdGltZSBjb2RlLlxuICogVGhhdCBpcyBhbHNvIHdoeSB0aGUgcGFyc2luZyBhbmQgZ2VvbWV0cnkgdGhlc2UgaGVscGVycyBkZXBlbmQgb24gbGl2ZSBpblxuICogdGhlaXIgb3duIG1vZHVsZXMgXHUyMDE0IHRoZSBzYW1lIHNwbGl0IGBhZGItZGV2aWNlLWxpc3RgIGFscmVhZHkgaGFzIGZyb20gdGhlXG4gKiB0cmFuc3BvcnQgZmFjdG9yeSwgc28gYSBzb3J0IHJ1bGUgY2FuIG5ldmVyIG1vdmUgYSB1bml0LXRlc3RlZCBmdW5jdGlvblxuICogaW5zaWRlIGEgY292ZXJhZ2UtaWdub3JlZCBibG9jay5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChzaGVsbHMgb3V0IHRvIGEgcmVhbCBkZXZpY2UpIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJ1bkFkYkJpbmFyeX0gYW5kIHtAbGluayBydW5BZGJUZXh0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5BZGJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwYXNzIGFmdGVyIGAtcyA8ZGV2aWNlSWQ+YCwgZS5nLiBgWydzaGVsbCcsICdpbnB1dCcsICd0YXAnLCAnMTAnLCAnMjAnXWAuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kQXJndW1lbnRzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGRldmljZSB0byBhZGRyZXNzLCBhcyBgYWRiIGRldmljZXNgIGxpc3RzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNjcmVlbmNhcCBvZiBhIDkwMHgxNjAwIGRldmljZSBydW5zIHRvIGFib3V0IDEwMCBLQiwgYnV0IGEgdGFibGV0IEFWRCdzIGZyYW1lYnVmZmVyIGlzIHNldmVyYWwgTUIgYW5kXG4gKiB0aGUgZGVmYXVsdCAxIE1pQiBgbWF4QnVmZmVyYCBmYWlscyB0aGUgY2FsbCByYXRoZXIgdGhhbiByZXR1cm5pbmcgYSB1c2FibGUgaW1hZ2UuXG4gKi9cbmNvbnN0IE9VVFBVVF9NQVhfQlVGRkVSX0lOX0JZVEVTID0gNjdfMTA4Xzg2NDtcblxuLyoqXG4gKiBSdW5zIGBhZGIgLXMgPGRldmljZUlkPiA8Y29tbWFuZEFyZ3VtZW50cz5gIGFuZCByZXR1cm5zIHN0ZG91dCAqKnVuZGVjb2RlZCoqLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZGV2aWNlIGFuZCB0aGUgYXJndW1lbnRzIHRvIHJ1bi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJhdyBzdGRvdXQgYnl0ZXMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFkYiBjb3VsZCBub3QgYmUgcnVuLCBvciBleGl0ZWQgbm9uLXplcm8uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBQZXJtYW5lbnQ6IGBSdW5BZGJQYXJhbXNgIGlzIG9uZSBiYWcgc2hhcmVkIGJ5IGBydW5BZGJCaW5hcnlgIGFuZCBgcnVuQWRiVGV4dGAsIHNvIG5vIHBlci1vd25lciBuYW1lIGNhbiBzYXRpc2Z5IGJvdGguXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQWRiQmluYXJ5KHBhcmFtczogUnVuQWRiUGFyYW1zKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIGNvbnN0IGNvbW1hbmRBcmd1bWVudHMgPSBbJy1zJywgcGFyYW1zLmRldmljZUlkLCAuLi5wYXJhbXMuY29tbWFuZEFyZ3VtZW50c107XG5cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBleGVjRmlsZSgnYWRiJywgY29tbWFuZEFyZ3VtZW50cywgeyBlbmNvZGluZzogJ2J1ZmZlcicsIG1heEJ1ZmZlcjogT1VUUFVUX01BWF9CVUZGRVJfSU5fQllURVMgfSwgKGVycm9yLCBzdGRvdXQpID0+IHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gcnVuICdhZGIgJHtjb21tYW5kQXJndW1lbnRzLmpvaW4oJyAnKX0nOiAke2Vycm9yLm1lc3NhZ2V9LiBJcyBBREIgaW5zdGFsbGVkIGFuZCBpbiBQQVRIP2ApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJ1bnMgYGFkYiAtcyA8ZGV2aWNlSWQ+IDxjb21tYW5kQXJndW1lbnRzPmAgYW5kIHJldHVybnMgc3Rkb3V0IGFzIHRyaW1tZWQgdGV4dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGRldmljZSBhbmQgdGhlIGFyZ3VtZW50cyB0byBydW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHN0ZG91dCwgd2l0aCBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGFkYiBjb3VsZCBub3QgYmUgcnVuLCBvciBleGl0ZWQgbm9uLXplcm8uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBQZXJtYW5lbnQ6IGBSdW5BZGJQYXJhbXNgIGlzIG9uZSBiYWcgc2hhcmVkIGJ5IGBydW5BZGJCaW5hcnlgIGFuZCBgcnVuQWRiVGV4dGAsIHNvIG5vIHBlci1vd25lciBuYW1lIGNhbiBzYXRpc2Z5IGJvdGguXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQWRiVGV4dChwYXJhbXM6IFJ1bkFkYlBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHN0ZG91dCA9IGF3YWl0IHJ1bkFkYkJpbmFyeShwYXJhbXMpO1xuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHN0ZG91dCkudHJpbSgpO1xufVxuXG4vKipcbiAqIFJ1bnMgYGFkYiA8Y29tbWFuZEFyZ3VtZW50cz5gIHdpdGggbm8gZGV2aWNlIHNlbGVjdGVkLlxuICpcbiAqIE9ubHkgYGRldmljZXNgIG5lZWRzIHRoaXMgXHUyMDE0IGV2ZXJ5IG90aGVyIGNhbGwgaW4gdGhpcyBmYW1pbHkgYWRkcmVzc2VzIG9uZSBkZXZpY2UuXG4gKlxuICogQHBhcmFtIGNvbW1hbmRBcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIHRvIHJ1bi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gc3Rkb3V0LCB3aXRoIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYWRiIGNvdWxkIG5vdCBiZSBydW4sIG9yIGV4aXRlZCBub24temVyby5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkFkYlRleHRXaXRob3V0RGV2aWNlKGNvbW1hbmRBcmd1bWVudHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBleGVjRmlsZSgnYWRiJywgWy4uLmNvbW1hbmRBcmd1bWVudHNdLCB7IGVuY29kaW5nOiAndXRmLTgnLCBtYXhCdWZmZXI6IE9VVFBVVF9NQVhfQlVGRkVSX0lOX0JZVEVTIH0sIChlcnJvciwgc3Rkb3V0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIHJ1biAnYWRiICR7Y29tbWFuZEFyZ3VtZW50cy5qb2luKCcgJyl9JzogJHtlcnJvci5tZXNzYWdlfS4gSXMgQURCIGluc3RhbGxlZCBhbmQgaW4gUEFUSD9gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShzdGRvdXQudHJpbSgpKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQSxnQ0FBeUI7QUFxQnpCLE1BQU0sNkJBQTZCO0FBVW5DLGVBQXNCLGFBQWEsUUFBMkM7QUFDNUUsUUFBTSxtQkFBbUIsQ0FBQyxNQUFNLE9BQU8sVUFBVSxHQUFHLE9BQU8sZ0JBQWdCO0FBRTNFLFNBQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDNUMsNENBQVMsT0FBTyxrQkFBa0IsRUFBRSxVQUFVLFVBQVUsV0FBVywyQkFBMkIsR0FBRyxDQUFDLE9BQU8sV0FBVztBQUNsSCxVQUFJLE9BQU87QUFDVCxlQUFPLElBQUksTUFBTSxzQkFBc0IsaUJBQWlCLEtBQUssR0FBRyxDQUFDLE1BQU0sTUFBTSxPQUFPLGlDQUFpQyxDQUFDO0FBQ3RIO0FBQUEsTUFDRjtBQUVBLGNBQVEsTUFBTTtBQUFBLElBQ2hCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQVVBLGVBQXNCLFdBQVcsUUFBdUM7QUFDdEUsUUFBTSxTQUFTLE1BQU0sYUFBYSxNQUFNO0FBQ3hDLFNBQU8sSUFBSSxZQUFZLEVBQUUsT0FBTyxNQUFNLEVBQUUsS0FBSztBQUMvQztBQVdBLGVBQXNCLHdCQUF3QixrQkFBc0Q7QUFDbEcsU0FBTyxNQUFNLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUM1Qyw0Q0FBUyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxFQUFFLFVBQVUsU0FBUyxXQUFXLDJCQUEyQixHQUFHLENBQUMsT0FBTyxXQUFXO0FBQ3RILFVBQUksT0FBTztBQUNULGVBQU8sSUFBSSxNQUFNLHNCQUFzQixpQkFBaUIsS0FBSyxHQUFHLENBQUMsTUFBTSxNQUFNLE9BQU8saUNBQWlDLENBQUM7QUFDdEg7QUFBQSxNQUNGO0FBRUEsY0FBUSxPQUFPLEtBQUssQ0FBQztBQUFBLElBQ3ZCLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -134,4 +134,4 @@ async function withAppConfig(params) {
134
134
  setAppConfig,
135
135
  withAppConfig
136
136
  });
137
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcC1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBOb2RlLXNpZGUgcmVhZC93cml0ZS9yZXN0b3JlIHNlYW0gZm9yIG9uZSBvZiBPYnNpZGlhbidzICoqdmF1bHQgY29uZmlnKioga2V5cyxcbiAqIGZvciB0aGUgZmV3IHRlc3RzIHRoYXQgbmVlZCBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIHRoZSBoYXJuZXNzJ3MgaGVhZGxlc3NcbiAqIGRlZmF1bHQuXG4gKlxuICogYGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWdgIHdyaXRlcyBgYWx3YXlzVXBkYXRlTGlua3M6IHRydWVgIGFuZFxuICogYHNldHRpbmdzUG9wb3V0V2luZG93OiBmYWxzZWAgaW50byBldmVyeSB2YXVsdCB0aGUgaGFybmVzcyBwcm92aXNpb25zLCBiZWZvcmVcbiAqIHRoYXQgdmF1bHQgaXMgZXZlciBvcGVuZWQsIGFuZCBuZWl0aGVyIGlzIGEga25vYiBhIGNvbnN1bWVyIGNvbmZpZ3VyZXMgXHUyMDE0IHNlZVxuICogdGhlIHByb2plY3QgYEFHRU5UUy5tZGAgKCoqTDQ4KiopLiBUaGF0IGlzIHJpZ2h0IGZvciBhbG1vc3QgZXZlcnkgdGVzdCwgYW5kXG4gKiB3cm9uZyBmb3IgdGhlIGZldyB3aG9zZSAqKnN1YmplY3QgaXMqKiB0aGUgc2Vjb25kIEVsZWN0cm9uIHdpbmRvdyB0aGUgcG9wb3V0XG4gKiBjcmVhdGVzOiBhIHRlc3QgdGhhdCB3YWl0cyBvbiBgYWN0aXZlV2luZG93ICE9PSB3aW5kb3dgLCBvciByZWFkc1xuICogYGFwcC5zZXR0aW5nLnBvcG91dGAsIG5ldmVyIG9ic2VydmVzIHRoZSB0aGluZyBpdCBhc3NlcnRzIGFuZCBzaW1wbHkgdGltZXMgb3V0LlxuICpcbiAqIFRob3NlIHRlc3RzIG9wdCBiYWNrIGluIHRocm91Z2ggaGVyZSByYXRoZXIgdGhhbiBieSBoYW5kLCB3aGljaCBidXlzIHRocmVlXG4gKiB0aGluZ3Mgb3ZlciBhbiBpbmxpbmUgYHNldENvbmZpZ2AgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZTpcbiAqXG4gKiAtICoqVGhlIHZhbHVlIGlzIHJlc3RvcmVkKiosIGluY2x1ZGluZyBkZWxldGluZyBhIGtleSB0aGF0IGhhZCBuZXZlciBiZWVuXG4gKiAgIHdyaXR0ZW4uIEFuIGlubGluZSBzZXR0ZXIgd3JpdGVzIGludG8gYSB2YXVsdCBzaGFyZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGVcbiAqICAgcnVuLCBzbyBldmVyeSBsYXRlciB0ZXN0IGluIHRoYXQgaW5zdGFuY2UgaW5oZXJpdHMgdGhlIGNoYW5nZSBcdTIwMTQgdGhlXG4gKiAgIGNyb3NzLXRlc3QgY29udGFtaW5hdGlvbiB0aGUgdW5jb25kaXRpb25hbCBkZWZhdWx0IGV4aXN0cyB0byBlbmQuXG4gKiAtICoqVGhlIGNhc3QgbGl2ZXMgaW4gb25lIHBsYWNlLioqIGBvYnNpZGlhbi10eXBpbmdzYCcgYENvbmZpZ0l0ZW1gIHVuaW9uIG9taXRzXG4gKiAgIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AsIHNvIHRoZSBrZXkgY2Fubm90IGJlIHBhc3NlZCB0byBgZ2V0Q29uZmlnYCAvXG4gKiAgIGBzZXRDb25maWdgIHdpdGhvdXQgd2lkZW5pbmcgdGhlbTsgZXZlcnkgY29uc3VtZXIgdGhhdCB3cm90ZSB0aGUgc2V0dGVyXG4gKiAgIGlubGluZSByZXBlYXRlZCB0aGF0IGNhc3QuXG4gKiAtICoqUGVyLXRlc3QgZ3JhbnVsYXJpdHkuKiogQSBwYXJhbWV0ZXIgb24gdGhlIHByb3Zpc2lvbmluZyB3cml0ZSB3b3VsZCBiZVxuICogICBwZXItdmF1bHQsIGFuZCBhIHByb2plY3Qgd2hvc2UgdGVzdHMgc2hhcmUgb25lIHZhdWx0IFx1MjAxNCB0aGUgdXN1YWwgc2hhcGUgXHUyMDE0XG4gKiAgIGNhbm5vdCBoYXZlIGl0IGJvdGggd2F5cy5cbiAqXG4gKiBFdmVyeXRoaW5nIGhlcmUgcnVucyBvbiB0aGUgKipOb2RlKiogc2lkZS4gQW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsYmFjayBpc1xuICogc2VyaWFsaXplZCBpbnRvIHRoZSBkcml2ZW4gT2JzaWRpYW4gYW5kIGNhbiBpbXBvcnQgbm90aGluZywgc28gYSBoZWxwZXJcbiAqIGNhbGxhYmxlIGZyb20gaW5zaWRlIG9uZSBpcyBub3QgZXhwcmVzc2libGU7IGVhY2ggZnVuY3Rpb24gYmVsb3cgaXMgaXRzIG93blxuICogc2hvcnQgZXZhbCBpbnN0ZWFkLlxuICpcbiAqICMjIyBXaHkgcHJlc2VuY2UgaXMgcmVhZCBvZmYgYGFwcC52YXVsdC5jb25maWdgLCBub3QgZnJvbSBgZ2V0Q29uZmlnYFxuICpcbiAqIEJvdGggZmFjdHMgd2VyZSB2ZXJpZmllZCBpbiB0aGUgc2hpcHBlZCAxLjE0LjEgYnVuZGxlIHJhdGhlciB0aGFuIGFzc3VtZWQ6XG4gKlxuICogLSBgVmF1bHQuc2V0Q29uZmlnKGtleSwgdmFsdWUpYCAqKmRlbGV0ZXMqKiB0aGUga2V5IHdoZW4gYHZhbHVlYCBpc1xuICogICBgdW5kZWZpbmVkYCwgYW5kIGRvZXMgbm90aGluZyBhdCBhbGwgd2hlbiB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkIChubyBzYXZlLFxuICogICBubyBgY29uZmlnLWNoYW5nZWRgIGV2ZW50KS4gU28gYW4gZXhhY3QgcmVzdG9yZSBvZiBhIGtleSB0aGF0IHdhcyBuZXZlclxuICogICB3cml0dGVuIGlzIGV4cHJlc3NpYmxlLlxuICogLSBgVmF1bHQuZ2V0Q29uZmlnKGtleSlgIGZhbGxzIGJhY2sgdG8gT2JzaWRpYW4ncyBkZWZhdWx0cyB0YWJsZSB3aGVuIHRoZSBrZXlcbiAqICAgaXMgYWJzZW50LCBzbyBpdCBjYW5ub3QgdGVsbCAqdW5zZXQqIGZyb20gKnNldCB0byB0aGUgc2hpcHBlZCBkZWZhdWx0KiBcdTIwMTRcbiAqICAgcmVzdG9yaW5nIGZyb20gaXQgd291bGQgbGVhdmUgdGhlIGtleSB3cml0dGVuIHdoZXJlIGl0IGhhZCBub3QgYmVlbi5cbiAqICAgYGFwcC52YXVsdC5jb25maWdgIGhvbGRzIG9ubHkgdGhlIGtleXMgY2hhbmdlZCBmcm9tIHRoZWlyIGRlZmF1bHQsIHNvXG4gKiAgIGBPYmplY3QuaGFzT3duYCBvbiBpdCBpcyB0aGUgc2lnbmFsIGEgcmVzdG9yZSBuZWVkcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChkcml2ZXMgYSBsaXZlIE9ic2lkaWFuIHZpYSBldmFsSW5PYnNpZGlhbikgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3Rcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQuY2pzJztcblxuaW1wb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJy4vbm9ybWFsaXplLW9wdGlvbmFsLXByb3BlcnRpZXMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXBwQ29uZmlnfSwgYW5kIHRoZSBzaGFyZWQgc2hhcGUgb2YgdGhlIHdyaXRlcnMgYmVsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBjb25maWcga2V5LCBlLmcuIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AuIE5vdCBuYXJyb3dlZCB0b1xuICAgKiBgb2JzaWRpYW4tdHlwaW5nc2AnIGBDb25maWdJdGVtYDogdGhhdCB1bmlvbiBvbWl0cyBrZXlzIE9ic2lkaWFuIHJlYWxseVxuICAgKiByZWFkcywgYHNldHRpbmdzUG9wb3V0V2luZG93YCBhbW9uZyB0aGVtLCB3aGljaCBpcyB0aGUgd2hvbGUgcmVhc29uIGFcbiAgICogY29uc3VtZXIgaGFkIHRvIHdpZGVuIHRoZSBzZXR0ZXIgYnkgaGFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0tleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJhbnNwb3J0LiBXaGVuIG9taXR0ZWQsIHRoZSB0cmFuc3BvcnQgdGhlIGN1cnJlbnQgdGVzdFxuICAgKiBjb250ZXh0IGlzIGRyaXZpbmcgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydD86IE9ic2lkaWFuVHJhbnNwb3J0O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgd2hvc2UgT2JzaWRpYW4gaW5zdGFuY2UgdG8gcmVhZCBvciB3cml0ZS4gV2hlbiBvbWl0dGVkLCB0aGVcbiAgICogY3VycmVudCB0ZXN0IGNvbnRleHQncyB2YXVsdCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoYXQge0BsaW5rIHNldEFwcENvbmZpZ30gY2FwdHVyZWQgYmVmb3JlIGl0IHdyb3RlLCBhbmQgYWxsXG4gKiB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30gbmVlZHMgdG8gcHV0IHRoZSBrZXkgYmFjayBleGFjdGx5IGFzIGl0IHdhcyBcdTIwMTRcbiAqIGluY2x1ZGluZyBwdXR0aW5nIGl0IGJhY2sgdG8gKmFic2VudCouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUmVzdG9yZSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRoYXQgd2FzIHdyaXR0ZW4uXG4gICAqL1xuICByZWFkb25seSBjb25maWdLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmF1bHQncyBjb25maWcgY2FycmllZCB0aGUga2V5IGF0IGFsbCBiZWZvcmUgdGhlIHdyaXRlLiBgZmFsc2VgXG4gICAqIG1lYW5zIHRoZSB2YXVsdCB3YXMgcnVubmluZyBvbiBPYnNpZGlhbidzIG93biBkZWZhdWx0LCBhbmQgcmVzdG9yaW5nIGlzIGFcbiAgICogZGVsZXRlIHJhdGhlciB0aGFuIGEgd3JpdGUuXG4gICAqL1xuICByZWFkb25seSBpc1ByZXNlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc3BvcnQgdGhlIGNhcHR1cmUgd2FzIG1hZGUgYWdhaW5zdCwgc28gdGhlIHJlc3RvcmUgbGFuZHMgaW4gdGhlXG4gICAqIHNhbWUgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSBrZXkgaGVsZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB7QGxpbmsgaXNQcmVzZW50fSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0aGUgY2FwdHVyZSB3YXMgbWFkZSBhZ2FpbnN0LCBzbyB0aGUgcmVzdG9yZSBsYW5kcyBpbiB0aGUgc2FtZVxuICAgKiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc2V0QXBwQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBcHBDb25maWdQYXJhbXMgZXh0ZW5kcyBBcHBDb25maWdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRvIHdyaXRlLiBgdW5kZWZpbmVkYCBkZWxldGVzIHRoZSBrZXksIGxlYXZpbmcgT2JzaWRpYW4ncyBvd25cbiAgICogZGVmYXVsdCBpbiBmb3JjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3aXRoQXBwQ29uZmlnfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBXaGF0IHRoZSB3cmFwcGVkIHdvcmsgcmV0dXJucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+IGV4dGVuZHMgU2V0QXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrIHRvIHJ1biB3aGlsZSB0aGUga2V5IGhvbGRzIHtAbGluayBTZXRBcHBDb25maWdQYXJhbXMudmFsdWV9LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FsbGJhY2s6ICh0aGlzOiB2b2lkKSA9PiBQcm9taXNlPFQ+O1xufVxuXG4vKipcbiAqIFdoYXQgYSB3cml0ZSBjYXB0dXJlZCBhYm91dCB0aGUga2V5J3Mgc3RhdGUgYmVmb3JlIGl0IHdyb3RlLlxuICovXG5pbnRlcmZhY2UgQ2FwdHVyZWRWYWx1ZSB7XG4gIGlzUHJlc2VudDogYm9vbGVhbjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHJlYWQuXG4gKi9cbmludGVyZmFjZSBSZWFkSW5wdXQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0IHtcbiAgY29uZmlnS2V5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHJlc3RvcmUuXG4gKi9cbmludGVyZmFjZSBSZXN0b3JlSW5wdXQgZXh0ZW5kcyBHZW5lcmljT2JqZWN0IHtcbiAgY29uZmlnS2V5OiBzdHJpbmc7XG4gIGlzUHJlc2VudDogYm9vbGVhbjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBvZiBhIHdyaXRlLlxuICovXG5pbnRlcmZhY2UgV3JpdGVJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3Qge1xuICBjb25maWdLZXk6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogUmVhZHMgYSB2YXVsdCBjb25maWcga2V5LCByZXNvbHZpbmcgdGhlIHRyYW5zcG9ydCBhbmQgdmF1bHQgZnJvbSB0aGUgY3VycmVudFxuICogdGVzdCBjb250ZXh0LlxuICpcbiAqIFRoaXMgaXMgT2JzaWRpYW4ncyBvd24gYFZhdWx0LmdldENvbmZpZ2AsIHNvIGFuIGFic2VudCBrZXkgcmVhZHMgYmFjayBhc1xuICogT2JzaWRpYW4ncyAqKmRlZmF1bHQqKiBmb3IgaXQgcmF0aGVyIHRoYW4gYXMgYHVuZGVmaW5lZGAgXHUyMDE0IHNlZSB0aGlzIGZpbGUnc1xuICogaGVhZGVyLiBVc2Uge0BsaW5rIHNldEFwcENvbmZpZ30ncyB7QGxpbmsgQXBwQ29uZmlnUmVzdG9yZS5pc1ByZXNlbnR9IHdoZW4gdGhlXG4gKiBkaWZmZXJlbmNlIG1hdHRlcnMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBrZXkgdG8gcmVhZCwgYW5kIHRyYW5zcG9ydCAvIHZhdWx0IG92ZXJyaWRlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUga2V5J3MgZWZmZWN0aXZlIHZhbHVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQ29uZmlnKHBhcmFtczogQXBwQ29uZmlnUGFyYW1zKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHtcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIHJldHVybiBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8UmVhZElucHV0LCB1bmtub3duPj4oe1xuICAgIGNhbGxiYWNrKHsgYXBwLCBjb25maWdLZXk6IGtleSB9KTogdW5rbm93biB7XG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICByZXR1cm4gZ2V0Q29uZmlnKGtleSk7XG4gICAgfSxcbiAgICBpbnB1dDogeyBjb25maWdLZXkgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBQdXRzIGEga2V5IGJhY2sgZXhhY3RseSBhcyB7QGxpbmsgc2V0QXBwQ29uZmlnfSBmb3VuZCBpdCBcdTIwMTQgd3JpdGluZyB0aGUgY2FwdHVyZWRcbiAqIHZhbHVlIGJhY2ssIG9yICoqZGVsZXRpbmcqKiB0aGUga2V5IHdoZW4gdGhlIHZhdWx0IGhhZCBuZXZlciBjYXJyaWVkIGl0LlxuICpcbiAqIFRoZSBgYmVmb3JlQWxsYCAvIGBhZnRlckFsbGAgaGFsZiBvZiB0aGUgc2VhbS4gQSB0ZXN0IHRoYXQgc2NvcGVzIHRoZSBjaGFuZ2VcbiAqIHRvIG9uZSBjYWxsYmFjayB3YW50cyB7QGxpbmsgd2l0aEFwcENvbmZpZ30gaW5zdGVhZCwgd2hpY2ggY2Fubm90IGZvcmdldCB0aGVcbiAqIHJlc3RvcmUuXG4gKlxuICogQHBhcmFtIHJlc3RvcmUgLSBUaGUgdG9rZW4ge0BsaW5rIHNldEFwcENvbmZpZ30gcmV0dXJuZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGtleSBpcyBiYWNrIGFzIGl0IHdhcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVBcHBDb25maWcocmVzdG9yZTogQXBwQ29uZmlnUmVzdG9yZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgY29uZmlnS2V5LFxuICAgIGlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSByZXN0b3JlO1xuXG4gIGF3YWl0IGV2YWxJbk9ic2lkaWFuKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFdmFsSW5PYnNpZGlhblBhcmFtczxSZXN0b3JlSW5wdXQsIHVuZGVmaW5lZD4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIGlzUHJlc2VudDogd2FzUHJlc2VudCxcbiAgICAgIHZhbHVlOiBwcmV2aW91c1ZhbHVlXG4gICAgfSk6IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBzZXRDb25maWcgPSBhcHAudmF1bHQuc2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gICAgICAvLyBgdW5kZWZpbmVkYCBpcyBub3QgYSBuby1vcCBoZXJlOiBgc2V0Q29uZmlnYCBkZWxldGVzIHRoZSBrZXkgZm9yIGl0LFxuICAgICAgLy8gV2hpY2ggaXMgdGhlIG9ubHkgd2F5IHRvIHJlc3RvcmUgb25lIHRoZSB2YXVsdCBuZXZlciBjYXJyaWVkLlxuICAgICAgc2V0Q29uZmlnKGtleSwgd2FzUHJlc2VudCA/IHByZXZpb3VzVmFsdWUgOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGNvbmZpZ0tleSxcbiAgICAgIGlzUHJlc2VudCxcbiAgICAgIHZhbHVlXG4gICAgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgYSB2YXVsdCBjb25maWcga2V5LCBjYXB0dXJpbmcgd2hhdCBpdCBoZWxkIGZpcnN0IHNvIHRoZSB3cml0ZSBjYW4gYmVcbiAqIHVuZG9uZSBleGFjdGx5LlxuICpcbiAqIE9ic2lkaWFuIHBlcnNpc3RzIHRoZSBjaGFuZ2UgKGByZXF1ZXN0U2F2ZUNvbmZpZ2ApIGFuZCBmaXJlcyBpdHNcbiAqIGBjb25maWctY2hhbmdlZGAgZXZlbnQsIGJvdGggb2Ygd2hpY2ggdGhlIGFwcCdzIG93biBzZXR0aW5ncyBVSSBkb2VzIHRvbyBcdTIwMTQgc29cbiAqIGFueXRoaW5nIGxpc3RlbmluZyByZWFjdHMgYXMgaXQgd291bGQgdG8gYSB1c2VyIGZsaXBwaW5nIHRoZSB0b2dnbGUuIEEgd3JpdGVcbiAqIG9mIHRoZSB2YWx1ZSB0aGUga2V5IGFscmVhZHkgaG9sZHMgaXMgYSBuby1vcCBpbiBPYnNpZGlhbiBpdHNlbGYsIGFuZCB0aGVcbiAqIHJldHVybmVkIHRva2VuIHN0aWxsIGRlc2NyaWJlcyB0aGUgc3RhdGUgdGhhdCBwcmVjZWRlZCBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlLCBhbmQgdHJhbnNwb3J0IC8gdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSB7QGxpbmsgQXBwQ29uZmlnUmVzdG9yZX0gdG9rZW4gdG9cbiAqICAgaGFuZCB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRBcHBDb25maWcocGFyYW1zOiBTZXRBcHBDb25maWdQYXJhbXMpOiBQcm9taXNlPEFwcENvbmZpZ1Jlc3RvcmU+IHtcbiAgY29uc3Qge1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY2FwdHVyZWQgPSBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8V3JpdGVJbnB1dCwgQ2FwdHVyZWRWYWx1ZT4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIHZhbHVlOiBuZXdWYWx1ZVxuICAgIH0pOiBDYXB0dXJlZFZhbHVlIHtcbiAgICAgIC8vIGBjb25maWdgIGNhcnJpZXMgT05MWSB0aGUga2V5cyBjaGFuZ2VkIGZyb20gdGhlaXIgZGVmYXVsdCwgd2hpY2ggaXMgd2hhdFxuICAgICAgLy8gTWFrZXMgaXQgdGhlIHByZXNlbmNlIHNpZ25hbDsgYGdldENvbmZpZ2Agc3Vic3RpdHV0ZXMgdGhlIGRlZmF1bHQgYW5kIHNvXG4gICAgICAvLyBDYW5ub3QgdGVsbCBhbiB1bnNldCBrZXkgZnJvbSBvbmUgc2V0IHRvIHRoYXQgZGVmYXVsdC4gVGhlIHZhbHVlIGl0c2VsZlxuICAgICAgLy8gU3RpbGwgY29tZXMgZnJvbSBgZ2V0Q29uZmlnYCwgd2hpY2ggcmV0dXJucyB0aGUgc3RvcmVkIG9uZSB3aGVuZXZlclxuICAgICAgLy8gVGhlcmUgaXMgb25lIFx1MjAxNCBzbyB0aGUgcmVhZCBuZWVkcyBubyBjYXN0IG9mIHRoZSBjb25maWcgb2JqZWN0LlxuICAgICAgY29uc3QgaXNQcmVzZW50ID0gT2JqZWN0Lmhhc093bihhcHAudmF1bHQuY29uZmlnLCBrZXkpO1xuXG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gaXNQcmVzZW50ID8gZ2V0Q29uZmlnKGtleSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHNldENvbmZpZyA9IGFwcC52YXVsdC5zZXRDb25maWcuYmluZChhcHAudmF1bHQpIGFzIChjb25maWdLZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gICAgICBzZXRDb25maWcoa2V5LCBuZXdWYWx1ZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudCxcbiAgICAgICAgdmFsdWU6IHByZXZpb3VzVmFsdWVcbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgY29uZmlnS2V5LFxuICAgICAgdmFsdWVcbiAgICB9LFxuICAgIHRyYW5zcG9ydCxcbiAgICB2YXVsdFBhdGhcbiAgfSkpO1xuXG4gIHJldHVybiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QXBwQ29uZmlnUmVzdG9yZT4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICBpc1ByZXNlbnQ6IGNhcHR1cmVkLmlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWU6IGNhcHR1cmVkLnZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHdvcmsgd2l0aCBhIHZhdWx0IGNvbmZpZyBrZXkgdGVtcG9yYXJpbHkgc2V0LCBhbmQgcHV0cyB0aGUga2V5IGJhY2tcbiAqIGFmdGVyd2FyZHMgXHUyMDE0IG9uIGEgdGhyb3cgYXMgbXVjaCBhcyBvbiBhIHJldHVybi5cbiAqXG4gKiBUaGUgc2hhcGUgYSBwb3BvdXQtc3ViamVjdCB0ZXN0IHdhbnRzOlxuICpcbiAqIGBgYHRzXG4gKiBhd2FpdCB3aXRoQXBwQ29uZmlnKHtcbiAqICAgYXN5bmMgY2FsbGJhY2soKSB7XG4gKiAgICAgYXdhaXQgZXZhbEluT2JzaWRpYW4oeyAuLi4gfSk7IC8vIHRoZSBzZXR0aW5ncyB3aW5kb3cgaXMgYSBwb3BvdXQgaW4gaGVyZVxuICogICB9LFxuICogICBjb25maWdLZXk6ICdzZXR0aW5nc1BvcG91dFdpbmRvdycsXG4gKiAgIHZhbHVlOiB0cnVlLFxuICogICB2YXVsdFBhdGhcbiAqIH0pO1xuICogYGBgXG4gKlxuICogVGhlIGNhbGxiYWNrIHJ1bnMgb24gdGhlICoqTm9kZSoqIHNpZGUsIHNvIGl0IGlzIGZyZWUgdG8gbWFrZSBzZXZlcmFsIGV2YWxzLFxuICogdGFrZSBhIHNjcmVlbnNob3QsIG9yIGFzc2VydCBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gV2hhdCB0aGUgd3JhcHBlZCB3b3JrIHJldHVybnMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlIHRvIGhvbGQgaXQgYXQsIHRoZSB3b3JrLCBhbmQgdHJhbnNwb3J0IC9cbiAqICAgdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHdoYXRldmVyIHRoZSBjYWxsYmFjayByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhBcHBDb25maWc8VD4ocGFyYW1zOiBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHtcbiAgICBjYWxsYmFjayxcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHJlc3RvcmUgPSBhd2FpdCBzZXRBcHBDb25maWcobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFNldEFwcENvbmZpZ1BhcmFtcz4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlc3RvcmVBcHBDb25maWcocmVzdG9yZSk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwREEsOEJBQStCO0FBQy9CLDJDQUE0QztBQWtJNUMsZUFBc0IsYUFBYSxRQUEyQztBQUM1RSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosU0FBTyxVQUFNLDRDQUFlLGtFQUFzRTtBQUFBLElBQ2hHLFNBQVMsRUFBRSxLQUFLLFdBQVcsSUFBSSxHQUFZO0FBQ3pDLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUNwRCxhQUFPLFVBQVUsR0FBRztBQUFBLElBQ3RCO0FBQUEsSUFDQSxPQUFPLEVBQUUsVUFBVTtBQUFBLElBQ25CO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFhQSxlQUFzQixpQkFBaUIsU0FBMEM7QUFDL0UsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosWUFBTSw0Q0FBZSxrRUFBMkU7QUFBQSxJQUM5RixTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLElBQ1QsR0FBYztBQUNaLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUlwRCxnQkFBVSxLQUFLLGFBQWEsZ0JBQWdCLE1BQVM7QUFBQSxJQUN2RDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFnQkEsZUFBc0IsYUFBYSxRQUF1RDtBQUN4RixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sV0FBVyxVQUFNLDRDQUFlLGtFQUE2RTtBQUFBLElBQ2pILFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxPQUFPO0FBQUEsSUFDVCxHQUFrQjtBQU1oQixZQUFNLFlBQVksT0FBTyxPQUFPLElBQUksTUFBTSxRQUFRLEdBQUc7QUFFckQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELFlBQU0sZ0JBQWdCLFlBQVksVUFBVSxHQUFHLElBQUk7QUFFbkQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELGdCQUFVLEtBQUssUUFBUTtBQUV2QixhQUFPO0FBQUEsUUFDTDtBQUFBLFFBQ0EsT0FBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUMsQ0FBQztBQUVGLGFBQU8sa0VBQThDO0FBQUEsSUFDbkQ7QUFBQSxJQUNBLFdBQVcsU0FBUztBQUFBLElBQ3BCO0FBQUEsSUFDQSxPQUFPLFNBQVM7QUFBQSxJQUNoQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBMkJBLGVBQXNCLGNBQWlCLFFBQTRDO0FBQ2pGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sVUFBVSxNQUFNLGlCQUFhLGtFQUFnRDtBQUFBLElBQ2pGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDLENBQUM7QUFFRixNQUFJO0FBQ0YsV0FBTyxNQUFNLFNBQVM7QUFBQSxFQUN4QixVQUFFO0FBQ0EsVUFBTSxpQkFBaUIsT0FBTztBQUFBLEVBQ2hDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
137
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcC1jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBOb2RlLXNpZGUgcmVhZC93cml0ZS9yZXN0b3JlIHNlYW0gZm9yIG9uZSBvZiBPYnNpZGlhbidzICoqdmF1bHQgY29uZmlnKioga2V5cyxcbiAqIGZvciB0aGUgZmV3IHRlc3RzIHRoYXQgbmVlZCBhIGRpZmZlcmVudCB2YWx1ZSB0aGFuIHRoZSBoYXJuZXNzJ3MgaGVhZGxlc3NcbiAqIGRlZmF1bHQuXG4gKlxuICogYGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWdgIHdyaXRlcyBgYWx3YXlzVXBkYXRlTGlua3M6IHRydWVgIGFuZFxuICogYHNldHRpbmdzUG9wb3V0V2luZG93OiBmYWxzZWAgaW50byBldmVyeSB2YXVsdCB0aGUgaGFybmVzcyBwcm92aXNpb25zLCBiZWZvcmVcbiAqIHRoYXQgdmF1bHQgaXMgZXZlciBvcGVuZWQsIGFuZCBuZWl0aGVyIGlzIGEga25vYiBhIGNvbnN1bWVyIGNvbmZpZ3VyZXMgXHUyMDE0IHNlZVxuICogdGhlIHByb2plY3QgYEFHRU5UUy5tZGAgKCoqTDQ4KiopLiBUaGF0IGlzIHJpZ2h0IGZvciBhbG1vc3QgZXZlcnkgdGVzdCwgYW5kXG4gKiB3cm9uZyBmb3IgdGhlIGZldyB3aG9zZSAqKnN1YmplY3QgaXMqKiB0aGUgc2Vjb25kIEVsZWN0cm9uIHdpbmRvdyB0aGUgcG9wb3V0XG4gKiBjcmVhdGVzOiBhIHRlc3QgdGhhdCB3YWl0cyBvbiBgYWN0aXZlV2luZG93ICE9PSB3aW5kb3dgLCBvciByZWFkc1xuICogYGFwcC5zZXR0aW5nLnBvcG91dGAsIG5ldmVyIG9ic2VydmVzIHRoZSB0aGluZyBpdCBhc3NlcnRzIGFuZCBzaW1wbHkgdGltZXMgb3V0LlxuICpcbiAqIFRob3NlIHRlc3RzIG9wdCBiYWNrIGluIHRocm91Z2ggaGVyZSByYXRoZXIgdGhhbiBieSBoYW5kLCB3aGljaCBidXlzIHRocmVlXG4gKiB0aGluZ3Mgb3ZlciBhbiBpbmxpbmUgYHNldENvbmZpZ2AgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZTpcbiAqXG4gKiAtICoqVGhlIHZhbHVlIGlzIHJlc3RvcmVkKiosIGluY2x1ZGluZyBkZWxldGluZyBhIGtleSB0aGF0IGhhZCBuZXZlciBiZWVuXG4gKiAgIHdyaXR0ZW4uIEFuIGlubGluZSBzZXR0ZXIgd3JpdGVzIGludG8gYSB2YXVsdCBzaGFyZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGVcbiAqICAgcnVuLCBzbyBldmVyeSBsYXRlciB0ZXN0IGluIHRoYXQgaW5zdGFuY2UgaW5oZXJpdHMgdGhlIGNoYW5nZSBcdTIwMTQgdGhlXG4gKiAgIGNyb3NzLXRlc3QgY29udGFtaW5hdGlvbiB0aGUgdW5jb25kaXRpb25hbCBkZWZhdWx0IGV4aXN0cyB0byBlbmQuXG4gKiAtICoqVGhlIGNhc3QgbGl2ZXMgaW4gb25lIHBsYWNlLioqIGBvYnNpZGlhbi10eXBpbmdzYCcgYENvbmZpZ0l0ZW1gIHVuaW9uIG9taXRzXG4gKiAgIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AsIHNvIHRoZSBrZXkgY2Fubm90IGJlIHBhc3NlZCB0byBgZ2V0Q29uZmlnYCAvXG4gKiAgIGBzZXRDb25maWdgIHdpdGhvdXQgd2lkZW5pbmcgdGhlbTsgZXZlcnkgY29uc3VtZXIgdGhhdCB3cm90ZSB0aGUgc2V0dGVyXG4gKiAgIGlubGluZSByZXBlYXRlZCB0aGF0IGNhc3QuXG4gKiAtICoqUGVyLXRlc3QgZ3JhbnVsYXJpdHkuKiogQSBwYXJhbWV0ZXIgb24gdGhlIHByb3Zpc2lvbmluZyB3cml0ZSB3b3VsZCBiZVxuICogICBwZXItdmF1bHQsIGFuZCBhIHByb2plY3Qgd2hvc2UgdGVzdHMgc2hhcmUgb25lIHZhdWx0IFx1MjAxNCB0aGUgdXN1YWwgc2hhcGUgXHUyMDE0XG4gKiAgIGNhbm5vdCBoYXZlIGl0IGJvdGggd2F5cy5cbiAqXG4gKiBFdmVyeXRoaW5nIGhlcmUgcnVucyBvbiB0aGUgKipOb2RlKiogc2lkZS4gQW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsYmFjayBpc1xuICogc2VyaWFsaXplZCBpbnRvIHRoZSBkcml2ZW4gT2JzaWRpYW4gYW5kIGNhbiBpbXBvcnQgbm90aGluZywgc28gYSBoZWxwZXJcbiAqIGNhbGxhYmxlIGZyb20gaW5zaWRlIG9uZSBpcyBub3QgZXhwcmVzc2libGU7IGVhY2ggZnVuY3Rpb24gYmVsb3cgaXMgaXRzIG93blxuICogc2hvcnQgZXZhbCBpbnN0ZWFkLlxuICpcbiAqICMjIyBXaHkgcHJlc2VuY2UgaXMgcmVhZCBvZmYgYGFwcC52YXVsdC5jb25maWdgLCBub3QgZnJvbSBgZ2V0Q29uZmlnYFxuICpcbiAqIEJvdGggZmFjdHMgd2VyZSB2ZXJpZmllZCBpbiB0aGUgc2hpcHBlZCAxLjE0LjEgYnVuZGxlIHJhdGhlciB0aGFuIGFzc3VtZWQ6XG4gKlxuICogLSBgVmF1bHQuc2V0Q29uZmlnKGtleSwgdmFsdWUpYCAqKmRlbGV0ZXMqKiB0aGUga2V5IHdoZW4gYHZhbHVlYCBpc1xuICogICBgdW5kZWZpbmVkYCwgYW5kIGRvZXMgbm90aGluZyBhdCBhbGwgd2hlbiB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkIChubyBzYXZlLFxuICogICBubyBgY29uZmlnLWNoYW5nZWRgIGV2ZW50KS4gU28gYW4gZXhhY3QgcmVzdG9yZSBvZiBhIGtleSB0aGF0IHdhcyBuZXZlclxuICogICB3cml0dGVuIGlzIGV4cHJlc3NpYmxlLlxuICogLSBgVmF1bHQuZ2V0Q29uZmlnKGtleSlgIGZhbGxzIGJhY2sgdG8gT2JzaWRpYW4ncyBkZWZhdWx0cyB0YWJsZSB3aGVuIHRoZSBrZXlcbiAqICAgaXMgYWJzZW50LCBzbyBpdCBjYW5ub3QgdGVsbCAqdW5zZXQqIGZyb20gKnNldCB0byB0aGUgc2hpcHBlZCBkZWZhdWx0KiBcdTIwMTRcbiAqICAgcmVzdG9yaW5nIGZyb20gaXQgd291bGQgbGVhdmUgdGhlIGtleSB3cml0dGVuIHdoZXJlIGl0IGhhZCBub3QgYmVlbi5cbiAqICAgYGFwcC52YXVsdC5jb25maWdgIGhvbGRzIG9ubHkgdGhlIGtleXMgY2hhbmdlZCBmcm9tIHRoZWlyIGRlZmF1bHQsIHNvXG4gKiAgIGBPYmplY3QuaGFzT3duYCBvbiBpdCBpcyB0aGUgc2lnbmFsIGEgcmVzdG9yZSBuZWVkcy5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChkcml2ZXMgYSBsaXZlIE9ic2lkaWFuIHZpYSBldmFsSW5PYnNpZGlhbikgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRXZhbEluT2JzaWRpYW5QYXJhbXMsXG4gIEdlbmVyaWNPYmplY3Rcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQuY2pzJztcblxuaW1wb3J0IHsgZXZhbEluT2JzaWRpYW4gfSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJy4vbm9ybWFsaXplLW9wdGlvbmFsLXByb3BlcnRpZXMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXBwQ29uZmlnfSwgYW5kIHRoZSBzaGFyZWQgc2hhcGUgb2YgdGhlIHdyaXRlcnMgYmVsb3cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBjb25maWcga2V5LCBlLmcuIGBzZXR0aW5nc1BvcG91dFdpbmRvd2AuIE5vdCBuYXJyb3dlZCB0b1xuICAgKiBgb2JzaWRpYW4tdHlwaW5nc2AnIGBDb25maWdJdGVtYDogdGhhdCB1bmlvbiBvbWl0cyBrZXlzIE9ic2lkaWFuIHJlYWxseVxuICAgKiByZWFkcywgYHNldHRpbmdzUG9wb3V0V2luZG93YCBhbW9uZyB0aGVtLCB3aGljaCBpcyB0aGUgd2hvbGUgcmVhc29uIGFcbiAgICogY29uc3VtZXIgaGFkIHRvIHdpZGVuIHRoZSBzZXR0ZXIgYnkgaGFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZpZ0tleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJhbnNwb3J0LiBXaGVuIG9taXR0ZWQsIHRoZSB0cmFuc3BvcnQgdGhlIGN1cnJlbnQgdGVzdFxuICAgKiBjb250ZXh0IGlzIGRyaXZpbmcgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydD86IE9ic2lkaWFuVHJhbnNwb3J0O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgd2hvc2UgT2JzaWRpYW4gaW5zdGFuY2UgdG8gcmVhZCBvciB3cml0ZS4gV2hlbiBvbWl0dGVkLCB0aGVcbiAgICogY3VycmVudCB0ZXN0IGNvbnRleHQncyB2YXVsdCBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoYXQge0BsaW5rIHNldEFwcENvbmZpZ30gY2FwdHVyZWQgYmVmb3JlIGl0IHdyb3RlLCBhbmQgYWxsXG4gKiB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30gbmVlZHMgdG8gcHV0IHRoZSBrZXkgYmFjayBleGFjdGx5IGFzIGl0IHdhcyBcdTIwMTRcbiAqIGluY2x1ZGluZyBwdXR0aW5nIGl0IGJhY2sgdG8gKmFic2VudCouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnUmVzdG9yZSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRoYXQgd2FzIHdyaXR0ZW4uXG4gICAqL1xuICByZWFkb25seSBjb25maWdLZXk6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdmF1bHQncyBjb25maWcgY2FycmllZCB0aGUga2V5IGF0IGFsbCBiZWZvcmUgdGhlIHdyaXRlLiBgZmFsc2VgXG4gICAqIG1lYW5zIHRoZSB2YXVsdCB3YXMgcnVubmluZyBvbiBPYnNpZGlhbidzIG93biBkZWZhdWx0LCBhbmQgcmVzdG9yaW5nIGlzIGFcbiAgICogZGVsZXRlIHJhdGhlciB0aGFuIGEgd3JpdGUuXG4gICAqL1xuICByZWFkb25seSBpc1ByZXNlbnQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc3BvcnQgdGhlIGNhcHR1cmUgd2FzIG1hZGUgYWdhaW5zdCwgc28gdGhlIHJlc3RvcmUgbGFuZHMgaW4gdGhlXG4gICAqIHNhbWUgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSBrZXkgaGVsZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiB7QGxpbmsgaXNQcmVzZW50fSBpcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0aGUgY2FwdHVyZSB3YXMgbWFkZSBhZ2FpbnN0LCBzbyB0aGUgcmVzdG9yZSBsYW5kcyBpbiB0aGUgc2FtZVxuICAgKiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0UGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc2V0QXBwQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXRBcHBDb25maWdQYXJhbXMgZXh0ZW5kcyBBcHBDb25maWdQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhbHVlIHRvIHdyaXRlLiBgdW5kZWZpbmVkYCBkZWxldGVzIHRoZSBrZXksIGxlYXZpbmcgT2JzaWRpYW4ncyBvd25cbiAgICogZGVmYXVsdCBpbiBmb3JjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3aXRoQXBwQ29uZmlnfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBXaGF0IHRoZSB3cmFwcGVkIHdvcmsgcmV0dXJucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+IGV4dGVuZHMgU2V0QXBwQ29uZmlnUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrIHRvIHJ1biB3aGlsZSB0aGUga2V5IGhvbGRzIHtAbGluayBTZXRBcHBDb25maWdQYXJhbXMudmFsdWV9LlxuICAgKi9cbiAgY2FsbGJhY2sodGhpczogdm9pZCk6IFByb21pc2U8VD47XG59XG5cbi8qKlxuICogV2hhdCBhIHdyaXRlIGNhcHR1cmVkIGFib3V0IHRoZSBrZXkncyBzdGF0ZSBiZWZvcmUgaXQgd3JvdGUuXG4gKi9cbmludGVyZmFjZSBDYXB0dXJlZFZhbHVlIHtcbiAgaXNQcmVzZW50OiBib29sZWFuO1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBUaGUgc2VyaWFsaXplZCBwYXlsb2FkIG9mIGEgcmVhZC5cbiAqL1xuaW50ZXJmYWNlIFJlYWRJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3Qge1xuICBjb25maWdLZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc2VyaWFsaXplZCBwYXlsb2FkIG9mIGEgcmVzdG9yZS5cbiAqL1xuaW50ZXJmYWNlIFJlc3RvcmVJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3Qge1xuICBjb25maWdLZXk6IHN0cmluZztcbiAgaXNQcmVzZW50OiBib29sZWFuO1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBUaGUgc2VyaWFsaXplZCBwYXlsb2FkIG9mIGEgd3JpdGUuXG4gKi9cbmludGVyZmFjZSBXcml0ZUlucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCB7XG4gIGNvbmZpZ0tleTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBSZWFkcyBhIHZhdWx0IGNvbmZpZyBrZXksIHJlc29sdmluZyB0aGUgdHJhbnNwb3J0IGFuZCB2YXVsdCBmcm9tIHRoZSBjdXJyZW50XG4gKiB0ZXN0IGNvbnRleHQuXG4gKlxuICogVGhpcyBpcyBPYnNpZGlhbidzIG93biBgVmF1bHQuZ2V0Q29uZmlnYCwgc28gYW4gYWJzZW50IGtleSByZWFkcyBiYWNrIGFzXG4gKiBPYnNpZGlhbidzICoqZGVmYXVsdCoqIGZvciBpdCByYXRoZXIgdGhhbiBhcyBgdW5kZWZpbmVkYCBcdTIwMTQgc2VlIHRoaXMgZmlsZSdzXG4gKiBoZWFkZXIuIFVzZSB7QGxpbmsgc2V0QXBwQ29uZmlnfSdzIHtAbGluayBBcHBDb25maWdSZXN0b3JlLmlzUHJlc2VudH0gd2hlbiB0aGVcbiAqIGRpZmZlcmVuY2UgbWF0dGVycy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSB0byByZWFkLCBhbmQgdHJhbnNwb3J0IC8gdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBrZXkncyBlZmZlY3RpdmUgdmFsdWUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBUZW1wb3Jhcnk6IGBBcHBDb25maWdQYXJhbXNgIGlzIHJlLWV4cG9ydGVkIGZyb20gYGluZGV4LnRzYCwgc28gcmVuYW1pbmcgaXQgdG8gYEdldEFwcENvbmZpZ1BhcmFtc2AgaXMgYSBicmVha2luZyBjaGFuZ2UgaGVsZCBmb3IgdGhlIG5leHQgbWFqb3IuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBwQ29uZmlnKHBhcmFtczogQXBwQ29uZmlnUGFyYW1zKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHtcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIHJldHVybiBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8UmVhZElucHV0LCB1bmtub3duPj4oe1xuICAgIGNhbGxiYWNrKHsgYXBwLCBjb25maWdLZXk6IGtleSB9KTogdW5rbm93biB7XG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICByZXR1cm4gZ2V0Q29uZmlnKGtleSk7XG4gICAgfSxcbiAgICBpbnB1dDogeyBjb25maWdLZXkgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBQdXRzIGEga2V5IGJhY2sgZXhhY3RseSBhcyB7QGxpbmsgc2V0QXBwQ29uZmlnfSBmb3VuZCBpdCBcdTIwMTQgd3JpdGluZyB0aGUgY2FwdHVyZWRcbiAqIHZhbHVlIGJhY2ssIG9yICoqZGVsZXRpbmcqKiB0aGUga2V5IHdoZW4gdGhlIHZhdWx0IGhhZCBuZXZlciBjYXJyaWVkIGl0LlxuICpcbiAqIFRoZSBgYmVmb3JlQWxsYCAvIGBhZnRlckFsbGAgaGFsZiBvZiB0aGUgc2VhbS4gQSB0ZXN0IHRoYXQgc2NvcGVzIHRoZSBjaGFuZ2VcbiAqIHRvIG9uZSBjYWxsYmFjayB3YW50cyB7QGxpbmsgd2l0aEFwcENvbmZpZ30gaW5zdGVhZCwgd2hpY2ggY2Fubm90IGZvcmdldCB0aGVcbiAqIHJlc3RvcmUuXG4gKlxuICogQHBhcmFtIHJlc3RvcmUgLSBUaGUgdG9rZW4ge0BsaW5rIHNldEFwcENvbmZpZ30gcmV0dXJuZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGtleSBpcyBiYWNrIGFzIGl0IHdhcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVBcHBDb25maWcocmVzdG9yZTogQXBwQ29uZmlnUmVzdG9yZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgY29uZmlnS2V5LFxuICAgIGlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSByZXN0b3JlO1xuXG4gIGF3YWl0IGV2YWxJbk9ic2lkaWFuKG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxFdmFsSW5PYnNpZGlhblBhcmFtczxSZXN0b3JlSW5wdXQsIHVuZGVmaW5lZD4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIGlzUHJlc2VudDogd2FzUHJlc2VudCxcbiAgICAgIHZhbHVlOiBwcmV2aW91c1ZhbHVlXG4gICAgfSk6IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBzZXRDb25maWcgPSBhcHAudmF1bHQuc2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gICAgICAvLyBgdW5kZWZpbmVkYCBpcyBub3QgYSBuby1vcCBoZXJlOiBgc2V0Q29uZmlnYCBkZWxldGVzIHRoZSBrZXkgZm9yIGl0LFxuICAgICAgLy8gd2hpY2ggaXMgdGhlIG9ubHkgd2F5IHRvIHJlc3RvcmUgb25lIHRoZSB2YXVsdCBuZXZlciBjYXJyaWVkLlxuICAgICAgc2V0Q29uZmlnKGtleSwgd2FzUHJlc2VudCA/IHByZXZpb3VzVmFsdWUgOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5wdXQ6IHtcbiAgICAgIGNvbmZpZ0tleSxcbiAgICAgIGlzUHJlc2VudCxcbiAgICAgIHZhbHVlXG4gICAgfSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgYSB2YXVsdCBjb25maWcga2V5LCBjYXB0dXJpbmcgd2hhdCBpdCBoZWxkIGZpcnN0IHNvIHRoZSB3cml0ZSBjYW4gYmVcbiAqIHVuZG9uZSBleGFjdGx5LlxuICpcbiAqIE9ic2lkaWFuIHBlcnNpc3RzIHRoZSBjaGFuZ2UgKGByZXF1ZXN0U2F2ZUNvbmZpZ2ApIGFuZCBmaXJlcyBpdHNcbiAqIGBjb25maWctY2hhbmdlZGAgZXZlbnQsIGJvdGggb2Ygd2hpY2ggdGhlIGFwcCdzIG93biBzZXR0aW5ncyBVSSBkb2VzIHRvbyBcdTIwMTQgc29cbiAqIGFueXRoaW5nIGxpc3RlbmluZyByZWFjdHMgYXMgaXQgd291bGQgdG8gYSB1c2VyIGZsaXBwaW5nIHRoZSB0b2dnbGUuIEEgd3JpdGVcbiAqIG9mIHRoZSB2YWx1ZSB0aGUga2V5IGFscmVhZHkgaG9sZHMgaXMgYSBuby1vcCBpbiBPYnNpZGlhbiBpdHNlbGYsIGFuZCB0aGVcbiAqIHJldHVybmVkIHRva2VuIHN0aWxsIGRlc2NyaWJlcyB0aGUgc3RhdGUgdGhhdCBwcmVjZWRlZCBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlLCBhbmQgdHJhbnNwb3J0IC8gdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSB7QGxpbmsgQXBwQ29uZmlnUmVzdG9yZX0gdG9rZW4gdG9cbiAqICAgaGFuZCB7QGxpbmsgcmVzdG9yZUFwcENvbmZpZ30uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRBcHBDb25maWcocGFyYW1zOiBTZXRBcHBDb25maWdQYXJhbXMpOiBQcm9taXNlPEFwcENvbmZpZ1Jlc3RvcmU+IHtcbiAgY29uc3Qge1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY2FwdHVyZWQgPSBhd2FpdCBldmFsSW5PYnNpZGlhbihub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8RXZhbEluT2JzaWRpYW5QYXJhbXM8V3JpdGVJbnB1dCwgQ2FwdHVyZWRWYWx1ZT4+KHtcbiAgICBjYWxsYmFjayh7XG4gICAgICBhcHAsXG4gICAgICBjb25maWdLZXk6IGtleSxcbiAgICAgIHZhbHVlOiBuZXdWYWx1ZVxuICAgIH0pOiBDYXB0dXJlZFZhbHVlIHtcbiAgICAgIC8vIGBjb25maWdgIGNhcnJpZXMgT05MWSB0aGUga2V5cyBjaGFuZ2VkIGZyb20gdGhlaXIgZGVmYXVsdCwgd2hpY2ggaXMgd2hhdFxuICAgICAgLy8gbWFrZXMgaXQgdGhlIHByZXNlbmNlIHNpZ25hbDsgYGdldENvbmZpZ2Agc3Vic3RpdHV0ZXMgdGhlIGRlZmF1bHQgYW5kIHNvXG4gICAgICAvLyBjYW5ub3QgdGVsbCBhbiB1bnNldCBrZXkgZnJvbSBvbmUgc2V0IHRvIHRoYXQgZGVmYXVsdC4gVGhlIHZhbHVlIGl0c2VsZlxuICAgICAgLy8gc3RpbGwgY29tZXMgZnJvbSBgZ2V0Q29uZmlnYCwgd2hpY2ggcmV0dXJucyB0aGUgc3RvcmVkIG9uZSB3aGVuZXZlclxuICAgICAgLy8gdGhlcmUgaXMgb25lIFx1MjAxNCBzbyB0aGUgcmVhZCBuZWVkcyBubyBjYXN0IG9mIHRoZSBjb25maWcgb2JqZWN0LlxuICAgICAgY29uc3QgaXNQcmVzZW50ID0gT2JqZWN0Lmhhc093bihhcHAudmF1bHQuY29uZmlnLCBrZXkpO1xuXG4gICAgICBjb25zdCBnZXRDb25maWcgPSBhcHAudmF1bHQuZ2V0Q29uZmlnLmJpbmQoYXBwLnZhdWx0KSBhcyAoY29uZmlnS2V5OiBzdHJpbmcpID0+IHVua25vd247XG4gICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gaXNQcmVzZW50ID8gZ2V0Q29uZmlnKGtleSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IHNldENvbmZpZyA9IGFwcC52YXVsdC5zZXRDb25maWcuYmluZChhcHAudmF1bHQpIGFzIChjb25maWdLZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG4gICAgICBzZXRDb25maWcoa2V5LCBuZXdWYWx1ZSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudCxcbiAgICAgICAgdmFsdWU6IHByZXZpb3VzVmFsdWVcbiAgICAgIH07XG4gICAgfSxcbiAgICBpbnB1dDoge1xuICAgICAgY29uZmlnS2V5LFxuICAgICAgdmFsdWVcbiAgICB9LFxuICAgIHRyYW5zcG9ydCxcbiAgICB2YXVsdFBhdGhcbiAgfSkpO1xuXG4gIHJldHVybiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QXBwQ29uZmlnUmVzdG9yZT4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICBpc1ByZXNlbnQ6IGNhcHR1cmVkLmlzUHJlc2VudCxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWU6IGNhcHR1cmVkLnZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHdvcmsgd2l0aCBhIHZhdWx0IGNvbmZpZyBrZXkgdGVtcG9yYXJpbHkgc2V0LCBhbmQgcHV0cyB0aGUga2V5IGJhY2tcbiAqIGFmdGVyd2FyZHMgXHUyMDE0IG9uIGEgdGhyb3cgYXMgbXVjaCBhcyBvbiBhIHJldHVybi5cbiAqXG4gKiBUaGUgc2hhcGUgYSBwb3BvdXQtc3ViamVjdCB0ZXN0IHdhbnRzOlxuICpcbiAqIGBgYHRzXG4gKiBhd2FpdCB3aXRoQXBwQ29uZmlnKHtcbiAqICAgYXN5bmMgY2FsbGJhY2soKSB7XG4gKiAgICAgYXdhaXQgZXZhbEluT2JzaWRpYW4oeyAuLi4gfSk7IC8vIHRoZSBzZXR0aW5ncyB3aW5kb3cgaXMgYSBwb3BvdXQgaW4gaGVyZVxuICogICB9LFxuICogICBjb25maWdLZXk6ICdzZXR0aW5nc1BvcG91dFdpbmRvdycsXG4gKiAgIHZhbHVlOiB0cnVlLFxuICogICB2YXVsdFBhdGhcbiAqIH0pO1xuICogYGBgXG4gKlxuICogVGhlIGNhbGxiYWNrIHJ1bnMgb24gdGhlICoqTm9kZSoqIHNpZGUsIHNvIGl0IGlzIGZyZWUgdG8gbWFrZSBzZXZlcmFsIGV2YWxzLFxuICogdGFrZSBhIHNjcmVlbnNob3QsIG9yIGFzc2VydCBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gV2hhdCB0aGUgd3JhcHBlZCB3b3JrIHJldHVybnMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSwgdGhlIHZhbHVlIHRvIGhvbGQgaXQgYXQsIHRoZSB3b3JrLCBhbmQgdHJhbnNwb3J0IC9cbiAqICAgdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHdoYXRldmVyIHRoZSBjYWxsYmFjayByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhBcHBDb25maWc8VD4ocGFyYW1zOiBXaXRoQXBwQ29uZmlnUGFyYW1zPFQ+KTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHtcbiAgICBjYWxsYmFjayxcbiAgICBjb25maWdLZXksXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhbHVlLFxuICAgIHZhdWx0UGF0aFxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHJlc3RvcmUgPSBhd2FpdCBzZXRBcHBDb25maWcobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFNldEFwcENvbmZpZ1BhcmFtcz4oe1xuICAgIGNvbmZpZ0tleSxcbiAgICB0cmFuc3BvcnQsXG4gICAgdmFsdWUsXG4gICAgdmF1bHRQYXRoXG4gIH0pKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjYWxsYmFjaygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHJlc3RvcmVBcHBDb25maWcocmVzdG9yZSk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwREEsOEJBQStCO0FBQy9CLDJDQUE0QztBQW1JNUMsZUFBc0IsYUFBYSxRQUEyQztBQUM1RSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosU0FBTyxVQUFNLDRDQUFlLGtFQUFzRTtBQUFBLElBQ2hHLFNBQVMsRUFBRSxLQUFLLFdBQVcsSUFBSSxHQUFZO0FBQ3pDLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUNwRCxhQUFPLFVBQVUsR0FBRztBQUFBLElBQ3RCO0FBQUEsSUFDQSxPQUFPLEVBQUUsVUFBVTtBQUFBLElBQ25CO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFhQSxlQUFzQixpQkFBaUIsU0FBMEM7QUFDL0UsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosWUFBTSw0Q0FBZSxrRUFBMkU7QUFBQSxJQUM5RixTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0EsV0FBVztBQUFBLE1BQ1gsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLElBQ1QsR0FBYztBQUNaLFlBQU0sWUFBWSxJQUFJLE1BQU0sVUFBVSxLQUFLLElBQUksS0FBSztBQUlwRCxnQkFBVSxLQUFLLGFBQWEsZ0JBQWdCLE1BQVM7QUFBQSxJQUN2RDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7QUFnQkEsZUFBc0IsYUFBYSxRQUF1RDtBQUN4RixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sV0FBVyxVQUFNLDRDQUFlLGtFQUE2RTtBQUFBLElBQ2pILFNBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQSxXQUFXO0FBQUEsTUFDWCxPQUFPO0FBQUEsSUFDVCxHQUFrQjtBQU1oQixZQUFNLFlBQVksT0FBTyxPQUFPLElBQUksTUFBTSxRQUFRLEdBQUc7QUFFckQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELFlBQU0sZ0JBQWdCLFlBQVksVUFBVSxHQUFHLElBQUk7QUFFbkQsWUFBTSxZQUFZLElBQUksTUFBTSxVQUFVLEtBQUssSUFBSSxLQUFLO0FBQ3BELGdCQUFVLEtBQUssUUFBUTtBQUV2QixhQUFPO0FBQUEsUUFDTDtBQUFBLFFBQ0EsT0FBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUMsQ0FBQztBQUVGLGFBQU8sa0VBQThDO0FBQUEsSUFDbkQ7QUFBQSxJQUNBLFdBQVcsU0FBUztBQUFBLElBQ3BCO0FBQUEsSUFDQSxPQUFPLFNBQVM7QUFBQSxJQUNoQjtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBMkJBLGVBQXNCLGNBQWlCLFFBQTRDO0FBQ2pGLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFFBQU0sVUFBVSxNQUFNLGlCQUFhLGtFQUFnRDtBQUFBLElBQ2pGO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDLENBQUM7QUFFRixNQUFJO0FBQ0YsV0FBTyxNQUFNLFNBQVM7QUFBQSxFQUN4QixVQUFFO0FBQ0EsVUFBTSxpQkFBaUIsT0FBTztBQUFBLEVBQ2hDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -120,7 +120,7 @@ export interface WithAppConfigParams<T> extends SetAppConfigParams {
120
120
  /**
121
121
  * The work to run while the key holds {@link SetAppConfigParams.value}.
122
122
  */
123
- readonly callback: (this: void) => Promise<T>;
123
+ callback(this: void): Promise<T>;
124
124
  }
125
125
  /**
126
126
  * Reads a vault config key, resolving the transport and vault from the current
@@ -45,4 +45,4 @@ function willAutoInstallAppiumDependencies(options) {
45
45
  checkIsAppiumDriverInstalled,
46
46
  willAutoInstallAppiumDependencies
47
47
  });
48
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1kZXBlbmRlbmNpZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGhlbHBlcnMgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGhhcm5lc3MgbXVzdCBhdXRvLWluc3RhbGwgdGhlIEFwcGl1bVxuICogZGVwZW5kZW5jaWVzICh0aGUgYHVpYXV0b21hdG9yMmAgZHJpdmVyKSBiZWZvcmUgaXQgYXV0by1zdGFydHMgdGhlIEFwcGl1bVxuICogc2VydmVyLCBwbHVzIHJlc29sdmluZyB0aGUgYXV0by1pbnN0YWxsIG9wdC1vdXQgZnJvbSB0aGUgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgcGFyc2luZyBhbmRcbiAqIGRlZmF1bHQgcmVzb2x1dGlvbiBzdGF5IHVuaXQtdGVzdGFibGUgKHRoZSBmYWN0b3J5IGl0c2VsZiBzaGVsbHMgb3V0IHRvIGBucG1gXG4gKiAvIGBucHhgIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuLyoqXG4gKiBUaGUgQXBwaXVtIGRyaXZlciBuYW1lIHJlcXVpcmVkIHRvIGF1dG9tYXRlIE9ic2lkaWFuIE1vYmlsZSBvbiBBbmRyb2lkLlxuICovXG5leHBvcnQgY29uc3QgVUlBVVRPTUFUT1IyX0RSSVZFUl9OQU1FID0gJ3VpYXV0b21hdG9yMic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWRQYXJhbXMge1xuICAvKipcbiAgICogUmF3IHN0ZG91dCBvZiBgYXBwaXVtIGRyaXZlciBsaXN0IC0taW5zdGFsbGVkIC0tanNvbmAgXHUyMDE0IGEgSlNPTiBvYmplY3Qga2V5ZWRcbiAgICogYnkgaW5zdGFsbGVkIGRyaXZlciBuYW1lIChge31gIHdoZW4gbm9uZSBhcmUgaW5zdGFsbGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlckxpc3RKc29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBkcml2ZXIgbmFtZSB0byBsb29rIGZvciAoZS5nLiB7QGxpbmsgVUlBVVRPTUFUT1IyX0RSSVZFUl9OQU1FfSkuXG4gICAqL1xuICByZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZ2l2ZW4gQXBwaXVtIGRyaXZlciBpcyBpbnN0YWxsZWQsIGZyb20gdGhlIHJhdyBKU09OIG91dHB1dFxuICogb2YgYGFwcGl1bSBkcml2ZXIgbGlzdCAtLWluc3RhbGxlZCAtLWpzb25gLlxuICpcbiAqIGAtLWluc3RhbGxlZGAgcmVzdHJpY3RzIHRoZSBsaXN0aW5nIHRvIGluc3RhbGxlZCBkcml2ZXJzLCBzbyBhIGRyaXZlciBpc1xuICogcHJlc2VudCBleGFjdGx5IHdoZW4gaXRzIG5hbWUgaXMgYSBrZXkgb2YgdGhlIHBhcnNlZCBvYmplY3QuIE1hbGZvcm1lZCBvclxuICogbm9uLW9iamVjdCBvdXRwdXQgKGFuIGVtcHR5IHN0cmluZywgYSBsb2cgbGluZSB0aGF0IGxlYWtlZCBvbnRvIHN0ZG91dCwgYVxuICogSlNPTiBwcmltaXRpdmUsIGBudWxsYCkgaXMgdHJlYXRlZCBhcyBcIm5vdCBpbnN0YWxsZWRcIiBzbyB0aGUgY2FsbGVyIHByb2NlZWRzXG4gKiB0byBpbnN0YWxsIFx1MjAxNCB0aGUgaW5zdGFsbCBjb21tYW5kIGlzIG9ubHkgaXNzdWVkIHdoZW4gdGhpcyByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzYW1wbGVkIGRyaXZlci1saXN0IG91dHB1dCBhbmQgdGhlIGRyaXZlciBuYW1lIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGRyaXZlciBpcyBsaXN0ZWQgYXMgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc0FwcGl1bURyaXZlckluc3RhbGxlZChwYXJhbXM6IENoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWRQYXJhbXMpOiBib29sZWFuIHtcbiAgbGV0IHBhcnNlZDogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtcy5kcml2ZXJMaXN0SnNvbik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0Lmhhc093bihwYXJzZWQsIHBhcmFtcy5kcml2ZXJOYW1lKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aGV0aGVyIHRoZSBoYXJuZXNzIG1heSBhdXRvLWluc3RhbGwgbWlzc2luZyBBcHBpdW0gZGVwZW5kZW5jaWVzLFxuICogYXBwbHlpbmcgdGhlIGRlZmF1bHQgd2hlbiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBvbmx5IGdvdmVybnMgdGhlIG1hY2hpbmUtbXV0YXRpbmcgaW5zdGFsbCBzdGVwIChhIGdsb2JhbCBgbnBtIGluc3RhbGwgLWdcbiAqIGFwcGl1bWAgYW5kIGFuIGBhcHBpdW0gZHJpdmVyIGluc3RhbGxgKTsgaXQgaXMgYSBuby1vcCB1bmxlc3MgdGhlIGhhcm5lc3MgaXNcbiAqIGFsc28gYXV0by1zdGFydGluZyB0aGUgQXBwaXVtIHNlcnZlciAoe0BsaW5rXG4gKiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLnNob3VsZEF1dG9TdGFydEFwcGl1bX0pLiBTZXQgaXQgdG9cbiAqIGBmYWxzZWAgdG8gbWFuYWdlIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgV2hldGhlciBtaXNzaW5nIEFwcGl1bSBkZXBlbmRlbmNpZXMgbWF5IGJlIGF1dG8taW5zdGFsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2lsbEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzKFxuICBvcHRpb25zOiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIG9wdGlvbnMuc2hvdWxkQXV0b0luc3RhbGxBcHBpdW1EZXBlbmRlbmNpZXMgPz8gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JPLE1BQU0sMkJBQTJCO0FBK0JqQyxTQUFTLDZCQUE2QixRQUFxRDtBQUNoRyxNQUFJO0FBQ0osTUFBSTtBQUNGLGFBQVMsS0FBSyxNQUFNLE9BQU8sY0FBYztBQUFBLEVBQzNDLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxXQUFXLFlBQVksV0FBVyxNQUFNO0FBQ2pELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxPQUFPLE9BQU8sUUFBUSxPQUFPLFVBQVU7QUFDaEQ7QUFlTyxTQUFTLGtDQUNkLFNBQ1M7QUFDVCxTQUFPLFFBQVEsdUNBQXVDO0FBQ3hEOyIsCiAgIm5hbWVzIjogW10KfQo=
48
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1kZXBlbmRlbmNpZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGhlbHBlcnMgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGhhcm5lc3MgbXVzdCBhdXRvLWluc3RhbGwgdGhlIEFwcGl1bVxuICogZGVwZW5kZW5jaWVzICh0aGUgYHVpYXV0b21hdG9yMmAgZHJpdmVyKSBiZWZvcmUgaXQgYXV0by1zdGFydHMgdGhlIEFwcGl1bVxuICogc2VydmVyLCBwbHVzIHJlc29sdmluZyB0aGUgYXV0by1pbnN0YWxsIG9wdC1vdXQgZnJvbSB0aGUgdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgcGFyc2luZyBhbmRcbiAqIGRlZmF1bHQgcmVzb2x1dGlvbiBzdGF5IHVuaXQtdGVzdGFibGUgKHRoZSBmYWN0b3J5IGl0c2VsZiBzaGVsbHMgb3V0IHRvIGBucG1gXG4gKiAvIGBucHhgIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuLyoqXG4gKiBUaGUgQXBwaXVtIGRyaXZlciBuYW1lIHJlcXVpcmVkIHRvIGF1dG9tYXRlIE9ic2lkaWFuIE1vYmlsZSBvbiBBbmRyb2lkLlxuICovXG5leHBvcnQgY29uc3QgVUlBVVRPTUFUT1IyX0RSSVZFUl9OQU1FID0gJ3VpYXV0b21hdG9yMic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWRQYXJhbXMge1xuICAvKipcbiAgICogUmF3IHN0ZG91dCBvZiBgYXBwaXVtIGRyaXZlciBsaXN0IC0taW5zdGFsbGVkIC0tanNvbmAgXHUyMDE0IGEgSlNPTiBvYmplY3Qga2V5ZWRcbiAgICogYnkgaW5zdGFsbGVkIGRyaXZlciBuYW1lIChge31gIHdoZW4gbm9uZSBhcmUgaW5zdGFsbGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IGRyaXZlckxpc3RKc29uOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBkcml2ZXIgbmFtZSB0byBsb29rIGZvciAoZS5nLiB7QGxpbmsgVUlBVVRPTUFUT1IyX0RSSVZFUl9OQU1FfSkuXG4gICAqL1xuICByZWFkb25seSBkcml2ZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZ2l2ZW4gQXBwaXVtIGRyaXZlciBpcyBpbnN0YWxsZWQsIGZyb20gdGhlIHJhdyBKU09OIG91dHB1dFxuICogb2YgYGFwcGl1bSBkcml2ZXIgbGlzdCAtLWluc3RhbGxlZCAtLWpzb25gLlxuICpcbiAqIGAtLWluc3RhbGxlZGAgcmVzdHJpY3RzIHRoZSBsaXN0aW5nIHRvIGluc3RhbGxlZCBkcml2ZXJzLCBzbyBhIGRyaXZlciBpc1xuICogcHJlc2VudCBleGFjdGx5IHdoZW4gaXRzIG5hbWUgaXMgYSBrZXkgb2YgdGhlIHBhcnNlZCBvYmplY3QuIE1hbGZvcm1lZCBvclxuICogbm9uLW9iamVjdCBvdXRwdXQgKGFuIGVtcHR5IHN0cmluZywgYSBsb2cgbGluZSB0aGF0IGxlYWtlZCBvbnRvIHN0ZG91dCwgYVxuICogSlNPTiBwcmltaXRpdmUsIGBudWxsYCkgaXMgdHJlYXRlZCBhcyBcIm5vdCBpbnN0YWxsZWRcIiBzbyB0aGUgY2FsbGVyIHByb2NlZWRzXG4gKiB0byBpbnN0YWxsIFx1MjAxNCB0aGUgaW5zdGFsbCBjb21tYW5kIGlzIG9ubHkgaXNzdWVkIHdoZW4gdGhpcyByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzYW1wbGVkIGRyaXZlci1saXN0IG91dHB1dCBhbmQgdGhlIGRyaXZlciBuYW1lIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGRyaXZlciBpcyBsaXN0ZWQgYXMgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc0FwcGl1bURyaXZlckluc3RhbGxlZChwYXJhbXM6IENoZWNrSXNBcHBpdW1Ecml2ZXJJbnN0YWxsZWRQYXJhbXMpOiBib29sZWFuIHtcbiAgbGV0IHBhcnNlZDogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHBhcmFtcy5kcml2ZXJMaXN0SnNvbik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0Lmhhc093bihwYXJzZWQsIHBhcmFtcy5kcml2ZXJOYW1lKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aGV0aGVyIHRoZSBoYXJuZXNzIG1heSBhdXRvLWluc3RhbGwgbWlzc2luZyBBcHBpdW0gZGVwZW5kZW5jaWVzLFxuICogYXBwbHlpbmcgdGhlIGRlZmF1bHQgd2hlbiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBvbmx5IGdvdmVybnMgdGhlIG1hY2hpbmUtbXV0YXRpbmcgaW5zdGFsbCBzdGVwIChhIGdsb2JhbCBgbnBtIGluc3RhbGwgLWdcbiAqIGFwcGl1bWAgYW5kIGFuIGBhcHBpdW0gZHJpdmVyIGluc3RhbGxgKTsgaXQgaXMgYSBuby1vcCB1bmxlc3MgdGhlIGhhcm5lc3MgaXNcbiAqIGFsc28gYXV0by1zdGFydGluZyB0aGUgQXBwaXVtIHNlcnZlciAoe0BsaW5rXG4gKiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLnNob3VsZEF1dG9TdGFydEFwcGl1bX0pLiBTZXQgaXQgdG9cbiAqIGBmYWxzZWAgdG8gbWFuYWdlIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgV2hldGhlciBtaXNzaW5nIEFwcGl1bSBkZXBlbmRlbmNpZXMgbWF5IGJlIGF1dG8taW5zdGFsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2lsbEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW4tZGV2LXV0aWxzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2ggLS0gUGVybWFuZW50OiBgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IHNpeCBoZWxwZXJzLCBzbyBubyBwZXItb3duZXIgbmFtZSBjYW4gc2F0aXNmeSB0aGVtIGFsbC5cbiAgb3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuKTogYm9vbGVhbiB7XG4gIHJldHVybiBvcHRpb25zLnNob3VsZEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzID8/IHRydWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCTyxNQUFNLDJCQUEyQjtBQStCakMsU0FBUyw2QkFBNkIsUUFBcUQ7QUFDaEcsTUFBSTtBQUNKLE1BQUk7QUFDRixhQUFTLEtBQUssTUFBTSxPQUFPLGNBQWM7QUFBQSxFQUMzQyxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sV0FBVyxZQUFZLFdBQVcsTUFBTTtBQUNqRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sT0FBTyxPQUFPLFFBQVEsT0FBTyxVQUFVO0FBQ2hEO0FBZU8sU0FBUyxrQ0FFZCxTQUNTO0FBQ1QsU0FBTyxRQUFRLHVDQUF1QztBQUN4RDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -45,4 +45,4 @@ function resolveSessionConnectionRetryTimeoutInMilliseconds(options) {
45
45
  resolveScriptTimeoutInMilliseconds,
46
46
  resolveSessionConnectionRetryTimeoutInMilliseconds
47
47
  });
48
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1zZXNzaW9uLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlc29sdmVzIHR1bmFibGUgQXBwaXVtIHNlcnZlci1zdGFydCBhbmQgc2Vzc2lvbi1lc3RhYmxpc2htZW50IHRpbWVvdXRzIGZyb21cbiAqIHRoZSB0cmFuc3BvcnQgb3B0aW9ucywgYXBwbHlpbmcgZGVmYXVsdHMuIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGVcbiAqIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgZGVmYXVsdCByZXNvbHV0aW9uIHN0YXlzXG4gKiB1bml0LXRlc3RhYmxlICh0aGUgZmFjdG9yeSBpdHNlbGYgbmVlZHMgYSByZWFsIEFwcGl1bSBzZXJ2ZXIgYW5kIGlzIGV4Y2x1ZGVkXG4gKiBmcm9tIHVuaXQgdGVzdHMpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLmNqcyc7XG5cbi8qKlxuICogRGVmYXVsdCBmb3Ige0BsaW5rIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMuYXBwaXVtU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BUFBJVU1fU1RBUlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxODBfMDAwO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLnNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVNTSU9OX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxODBfMDAwO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciByZWFkaW5lc3MgdGltZW91dCwgYXBwbHlpbmcgdGhlXG4gKiBkZWZhdWx0IHdoZW4gdGhlIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgZ292ZXJucyBob3cgbG9uZyB0aGUgZmFjdG9yeSBwb2xscyB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXInc1xuICogYC9zdGF0dXNgIGVuZHBvaW50IGJlZm9yZSBnaXZpbmcgdXAuIE9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgaGFybmVzc1xuICogYXV0by1zdGFydHMgdGhlIHNlcnZlcjsgd2hlbiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIHNlcnZlciB0aGUgd2FpdFxuICogaXMgc2tpcHBlZCBlbnRpcmVseS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgb3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9wdGlvbnMuYXBwaXVtU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9BUFBJVU1fU1RBUlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHBlci1zY3JpcHQgKHBlci1gZXZhbEluT2JzaWRpYW5gKSB0aW1lb3V0LCBhcHBseWluZyB0aGUgZGVmYXVsdFxuICogd2hlbiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBpcyB3aGF0IGBBcHBpdW1UcmFuc3BvcnQuZXZhbHVhdGVgIGVuZm9yY2VzIG9uIHRoZSBOb2RlIHNpZGU7IGl0IGlzIGFsc29cbiAqIHNlbnQgYXMgdGhlIFczQyBgdGltZW91dHMuc2NyaXB0YCBjYXBhYmlsaXR5LCB3aGljaCB3YXMgbWVhc3VyZWQgdG8gYmVcbiAqIGFjY2VwdGVkIGFuZCBuZXZlciBhY3RlZCBvbi4gSXQgaXMgZGVsaWJlcmF0ZWx5IE5PVCB0aGUga25vYiB0byByZWFjaCBmb3Igd2hlblxuICogYSBjbG9zdXJlIHRpbWVzIG91dDogdGhlIGNsb3N1cmUgaXMgd2hhdCBzaG91bGQgZ2V0IHNob3J0ZXIsIHdpdGggdGhlIHdhaXRpbmdcbiAqIG1vdmVkIHRvIE5vZGUgdmlhIGBwb2xsSW5PYnNpZGlhbmAuXG4gKlxuICogVGhlIGRlZmF1bHQgaXMge0BsaW5rIERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTfSwgdGhlIHNoYXJlZCBwZXItZXZhbFxuICogY2FwLCByYXRoZXIgdGhhbiBhbiBBbmRyb2lkLXNwZWNpZmljIG51bWJlcjogdGhlIHByb3RvY29sIGRlZmF1bHQgV2ViRHJpdmVyXG4gKiB3b3VsZCBub21pbmFsbHkgYXBwbHkgd2FzIG1lYXN1cmVkIG5vdCB0byBiZSBhcHBsaWVkIGF0IGFsbCBvbiB0aGlzIGRyaXZlciwgc29cbiAqIHRoaXMgaXMgdGhlIG9ubHkgbnVtYmVyIHRoYXQgYWN0dWFsbHkgYm91bmRzIGFuIEFuZHJvaWQgZXZhbCBcdTIwMTQgd2hpY2ggbWFrZXMgaXRcbiAqIHRoZSBzYW1lIHBvbGljeSB0aGUgZGVza3RvcCB0cmFuc3BvcnQgZW5mb3JjZXMsIG5vdCBhIGNvaW5jaWRlbmNlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNjcmlwdFRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgb3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9wdGlvbnMuc2NyaXB0VGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBBcHBpdW0gc2Vzc2lvbiBjb25uZWN0aW9uIHJldHJ5IHRpbWVvdXQsIGFwcGx5aW5nIHRoZSBkZWZhdWx0XG4gKiB3aGVuIHRoZSBvcHRpb24gaXMgb21pdHRlZC5cbiAqXG4gKiBUaGlzIGdvdmVybnMgaG93IGxvbmcgV2ViRHJpdmVySU8ncyBgcmVtb3RlKClgIHdhaXRzIGZvciB0aGUgc2Vzc2lvbiB0byBiZVxuICogZXN0YWJsaXNoZWQgKFVpQXV0b21hdG9yMiBzZXJ2ZXIgaW5zdGFsbCArIGFwcCBsYXVuY2gpIFx1MjAxNCBlbXBpcmljYWxseSB0aGVcbiAqIGxhcmdlc3QgYW5kIG1vc3QgbG9hZC1zZW5zaXRpdmUgc3RlcCBvZiB0aGUgQW5kcm9pZCBzZXR1cCwgc28gaXQgaXMgdGhlIGtub2JcbiAqIHRvIHJhaXNlIHdoZW4gc2Vzc2lvbiBlc3RhYmxpc2htZW50IHRpbWVzIG91dCBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIEFuZHJvaWQgQXBwaXVtIHRyYW5zcG9ydCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHMoXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLnNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9TRVNTSU9OX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSxzQkFBaUQ7QUFLMUMsTUFBTSwrQ0FBK0M7QUFLckQsTUFBTSwyREFBMkQ7QUFjakUsU0FBUyx3Q0FDZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLG9DQUFvQztBQUNyRDtBQXFCTyxTQUFTLG1DQUNkLFNBQ1E7QUFDUixTQUFPLFFBQVEsK0JBQStCO0FBQ2hEO0FBY08sU0FBUyxtREFDZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLCtDQUErQztBQUNoRTsiLAogICJuYW1lcyI6IFtdCn0K
48
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1zZXNzaW9uLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlc29sdmVzIHR1bmFibGUgQXBwaXVtIHNlcnZlci1zdGFydCBhbmQgc2Vzc2lvbi1lc3RhYmxpc2htZW50IHRpbWVvdXRzIGZyb21cbiAqIHRoZSB0cmFuc3BvcnQgb3B0aW9ucywgYXBwbHlpbmcgZGVmYXVsdHMuIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGVcbiAqIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCBzbyB0aGUgZGVmYXVsdCByZXNvbHV0aW9uIHN0YXlzXG4gKiB1bml0LXRlc3RhYmxlICh0aGUgZmFjdG9yeSBpdHNlbGYgbmVlZHMgYSByZWFsIEFwcGl1bSBzZXJ2ZXIgYW5kIGlzIGV4Y2x1ZGVkXG4gKiBmcm9tIHVuaXQgdGVzdHMpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuL2V2YWwtY2FwLmNqcyc7XG5cbi8qKlxuICogRGVmYXVsdCBmb3Ige0BsaW5rIE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnMuYXBwaXVtU3RhcnRUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BUFBJVU1fU1RBUlRfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxODBfMDAwO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLnNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVNTSU9OX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxODBfMDAwO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciByZWFkaW5lc3MgdGltZW91dCwgYXBwbHlpbmcgdGhlXG4gKiBkZWZhdWx0IHdoZW4gdGhlIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgZ292ZXJucyBob3cgbG9uZyB0aGUgZmFjdG9yeSBwb2xscyB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXInc1xuICogYC9zdGF0dXNgIGVuZHBvaW50IGJlZm9yZSBnaXZpbmcgdXAuIE9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgaGFybmVzc1xuICogYXV0by1zdGFydHMgdGhlIHNlcnZlcjsgd2hlbiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIHNlcnZlciB0aGUgd2FpdFxuICogaXMgc2tpcHBlZCBlbnRpcmVseS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNgIGlzIG9uZSB0cmFuc3BvcnQgb3B0aW9ucyBiYWcgcmVhZCBieSBzaXggaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLmFwcGl1bVN0YXJ0VGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfQVBQSVVNX1NUQVJUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwZXItc2NyaXB0IChwZXItYGV2YWxJbk9ic2lkaWFuYCkgdGltZW91dCwgYXBwbHlpbmcgdGhlIGRlZmF1bHRcbiAqIHdoZW4gdGhlIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgaXMgd2hhdCBgQXBwaXVtVHJhbnNwb3J0LmV2YWx1YXRlYCBlbmZvcmNlcyBvbiB0aGUgTm9kZSBzaWRlOyBpdCBpcyBhbHNvXG4gKiBzZW50IGFzIHRoZSBXM0MgYHRpbWVvdXRzLnNjcmlwdGAgY2FwYWJpbGl0eSwgd2hpY2ggd2FzIG1lYXN1cmVkIHRvIGJlXG4gKiBhY2NlcHRlZCBhbmQgbmV2ZXIgYWN0ZWQgb24uIEl0IGlzIGRlbGliZXJhdGVseSBOT1QgdGhlIGtub2IgdG8gcmVhY2ggZm9yIHdoZW5cbiAqIGEgY2xvc3VyZSB0aW1lcyBvdXQ6IHRoZSBjbG9zdXJlIGlzIHdoYXQgc2hvdWxkIGdldCBzaG9ydGVyLCB3aXRoIHRoZSB3YWl0aW5nXG4gKiBtb3ZlZCB0byBOb2RlIHZpYSBgcG9sbEluT2JzaWRpYW5gLlxuICpcbiAqIFRoZSBkZWZhdWx0IGlzIHtAbGluayBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU30sIHRoZSBzaGFyZWQgcGVyLWV2YWxcbiAqIGNhcCwgcmF0aGVyIHRoYW4gYW4gQW5kcm9pZC1zcGVjaWZpYyBudW1iZXI6IHRoZSBwcm90b2NvbCBkZWZhdWx0IFdlYkRyaXZlclxuICogd291bGQgbm9taW5hbGx5IGFwcGx5IHdhcyBtZWFzdXJlZCBub3QgdG8gYmUgYXBwbGllZCBhdCBhbGwgb24gdGhpcyBkcml2ZXIsIHNvXG4gKiB0aGlzIGlzIHRoZSBvbmx5IG51bWJlciB0aGF0IGFjdHVhbGx5IGJvdW5kcyBhbiBBbmRyb2lkIGV2YWwgXHUyMDE0IHdoaWNoIG1ha2VzIGl0XG4gKiB0aGUgc2FtZSBwb2xpY3kgdGhlIGRlc2t0b3AgdHJhbnNwb3J0IGVuZm9yY2VzLCBub3QgYSBjb2luY2lkZW5jZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTY3JpcHRUaW1lb3V0SW5NaWxsaXNlY29uZHMoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBQZXJtYW5lbnQ6IGBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zYCBpcyBvbmUgdHJhbnNwb3J0IG9wdGlvbnMgYmFnIHJlYWQgYnkgc2l4IGhlbHBlcnMsIHNvIG5vIHBlci1vd25lciBuYW1lIGNhbiBzYXRpc2Z5IHRoZW0gYWxsLlxuICBvcHRpb25zOiBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4pOiBudW1iZXIge1xuICByZXR1cm4gb3B0aW9ucy5zY3JpcHRUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFM7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIEFwcGl1bSBzZXNzaW9uIGNvbm5lY3Rpb24gcmV0cnkgdGltZW91dCwgYXBwbHlpbmcgdGhlIGRlZmF1bHRcbiAqIHdoZW4gdGhlIG9wdGlvbiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgZ292ZXJucyBob3cgbG9uZyBXZWJEcml2ZXJJTydzIGByZW1vdGUoKWAgd2FpdHMgZm9yIHRoZSBzZXNzaW9uIHRvIGJlXG4gKiBlc3RhYmxpc2hlZCAoVWlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsICsgYXBwIGxhdW5jaCkgXHUyMDE0IGVtcGlyaWNhbGx5IHRoZVxuICogbGFyZ2VzdCBhbmQgbW9zdCBsb2FkLXNlbnNpdGl2ZSBzdGVwIG9mIHRoZSBBbmRyb2lkIHNldHVwLCBzbyBpdCBpcyB0aGUga25vYlxuICogdG8gcmFpc2Ugd2hlbiBzZXNzaW9uIGVzdGFibGlzaG1lbnQgdGltZXMgb3V0IG9uIGEgY29sZCBvciBjb250ZW5kZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgQW5kcm9pZCBBcHBpdW0gdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2Vzc2lvbkNvbm5lY3Rpb25SZXRyeVRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNgIGlzIG9uZSB0cmFuc3BvcnQgb3B0aW9ucyBiYWcgcmVhZCBieSBzaXggaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLnNlc3Npb25Db25uZWN0aW9uUmV0cnlUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9TRVNTSU9OX0NPTk5FQ1RJT05fUkVUUllfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSxzQkFBaUQ7QUFLMUMsTUFBTSwrQ0FBK0M7QUFLckQsTUFBTSwyREFBMkQ7QUFjakUsU0FBUyx3Q0FFZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLG9DQUFvQztBQUNyRDtBQXFCTyxTQUFTLG1DQUVkLFNBQ1E7QUFDUixTQUFPLFFBQVEsK0JBQStCO0FBQ2hEO0FBY08sU0FBUyxtREFFZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLCtDQUErQztBQUNoRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -132,4 +132,4 @@ async function sweepLeftovers(transportOptions) {
132
132
  0 && (module.exports = {
133
133
  connectToCdp
134
134
  });
135
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Nvbm5lY3QtdG8tY2RwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvZ3JhbW1hdGljIGhlbHBlciB0byBsYXVuY2ggKG9yIGF0dGFjaCB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZVxuICogd2l0aCB0aGUgcnVudGltZSBoZWxwZXIgbmFtZXNwYWNlIGJvb3RzdHJhcHBlZCwgZm9yIGFkLWhvYyByZWFsLWFwcCBkZWJ1Z2dpbmcuXG4gKlxuICogQSBzaW5nbGUge0BsaW5rIGNvbm5lY3RUb0NkcH0gY2FsbCByZXNvbHZlcyB0aGUgb3duZWQtaW5zdGFuY2UgY29uZmlnLCBvcGVucyBhXG4gKiB2YXVsdCwgYW5kIGJvb3RzdHJhcHMgYHdpbmRvdy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYCAoc28gYGV2YWxXcmFwcGVyYCxcbiAqIHRoZSBiYXNlIGBsaWJgIGhlbHBlcnMsIGBlcnJvclRvU3RyaW5nYCwgYGdldE9ic2lkaWFuTW9kdWxlYCwgXHUyMDI2IGFyZSBhdmFpbGFibGUpLCB0aGVuXG4gKiBoYW5kcyBiYWNrIGEgZGlzcG9zYWJsZSB7QGxpbmsgQ2RwQ29ubmVjdGlvbn0gZXhwb3NpbmcgdGhlIGNob3NlbiBDRFAgcG9ydCwgYVxuICogcmF3IHtAbGluayBDZHBDb25uZWN0aW9uLmludm9rZX0gYW5kIHRoZSByaWNoIHtAbGluayBDZHBDb25uZWN0aW9uLmV2YWxJbk9ic2lkaWFufS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChsYXVuY2hlcyBPYnNpZGlhbiAvIENEUCkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRXhjZXB0IH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBBc2FyRmFsbGJhY2sgfSBmcm9tICcuL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLmNqcyc7XG5pbXBvcnQgdHlwZSB7IENhcHR1cmVTY3JlZW5zaG90UGFyYW1zIH0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLmNqcyc7XG5pbXBvcnQgdHlwZSB7IEVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuaW1wb3J0IHR5cGUge1xuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdFxufSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuXG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuaW1wb3J0IHsgZW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZyB9IGZyb20gJy4vaGVhZGxlc3MtdmF1bHQtY29uZmlnLmNqcyc7XG5pbXBvcnQge1xuICByZXNvbHZlTGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcyxcbiAgc3dlZXBIb3N0TGVmdG92ZXJzLFxuICB3aWxsU3dlZXBMZWZ0b3ZlcnNcbn0gZnJvbSAnLi9sZWZ0b3Zlci1jbGVhbnVwLmNqcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5janMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi9ub3JtYWxpemUtb3B0aW9uYWwtcHJvcGVydGllcy5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuaW1wb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmltcG9ydCB7IHJlc29sdmVPd25lZENvbmZpZ0RpcmVjdG9yeSB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuY29uc3QgREVGQVVMVF9DRFBfSE9TVCA9ICdsb2NhbGhvc3QnO1xuXG4vKipcbiAqIEEgbGl2ZSBjb25uZWN0aW9uIHRvIGEgQ0RQLWVuYWJsZWQgT2JzaWRpYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcnVudGltZSBoZWxwZXJcbiAqIG5hbWVzcGFjZSBib290c3RyYXBwZWQuXG4gKlxuICogSW1wbGVtZW50cyBgQXN5bmNEaXNwb3NhYmxlYCwgc28gYGF3YWl0IHVzaW5nIGNvbm4gPSBhd2FpdCBjb25uZWN0VG9DZHAoXHUyMDI2KWBcbiAqIGRpc3Bvc2VzIGl0IChraWxsaW5nIGFuIG93bmVkIGluc3RhbmNlIGFuZCBcdTIwMTQgZm9yIGEgdGhyb3ctYXdheSB0ZW1wIHZhdWx0IFx1MjAxNFxuICogcmVtb3ZpbmcgaXRzIGRpcmVjdG9yeSkgYXV0b21hdGljYWxseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZHBDb25uZWN0aW9uIGV4dGVuZHMgQXN5bmNEaXNwb3NhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBzaWxlbnQtYXNhci1mYWxsYmFjayB2ZXJkaWN0IGZvciBhbiBvd25lZCBpbnN0YW5jZSwgcmVhZCBsaXZlIGFmdGVyIGJvb3Q6XG4gICAqIHdoZXRoZXIgdGhlIGFwcCB2ZXJzaW9uIGl0IGlzIGFjdHVhbGx5IHJ1bm5pbmcgbWF0Y2hlcyB0aGUgc3dhcHBlZC1pbiBwaW4sIG9yXG4gICAqIHRoZSBpbnN0YWxsZXIgc2lsZW50bHkgcmV2ZXJ0ZWQgdG8gaXRzIG93biBidW5kbGVkIGFzYXIuIGB1bmRlZmluZWRgIGluIGF0dGFjaFxuICAgKiBtb2RlLCB3aGVuIG5vIGFzYXIgd2FzIHN3YXBwZWQsIG9yIHdoZW4gdGhlIHJ1bm5pbmcgdmVyc2lvbiB3YXMgdW5yZWFkYWJsZS4gQVxuICAgKiBgJ2ZhbGxiYWNrJ2AgdmVyZGljdCByZWFjaGVzIGhlcmUgb25seSB3aGVuIHRoZSB0aHJvdyBpcyBkaXNhYmxlZFxuICAgKiAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFja30gYGZhbHNlYCk7XG4gICAqIG90aGVyd2lzZSBpdCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFzYXJGYWxsYmFjaz86IEFzYXJGYWxsYmFjayB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ2FwdHVyZXMgYSBQTkcgc2NyZWVuc2hvdCBvZiB0aGlzIGNvbm5lY3Rpb24ncyBPYnNpZGlhbiB3aW5kb3csIHdpdGggdGhlXG4gICAqIHZhdWx0IHBhdGggcHJlLWJvdW5kLlxuICAgKlxuICAgKiBQYXNzIGB3aWR0aEluUGl4ZWxzYCArIGBoZWlnaHRJblBpeGVsc2AgdG8gcGluIHRoZSB2aWV3cG9ydCBmb3IgdGhlIGR1cmF0aW9uXG4gICAqIG9mIHRoZSBjYXB0dXJlLCBzbyB0aGUgZW1pdHRlZCBQTkcgaXMgZXhhY3RseSB0aGF0IHNpemUgd2hhdGV2ZXIgc2l6ZSB0aGVcbiAgICogd2luZG93IGhhcHBlbnMgdG8gYmUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZXhhY3Qgc2l6ZSB0byBjYXB0dXJlIGF0LiBPbWl0IHRvIGNhcHR1cmUgdGhlIHdpbmRvdyBhdCBpdHMgbmF0dXJhbCBzaXplLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByYXcgUE5HIGJ5dGVzLlxuICAgKi9cbiAgY2FwdHVyZVNjcmVlbnNob3QocGFyYW1zPzogRXhjZXB0PENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLCAnY3dkJz4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBDRFAgVVJMLCBlLmcuIGBodHRwOi8vbG9jYWxob3N0OjUxODg4YC5cbiAgICovXG4gIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdmVyZGljdCBmb3IgYW4gb3duZWQgaW5zdGFuY2UsIHdoZW5cbiAgICogaXQgY291bGQgYmUgZGV0ZXJtaW5lZC4gYHVuZGVmaW5lZGAgaW4gYXR0YWNoIG1vZGUsIG9yIHdoZW4gdGhlIHZlcmRpY3QgaXNcbiAgICogdW5rbm93biAodW5kZXRlY3RhYmxlIHNoZWxsIHZlcnNpb24sIG9yIHRoZSBhcHAgdmVyc2lvbiBpcyBhYnNlbnQgZnJvbSB0aGVcbiAgICogdGFibGUpLiBBbiBgJ3VucnVubmFibGUnYCB2ZXJkaWN0IHJlYWNoZXMgaGVyZSBvbmx5IHdoZW4gdGhlIHByb2FjdGl2ZSB0aHJvd1xuICAgKiBpcyBkaXNhYmxlZCAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcn1cbiAgICogYGZhbHNlYCk7IG90aGVyd2lzZSBpdCB0aHJvd3MgYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgYmVmb3JlIHRoZVxuICAgKiBjb25uZWN0aW9uIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjb21wYXRpYmlsaXR5PzogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGlzcG9zZXMgdGhlIGNvbm5lY3Rpb246IGtpbGxzIGFuIG93bmVkIGluc3RhbmNlIGFuZCByZW1vdmVzIGl0cyBpc29sYXRlZFxuICAgKiB1c2VyLWRhdGEgZGlyLiBUaGUgdmF1bHQgZGlyZWN0b3J5IGlzIHJlbW92ZWQgb25seSB3aGVuIGl0IGlzIGEgdGhyb3ctYXdheVxuICAgKiB0ZW1wIHZhdWx0IChzZWUge0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkUmVtb3ZlVmF1bHRPbkRpc3Bvc2V9KTsgYVxuICAgKiByZWFsIHZhdWx0IHBhc3NlZCB2aWEge0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMudmF1bHR9IGlzIG5ldmVyIGRlbGV0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBkaXNwb3NhbCBjb21wbGV0ZXMuXG4gICAqL1xuICBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIEVsZWN0cm9uIGNvbXBhdGliaWxpdHkgdmVyZGljdCBmb3IgYW4gb3duZWQgaW5zdGFuY2UsIHJlYWQgbGl2ZVxuICAgKiBhZnRlciBib290OiB3aGV0aGVyIHRoZSBFbGVjdHJvbiB2ZXJzaW9uIGl0IGlzIGFjdHVhbGx5IHJ1bm5pbmcgaXMgbmV3IGVub3VnaFxuICAgKiBmb3IgdGhlIHJ1bm5pbmcgYXBwIHZlcnNpb24uIGB1bmRlZmluZWRgIGluIGF0dGFjaCBtb2RlLCBvciB3aGVuIHRoZSB2ZXJkaWN0XG4gICAqIGlzIHVua25vd24gKHRoZSBsaXZlIHZlcnNpb24gd2FzIHVucmVhZGFibGUsIG9yIHRoZSBhcHAgdmVyc2lvbiBjYXJyaWVzIG5vXG4gICAqIHJlY29tbWVuZGVkIEVsZWN0cm9uIHZlcnNpb24pLiBBbiBvbGQgRWxlY3Ryb24gbmV2ZXIgYmxvY2tzIFx1MjAxNCBpdCBvbmx5IHdhcm5zIFx1MjAxNFxuICAgKiBzbyB1bmxpa2Uge0BsaW5rIGNvbXBhdGliaWxpdHl9IHRoZXJlIGlzIG5vIHRocm93aW5nIHRpZXIuXG4gICAqL1xuICByZWFkb25seSBlbGVjdHJvbkNvbXBhdGliaWxpdHk/OiBFbGVjdHJvbkNvbXBhdGliaWxpdHkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9uIGluc2lkZSBPYnNpZGlhbiB2aWEgdGhlIHJpY2ggaGVscGVyXG4gICAqIHBhdGgsIHJlY2VpdmluZyBgeyBhcHAsIGxpYiwgb2JzaWRpYW5Nb2R1bGUsIGNvbnRleHQgfWAgcGx1cyBhbnkgYGlucHV0YFxuICAgKiAoc2hhcmVkIGhlbHBlcnMgbGlrZSBgdHlwZUludG9FZGl0b3JgIC8gYHdhaXRVbnRpbGAgbGl2ZSBvbiBgbGliYCkuIE1pcnJvcnNcbiAgICogdGhlIHRvcC1sZXZlbCBgZXZhbEluT2JzaWRpYW5gLCB3aXRoIHRoZSB0cmFuc3BvcnQgYW5kIHZhdWx0IHBhdGggcHJlLWJvdW5kXG4gICAqIHRvIHRoaXMgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBldmFsdWF0aW9uIHBhcmFtZXRlcnMgKGBjYWxsYmFja2AsIG9wdGlvbmFsIGBpbnB1dGAvYGNvbnRleHRJZGApLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAgICovXG4gIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgICBwYXJhbXM6IEV4Y2VwdDxFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPiwgJ3RyYW5zcG9ydCcgfCAndmF1bHRQYXRoJz5cbiAgKTogUHJvbWlzZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSByYXcgSmF2YVNjcmlwdCBleHByZXNzaW9uIGluc2lkZSBPYnNpZGlhbiBhbmQgcmV0dXJucyB0aGVcbiAgICogbm9ybWFsaXplZCBzdHJpbmcgcmVzdWx0IChlLmcuIGAnNSdgLCBhIEpTT04gc3RyaW5nLCBvciBgJyhubyBvdXRwdXQpJ2ApLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiAtIEEgc2VsZi1jb250YWluZWQgSmF2YVNjcmlwdCBleHByZXNzaW9uLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByYXcgcmVzdWx0IHN0cmluZy5cbiAgICovXG4gIGludm9rZShleHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBDRFAgcG9ydCB0aGUgaW5zdGFuY2UgaXMgcmVhY2hhYmxlIG9uICh0aGUgZnJlZSBwb3J0IGNob3NlbiBmb3IgYW5cbiAgICogb3duZWQgaW5zdGFuY2UsIG9yIHRoZSBhdHRhY2hlZCB7QGxpbmsgQ29ubmVjdFRvQ2RwT3B0aW9ucy5wb3J0fSkuXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVuZWQgdmF1bHQuIEV4cG9zZXMgYHBhdGhgIGFuZCBgcG9wdWxhdGUoLi4uKWAgZm9yIHNlZWRpbmcgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSB2YXVsdDogVGVtcG9yYXJ5VmF1bHQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNvbm5lY3RUb0NkcH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFRvQ2RwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqXG4gICAqIEEgdGVzdCdzIGNsb3N1cmUgdHJhdmVscyBhcyBvbmUgYFJ1bnRpbWUuZXZhbHVhdGVgIGNvbW1hbmQsIHNvIHRoaXMgaXMgYWxzb1xuICAgKiB0aGUgZGVza3RvcCBwZXItZXZhbCBjYXAuIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsXG4gICAqIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLFxuICAgKiBzbyBhIGNsb3N1cmUgc2l6ZWQgYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gU2V0IGl0IHRvIG9wZW4gYSB2YXVsdCB0aGF0XG4gICAqIGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhbiBgLm9ic2lkaWFuYDsgd2l0aG91dCBpdCBzdWNoIGEgdmF1bHRcbiAgICogb3BlbnMgYWdhaW5zdCBgLm9ic2lkaWFuYCwgd2hpY2ggZm9yIGEgdmF1bHQgdGhhdCBoYXMgYSBzdGFsZSBvbmUgYmVzaWRlIHRoZVxuICAgKiByZWFsIGZvbGRlciBtZWFucyBvcGVuaW5nIHN1Y2Nlc3NmdWxseSBhZ2FpbnN0IHRoZSB3cm9uZyBzZXR0aW5ncy5cbiAgICpcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdCBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aFxuICAgKiBzZXBhcmF0b3IgXHUyMDE0IGFueXRoaW5nIGVsc2UgdGhyb3dzIGJlZm9yZSBPYnNpZGlhbiBsYXVuY2hlcywgc2luY2UgT2JzaWRpYW5cbiAgICogd291bGQgc2lsZW50bHkgc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC4gQWZ0ZXIgdGhlIHZhdWx0IG9wZW5zLCBpdHMgYWN0dWFsXG4gICAqIGBhcHAudmF1bHQuY29uZmlnRGlyYCBpcyByZWFkIGJhY2sgYW5kIGEgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYC5cbiAgICpcbiAgICogSWdub3JlZCBpbiBhdHRhY2ggbW9kZSAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMucG9ydH0gc2V0KSwgd2hlcmUgdGhlXG4gICAqIHZhdWx0IGlzIG9wZW5lZCBieSB0aGUgdXNlcidzIG93biBPYnNpZGlhbiB1bmRlciBpdHMgb3duIGNvbmZpZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGAgKE9ic2lkaWFuJ3Mgb3duIGRlZmF1bHQsIGAub2JzaWRpYW5gKVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSBkZWFkIGJvb3Qgb2YgdGhlIG93bmVkXG4gICAqIGluc3RhbmNlIFx1MjAxNCB0aGUgcmVuZGVyZXIgbG9hZGVkIGJ1dCB0aGUgYXBwIG5ldmVyIGJvb3RzdHJhcHBlZCAoZW1wdHlcbiAgICogYDxib2R5PmAsIG5vIGB3aW5kb3cuYXBwYCksIHRoZSB0ZXJtaW5hbCBzdGF0ZSB3aGVuIHRoZSBhc2FyIGNhbm5vdCBydW4gb25cbiAgICogdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsLiBPbmNlIGl0IGhhcyBoZWxkIHRoaXMgbG9uZyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYCBpcyB0aHJvd24gaW5zdGVhZCBvZiB3YWl0aW5nIG91dCB0aGUgZnVsbFxuICAgKiByZWFkaW5lc3MgdGltZW91dC4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZSAoe0BsaW5rIHBvcnR9IHNldCkuIFNldCBgMGAgdG9cbiAgICogZGlzYWJsZSBmYXN0LWZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uIERlZmF1bHRzIHRvIGB0cnVlYDsgc2V0XG4gICAqIGBmYWxzZWAgdG8gbGF1bmNoIGl0IG9mZi1zY3JlZW4uXG4gICAqIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgRWxlY3Ryb24gc2hlbGwgKGluc3RhbGxlciBidWlsZCkgdGhlIG93bmVkIGluc3RhbmNlIHJ1bnMuIEFjY2VwdHNcbiAgICogYCd4LnkueidgLCBgJ3B1YmxpYy1sYXRlc3QnYCwgb3IgYCdjYXRhbHlzdC1sYXRlc3QnYC4gSWdub3JlZCB3aGVuXG4gICAqIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC4gV2hlbiBvbWl0dGVkLCB0aGUgaW5zdGFsbGVkIHNoZWxsIGlzIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBvYnNpZGlhbkluc3RhbGxlclZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBpbnMgdGhlIE9ic2lkaWFuIGFwcCB2ZXJzaW9uIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy4gQWNjZXB0c1xuICAgKiBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLiBJZ25vcmVkIHdoZW5cbiAgICoge0BsaW5rIHBvcnR9IChhdHRhY2ggbW9kZSkgaXMgc2V0LiBXaGVuIG9taXR0ZWQsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0by4gV2hlbiBvbWl0dGVkLCBhblxuICAgKiBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5IGNob3NlbiBmcmVlIHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxhdW5jaCB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aCBDaHJvbWl1bSdzIHNhbmRib3ggZGlzYWJsZWRcbiAgICogKGAtLW5vLXNhbmRib3hgKS5cbiAgICpcbiAgICogTmVlZGVkIHRvIGJvb3Qgb24gTGludXggd2l0aG91dCBhIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZFxuICAgKiBgY2hyb21lLXNhbmRib3hgIGhlbHBlciAoZS5nLiBhbiBpbnN0YWxsZXItZXh0cmFjdGVkIHBvcnRhYmxlIHNoZWxsLCBvciBDSVxuICAgKiBydW5uaW5nIGFzIGEgbm9uLXJvb3QgdXNlcik7IGhhcm1sZXNzIG9uIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoXG4gICAqIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGREaXNhYmxlU2FuZGJveD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIHRoZSB2YXVsdCBkaXJlY3Rvcnkgb24ge0BsaW5rIENkcENvbm5lY3Rpb24uZGlzcG9zZX0uXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYHRydWVgIGZvciBhbiBpbXBsaWNpdCB0aHJvdy1hd2F5IHRlbXAgdmF1bHRcbiAgICogKHtAbGluayB2YXVsdH0gbm90IGdpdmVuKSBhbmQgYGZhbHNlYCB3aGVuIGEge0BsaW5rIHZhdWx0fSBwYXRoIGlzIGdpdmVuLCBzb1xuICAgKiBhIHJlYWwgdmF1bHQgaXMgbmV2ZXIgZGVsZXRlZC4gU2V0IGV4cGxpY2l0bHkgdG8gb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYW4gKip1bnJ1bm5hYmxlKiogaW5zdGFsbGVyXHUyMTk0YXBwIHZlcnNpb24gcGFpciBmYWlscyBmYXN0IGJlZm9yZSBsYXVuY2guXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIGFuIGluc3RhbGxlciBiZWxvdyB0aGUgYXBwJ3MgcnVuIGZsb29yIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiBiZWZvcmUgYW55dGhpbmcgaXNcbiAgICogZG93bmxvYWRlZCBvciBsYXVuY2hlZC4gU2V0IGBmYWxzZWAgdG8gbGV0IHRoZSBwaW4gcHJvY2VlZCB0byBsYXVuY2ggXHUyMDE0IHdoZXJlXG4gICAqIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlXG4gICAqIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXMgc3VyZmFjZWQgb24ge0BsaW5rIENkcENvbm5lY3Rpb24uY29tcGF0aWJpbGl0eX1cbiAgICogcmF0aGVyIHRoYW4gdGhyb3duLiBJZ25vcmVkIGluIGF0dGFjaCBtb2RlICh7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhIHBvc3QtYm9vdCAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdC5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGlzIHN3YXBwZWQgb250byBhbiBpbnN0YWxsZXIgc2hlbGwgdG9vIG9sZCBmb3IgaXQsIHRoZSBpbnN0YW5jZVxuICAgKiBtYXkgc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZCBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmdcbiAgICogKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgdGhlIHJ1bm5pbmdcbiAgICogYXBwIHZlcnNpb24gaXMgdmVyaWZpZWQgYWdhaW5zdCB0aGUgcGluIHBvc3QtYm9vdCBhbmQgYSBtaXNtYXRjaCB0aHJvd3NcbiAgICogYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYC4gU2V0IGBmYWxzZWAgdG8gbGV0IHRoZSBib290IHByb2NlZWQgXHUyMDE0IHRoZSBtaXNtYXRjaFxuICAgKiBpcyB0aGVuIHN1cmZhY2VkIG9uIHtAbGluayBDZHBDb25uZWN0aW9uLmFzYXJGYWxsYmFja30gcmF0aGVyIHRoYW4gdGhyb3duLlxuICAgKiBJZ25vcmVkIGluIGF0dGFjaCBtb2RlICh7QGxpbmsgcG9ydH0gc2V0KSBhbmQgd2hlbiBubyBhc2FyIGlzIHN3YXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgKipuYWcgd2FybmluZ3MqKiBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICogQ292ZXJzIGJvdGggdGhlIG9mZmxpbmUgaW5zdGFsbGVyXHUyMTk0YXBwIHdhcm5pbmcgYW5kIHRoZSBwb3N0LWJvb3RcbiAgICogcnVudGltZS1FbGVjdHJvbiB3YXJuaW5nLiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGVhY2ggZmlyZXMgdmlhIHRoZSBoYXJuZXNzXG4gICAqIGxvZzsgc2V0IGBmYWxzZWAgdG8gc2lsZW5jZSBib3RoIFx1MjAxNCB0aGUgdmVyZGljdHMgYXJlIHN0aWxsIHN1cmZhY2VkIG9uXG4gICAqIHtAbGluayBDZHBDb25uZWN0aW9uLmNvbXBhdGliaWxpdHl9IC8ge0BsaW5rIENkcENvbm5lY3Rpb24uZWxlY3Ryb25Db21wYXRpYmlsaXR5fSxcbiAgICogb25seSB0aGUgbG9nIGlzIHN1cHByZXNzZWQuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBwYXRoIHRvIGFuIGV4aXN0aW5nIHZhdWx0IHRvIG9wZW4uIFdoZW4gb21pdHRlZCwgYW4gZW1wdHkgdGVtcG9yYXJ5XG4gICAqIHZhdWx0IGlzIGNyZWF0ZWQgKGFuZCByZW1vdmVkIG9uIGRpc3Bvc2UgdW5sZXNzXG4gICAqIHtAbGluayBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZX0gc2F5cyBvdGhlcndpc2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSByZXNvbHZlZCBDRFAgaG9zdC9wb3J0IHBhaXIuXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlZEVuZHBvaW50IHtcbiAgaG9zdDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59XG5cbi8qKlxuICogTGF1bmNoZXMgKG9yIGF0dGFjaGVzIHRvKSBhIENEUC1lbmFibGVkIE9ic2lkaWFuIGluc3RhbmNlLCBvcGVucyBhIHZhdWx0LCBhbmRcbiAqIGJvb3RzdHJhcHMgdGhlIHJ1bnRpbWUgaGVscGVyIG5hbWVzcGFjZSwgcmV0dXJuaW5nIGEgZGlzcG9zYWJsZSBjb25uZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29ubmVjdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbGl2ZSB7QGxpbmsgQ2RwQ29ubmVjdGlvbn0uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9DZHAob3B0aW9ucz86IENvbm5lY3RUb0NkcE9wdGlvbnMpOiBQcm9taXNlPENkcENvbm5lY3Rpb24+IHtcbiAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGJ1aWxkQ2RwVHJhbnNwb3J0T3B0aW9ucyhvcHRpb25zKTtcbiAgYXdhaXQgc3dlZXBMZWZ0b3ZlcnModHJhbnNwb3J0T3B0aW9ucyk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zKHRyYW5zcG9ydE9wdGlvbnMpO1xuICBjb25zdCBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZSA9IG9wdGlvbnM/LnNob3VsZFJlbW92ZVZhdWx0T25EaXNwb3NlID8/IChvcHRpb25zPy52YXVsdCA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgdmF1bHQgPSBuZXcgVGVtcG9yYXJ5VmF1bHQob3B0aW9ucz8udmF1bHQsIHsgc2hvdWxkUmVtb3ZlRGlyZWN0b3J5T25EaXNwb3NlOiBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZSB9KTtcblxuICAvLyBUaGUgaGVhZGxlc3MgZGVmYXVsdHMgZ28gb25seSBpbnRvIGEgdmF1bHQgdGhlIGhhcm5lc3MgbWFkZSBcdTIwMTQgdGhlIHNhbWVcbiAgLy8gYG9wdGlvbnMudmF1bHQgPT09IHVuZGVmaW5lZGAgZGlzY3JpbWluYXRvciB0aGUgZGlzcG9zYWwgYWJvdmUgdHVybnMgb24uIEFcbiAgLy8gQ2FsbGVyLXN1cHBsaWVkIHZhdWx0IGlzIGEgcmVhbCBvbmUgdGhlIHVzZXIga2VlcHMsIGFuZCBhIGRlYnVnZ2luZyBzZXNzaW9uXG4gIC8vIEhhcyBubyBidXNpbmVzcyByZXdyaXRpbmcgaXRzIHNldHRpbmdzLlxuICBpZiAob3B0aW9ucz8udmF1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGF3YWl0IGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWcoe1xuICAgICAgY29uZmlnRGlyZWN0b3J5OiByZXNvbHZlT3duZWRDb25maWdEaXJlY3RvcnkodHJhbnNwb3J0T3B0aW9ucyksXG4gICAgICBsYWJlbDogdHJhbnNwb3J0T3B0aW9ucy50eXBlLFxuICAgICAgdmF1bHRQYXRoOiB2YXVsdC5wYXRoXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWdpc3RlcmluZyB0aGUgdmF1bHQgaXMgd2hhdCBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2UgKHByb3Zpc2lvbnMgdGhlXG4gIC8vIEFzYXIsIG9wZW5zIHRoZSB2YXVsdCwgYW5kIGJvb3RzdHJhcHMgdGhlIGhlbHBlciBuYW1lc3BhY2UpLCBvciBvcGVucyB0aGVcbiAgLy8gVmF1bHQgaW4gdGhlIGF0dGFjaGVkIGluc3RhbmNlLlxuICBhd2FpdCB2YXVsdC5yZWdpc3Rlcih0cmFuc3BvcnQpO1xuXG4gIGNvbnN0IHsgaG9zdCwgcG9ydCB9ID0gcmVzb2x2ZUVuZHBvaW50KHRyYW5zcG9ydCwgb3B0aW9ucyk7XG4gIGNvbnN0IGNkcFVybCA9IGBodHRwOi8vJHtob3N0fToke1N0cmluZyhwb3J0KX1gO1xuICBjb25zdCBhc2FyRmFsbGJhY2sgPSB0cmFuc3BvcnQgaW5zdGFuY2VvZiBEZXNrdG9wQ2RwVHJhbnNwb3J0ID8gdHJhbnNwb3J0LmdldEFzYXJGYWxsYmFjaygpIDogdW5kZWZpbmVkO1xuICBjb25zdCBjb21wYXRpYmlsaXR5ID0gdHJhbnNwb3J0IGluc3RhbmNlb2YgRGVza3RvcENkcFRyYW5zcG9ydCA/IHRyYW5zcG9ydC5nZXRDb21wYXRpYmlsaXR5KCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGVsZWN0cm9uQ29tcGF0aWJpbGl0eSA9IHRyYW5zcG9ydCBpbnN0YW5jZW9mIERlc2t0b3BDZHBUcmFuc3BvcnQgPyB0cmFuc3BvcnQuZ2V0RWxlY3Ryb25Db21wYXRpYmlsaXR5KCkgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgY29ubmVjdGlvbjogQ2RwQ29ubmVjdGlvbiA9IHtcbiAgICBjZHBVcmwsXG4gICAgLi4uKGFzYXJGYWxsYmFjayAmJiB7IGFzYXJGYWxsYmFjayB9KSxcbiAgICAuLi4oY29tcGF0aWJpbGl0eSAmJiB7IGNvbXBhdGliaWxpdHkgfSksXG4gICAgLi4uKGVsZWN0cm9uQ29tcGF0aWJpbGl0eSAmJiB7IGVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9KSxcblxuICAgIGFzeW5jIGNhcHR1cmVTY3JlZW5zaG90KHBhcmFtcz86IEV4Y2VwdDxDYXB0dXJlU2NyZWVuc2hvdFBhcmFtcywgJ2N3ZCc+KTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgICAvLyBFdmVyeSB0cmFuc3BvcnQgYGNvbm5lY3RUb0NkcGAgYnVpbGRzIGlzIGEgRGVza3RvcENkcFRyYW5zcG9ydCwgd2hpY2hcbiAgICAgIC8vIEltcGxlbWVudHMgdGhlIG9wdGlvbmFsIG1ldGhvZCBcdTIwMTQgYnV0IHRoZSBpbnRlcmZhY2Ugc3RpbGwgdHlwZXMgaXRcbiAgICAgIC8vIE9wdGlvbmFsLCBzbyB0aGUgYWJzZW5jZSBpcyByZXBvcnRlZCByYXRoZXIgdGhhbiBzaWxlbnRseSB0aHJvd24gYXQuXG4gICAgICBpZiAoIXRyYW5zcG9ydC5jYXB0dXJlU2NyZWVuc2hvdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nvbm5lY3RUb0NkcDogdGhpcyB0cmFuc3BvcnQgY2Fubm90IGNhcHR1cmUgc2NyZWVuc2hvdHMuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cmFuc3BvcnQuY2FwdHVyZVNjcmVlbnNob3QoeyAuLi5wYXJhbXMsIGN3ZDogdmF1bHQucGF0aCB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoZSB2YXVsdCBjYXJyaWVzIGBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZWAgaXRzZWxmIChoYW5kZWQgdG8gaXRzIGNvbnN0cnVjdG9yIGFib3ZlKSwgc29cbiAgICAgICAgLy8gVGhpcyBpcyBvbmUgY2FsbCByYXRoZXIgdGhhbiBhIGJyYW5jaDogaXQgYWx3YXlzIHVucmVnaXN0ZXJzLCBhbmQgcmVtb3ZlcyB0aGUgZGlyZWN0b3J5IG9ubHlcbiAgICAgICAgLy8gV2hlbiB0aGF0IGZsYWcgc2F5cyB0by5cbiAgICAgICAgYXdhaXQgdmF1bHQuZGlzcG9zZSh0cmFuc3BvcnQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgdHJhbnNwb3J0LmRpc3Bvc2U/LigpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBldmFsSW5PYnNpZGlhbjxJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3QsIFJlc3VsdCwgVENvbnRleHRJZCBleHRlbmRzIENvbnRleHRJZDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgICBwYXJhbXM6IEV4Y2VwdDxFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPiwgJ3RyYW5zcG9ydCcgfCAndmF1bHRQYXRoJz5cbiAgICApOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgICAgcmV0dXJuIGV2YWxJbk9ic2lkaWFuPElucHV0LCBSZXN1bHQsIFRDb250ZXh0SWQ+KHsgLi4ucGFyYW1zLCB0cmFuc3BvcnQsIHZhdWx0UGF0aDogdmF1bHQucGF0aCB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaW52b2tlKGV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkOiB2YXVsdC5wYXRoIH0pO1xuICAgIH0sXG5cbiAgICBwb3J0LFxuXG4gICAgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgYXdhaXQgY29ubmVjdGlvbi5kaXNwb3NlKCk7XG4gICAgfSxcblxuICAgIHZhdWx0XG4gIH07XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zfSBmb3IgYSBjb25uZWN0aW9uLCB0aHJlYWRpbmcgb25seVxuICogdGhlIHByb3ZpZGVkIHtAbGluayBDb25uZWN0VG9DZHBPcHRpb25zfSB0aHJvdWdoIChvd25lZC12aXNpYmxlIGRlZmF1bHRzIHRvXG4gKiBgdHJ1ZWAsIHVubGlrZSB0aGUgaGlkZGVuLWJ5LWRlZmF1bHQgdGVzdCB0cmFuc3BvcnRzKS4gVW5zZXQga25vYnMgcGFzcyB0aHJvdWdoXG4gKiBhcyBgdW5kZWZpbmVkYCBhbmQgYXJlIHJlYWQgd2l0aCBgPz8gZGVmYXVsdGAgLyBgIT09IHVuZGVmaW5lZGAgZ3VhcmRzXG4gKiBkb3duc3RyZWFtLCBzbyBhbiBleHBsaWNpdCBgdW5kZWZpbmVkYCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGFic2VudCBrZXkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgY29ubmVjdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHRyYW5zcG9ydCBvcHRpb25zIHRvIGNyZWF0ZSB0aGUgY29ubmVjdGlvbidzIHRyYW5zcG9ydCBmcm9tLlxuICovXG5mdW5jdGlvbiBidWlsZENkcFRyYW5zcG9ydE9wdGlvbnMob3B0aW9ucz86IENvbm5lY3RUb0NkcE9wdGlvbnMpOiBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMge1xuICByZXR1cm4gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucz4oe1xuICAgIGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IG9wdGlvbnM/LmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHMsXG4gICAgY29uZmlnRGlyZWN0b3J5OiBvcHRpb25zPy5jb25maWdEaXJlY3RvcnksXG4gICAgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzOiBvcHRpb25zPy5kZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHMsXG4gICAgaG9zdDogb3B0aW9ucz8uaG9zdCxcbiAgICBpc09ic2lkaWFuQXBwVmlzaWJsZTogb3B0aW9ucz8uaXNPYnNpZGlhbkFwcFZpc2libGUgPz8gdHJ1ZSxcbiAgICBvYnNpZGlhbkluc3RhbGxlclZlcnNpb246IG9wdGlvbnM/Lm9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbixcbiAgICBvYnNpZGlhblZlcnNpb246IG9wdGlvbnM/Lm9ic2lkaWFuVmVyc2lvbixcbiAgICBwb3J0OiBvcHRpb25zPy5wb3J0LFxuICAgIHNob3VsZERpc2FibGVTYW5kYm94OiBvcHRpb25zPy5zaG91bGREaXNhYmxlU2FuZGJveCxcbiAgICBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyOiBvcHRpb25zPy5zaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyLFxuICAgIHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s6IG9wdGlvbnM/LnNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2ssXG4gICAgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlczogb3B0aW9ucz8uc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyxcbiAgICB0eXBlOiAnb2JzaWRpYW4tY2RwJ1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ0RQIGhvc3QvcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb246IGZyb20gdGhlIG93bmVkIGluc3RhbmNlJ3NcbiAqIGxhdW5jaGVkIGVuZHBvaW50IHdoZW4gcHJlc2VudCwgb3RoZXJ3aXNlIGZyb20gdGhlIGF0dGFjaCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB0cmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IGNyZWF0ZWQgZm9yIHRoaXMgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNvbm5lY3Rpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBob3N0IGFuZCBwb3J0LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgcG9ydCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVuZHBvaW50KHRyYW5zcG9ydDogdW5rbm93biwgb3B0aW9uczogQ29ubmVjdFRvQ2RwT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFJlc29sdmVkRW5kcG9pbnQge1xuICBpZiAodHJhbnNwb3J0IGluc3RhbmNlb2YgRGVza3RvcENkcFRyYW5zcG9ydCkge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdHJhbnNwb3J0LmdldE93bmVkSW5zdGFuY2VFbmRwb2ludCgpO1xuICAgIGlmIChlbmRwb2ludCkge1xuICAgICAgcmV0dXJuIHsgaG9zdDogZW5kcG9pbnQuaG9zdCwgcG9ydDogZW5kcG9pbnQucG9ydCB9O1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zPy5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyBob3N0OiBvcHRpb25zLmhvc3QgPz8gREVGQVVMVF9DRFBfSE9TVCwgcG9ydDogb3B0aW9ucy5wb3J0IH07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ2Nvbm5lY3RUb0NkcDogY291bGQgbm90IGRldGVybWluZSB0aGUgQ0RQIHBvcnQuJyk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgaG9zdC1zaWRlIHRlbXAgZGlyZWN0b3JpZXMgZWFybGllciBydW5zIGxlYWtlZCwgYmVmb3JlIHRoaXNcbiAqIGNvbm5lY3Rpb24gYWRkcyBpdHMgb3duLlxuICpcbiAqIGBjb25uZWN0VG9DZHBgIG1pbnRzIHRoZSBzYW1lIGB0ZW1wLXZhdWx0LSpgIC8gb3duZWQgYHVzZXJkYXRhLSpgIGRpcmVjdG9yaWVzXG4gKiB0aGUgdGVzdCBnbG9iYWwgc2V0dXAgZG9lcywgYW5kIGFuIGFkLWhvYyBkZWJ1Z2dpbmcgc2Vzc2lvbiBpcyBleGFjdGx5IHRoZVxuICoga2luZCB0aGF0IGdldHMga2lsbGVkIHdpdGggYSBsZWZ0b3ZlciBiZWhpbmQgXHUyMDE0IHNvIGl0IHN3ZWVwcyB0b28uIEFnZS1nYXRlZCBhbmRcbiAqIGJlc3QtZWZmb3J0OyBzZWUgdGhlIGNvcmUncyBgc3dlZXBMZWZ0b3ZlcnNgLlxuICpcbiAqIEBwYXJhbSB0cmFuc3BvcnRPcHRpb25zIC0gVGhlIHJlc29sdmVkIHRyYW5zcG9ydCBvcHRpb25zIChzb3VyY2Ugb2YgdGhlIHN3ZWVwIGtub2JzKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3dlZXBMZWZ0b3ZlcnModHJhbnNwb3J0T3B0aW9uczogT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghd2lsbFN3ZWVwTGVmdG92ZXJzKHRyYW5zcG9ydE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzd2VlcEhvc3RMZWZ0b3ZlcnMoe1xuICAgICAgbWF4QWdlSW5NaWxsaXNlY29uZHM6IHJlc29sdmVMZWZ0b3Zlck1heEFnZUluTWlsbGlzZWNvbmRzKHRyYW5zcG9ydE9wdGlvbnMpXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5yZW1vdmVkQ291bnQgPiAwIHx8IHJlc3VsdC5mYWlsZWRDb3VudCA+IDApIHtcbiAgICAgIGxvZyhcbiAgICAgICAgYFtjb25uZWN0LXRvLWNkcF0gU3dlcHQgJHtTdHJpbmcocmVzdWx0LnJlbW92ZWRDb3VudCl9IGxlZnRvdmVyIHRlbXAgZGlyZWN0b3IoaWVzKSBmcm9tIGVhcmxpZXIgcnVucyBgXG4gICAgICAgICAgKyBgKCR7U3RyaW5nKHJlc3VsdC5mYWlsZWRDb3VudCl9IHN0aWxsIGluIHVzZSkuYFxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nKGBbY29ubmVjdC10by1jZHBdIExlZnRvdmVyIHN3ZWVwIGVycm9yIChub24tZmF0YWwpOiAke1N0cmluZyhlcnJvcil9YCk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkEsOEJBQStCO0FBQy9CLG1DQUEwQztBQUMxQyw4QkFJTztBQUNQLGlCQUFvQjtBQUNwQiwyQ0FBNEM7QUFDNUMsNkJBQStCO0FBQy9CLG1DQUFvQztBQUNwQywrQkFBMkM7QUFDM0MsK0JBQTRDO0FBRTVDLE1BQU0sbUJBQW1CO0FBOFJ6QixlQUFzQixhQUFhLFNBQXVEO0FBQ3hGLFFBQU0sbUJBQW1CLHlCQUF5QixPQUFPO0FBQ3pELFFBQU0sZUFBZSxnQkFBZ0I7QUFDckMsUUFBTSxZQUFZLFVBQU0scURBQTJCLGdCQUFnQjtBQUNuRSxRQUFNLDZCQUE2QixTQUFTLDhCQUErQixTQUFTLFVBQVU7QUFDOUYsUUFBTSxRQUFRLElBQUksc0NBQWUsU0FBUyxPQUFPLEVBQUUsZ0NBQWdDLDJCQUEyQixDQUFDO0FBTS9HLE1BQUksU0FBUyxVQUFVLFFBQVc7QUFDaEMsY0FBTSx3REFBMEI7QUFBQSxNQUM5QixxQkFBaUIsc0RBQTRCLGdCQUFnQjtBQUFBLE1BQzdELE9BQU8saUJBQWlCO0FBQUEsTUFDeEIsV0FBVyxNQUFNO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0g7QUFLQSxRQUFNLE1BQU0sU0FBUyxTQUFTO0FBRTlCLFFBQU0s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
135
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Nvbm5lY3QtdG8tY2RwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvZ3JhbW1hdGljIGhlbHBlciB0byBsYXVuY2ggKG9yIGF0dGFjaCB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZVxuICogd2l0aCB0aGUgcnVudGltZSBoZWxwZXIgbmFtZXNwYWNlIGJvb3RzdHJhcHBlZCwgZm9yIGFkLWhvYyByZWFsLWFwcCBkZWJ1Z2dpbmcuXG4gKlxuICogQSBzaW5nbGUge0BsaW5rIGNvbm5lY3RUb0NkcH0gY2FsbCByZXNvbHZlcyB0aGUgb3duZWQtaW5zdGFuY2UgY29uZmlnLCBvcGVucyBhXG4gKiB2YXVsdCwgYW5kIGJvb3RzdHJhcHMgYHdpbmRvdy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYCAoc28gYGV2YWxXcmFwcGVyYCxcbiAqIHRoZSBiYXNlIGBsaWJgIGhlbHBlcnMsIGBlcnJvclRvU3RyaW5nYCwgYGdldE9ic2lkaWFuTW9kdWxlYCwgXHUyMDI2IGFyZSBhdmFpbGFibGUpLCB0aGVuXG4gKiBoYW5kcyBiYWNrIGEgZGlzcG9zYWJsZSB7QGxpbmsgQ2RwQ29ubmVjdGlvbn0gZXhwb3NpbmcgdGhlIGNob3NlbiBDRFAgcG9ydCwgYVxuICogcmF3IHtAbGluayBDZHBDb25uZWN0aW9uLmludm9rZX0gYW5kIHRoZSByaWNoIHtAbGluayBDZHBDb25uZWN0aW9uLmV2YWxJbk9ic2lkaWFufS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBjb2RlIChsYXVuY2hlcyBPYnNpZGlhbiAvIENEUCkgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRXhjZXB0IH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBBc2FyRmFsbGJhY2sgfSBmcm9tICcuL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLmNqcyc7XG5pbXBvcnQgdHlwZSB7IENhcHR1cmVTY3JlZW5zaG90UGFyYW1zIH0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QuY2pzJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dElkIH0gZnJvbSAnLi9jb250ZXh0LWlkLmNqcyc7XG5pbXBvcnQgdHlwZSB7IEVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vZWxlY3Ryb24tY29tcGF0aWJpbGl0eS5janMnO1xuaW1wb3J0IHR5cGUge1xuICBFdmFsSW5PYnNpZGlhblBhcmFtcyxcbiAgR2VuZXJpY09iamVjdFxufSBmcm9tICcuL2V2YWwtaW4tb2JzaWRpYW4uY2pzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB9IGZyb20gJy4vaW5zdGFsbGVyLWNvbXBhdGliaWxpdHkuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuXG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5janMnO1xuaW1wb3J0IHsgZW5zdXJlSGVhZGxlc3NWYXVsdENvbmZpZyB9IGZyb20gJy4vaGVhZGxlc3MtdmF1bHQtY29uZmlnLmNqcyc7XG5pbXBvcnQge1xuICByZXNvbHZlTGVmdG92ZXJNYXhBZ2VJbk1pbGxpc2Vjb25kcyxcbiAgc3dlZXBIb3N0TGVmdG92ZXJzLFxuICB3aWxsU3dlZXBMZWZ0b3ZlcnNcbn0gZnJvbSAnLi9sZWZ0b3Zlci1jbGVhbnVwLmNqcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5janMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi9ub3JtYWxpemUtb3B0aW9uYWwtcHJvcGVydGllcy5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuaW1wb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLmNqcyc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkuY2pzJztcbmltcG9ydCB7IHJlc29sdmVPd25lZENvbmZpZ0RpcmVjdG9yeSB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuY29uc3QgREVGQVVMVF9DRFBfSE9TVCA9ICdsb2NhbGhvc3QnO1xuXG4vKipcbiAqIEEgbGl2ZSBjb25uZWN0aW9uIHRvIGEgQ0RQLWVuYWJsZWQgT2JzaWRpYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcnVudGltZSBoZWxwZXJcbiAqIG5hbWVzcGFjZSBib290c3RyYXBwZWQuXG4gKlxuICogSW1wbGVtZW50cyBgQXN5bmNEaXNwb3NhYmxlYCwgc28gYGF3YWl0IHVzaW5nIGNvbm4gPSBhd2FpdCBjb25uZWN0VG9DZHAoXHUyMDI2KWBcbiAqIGRpc3Bvc2VzIGl0IChraWxsaW5nIGFuIG93bmVkIGluc3RhbmNlIGFuZCBcdTIwMTQgZm9yIGEgdGhyb3ctYXdheSB0ZW1wIHZhdWx0IFx1MjAxNFxuICogcmVtb3ZpbmcgaXRzIGRpcmVjdG9yeSkgYXV0b21hdGljYWxseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZHBDb25uZWN0aW9uIGV4dGVuZHMgQXN5bmNEaXNwb3NhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBzaWxlbnQtYXNhci1mYWxsYmFjayB2ZXJkaWN0IGZvciBhbiBvd25lZCBpbnN0YW5jZSwgcmVhZCBsaXZlIGFmdGVyIGJvb3Q6XG4gICAqIHdoZXRoZXIgdGhlIGFwcCB2ZXJzaW9uIGl0IGlzIGFjdHVhbGx5IHJ1bm5pbmcgbWF0Y2hlcyB0aGUgc3dhcHBlZC1pbiBwaW4sIG9yXG4gICAqIHRoZSBpbnN0YWxsZXIgc2lsZW50bHkgcmV2ZXJ0ZWQgdG8gaXRzIG93biBidW5kbGVkIGFzYXIuIGB1bmRlZmluZWRgIGluIGF0dGFjaFxuICAgKiBtb2RlLCB3aGVuIG5vIGFzYXIgd2FzIHN3YXBwZWQsIG9yIHdoZW4gdGhlIHJ1bm5pbmcgdmVyc2lvbiB3YXMgdW5yZWFkYWJsZS4gQVxuICAgKiBgJ2ZhbGxiYWNrJ2AgdmVyZGljdCByZWFjaGVzIGhlcmUgb25seSB3aGVuIHRoZSB0aHJvdyBpcyBkaXNhYmxlZFxuICAgKiAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFja30gYGZhbHNlYCk7XG4gICAqIG90aGVyd2lzZSBpdCB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFzYXJGYWxsYmFjaz86IEFzYXJGYWxsYmFjayB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQ2FwdHVyZXMgYSBQTkcgc2NyZWVuc2hvdCBvZiB0aGlzIGNvbm5lY3Rpb24ncyBPYnNpZGlhbiB3aW5kb3csIHdpdGggdGhlXG4gICAqIHZhdWx0IHBhdGggcHJlLWJvdW5kLlxuICAgKlxuICAgKiBQYXNzIGB3aWR0aEluUGl4ZWxzYCArIGBoZWlnaHRJblBpeGVsc2AgdG8gcGluIHRoZSB2aWV3cG9ydCBmb3IgdGhlIGR1cmF0aW9uXG4gICAqIG9mIHRoZSBjYXB0dXJlLCBzbyB0aGUgZW1pdHRlZCBQTkcgaXMgZXhhY3RseSB0aGF0IHNpemUgd2hhdGV2ZXIgc2l6ZSB0aGVcbiAgICogd2luZG93IGhhcHBlbnMgdG8gYmUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZXhhY3Qgc2l6ZSB0byBjYXB0dXJlIGF0LiBPbWl0IHRvIGNhcHR1cmUgdGhlIHdpbmRvdyBhdCBpdHMgbmF0dXJhbCBzaXplLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByYXcgUE5HIGJ5dGVzLlxuICAgKi9cbiAgY2FwdHVyZVNjcmVlbnNob3QocGFyYW1zPzogRXhjZXB0PENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLCAnY3dkJz4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+O1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBDRFAgVVJMLCBlLmcuIGBodHRwOi8vbG9jYWxob3N0OjUxODg4YC5cbiAgICovXG4gIHJlYWRvbmx5IGNkcFVybDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdmVyZGljdCBmb3IgYW4gb3duZWQgaW5zdGFuY2UsIHdoZW5cbiAgICogaXQgY291bGQgYmUgZGV0ZXJtaW5lZC4gYHVuZGVmaW5lZGAgaW4gYXR0YWNoIG1vZGUsIG9yIHdoZW4gdGhlIHZlcmRpY3QgaXNcbiAgICogdW5rbm93biAodW5kZXRlY3RhYmxlIHNoZWxsIHZlcnNpb24sIG9yIHRoZSBhcHAgdmVyc2lvbiBpcyBhYnNlbnQgZnJvbSB0aGVcbiAgICogdGFibGUpLiBBbiBgJ3VucnVubmFibGUnYCB2ZXJkaWN0IHJlYWNoZXMgaGVyZSBvbmx5IHdoZW4gdGhlIHByb2FjdGl2ZSB0aHJvd1xuICAgKiBpcyBkaXNhYmxlZCAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcn1cbiAgICogYGZhbHNlYCk7IG90aGVyd2lzZSBpdCB0aHJvd3MgYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgYmVmb3JlIHRoZVxuICAgKiBjb25uZWN0aW9uIGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjb21wYXRpYmlsaXR5PzogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRGlzcG9zZXMgdGhlIGNvbm5lY3Rpb246IGtpbGxzIGFuIG93bmVkIGluc3RhbmNlIGFuZCByZW1vdmVzIGl0cyBpc29sYXRlZFxuICAgKiB1c2VyLWRhdGEgZGlyLiBUaGUgdmF1bHQgZGlyZWN0b3J5IGlzIHJlbW92ZWQgb25seSB3aGVuIGl0IGlzIGEgdGhyb3ctYXdheVxuICAgKiB0ZW1wIHZhdWx0IChzZWUge0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMuc2hvdWxkUmVtb3ZlVmF1bHRPbkRpc3Bvc2V9KTsgYVxuICAgKiByZWFsIHZhdWx0IHBhc3NlZCB2aWEge0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMudmF1bHR9IGlzIG5ldmVyIGRlbGV0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBkaXNwb3NhbCBjb21wbGV0ZXMuXG4gICAqL1xuICBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIEVsZWN0cm9uIGNvbXBhdGliaWxpdHkgdmVyZGljdCBmb3IgYW4gb3duZWQgaW5zdGFuY2UsIHJlYWQgbGl2ZVxuICAgKiBhZnRlciBib290OiB3aGV0aGVyIHRoZSBFbGVjdHJvbiB2ZXJzaW9uIGl0IGlzIGFjdHVhbGx5IHJ1bm5pbmcgaXMgbmV3IGVub3VnaFxuICAgKiBmb3IgdGhlIHJ1bm5pbmcgYXBwIHZlcnNpb24uIGB1bmRlZmluZWRgIGluIGF0dGFjaCBtb2RlLCBvciB3aGVuIHRoZSB2ZXJkaWN0XG4gICAqIGlzIHVua25vd24gKHRoZSBsaXZlIHZlcnNpb24gd2FzIHVucmVhZGFibGUsIG9yIHRoZSBhcHAgdmVyc2lvbiBjYXJyaWVzIG5vXG4gICAqIHJlY29tbWVuZGVkIEVsZWN0cm9uIHZlcnNpb24pLiBBbiBvbGQgRWxlY3Ryb24gbmV2ZXIgYmxvY2tzIFx1MjAxNCBpdCBvbmx5IHdhcm5zIFx1MjAxNFxuICAgKiBzbyB1bmxpa2Uge0BsaW5rIGNvbXBhdGliaWxpdHl9IHRoZXJlIGlzIG5vIHRocm93aW5nIHRpZXIuXG4gICAqL1xuICByZWFkb25seSBlbGVjdHJvbkNvbXBhdGliaWxpdHk/OiBFbGVjdHJvbkNvbXBhdGliaWxpdHkgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyBhIHNlbGYtY29udGFpbmVkIGZ1bmN0aW9uIGluc2lkZSBPYnNpZGlhbiB2aWEgdGhlIHJpY2ggaGVscGVyXG4gICAqIHBhdGgsIHJlY2VpdmluZyBgeyBhcHAsIGxpYiwgb2JzaWRpYW5Nb2R1bGUsIGNvbnRleHQgfWAgcGx1cyBhbnkgYGlucHV0YFxuICAgKiAoc2hhcmVkIGhlbHBlcnMgbGlrZSBgdHlwZUludG9FZGl0b3JgIC8gYHdhaXRVbnRpbGAgbGl2ZSBvbiBgbGliYCkuIE1pcnJvcnNcbiAgICogdGhlIHRvcC1sZXZlbCBgZXZhbEluT2JzaWRpYW5gLCB3aXRoIHRoZSB0cmFuc3BvcnQgYW5kIHZhdWx0IHBhdGggcHJlLWJvdW5kXG4gICAqIHRvIHRoaXMgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBldmFsdWF0aW9uIHBhcmFtZXRlcnMgKGBjYWxsYmFja2AsIG9wdGlvbmFsIGBpbnB1dGAvYGNvbnRleHRJZGApLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAgICovXG4gIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgICBwYXJhbXM6IEV4Y2VwdDxFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPiwgJ3RyYW5zcG9ydCcgfCAndmF1bHRQYXRoJz5cbiAgKTogUHJvbWlzZTxSZXN1bHQ+O1xuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSByYXcgSmF2YVNjcmlwdCBleHByZXNzaW9uIGluc2lkZSBPYnNpZGlhbiBhbmQgcmV0dXJucyB0aGVcbiAgICogbm9ybWFsaXplZCBzdHJpbmcgcmVzdWx0IChlLmcuIGAnNSdgLCBhIEpTT04gc3RyaW5nLCBvciBgJyhubyBvdXRwdXQpJ2ApLlxuICAgKlxuICAgKiBAcGFyYW0gZXhwcmVzc2lvbiAtIEEgc2VsZi1jb250YWluZWQgSmF2YVNjcmlwdCBleHByZXNzaW9uLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByYXcgcmVzdWx0IHN0cmluZy5cbiAgICovXG4gIGludm9rZShleHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBDRFAgcG9ydCB0aGUgaW5zdGFuY2UgaXMgcmVhY2hhYmxlIG9uICh0aGUgZnJlZSBwb3J0IGNob3NlbiBmb3IgYW5cbiAgICogb3duZWQgaW5zdGFuY2UsIG9yIHRoZSBhdHRhY2hlZCB7QGxpbmsgQ29ubmVjdFRvQ2RwT3B0aW9ucy5wb3J0fSkuXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVuZWQgdmF1bHQuIEV4cG9zZXMgYHBhdGhgIGFuZCBgcG9wdWxhdGUoLi4uKWAgZm9yIHNlZWRpbmcgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSB2YXVsdDogVGVtcG9yYXJ5VmF1bHQ7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGNvbm5lY3RUb0NkcH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFRvQ2RwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqXG4gICAqIEEgdGVzdCdzIGNsb3N1cmUgdHJhdmVscyBhcyBvbmUgYFJ1bnRpbWUuZXZhbHVhdGVgIGNvbW1hbmQsIHNvIHRoaXMgaXMgYWxzb1xuICAgKiB0aGUgZGVza3RvcCBwZXItZXZhbCBjYXAuIFRoZSBkZWZhdWx0IGlzIGBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU2AsXG4gICAqIGV4cG9ydGVkIGZyb20gdGhlIHBhY2thZ2Ugcm9vdCBcdTIwMTQgaW1wb3J0IGl0IHJhdGhlciB0aGFuIHJlc3RhdGluZyB0aGUgbnVtYmVyLFxuICAgKiBzbyBhIGNsb3N1cmUgc2l6ZWQgYWdhaW5zdCB0aGUgY2FwIGZvbGxvd3MgaXQgaWYgaXQgZXZlciBtb3Zlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDMwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZhdWx0J3MgKipjb25maWcgZm9sZGVyKiogXHUyMDE0IE9ic2lkaWFuJ3MgcGVyLXZhdWx0ICpPdmVycmlkZSBjb25maWdcbiAgICogZm9sZGVyKiBzZXR0aW5nLCBlLmcuIGAnLm9ic2lkaWFuLWRlc2t0b3AnYC4gU2V0IGl0IHRvIG9wZW4gYSB2YXVsdCB0aGF0XG4gICAqIGtlZXBzIGl0cyBzZXR0aW5ncyBzb21ld2hlcmUgb3RoZXIgdGhhbiBgLm9ic2lkaWFuYDsgd2l0aG91dCBpdCBzdWNoIGEgdmF1bHRcbiAgICogb3BlbnMgYWdhaW5zdCBgLm9ic2lkaWFuYCwgd2hpY2ggZm9yIGEgdmF1bHQgdGhhdCBoYXMgYSBzdGFsZSBvbmUgYmVzaWRlIHRoZVxuICAgKiByZWFsIGZvbGRlciBtZWFucyBvcGVuaW5nIHN1Y2Nlc3NmdWxseSBhZ2FpbnN0IHRoZSB3cm9uZyBzZXR0aW5ncy5cbiAgICpcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgZG90LCBtdXN0IG5vdCBiZSB0aGUgYmFyZSBkb3QsIGFuZCBtdXN0IG5vdCBjb250YWluIGEgcGF0aFxuICAgKiBzZXBhcmF0b3IgXHUyMDE0IGFueXRoaW5nIGVsc2UgdGhyb3dzIGJlZm9yZSBPYnNpZGlhbiBsYXVuY2hlcywgc2luY2UgT2JzaWRpYW5cbiAgICogd291bGQgc2lsZW50bHkgc3Vic3RpdHV0ZSBgLm9ic2lkaWFuYC4gQWZ0ZXIgdGhlIHZhdWx0IG9wZW5zLCBpdHMgYWN0dWFsXG4gICAqIGBhcHAudmF1bHQuY29uZmlnRGlyYCBpcyByZWFkIGJhY2sgYW5kIGEgbWlzbWF0Y2ggdGhyb3dzXG4gICAqIGBDb25maWdEaXJlY3RvcnlGYWxsYmFja0Vycm9yYC5cbiAgICpcbiAgICogSWdub3JlZCBpbiBhdHRhY2ggbW9kZSAoe0BsaW5rIENvbm5lY3RUb0NkcE9wdGlvbnMucG9ydH0gc2V0KSwgd2hlcmUgdGhlXG4gICAqIHZhdWx0IGlzIG9wZW5lZCBieSB0aGUgdXNlcidzIG93biBPYnNpZGlhbiB1bmRlciBpdHMgb3duIGNvbmZpZy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGAgKE9ic2lkaWFuJ3Mgb3duIGRlZmF1bHQsIGAub2JzaWRpYW5gKVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSBkZWFkIGJvb3Qgb2YgdGhlIG93bmVkXG4gICAqIGluc3RhbmNlIFx1MjAxNCB0aGUgcmVuZGVyZXIgbG9hZGVkIGJ1dCB0aGUgYXBwIG5ldmVyIGJvb3RzdHJhcHBlZCAoZW1wdHlcbiAgICogYDxib2R5PmAsIG5vIGB3aW5kb3cuYXBwYCksIHRoZSB0ZXJtaW5hbCBzdGF0ZSB3aGVuIHRoZSBhc2FyIGNhbm5vdCBydW4gb25cbiAgICogdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsLiBPbmNlIGl0IGhhcyBoZWxkIHRoaXMgbG9uZyBhXG4gICAqIGBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yYCBpcyB0aHJvd24gaW5zdGVhZCBvZiB3YWl0aW5nIG91dCB0aGUgZnVsbFxuICAgKiByZWFkaW5lc3MgdGltZW91dC4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZSAoe0BsaW5rIHBvcnR9IHNldCkuIFNldCBgMGAgdG9cbiAgICogZGlzYWJsZSBmYXN0LWZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIE9ic2lkaWFuIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uIERlZmF1bHRzIHRvIGB0cnVlYDsgc2V0XG4gICAqIGBmYWxzZWAgdG8gbGF1bmNoIGl0IG9mZi1zY3JlZW4uXG4gICAqIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgRWxlY3Ryb24gc2hlbGwgKGluc3RhbGxlciBidWlsZCkgdGhlIG93bmVkIGluc3RhbmNlIHJ1bnMuIEFjY2VwdHNcbiAgICogYCd4LnkueidgLCBgJ3B1YmxpYy1sYXRlc3QnYCwgb3IgYCdjYXRhbHlzdC1sYXRlc3QnYC4gSWdub3JlZCB3aGVuXG4gICAqIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC4gV2hlbiBvbWl0dGVkLCB0aGUgaW5zdGFsbGVkIHNoZWxsIGlzIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBvYnNpZGlhbkluc3RhbGxlclZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBpbnMgdGhlIE9ic2lkaWFuIGFwcCB2ZXJzaW9uIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy4gQWNjZXB0c1xuICAgKiBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLiBJZ25vcmVkIHdoZW5cbiAgICoge0BsaW5rIHBvcnR9IChhdHRhY2ggbW9kZSkgaXMgc2V0LiBXaGVuIG9taXR0ZWQsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0by4gV2hlbiBvbWl0dGVkLCBhblxuICAgKiBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5IGNob3NlbiBmcmVlIHBvcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB1bmRlZmluZWRgXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxhdW5jaCB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aCBDaHJvbWl1bSdzIHNhbmRib3ggZGlzYWJsZWRcbiAgICogKGAtLW5vLXNhbmRib3hgKS5cbiAgICpcbiAgICogTmVlZGVkIHRvIGJvb3Qgb24gTGludXggd2l0aG91dCBhIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZFxuICAgKiBgY2hyb21lLXNhbmRib3hgIGhlbHBlciAoZS5nLiBhbiBpbnN0YWxsZXItZXh0cmFjdGVkIHBvcnRhYmxlIHNoZWxsLCBvciBDSVxuICAgKiBydW5uaW5nIGFzIGEgbm9uLXJvb3QgdXNlcik7IGhhcm1sZXNzIG9uIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoXG4gICAqIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGREaXNhYmxlU2FuZGJveD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVtb3ZlIHRoZSB2YXVsdCBkaXJlY3Rvcnkgb24ge0BsaW5rIENkcENvbm5lY3Rpb24uZGlzcG9zZX0uXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgZGVmYXVsdHMgdG8gYHRydWVgIGZvciBhbiBpbXBsaWNpdCB0aHJvdy1hd2F5IHRlbXAgdmF1bHRcbiAgICogKHtAbGluayB2YXVsdH0gbm90IGdpdmVuKSBhbmQgYGZhbHNlYCB3aGVuIGEge0BsaW5rIHZhdWx0fSBwYXRoIGlzIGdpdmVuLCBzb1xuICAgKiBhIHJlYWwgdmF1bHQgaXMgbmV2ZXIgZGVsZXRlZC4gU2V0IGV4cGxpY2l0bHkgdG8gb3ZlcnJpZGUuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYW4gKip1bnJ1bm5hYmxlKiogaW5zdGFsbGVyXHUyMTk0YXBwIHZlcnNpb24gcGFpciBmYWlscyBmYXN0IGJlZm9yZSBsYXVuY2guXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIGFuIGluc3RhbGxlciBiZWxvdyB0aGUgYXBwJ3MgcnVuIGZsb29yIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiBiZWZvcmUgYW55dGhpbmcgaXNcbiAgICogZG93bmxvYWRlZCBvciBsYXVuY2hlZC4gU2V0IGBmYWxzZWAgdG8gbGV0IHRoZSBwaW4gcHJvY2VlZCB0byBsYXVuY2ggXHUyMDE0IHdoZXJlXG4gICAqIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsIHN0aWxsIGNhdGNoZXMgdGhlIGJsYWNrLXNjcmVlbiBib290LCBhbmQgdGhlXG4gICAqIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgaXMgc3VyZmFjZWQgb24ge0BsaW5rIENkcENvbm5lY3Rpb24uY29tcGF0aWJpbGl0eX1cbiAgICogcmF0aGVyIHRoYW4gdGhyb3duLiBJZ25vcmVkIGluIGF0dGFjaCBtb2RlICh7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhIHBvc3QtYm9vdCAqKnNpbGVudCBhc2FyIGZhbGxiYWNrKiogZmFpbHMgZmFzdC5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGlzIHN3YXBwZWQgb250byBhbiBpbnN0YWxsZXIgc2hlbGwgdG9vIG9sZCBmb3IgaXQsIHRoZSBpbnN0YW5jZVxuICAgKiBtYXkgc2lsZW50bHkgcmV2ZXJ0IHRvIHRoZSBpbnN0YWxsZXIncyBvd24gYnVuZGxlZCBhc2FyIGFuZCBydW4gdGhlICoqd3JvbmdcbiAgICogKG9sZGVyKSoqIHZlcnNpb24gYmVoaW5kIGEgaGVhbHRoeSBVSS4gV2hlbiBgdHJ1ZWAgKHRoZSBkZWZhdWx0KSwgdGhlIHJ1bm5pbmdcbiAgICogYXBwIHZlcnNpb24gaXMgdmVyaWZpZWQgYWdhaW5zdCB0aGUgcGluIHBvc3QtYm9vdCBhbmQgYSBtaXNtYXRjaCB0aHJvd3NcbiAgICogYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYC4gU2V0IGBmYWxzZWAgdG8gbGV0IHRoZSBib290IHByb2NlZWQgXHUyMDE0IHRoZSBtaXNtYXRjaFxuICAgKiBpcyB0aGVuIHN1cmZhY2VkIG9uIHtAbGluayBDZHBDb25uZWN0aW9uLmFzYXJGYWxsYmFja30gcmF0aGVyIHRoYW4gdGhyb3duLlxuICAgKiBJZ25vcmVkIGluIGF0dGFjaCBtb2RlICh7QGxpbmsgcG9ydH0gc2V0KSBhbmQgd2hlbiBubyBhc2FyIGlzIHN3YXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgKipuYWcgd2FybmluZ3MqKiBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICogQ292ZXJzIGJvdGggdGhlIG9mZmxpbmUgaW5zdGFsbGVyXHUyMTk0YXBwIHdhcm5pbmcgYW5kIHRoZSBwb3N0LWJvb3RcbiAgICogcnVudGltZS1FbGVjdHJvbiB3YXJuaW5nLiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGVhY2ggZmlyZXMgdmlhIHRoZSBoYXJuZXNzXG4gICAqIGxvZzsgc2V0IGBmYWxzZWAgdG8gc2lsZW5jZSBib3RoIFx1MjAxNCB0aGUgdmVyZGljdHMgYXJlIHN0aWxsIHN1cmZhY2VkIG9uXG4gICAqIHtAbGluayBDZHBDb25uZWN0aW9uLmNvbXBhdGliaWxpdHl9IC8ge0BsaW5rIENkcENvbm5lY3Rpb24uZWxlY3Ryb25Db21wYXRpYmlsaXR5fSxcbiAgICogb25seSB0aGUgbG9nIGlzIHN1cHByZXNzZWQuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBwYXRoIHRvIGFuIGV4aXN0aW5nIHZhdWx0IHRvIG9wZW4uIFdoZW4gb21pdHRlZCwgYW4gZW1wdHkgdGVtcG9yYXJ5XG4gICAqIHZhdWx0IGlzIGNyZWF0ZWQgKGFuZCByZW1vdmVkIG9uIGRpc3Bvc2UgdW5sZXNzXG4gICAqIHtAbGluayBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZX0gc2F5cyBvdGhlcndpc2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSByZXNvbHZlZCBDRFAgaG9zdC9wb3J0IHBhaXIuXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlZEVuZHBvaW50IHtcbiAgaG9zdDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG59XG5cbi8qKlxuICogTGF1bmNoZXMgKG9yIGF0dGFjaGVzIHRvKSBhIENEUC1lbmFibGVkIE9ic2lkaWFuIGluc3RhbmNlLCBvcGVucyBhIHZhdWx0LCBhbmRcbiAqIGJvb3RzdHJhcHMgdGhlIHJ1bnRpbWUgaGVscGVyIG5hbWVzcGFjZSwgcmV0dXJuaW5nIGEgZGlzcG9zYWJsZSBjb25uZWN0aW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29ubmVjdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbGl2ZSB7QGxpbmsgQ2RwQ29ubmVjdGlvbn0uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0VG9DZHAob3B0aW9ucz86IENvbm5lY3RUb0NkcE9wdGlvbnMpOiBQcm9taXNlPENkcENvbm5lY3Rpb24+IHtcbiAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGJ1aWxkQ2RwVHJhbnNwb3J0T3B0aW9ucyhvcHRpb25zKTtcbiAgYXdhaXQgc3dlZXBMZWZ0b3ZlcnModHJhbnNwb3J0T3B0aW9ucyk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zKHRyYW5zcG9ydE9wdGlvbnMpO1xuICBjb25zdCBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZSA9IG9wdGlvbnM/LnNob3VsZFJlbW92ZVZhdWx0T25EaXNwb3NlID8/IChvcHRpb25zPy52YXVsdCA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgdmF1bHQgPSBuZXcgVGVtcG9yYXJ5VmF1bHQob3B0aW9ucz8udmF1bHQsIHsgc2hvdWxkUmVtb3ZlRGlyZWN0b3J5T25EaXNwb3NlOiBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZSB9KTtcblxuICAvLyBUaGUgaGVhZGxlc3MgZGVmYXVsdHMgZ28gb25seSBpbnRvIGEgdmF1bHQgdGhlIGhhcm5lc3MgbWFkZSBcdTIwMTQgdGhlIHNhbWVcbiAgLy8gYG9wdGlvbnMudmF1bHQgPT09IHVuZGVmaW5lZGAgZGlzY3JpbWluYXRvciB0aGUgZGlzcG9zYWwgYWJvdmUgdHVybnMgb24uIEFcbiAgLy8gY2FsbGVyLXN1cHBsaWVkIHZhdWx0IGlzIGEgcmVhbCBvbmUgdGhlIHVzZXIga2VlcHMsIGFuZCBhIGRlYnVnZ2luZyBzZXNzaW9uXG4gIC8vIGhhcyBubyBidXNpbmVzcyByZXdyaXRpbmcgaXRzIHNldHRpbmdzLlxuICBpZiAob3B0aW9ucz8udmF1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGF3YWl0IGVuc3VyZUhlYWRsZXNzVmF1bHRDb25maWcoe1xuICAgICAgY29uZmlnRGlyZWN0b3J5OiByZXNvbHZlT3duZWRDb25maWdEaXJlY3RvcnkodHJhbnNwb3J0T3B0aW9ucyksXG4gICAgICBsYWJlbDogdHJhbnNwb3J0T3B0aW9ucy50eXBlLFxuICAgICAgdmF1bHRQYXRoOiB2YXVsdC5wYXRoXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWdpc3RlcmluZyB0aGUgdmF1bHQgaXMgd2hhdCBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2UgKHByb3Zpc2lvbnMgdGhlXG4gIC8vIGFzYXIsIG9wZW5zIHRoZSB2YXVsdCwgYW5kIGJvb3RzdHJhcHMgdGhlIGhlbHBlciBuYW1lc3BhY2UpLCBvciBvcGVucyB0aGVcbiAgLy8gdmF1bHQgaW4gdGhlIGF0dGFjaGVkIGluc3RhbmNlLlxuICBhd2FpdCB2YXVsdC5yZWdpc3Rlcih0cmFuc3BvcnQpO1xuXG4gIGNvbnN0IHsgaG9zdCwgcG9ydCB9ID0gcmVzb2x2ZUVuZHBvaW50KHRyYW5zcG9ydCwgb3B0aW9ucyk7XG4gIGNvbnN0IGNkcFVybCA9IGBodHRwOi8vJHtob3N0fToke1N0cmluZyhwb3J0KX1gO1xuICBjb25zdCBhc2FyRmFsbGJhY2sgPSB0cmFuc3BvcnQgaW5zdGFuY2VvZiBEZXNrdG9wQ2RwVHJhbnNwb3J0ID8gdHJhbnNwb3J0LmdldEFzYXJGYWxsYmFjaygpIDogdW5kZWZpbmVkO1xuICBjb25zdCBjb21wYXRpYmlsaXR5ID0gdHJhbnNwb3J0IGluc3RhbmNlb2YgRGVza3RvcENkcFRyYW5zcG9ydCA/IHRyYW5zcG9ydC5nZXRDb21wYXRpYmlsaXR5KCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGVsZWN0cm9uQ29tcGF0aWJpbGl0eSA9IHRyYW5zcG9ydCBpbnN0YW5jZW9mIERlc2t0b3BDZHBUcmFuc3BvcnQgPyB0cmFuc3BvcnQuZ2V0RWxlY3Ryb25Db21wYXRpYmlsaXR5KCkgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgY29ubmVjdGlvbjogQ2RwQ29ubmVjdGlvbiA9IHtcbiAgICBjZHBVcmwsXG4gICAgLi4uKGFzYXJGYWxsYmFjayAmJiB7IGFzYXJGYWxsYmFjayB9KSxcbiAgICAuLi4oY29tcGF0aWJpbGl0eSAmJiB7IGNvbXBhdGliaWxpdHkgfSksXG4gICAgLi4uKGVsZWN0cm9uQ29tcGF0aWJpbGl0eSAmJiB7IGVsZWN0cm9uQ29tcGF0aWJpbGl0eSB9KSxcblxuICAgIGFzeW5jIGNhcHR1cmVTY3JlZW5zaG90KHBhcmFtcz86IEV4Y2VwdDxDYXB0dXJlU2NyZWVuc2hvdFBhcmFtcywgJ2N3ZCc+KTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgICAvLyBFdmVyeSB0cmFuc3BvcnQgYGNvbm5lY3RUb0NkcGAgYnVpbGRzIGlzIGEgRGVza3RvcENkcFRyYW5zcG9ydCwgd2hpY2hcbiAgICAgIC8vIGltcGxlbWVudHMgdGhlIG9wdGlvbmFsIG1ldGhvZCBcdTIwMTQgYnV0IHRoZSBpbnRlcmZhY2Ugc3RpbGwgdHlwZXMgaXRcbiAgICAgIC8vIG9wdGlvbmFsLCBzbyB0aGUgYWJzZW5jZSBpcyByZXBvcnRlZCByYXRoZXIgdGhhbiBzaWxlbnRseSB0aHJvd24gYXQuXG4gICAgICBpZiAoIXRyYW5zcG9ydC5jYXB0dXJlU2NyZWVuc2hvdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nvbm5lY3RUb0NkcDogdGhpcyB0cmFuc3BvcnQgY2Fubm90IGNhcHR1cmUgc2NyZWVuc2hvdHMuJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cmFuc3BvcnQuY2FwdHVyZVNjcmVlbnNob3QoeyAuLi5wYXJhbXMsIGN3ZDogdmF1bHQucGF0aCB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoZSB2YXVsdCBjYXJyaWVzIGBzaG91bGRSZW1vdmVWYXVsdE9uRGlzcG9zZWAgaXRzZWxmIChoYW5kZWQgdG8gaXRzIGNvbnN0cnVjdG9yIGFib3ZlKSwgc29cbiAgICAgICAgLy8gdGhpcyBpcyBvbmUgY2FsbCByYXRoZXIgdGhhbiBhIGJyYW5jaDogaXQgYWx3YXlzIHVucmVnaXN0ZXJzLCBhbmQgcmVtb3ZlcyB0aGUgZGlyZWN0b3J5IG9ubHlcbiAgICAgICAgLy8gd2hlbiB0aGF0IGZsYWcgc2F5cyB0by5cbiAgICAgICAgYXdhaXQgdmF1bHQuZGlzcG9zZSh0cmFuc3BvcnQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgdHJhbnNwb3J0LmRpc3Bvc2U/LigpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBldmFsSW5PYnNpZGlhbjxJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3QsIFJlc3VsdCwgVENvbnRleHRJZCBleHRlbmRzIENvbnRleHRJZDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgICBwYXJhbXM6IEV4Y2VwdDxFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPiwgJ3RyYW5zcG9ydCcgfCAndmF1bHRQYXRoJz5cbiAgICApOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgICAgcmV0dXJuIGV2YWxJbk9ic2lkaWFuPElucHV0LCBSZXN1bHQsIFRDb250ZXh0SWQ+KHsgLi4ucGFyYW1zLCB0cmFuc3BvcnQsIHZhdWx0UGF0aDogdmF1bHQucGF0aCB9KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaW52b2tlKGV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkOiB2YXVsdC5wYXRoIH0pO1xuICAgIH0sXG5cbiAgICBwb3J0LFxuXG4gICAgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgYXdhaXQgY29ubmVjdGlvbi5kaXNwb3NlKCk7XG4gICAgfSxcblxuICAgIHZhdWx0XG4gIH07XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSB7QGxpbmsgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zfSBmb3IgYSBjb25uZWN0aW9uLCB0aHJlYWRpbmcgb25seVxuICogdGhlIHByb3ZpZGVkIHtAbGluayBDb25uZWN0VG9DZHBPcHRpb25zfSB0aHJvdWdoIChvd25lZC12aXNpYmxlIGRlZmF1bHRzIHRvXG4gKiBgdHJ1ZWAsIHVubGlrZSB0aGUgaGlkZGVuLWJ5LWRlZmF1bHQgdGVzdCB0cmFuc3BvcnRzKS4gVW5zZXQga25vYnMgcGFzcyB0aHJvdWdoXG4gKiBhcyBgdW5kZWZpbmVkYCBhbmQgYXJlIHJlYWQgd2l0aCBgPz8gZGVmYXVsdGAgLyBgIT09IHVuZGVmaW5lZGAgZ3VhcmRzXG4gKiBkb3duc3RyZWFtLCBzbyBhbiBleHBsaWNpdCBgdW5kZWZpbmVkYCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFuIGFic2VudCBrZXkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgY29ubmVjdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHRyYW5zcG9ydCBvcHRpb25zIHRvIGNyZWF0ZSB0aGUgY29ubmVjdGlvbidzIHRyYW5zcG9ydCBmcm9tLlxuICovXG5mdW5jdGlvbiBidWlsZENkcFRyYW5zcG9ydE9wdGlvbnMob3B0aW9ucz86IENvbm5lY3RUb0NkcE9wdGlvbnMpOiBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnMge1xuICByZXR1cm4gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucz4oe1xuICAgIGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IG9wdGlvbnM/LmNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHMsXG4gICAgY29uZmlnRGlyZWN0b3J5OiBvcHRpb25zPy5jb25maWdEaXJlY3RvcnksXG4gICAgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzOiBvcHRpb25zPy5kZWFkQm9vdEdyYWNlSW5NaWxsaXNlY29uZHMsXG4gICAgaG9zdDogb3B0aW9ucz8uaG9zdCxcbiAgICBpc09ic2lkaWFuQXBwVmlzaWJsZTogb3B0aW9ucz8uaXNPYnNpZGlhbkFwcFZpc2libGUgPz8gdHJ1ZSxcbiAgICBvYnNpZGlhbkluc3RhbGxlclZlcnNpb246IG9wdGlvbnM/Lm9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbixcbiAgICBvYnNpZGlhblZlcnNpb246IG9wdGlvbnM/Lm9ic2lkaWFuVmVyc2lvbixcbiAgICBwb3J0OiBvcHRpb25zPy5wb3J0LFxuICAgIHNob3VsZERpc2FibGVTYW5kYm94OiBvcHRpb25zPy5zaG91bGREaXNhYmxlU2FuZGJveCxcbiAgICBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyOiBvcHRpb25zPy5zaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyLFxuICAgIHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2s6IG9wdGlvbnM/LnNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2ssXG4gICAgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlczogb3B0aW9ucz8uc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyxcbiAgICB0eXBlOiAnb2JzaWRpYW4tY2RwJ1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ0RQIGhvc3QvcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb246IGZyb20gdGhlIG93bmVkIGluc3RhbmNlJ3NcbiAqIGxhdW5jaGVkIGVuZHBvaW50IHdoZW4gcHJlc2VudCwgb3RoZXJ3aXNlIGZyb20gdGhlIGF0dGFjaCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB0cmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IGNyZWF0ZWQgZm9yIHRoaXMgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNvbm5lY3Rpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBob3N0IGFuZCBwb3J0LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgcG9ydCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUVuZHBvaW50KHRyYW5zcG9ydDogdW5rbm93biwgb3B0aW9uczogQ29ubmVjdFRvQ2RwT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFJlc29sdmVkRW5kcG9pbnQge1xuICBpZiAodHJhbnNwb3J0IGluc3RhbmNlb2YgRGVza3RvcENkcFRyYW5zcG9ydCkge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdHJhbnNwb3J0LmdldE93bmVkSW5zdGFuY2VFbmRwb2ludCgpO1xuICAgIGlmIChlbmRwb2ludCkge1xuICAgICAgcmV0dXJuIHsgaG9zdDogZW5kcG9pbnQuaG9zdCwgcG9ydDogZW5kcG9pbnQucG9ydCB9O1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zPy5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyBob3N0OiBvcHRpb25zLmhvc3QgPz8gREVGQVVMVF9DRFBfSE9TVCwgcG9ydDogb3B0aW9ucy5wb3J0IH07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ2Nvbm5lY3RUb0NkcDogY291bGQgbm90IGRldGVybWluZSB0aGUgQ0RQIHBvcnQuJyk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgaG9zdC1zaWRlIHRlbXAgZGlyZWN0b3JpZXMgZWFybGllciBydW5zIGxlYWtlZCwgYmVmb3JlIHRoaXNcbiAqIGNvbm5lY3Rpb24gYWRkcyBpdHMgb3duLlxuICpcbiAqIGBjb25uZWN0VG9DZHBgIG1pbnRzIHRoZSBzYW1lIGB0ZW1wLXZhdWx0LSpgIC8gb3duZWQgYHVzZXJkYXRhLSpgIGRpcmVjdG9yaWVzXG4gKiB0aGUgdGVzdCBnbG9iYWwgc2V0dXAgZG9lcywgYW5kIGFuIGFkLWhvYyBkZWJ1Z2dpbmcgc2Vzc2lvbiBpcyBleGFjdGx5IHRoZVxuICoga2luZCB0aGF0IGdldHMga2lsbGVkIHdpdGggYSBsZWZ0b3ZlciBiZWhpbmQgXHUyMDE0IHNvIGl0IHN3ZWVwcyB0b28uIEFnZS1nYXRlZCBhbmRcbiAqIGJlc3QtZWZmb3J0OyBzZWUgdGhlIGNvcmUncyBgc3dlZXBMZWZ0b3ZlcnNgLlxuICpcbiAqIEBwYXJhbSB0cmFuc3BvcnRPcHRpb25zIC0gVGhlIHJlc29sdmVkIHRyYW5zcG9ydCBvcHRpb25zIChzb3VyY2Ugb2YgdGhlIHN3ZWVwIGtub2JzKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3dlZXBMZWZ0b3ZlcnModHJhbnNwb3J0T3B0aW9uczogT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghd2lsbFN3ZWVwTGVmdG92ZXJzKHRyYW5zcG9ydE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzd2VlcEhvc3RMZWZ0b3ZlcnMoe1xuICAgICAgbWF4QWdlSW5NaWxsaXNlY29uZHM6IHJlc29sdmVMZWZ0b3Zlck1heEFnZUluTWlsbGlzZWNvbmRzKHRyYW5zcG9ydE9wdGlvbnMpXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5yZW1vdmVkQ291bnQgPiAwIHx8IHJlc3VsdC5mYWlsZWRDb3VudCA+IDApIHtcbiAgICAgIGxvZyhcbiAgICAgICAgYFtjb25uZWN0LXRvLWNkcF0gU3dlcHQgJHtTdHJpbmcocmVzdWx0LnJlbW92ZWRDb3VudCl9IGxlZnRvdmVyIHRlbXAgZGlyZWN0b3IoaWVzKSBmcm9tIGVhcmxpZXIgcnVucyBgXG4gICAgICAgICAgKyBgKCR7U3RyaW5nKHJlc3VsdC5mYWlsZWRDb3VudCl9IHN0aWxsIGluIHVzZSkuYFxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgbG9nKGBbY29ubmVjdC10by1jZHBdIExlZnRvdmVyIHN3ZWVwIGVycm9yIChub24tZmF0YWwpOiAke1N0cmluZyhlcnJvcil9YCk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0QkEsOEJBQStCO0FBQy9CLG1DQUEwQztBQUMxQyw4QkFJTztBQUNQLGlCQUFvQjtBQUNwQiwyQ0FBNEM7QUFDNUMsNkJBQStCO0FBQy9CLG1DQUFvQztBQUNwQywrQkFBMkM7QUFDM0MsK0JBQTRDO0FBRTVDLE1BQU0sbUJBQW1CO0FBOFJ6QixlQUFzQixhQUFhLFNBQXVEO0FBQ3hGLFFBQU0sbUJBQW1CLHlCQUF5QixPQUFPO0FBQ3pELFFBQU0sZUFBZSxnQkFBZ0I7QUFDckMsUUFBTSxZQUFZLFVBQU0scURBQTJCLGdCQUFnQjtBQUNuRSxRQUFNLDZCQUE2QixTQUFTLDhCQUErQixTQUFTLFVBQVU7QUFDOUYsUUFBTSxRQUFRLElBQUksc0NBQWUsU0FBUyxPQUFPLEVBQUUsZ0NBQWdDLDJCQUEyQixDQUFDO0FBTS9HLE1BQUksU0FBUyxVQUFVLFFBQVc7QUFDaEMsY0FBTSx3REFBMEI7QUFBQSxNQUM5QixxQkFBaUIsc0RBQTRCLGdCQUFnQjtBQUFBLE1BQzdELE9BQU8saUJBQWlCO0FBQUEsTUFDeEIsV0FBVyxNQUFNO0FBQUEsSUFDbkIsQ0FBQztBQUFBLEVBQ0g7QUFLQSxRQUFNLE1BQU0sU0FBUyxTQUFTO0FBRTlCLFFBQU0sRUFBRSxNQUFNLEtBQUssSUFBSSxnQkFBZ0IsV0FBVyxPQUFPO0FBQ3pELFFBQU0sU0FBUyxVQUFVLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQztBQUM3QyxRQUFNLGVBQWUscUJBQXFCLG1EQUFzQixVQUFVLGdCQUFnQixJQUFJO0FBQzlGLFFBQU0sZ0JBQWdCLHFCQUFxQixtREFBc0IsVUFBVSxpQkFBaUIsSUFBSTtBQUNoRyxRQUFNLHdCQUF3QixxQkFBcUIsbURBQXNCLFVBQVUseUJBQXlCLElBQUk7QUFFaEgsUUFBTSxhQUE0QjtBQUFBLElBQ2hDO0FBQUEsSUFDQSxHQUFJLGdCQUFnQixFQUFFLGFBQWE7QUFBQSxJQUNuQyxHQUFJLGlCQUFpQixFQUFFLGNBQWM7QUFBQSxJQUNyQyxHQUFJLHlCQUF5QixFQUFFLHNCQUFzQjtBQUFBLElBRXJELE1BQU0sa0JBQWtCLFFBQXNFO0FBSTVGLFVBQUksQ0FBQyxVQUFVLG1CQUFtQjtBQUNoQyxjQUFNLElBQUksTUFBTSwwREFBMEQ7QUFBQSxNQUM1RTtBQUVBLGFBQU8sVUFBVSxrQkFBa0IsRUFBRSxHQUFHLFFBQVEsS0FBSyxNQUFNLEtBQUssQ0FBQztBQUFBLElBQ25FO0FBQUEsSUFFQSxNQUFNLFVBQXlCO0FBQzdCLFVBQUk7QUFJRixjQUFNLE1BQU0sUUFBUSxTQUFTO0FBQUEsTUFDL0IsVUFBRTtBQUNBLGNBQU0sVUFBVSxVQUFVO0FBQUEsTUFDNUI7QUFBQSxJQUNGO0FBQUEsSUFFQSxNQUFNLGVBQ0osUUFDaUI7QUFDakIsaUJBQU8sd0NBQTBDLEVBQUUsR0FBRyxRQUFRLFdBQVcsV0FBVyxNQUFNLEtBQUssQ0FBQztBQUFBLElBQ2xHO0FBQUEsSUFFQSxNQUFNLE9BQU8sWUFBcUM7QUFDaEQsYUFBTyxVQUFVLFNBQVMsWUFBWSxFQUFFLEtBQUssTUFBTSxLQUFLLENBQUM7QUFBQSxJQUMzRDtBQUFBLElBRUE7QUFBQSxJQUVBLE9BQU8sT0FBTyxZQUFZLElBQW1CO0FBQzNDLFlBQU0sV0FBVyxRQUFRO0FBQUEsSUFDM0I7QUFBQSxJQUVBO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVlBLFNBQVMseUJBQXlCLFNBQTREO0FBQzVGLGFBQU8sa0VBQXlEO0FBQUEsSUFDOUQsOEJBQThCLFNBQVM7QUFBQSxJQUN2QyxpQkFBaUIsU0FBUztBQUFBLElBQzFCLDZCQUE2QixTQUFTO0FBQUEsSUFDdEMsTUFBTSxTQUFTO0FBQUEsSUFDZixzQkFBc0IsU0FBUyx3QkFBd0I7QUFBQSxJQUN2RCwwQkFBMEIsU0FBUztBQUFBLElBQ25DLGlCQUFpQixTQUFTO0FBQUEsSUFDMUIsTUFBTSxTQUFTO0FBQUEsSUFDZixzQkFBc0IsU0FBUztBQUFBLElBQy9CLG9DQUFvQyxTQUFTO0FBQUEsSUFDN0MsaUNBQWlDLFNBQVM7QUFBQSxJQUMxQyxpQ0FBaUMsU0FBUztBQUFBLElBQzFDLE1BQU07QUFBQSxFQUNSLENBQUM7QUFDSDtBQVdBLFNBQVMsZ0JBQWdCLFdBQW9CLFNBQTREO0FBQ3ZHLE1BQUkscUJBQXFCLGtEQUFxQjtBQUM1QyxVQUFNLFdBQVcsVUFBVSx5QkFBeUI7QUFDcEQsUUFBSSxVQUFVO0FBQ1osYUFBTyxFQUFFLE1BQU0sU0FBUyxNQUFNLE1BQU0sU0FBUyxLQUFLO0FBQUEsSUFDcEQ7QUFBQSxFQUNGO0FBRUEsTUFBSSxTQUFTLFNBQVMsUUFBVztBQUMvQixXQUFPLEVBQUUsTUFBTSxRQUFRLFFBQVEsa0JBQWtCLE1BQU0sUUFBUSxLQUFLO0FBQUEsRUFDdEU7QUFFQSxRQUFNLElBQUksTUFBTSxpREFBaUQ7QUFDbkU7QUFhQSxlQUFlLGVBQWUsa0JBQThEO0FBQzFGLE1BQUksS0FBQyw0Q0FBbUIsZ0JBQWdCLEdBQUc7QUFDekM7QUFBQSxFQUNGO0FBRUEsTUFBSTtBQUNGLFVBQU0sU0FBUyxVQUFNLDRDQUFtQjtBQUFBLE1BQ3RDLDBCQUFzQiw2REFBb0MsZ0JBQWdCO0FBQUEsSUFDNUUsQ0FBQztBQUNELFFBQUksT0FBTyxlQUFlLEtBQUssT0FBTyxjQUFjLEdBQUc7QUFDckQ7QUFBQSxRQUNFLDBCQUEwQixPQUFPLE9BQU8sWUFBWSxDQUFDLG1EQUM3QyxPQUFPLE9BQU8sV0FBVyxDQUFDO0FBQUEsTUFDcEM7QUFBQSxJQUNGO0FBQUEsRUFDRixTQUFTLE9BQWdCO0FBQ3ZCLHdCQUFJLHNEQUFzRCxPQUFPLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDM0U7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -145,4 +145,4 @@ async function resolvePluginRepo(plugin) {
145
145
  bootstrapDemoVaultPlugins,
146
146
  buildDemoVaultPopulateAsync
147
147
  });
148
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtYm9vdHN0cmFwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSW5zdGFsbHMgYSBkZW1vIHZhdWx0J3MgKippbmplY3RlZCBjb21tdW5pdHkgcGx1Z2lucyoqIGhlYWRsZXNzbHksIGJ5IGRvd25sb2FkaW5nXG4gKiB0aGVpciBwdWJsaXNoZWQgR2l0SHViIHJlbGVhc2UgYXNzZXRzIHN0cmFpZ2h0IGludG9cbiAqIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYC5cbiAqXG4gKiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAgcmVxdWlyZXMgZWFjaCBpbmplY3RlZCBwbHVnaW4ncyBgbWFpbi5qc2AgL1xuICogYG1hbmlmZXN0Lmpzb25gIHRvIGFscmVhZHkgYmUgb24gZGlzaywgYW5kIHRocm93cyB3aGVuIHRoZXkgYXJlIG5vdC4gVW50aWwgdGhpc1xuICogbW9kdWxlIGV4aXN0ZWQgdGhlIG9ubHkgZG9jdW1lbnRlZCByZW1lZHkgd2FzIGEgKipHVUkgc3RlcCoqIFx1MjAxNCBvcGVuIGBkZW1vLXZhdWx0L2BcbiAqIGluIE9ic2lkaWFuIG9uY2UgYW5kIGxldCBgZGVtby12YXVsdC1oZWxwZXJgIGluc3RhbGwgdGhlIHBsdWdpbiBhdCBydW50aW1lLlxuICogYC5vYnNpZGlhbi9wbHVnaW5zLypgIGlzIGdpdGlnbm9yZWQgaW4gYSBwbHVnaW4gcmVwbywgc28gdGhhdCBzdGF0ZVxuICogZXhpc3RzIG9uIGV4YWN0bHkgdGhlIG9uZSBtYWNoaW5lIHRoYXQgZGlkIGl0IGFuZCBpcyBpbnZpc2libGUgdG8gYSBmcmVzaCBjbG9uZSxcbiAqIGEgbmV3IG1hY2hpbmUsIG9yIENJLiBTaW5jZSBhIHBsdWdpbiByZXBvJ3MgcmVsZWFzZSBwcmVmbGlnaHQgcnVucyBpdHNcbiAqIGludGVncmF0aW9uIHRlc3RzLCB0aGF0IG1hZGUgKmN1dHRpbmcgYSByZWxlYXNlIGZyb20gYSBjbGVhbiBjbG9uZSogaW1wb3NzaWJsZVxuICogd2l0aG91dCBhIGh1bWFuIG9wZW5pbmcgYSBHVUkuXG4gKlxuICogRG93bmxvYWRpbmcgdGhlIHJlbGVhc2UgYXNzZXRzIGlzIHRoZSBleGFjdCBoZWFkbGVzcyBlcXVpdmFsZW50OiB0aGUgcmVzdWx0aW5nXG4gKiBmb2xkZXIgaXMgd2hhdCBPYnNpZGlhbiBpdHNlbGYgd291bGQgaGF2ZSBpbnN0YWxsZWQsIHNvIHRoZSBzaGlwcGVkXG4gKiBgKi1kZW1vLXZhdWx0LnppcGAgXHUyMDE0IHdoaWNoIHVuemlwcyBpbnRvIGEgc2luZ2xlIGAqLWRlbW8tdmF1bHQtPHZlcnNpb24+YCBmb2xkZXIgXHUyMDE0XG4gKiBzdGF5cyB0aGUgc3RhbmRhcmQgZGVtby12YXVsdCBhcnRpZmFjdC5cbiAqXG4gKiBUd28gZW50cnkgcG9pbnRzLCBwbHVzIHRoZSBgYm9vdHN0cmFwLWRlbW8tdmF1bHRgIENMSSBzdWJjb21tYW5kOlxuICpcbiAqIC0ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9IFx1MjAxNCBpbnN0YWxsIHRoZSBtaXNzaW5nIG9uZXMsIGV4cGxpY2l0bHkuXG4gKiAtIHtAbGluayBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmN9IFx1MjAxNCBkbyB0aGF0IGFuZCB0aGVuIGJ1aWxkIHRoZSBwb3B1bGF0ZSBtYXAsXG4gKiAgIHNvIGEgZ2xvYmFsIHNldHVwIHNlbGYtaGVhbHMgd2l0aCBubyBtYW51YWwgc3RlcCBhdCBhbGwuXG4gKlxuICogVGhlIHN5bmMgYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgIGRlbGliZXJhdGVseSBrZWVwcyB0aHJvd2luZzogYGZldGNoYCBoYXMgbm9cbiAqIHN5bmNocm9ub3VzIGZvcm0sIHNvIGF1dG8taGVhbGluZyBjYW4gb25seSBsaXZlIG9uIGFuIGFzeW5jIHNpYmxpbmcuIEl0cyBtZXNzYWdlXG4gKiBub3cgbmFtZXMgYm90aCByZW1lZGllcyBhYm92ZSBpbnN0ZWFkIG9mIHRoZSBHVUkgc3RlcC5cbiAqL1xuXG5pbXBvcnQge1xuICBta2RpclN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29tbXVuaXR5UGx1Z2luUmVnaXN0cnlFbnRyeSB9IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbi1yZWdpc3RyeS5janMnO1xuaW1wb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuXG5pbXBvcnQge1xuICBidWlsZFBsdWdpbkFzc2V0VXJsLFxuICBDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkwsXG4gIGlzVmFsaWRSZXBvUmVmZXJlbmNlLFxuICBPUFRJT05BTF9QTFVHSU5fQVNTRVRfTkFNRVMsXG4gIFJFUVVJUkVEX1BMVUdJTl9BU1NFVF9OQU1FUyxcbiAgc2VsZWN0UGx1Z2luUmVwb1xufSBmcm9tICcuL2NvbW11bml0eS1wbHVnaW4tcmVnaXN0cnkuY2pzJztcbmltcG9ydCB7XG4gIGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGUsXG4gIHJlc29sdmVJbmplY3RlZFBsdWdpblNvdXJjZURpcmVjdG9yeSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5janMnO1xuXG4vKipcbiAqIEJyb3dzZXIgYFVzZXItQWdlbnRgIGZvciB0aGUgYXNzZXQgZG93bmxvYWRzLCBtYXRjaGluZyBgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCBcdTIwMTRcbiAqIGEgcGxhaW4gTm9kZSBmZXRjaCBpcyByZWplY3RlZCBieSBzb21lIENETiBlZGdlcy5cbiAqL1xuY29uc3QgRE9XTkxPQURfVVNFUl9BR0VOVCA9ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI0LjAuMC4wIFNhZmFyaS81MzcuMzYnO1xuXG5jb25zdCBIVFRQX05PVF9GT1VORCA9IDQwNDtcblxuLyoqXG4gKiBUaGUgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeSwgZmV0Y2hlZCBhdCBtb3N0IG9uY2UgcGVyIHByb2Nlc3MuIEV2ZXJ5IGluamVjdGVkXG4gKiBwbHVnaW4gb2YgZXZlcnkgZGVtby12YXVsdCBwcm9qZWN0IGluIGEgcnVuIHJlc29sdmVzIGFnYWluc3QgdGhlIHNhbWUgdGFibGUsIGFuZFxuICogaXQgaXMgYSBtdWx0aS1tZWdhYnl0ZSBkb2N1bWVudC5cbiAqL1xubGV0IHJlZ2lzdHJ5UHJvbWlzZTogUHJvbWlzZTxyZWFkb25seSBDb21tdW5pdHlQbHVnaW5SZWdpc3RyeUVudHJ5W10+IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBEZW1vVmF1bHRQbHVnaW5zUGFyYW1zIHtcbiAgLyoqXG4gIEFic29sdXRlIHBhdGggdG8gdGhlIHBsdWdpbiByZXBvJ3MgYGRlbW8tdmF1bHQvYCBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBkZW1vVmF1bHRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RlZCBwbHVnaW5zIHRvIGluc3RhbGwgXHUyMDE0IHRoZSBzYW1lIGxpc3QgcGFzc2VkIHRvIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlYC4gUGx1Z2lucyB3aG9zZVxuICAgKiBiaW5hcmllcyBhcmUgYWxyZWFkeSBwcmVzZW50IGFyZSBza2lwcGVkICh1bmxlc3Mge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMuc2hvdWxkRm9yY2V9KSxcbiAgICogYXMgYXJlIHBsdWdpbnMgY2FycnlpbmcgYW4gZXhwbGljaXQgYHNvdXJjZURpcmVjdG9yeWAuXG4gICAqL1xuICByZWFkb25seSBpbmplY3RQbHVnaW5zOiByZWFkb25seSBJbmplY3RQbHVnaW5QYXJhbXNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZS1kb3dubG9hZCBwbHVnaW5zIHRoYXQgYXJlIGFscmVhZHkgaW5zdGFsbGVkLCByZXBsYWNpbmcgdGhlbSB3aXRoIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAgXHUyMDE0IHRoZSBub3JtYWwgcGF0aCBpbnN0YWxscyBvbmx5IHdoYXQgaXMgbWlzc2luZywgc28gYSB3YXJtIGNoZWNrb3V0IGRvZXMgbm9cbiAgICogbmV0d29yayBJL08gYXQgYWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRm9yY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIGEge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9IHJ1bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBEZW1vVmF1bHRQbHVnaW5zUmVzdWx0IHtcbiAgLyoqXG4gIFRoZSBwbHVnaW5zIHRoYXQgd2VyZSBkb3dubG9hZGVkIGFuZCB3cml0dGVuLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGluc3RhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlZDogcmVhZG9ubHkgSW5zdGFsbGVkUGx1Z2luSW5mb1tdO1xuXG4gIC8qKlxuICBUaGUgaWRzIG9mIHBsdWdpbnMgbGVmdCB1bnRvdWNoZWQgXHUyMDE0IGFscmVhZHkgaW5zdGFsbGVkLCBvciBvcHRlZCBvdXQgdmlhIGFuIGV4cGxpY2l0IGBzb3VyY2VEaXJlY3RvcnlgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcHBlZFBsdWdpbklkczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogT25lIHBsdWdpbiBpbnN0YWxsZWQgYnkge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxlZFBsdWdpbkluZm8ge1xuICAvKipcbiAgVGhlIGFzc2V0IGZpbGUgbmFtZXMgYWN0dWFsbHkgd3JpdHRlbiwgZS5nLiBgWydtYWluLmpzJywgJ21hbmlmZXN0Lmpzb24nLCAnc3R5bGVzLmNzcyddYC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgcGx1Z2luJ3MgaWQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgR2l0SHViIHJlcG9zaXRvcnkgdGhlIGFzc2V0cyBjYW1lIGZyb20sIGFzIGBvd25lci9uYW1lYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcblxuICAvKipcbiAgVGhlIHJlbGVhc2UgdGFnIGRvd25sb2FkZWQgZnJvbSwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgcmVwb3NpdG9yeSdzIGxhdGVzdCByZWxlYXNlIHdhcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIGV2ZXJ5IGluamVjdGVkIGNvbW11bml0eSBwbHVnaW4gd2hvc2UgYnVpbHQgZmlsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgZGVtbyB2YXVsdCwgYnlcbiAqIGRvd25sb2FkaW5nIGl0cyBwdWJsaXNoZWQgcmVsZWFzZSBhc3NldHMgaW50byBgZGVtby12YXVsdC8ub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AuXG4gKlxuICogRWFjaCBwbHVnaW4ncyByZXBvc2l0b3J5IGNvbWVzIGZyb20gaXRzIHtAbGluayBJbmplY3RQbHVnaW5QYXJhbXMucmVwb30gd2hlbiBnaXZlbiwgb3RoZXJ3aXNlIGZyb21cbiAqIE9ic2lkaWFuJ3Mgb3duIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnkgXHUyMDE0IHRoZSBzYW1lIGBpZGAgXHUyMTkyIGByZXBvYCB0YWJsZSB0aGUgaW4tYXBwIGNvbW11bml0eSBicm93c2VyXG4gKiBpbnN0YWxscyBmcm9tLCBzbyBubyBwbHVnaW4tc3BlY2lmaWMgbWFwcGluZyBpcyBoYXJkY29kZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtc30uXG4gKiBAcmV0dXJucyBXaGF0IHdhcyBpbnN0YWxsZWQgYW5kIHdoYXQgd2FzIHNraXBwZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGEgcGx1Z2luJ3MgcmVwb3NpdG9yeSBjYW5ub3QgYmUgcmVzb2x2ZWQsIG9yIGEgcmVxdWlyZWQgYXNzZXQgY2Fubm90IGJlIGRvd25sb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zKHBhcmFtczogQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyk6IFByb21pc2U8Qm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdD4ge1xuICBjb25zdCB7IGRlbW9WYXVsdFBhdGgsIGluamVjdFBsdWdpbnMsIHNob3VsZEZvcmNlID0gZmFsc2UgfSA9IHBhcmFtcztcblxuICBjb25zdCBib290c3RyYXBwYWJsZSA9IGluamVjdFBsdWdpbnMuZmlsdGVyKChwbHVnaW4pID0+IHBsdWdpbi5zb3VyY2VEaXJlY3RvcnkgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRhcmdldHMgPSBzaG91bGRGb3JjZSA/IGJvb3RzdHJhcHBhYmxlIDogcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnMoeyBkZW1vVmF1bHRQYXRoLCBpbmplY3RQbHVnaW5zIH0pO1xuICBjb25zdCB0YXJnZXRQbHVnaW5JZHMgPSBuZXcgU2V0KHRhcmdldHMubWFwKChwbHVnaW4pID0+IHBsdWdpbi5wbHVnaW5JZCkpO1xuXG4gIGNvbnN0IGluc3RhbGxlZDogSW5zdGFsbGVkUGx1Z2luSW5mb1tdID0gW107XG4gIGZvciAoY29uc3QgcGx1Z2luIG9mIHRhcmdldHMpIHtcbiAgICAvLyBTZXF1ZW50aWFsIG9uIHB1cnBvc2U6IHRoZSBpbnN0YWxscyBzaGFyZSBvbmUgbWVtb2lzZWQgcmVnaXN0cnkgZmV0Y2guXG4gICAgLy8gUGFyYWxsZWxpc20gd291bGQgYnV5IG5vdGhpbmcgYnV0IGludGVybGVhdmVkIGxvZ3MgZm9yIHRoZSBoYW5kZnVsIG9mIHBsdWdpbnMgYSBkZW1vIHZhdWx0IGluamVjdHMuXG4gICAgaW5zdGFsbGVkLnB1c2goYXdhaXQgaW5zdGFsbFBsdWdpbihkZW1vVmF1bHRQYXRoLCBwbHVnaW4pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaW5zdGFsbGVkLFxuICAgIHNraXBwZWRQbHVnaW5JZHM6IGluamVjdFBsdWdpbnMubWFwKChwbHVnaW4pID0+IHBsdWdpbi5wbHVnaW5JZCkuZmlsdGVyKChwbHVnaW5JZCkgPT4gIXRhcmdldFBsdWdpbklkcy5oYXMocGx1Z2luSWQpKVxuICB9O1xufVxuXG4vKipcbiAqIFRoZSBzZWxmLWhlYWxpbmcgY291bnRlcnBhcnQgb2YgYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgOiBpbnN0YWxscyBhbnkgaW5qZWN0ZWQgY29tbXVuaXR5IHBsdWdpbiB3aG9zZVxuICogYmluYXJpZXMgYXJlIG1pc3NpbmcgKHNlZSB7QGxpbmsgYm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc30pLCB0aGVuIGJ1aWxkcyB0aGUgcG9wdWxhdGUgbWFwIGV4YWN0bHkgYXMgdGhlXG4gKiBzeW5jaHJvbm91cyBidWlsZGVyIGRvZXMuXG4gKlxuICogVXNlIHRoaXMgZnJvbSBhIGdsb2JhbCBzZXR1cCdzIGBwb3B1bGF0ZWAgdGh1bmsgXHUyMDE0IGJvdGggdGhlIFZpdGVzdCBhbmQgSmVzdCBhZGFwdGVycyBhY2NlcHQgYSB0aHVua1xuICogcmV0dXJuaW5nIGEgcHJvbWlzZSBcdTIwMTQgc28gYSBmcmVzaCBjbG9uZSwgYSBuZXcgbWFjaGluZSwgb3IgQ0kgbmVlZHMgbm8gbWFudWFsIGluc3RhbGwgc3RlcC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbWUgYEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVQYXJhbXNgIHRoZSBzeW5jaHJvbm91cyBidWlsZGVyIHRha2VzLlxuICogQHJldHVybnMgVGhlIHBvcHVsYXRlIG1hcCwgcmVhZHkgdG8gaGFuZCB0byBhIGdsb2JhbCBzZXR1cCdzIGBwb3B1bGF0ZWAgb3IgYFRlbXBvcmFyeVZhdWx0LnBvcHVsYXRlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luYyhwYXJhbXM6IEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVQYXJhbXMpOiBQcm9taXNlPFBvcHVsYXRlRmlsZXNQYXJhbXM+IHtcbiAgaWYgKHBhcmFtcy5pbmplY3RQbHVnaW5zICE9PSB1bmRlZmluZWQpIHtcbiAgICBhd2FpdCBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zKHsgZGVtb1ZhdWx0UGF0aDogcGFyYW1zLmRlbW9WYXVsdFBhdGgsIGluamVjdFBsdWdpbnM6IHBhcmFtcy5pbmplY3RQbHVnaW5zIH0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGUocGFyYW1zKTtcbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIE5ldHdvcmsgZG93bmxvYWQgZ2x1ZSwgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbi8qKlxuICogQnVpbGRzIHRoZSByZXF1ZXN0IGhlYWRlcnMgZm9yIGEgR2l0SHViIGRvd25sb2FkLCBzZW5kaW5nIGEgYEdJVEhVQl9UT0tFTmAgLyBgR0hfVE9LRU5gIGJlYXJlciB3aGVuIG9uZVxuICogaXMgaW4gdGhlIGVudmlyb25tZW50IFx1MjAxNCB3aXRob3V0IGl0IHRoZSBhbm9ueW1vdXMgcXVvdGEgcmV0dXJucyBIVFRQIDQwMyBvbiBzaGFyZWQgQ0kgcnVubmVyIElQcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgaGVhZGVycyB0byBzZW5kLlxuICovXG5mdW5jdGlvbiBidWlsZEdpdEh1YkhlYWRlcnMoKTogSGVhZGVycyB7XG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyh7ICdVc2VyLUFnZW50JzogRE9XTkxPQURfVVNFUl9BR0VOVCB9KTtcbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudlsnR0lUSFVCX1RPS0VOJ10gPz8gcHJvY2Vzcy5lbnZbJ0dIX1RPS0VOJ107XG4gIGlmICh0b2tlbikge1xuICAgIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuICB9XG4gIHJldHVybiBoZWFkZXJzO1xufVxuXG4vKipcbiAqIERvd25sb2FkcyBvbmUgcmVsZWFzZSBhc3NldC5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIGFzc2V0J3MgZG93bmxvYWQgVVJMLlxuICogQHBhcmFtIGlzUmVxdWlyZWQgLSBXaGV0aGVyIGEgbWlzc2luZyBhc3NldCAoSFRUUCA0MDQpIGlzIGFuIGVycm9yIHJhdGhlciB0aGFuIGFuIGFic2VudCBvcHRpb25hbCBmaWxlLlxuICogQHJldHVybnMgVGhlIGFzc2V0J3MgYnl0ZXMsIG9yIGB1bmRlZmluZWRgIHdoZW4gYW4gb3B0aW9uYWwgYXNzZXQgaXMgbm90IHB1Ymxpc2hlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGRvd25sb2FkIGZhaWxzIGFuZCB0aGUgYXNzZXQgaXMgcmVxdWlyZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRvd25sb2FkQXNzZXQodXJsOiBzdHJpbmcsIGlzUmVxdWlyZWQ6IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBoZWFkZXJzOiBidWlsZEdpdEh1YkhlYWRlcnMoKSB9KTtcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGlmICghaXNSZXF1aXJlZCAmJiByZXNwb25zZS5zdGF0dXMgPT09IEhUVFBfTk9UX0ZPVU5EKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkb3dubG9hZCAke3VybH06IEhUVFAgJHtTdHJpbmcocmVzcG9uc2Uuc3RhdHVzKX0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICB9XG4gIHJldHVybiBCdWZmZXIuZnJvbShhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpKTtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeSwgbWVtb2lzZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVnaXN0cnkgcm93cy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHJlZ2lzdHJ5IGNhbm5vdCBiZSBmZXRjaGVkIG9yIHBhcnNlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZmV0Y2hDb21tdW5pdHlQbHVnaW5SZWdpc3RyeSgpOiBQcm9taXNlPHJlYWRvbmx5IENvbW11bml0eVBsdWdpblJlZ2lzdHJ5RW50cnlbXT4ge1xuICByZWdpc3RyeVByb21pc2UgPz89IChhc3luYyAoKTogUHJvbWlzZTxyZWFkb25seSBDb21tdW5pdHlQbHVnaW5SZWdpc3RyeUVudHJ5W10+ID0+IHtcbiAgICBsb2coYFtkZW1vLXZhdWx0LWJvb3RzdHJhcF0gRmV0Y2hpbmcgT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5IGZyb20gJHtDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkx9Li4uYCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkwsIHsgaGVhZGVyczogYnVpbGRHaXRIdWJIZWFkZXJzKCkgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGZldGNoIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeSAoJHtDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkx9KTogYFxuICAgICAgICAgICsgYEhUVFAgJHtTdHJpbmcocmVzcG9uc2Uuc3RhdHVzKX0gJHtyZXNwb25zZS5zdGF0dXNUZXh0fS4gYFxuICAgICAgICAgICsgJ1Bhc3MgYW4gZXhwbGljaXQgYHJlcG9gIG9uIHRoZSBpbmplY3RlZCBwbHVnaW4gdG8gc2tpcCB0aGUgcmVnaXN0cnkgbG9va3VwLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgcmVhZG9ubHkgQ29tbXVuaXR5UGx1Z2luUmVnaXN0cnlFbnRyeVtdO1xuICB9KSgpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlZ2lzdHJ5UHJvbWlzZTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAvLyBEbyBub3QgbWVtb2lzZSBhIGZhaWx1cmU6IGEgdHJhbnNpZW50IG5ldHdvcmsgZXJyb3IgbXVzdCBub3QgcG9pc29uIGV2ZXJ5IGxhdGVyIGxvb2t1cC5cbiAgICByZWdpc3RyeVByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBEb3dubG9hZHMgb25lIHBsdWdpbidzIHJlbGVhc2UgYXNzZXRzIGFuZCB3cml0ZXMgdGhlbSBpbnRvIHRoZSBkZW1vIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBkZW1vVmF1bHRQYXRoIC0gVGhlIGRlbW8gdmF1bHQgcm9vdC5cbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIGluc3RhbGwuXG4gKiBAcmV0dXJucyBXaGF0IHdhcyBpbnN0YWxsZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSByZXBvc2l0b3J5IGNhbm5vdCBiZSByZXNvbHZlZCBvciBhIHJlcXVpcmVkIGFzc2V0IGNhbm5vdCBiZSBkb3dubG9hZGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsUGx1Z2luKGRlbW9WYXVsdFBhdGg6IHN0cmluZywgcGx1Z2luOiBJbmplY3RQbHVnaW5QYXJhbXMpOiBQcm9taXNlPEluc3RhbGxlZFBsdWdpbkluZm8+IHtcbiAgY29uc3QgeyBwbHVnaW5JZCwgdmVyc2lvbiB9ID0gcGx1Z2luO1xuICBjb25zdCByZXBvID0gYXdhaXQgcmVzb2x2ZVBsdWdpblJlcG8ocGx1Z2luKTtcbiAgY29uc3QgdGFyZ2V0RGlyZWN0b3J5ID0gcmVzb2x2ZUluamVjdGVkUGx1Z2luU291cmNlRGlyZWN0b3J5KHsgZGVtb1ZhdWx0UGF0aCwgcGx1Z2luIH0pO1xuXG4gIGxvZyhgW2RlbW8tdmF1bHQtYm9vdHN0cmFwXSBJbnN0YWxsaW5nIFwiJHtwbHVnaW5JZH1cIiBmcm9tICR7cmVwb31AJHt2ZXJzaW9uID8/ICdsYXRlc3QnfSBpbnRvICR7dGFyZ2V0RGlyZWN0b3J5fS4uLmApO1xuXG4gIGNvbnN0IGRvd25sb2FkcyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAuLi5SRVFVSVJFRF9QTFVHSU5fQVNTRVRfTkFNRVMubWFwKGFzeW5jIChhc3NldE5hbWUpID0+ICh7XG4gICAgICBhc3NldE5hbWUsXG4gICAgICBjb250ZW50OiBhd2FpdCBkb3dubG9hZEFzc2V0KGJ1aWxkUGx1Z2luQXNzZXRVcmwoeyBhc3NldE5hbWUsIHJlcG8sIHZlcnNpb24gfSksIHRydWUpXG4gICAgfSkpLFxuICAgIC4uLk9QVElPTkFMX1BMVUdJTl9BU1NFVF9OQU1FUy5tYXAoYXN5bmMgKGFzc2V0TmFtZSkgPT4gKHtcbiAgICAgIGFzc2V0TmFtZSxcbiAgICAgIGNvbnRlbnQ6IGF3YWl0IGRvd25sb2FkQXNzZXQoYnVpbGRQbHVnaW5Bc3NldFVybCh7IGFzc2V0TmFtZSwgcmVwbywgdmVyc2lvbiB9KSwgZmFsc2UpXG4gICAgfSkpXG4gIF0pO1xuXG4gIG1rZGlyU3luYyh0YXJnZXREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGFzc2V0TmFtZXM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgeyBhc3NldE5hbWUsIGNvbnRlbnQgfSBvZiBkb3dubG9hZHMpIHtcbiAgICBpZiAoY29udGVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKHRhcmdldERpcmVjdG9yeSwgYXNzZXROYW1lKSwgY29udGVudCk7XG4gICAgYXNzZXROYW1lcy5wdXNoKGFzc2V0TmFtZSk7XG4gIH1cblxuICBsb2coYFtkZW1vLXZhdWx0LWJvb3RzdHJhcF0gSW5zdGFsbGVkIFwiJHtwbHVnaW5JZH1cIjogJHthc3NldE5hbWVzLmpvaW4oJywgJyl9LmApO1xuXG4gIHJldHVybiB7IGFzc2V0TmFtZXMsIHBsdWdpbklkLCByZXBvLCB2ZXJzaW9uIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIEdpdEh1YiByZXBvc2l0b3J5IHB1Ymxpc2hpbmcgYSBwbHVnaW4gXHUyMDE0IHRoZSBleHBsaWNpdCBvdmVycmlkZSB3aGVuIGdpdmVuLCBvdGhlcndpc2VcbiAqIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZXNvbHZlLlxuICogQHJldHVybnMgVGhlIGBvd25lci9uYW1lYCByZXBvc2l0b3J5IHJlZmVyZW5jZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW4gZXhwbGljaXQgb3ZlcnJpZGUgaXMgbWFsZm9ybWVkLCBvciB0aGUgaWQgaXMgbm90IGEgcmVnaXN0ZXJlZCBjb21tdW5pdHkgcGx1Z2luLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlUGx1Z2luUmVwbyhwbHVnaW46IEluamVjdFBsdWdpblBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgcGx1Z2luSWQsIHJlcG8gfSA9IHBsdWdpbjtcblxuICBpZiAocmVwbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc1ZhbGlkUmVwb1JlZmVyZW5jZShyZXBvKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFxcYHJlcG9cXGAgZm9yIGNvbW11bml0eSBwbHVnaW4gXCIke3BsdWdpbklkfVwiOiAke3JlcG99LiBFeHBlY3RlZCBhbiBcXGBvd25lci9uYW1lXFxgIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcG87XG4gIH1cblxuICBjb25zdCByZWdpc3RyeVJlcG8gPSBzZWxlY3RQbHVnaW5SZXBvKHsgZW50cmllczogYXdhaXQgZmV0Y2hDb21tdW5pdHlQbHVnaW5SZWdpc3RyeSgpLCBwbHVnaW5JZCB9KTtcbiAgaWYgKHJlZ2lzdHJ5UmVwbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENvbW11bml0eSBwbHVnaW4gXCIke3BsdWdpbklkfVwiIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5LCBzbyBpdHMgR2l0SHViIGBcbiAgICAgICAgKyAncmVwb3NpdG9yeSBjYW5ub3QgYmUgcmVzb2x2ZWQuIFBhc3MgYW4gZXhwbGljaXQgYHJlcG9gIChgb3duZXIvbmFtZWApIG9uIHRoZSBpbmplY3RlZCBwbHVnaW4uJ1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gcmVnaXN0cnlSZXBvO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlDQSxxQkFHTztBQUNQLHVCQUFxQjtBQUNyQiwwQkFBb0I7QUFTcEIsdUNBT087QUFDUCxpQ0FJTztBQUNQLGlCQUFvQjtBQU1wQixNQUFNLHNCQUFzQjtBQUU1QixNQUFNLGlCQUFpQjtBQU92QixJQUFJO0FBOEVKLGVBQXNCLDBCQUEwQixRQUFtRjtBQUNqSSxRQUFNLEVBQUUsZUFBZSxlQUFlLGNBQWMsTUFBTSxJQUFJO0FBRTlELFFBQU0saUJBQWlCLGNBQWMsT0FBTyxDQUFDLFdBQVcsT0FBTyxvQkFBb0IsTUFBUztBQUM1RixRQUFNLFVBQVUsY0FBYyxxQkFBaUIsMERBQThCLEVBQUUsZUFBZSxjQUFjLENBQUM7QUFDN0csUUFBTSxrQkFBa0IsSUFBSSxJQUFJLFFBQVEsSUFBSSxDQUFDLFdBQVcsT0FBTyxRQUFRLENBQUM7QUFFeEUsUUFBTSxZQUFtQyxDQUFDO0FBQzFDLGFBQVcsVUFBVSxTQUFTO0FBRzVCLGNBQVUsS0FBSyxNQUFNLGNBQWMsZUFBZSxNQUFNLENBQUM7QUFBQSxFQUMzRDtBQUVBLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxrQkFBa0IsY0FBYyxJQUFJLENBQUMsV0FBVyxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQztBQUFBLEVBQ3RIO0FBQ0Y7QUFhQSxlQUFzQiw0QkFBNEIsUUFBb0U7QUFDcEgsTUFBSSxPQUFPLGtCQUFrQixRQUFXO0FBQ3RDLFVBQU0sMEJBQTBCLEVBQUUsZUFBZSxPQUFPLGVBQWUsZUFBZSxPQUFPLGNBQWMsQ0FBQztBQUFBLEVBQzlHO0FBRUEsYUFBTyxtREFBdUIsTUFBTTtBQUN0QztBQVVBLFNBQVMscUJBQThCO0FBQ3JDLFFBQU0sVUFBVSxJQUFJLFFBQVEsRUFBRSxjQUFjLG9CQUFvQixDQUFDO0FBQ2pFLFFBQU0sUUFBUSxvQkFBQUEsUUFBUSxJQUFJLGNBQWMsS0FBSyxvQkFBQUEsUUFBUSxJQUFJLFVBQVU7QUFDbkUsTUFBSSxPQUFPO0FBQ1QsWUFBUSxJQUFJLGlCQUFpQixVQUFVLEtBQUssRUFBRTtBQUFBLEVBQ2hEO0FBQ0EsU0FBTztBQUNUO0FBVUEsZUFBZSxjQUFjLEtBQWEsWUFBa0Q7QUFDMUYsUUFBTSxXQUFXLE1BQU0sTUFBTSxLQUFLLEVBQUUsU0FBUyxtQkFBbUIsRUFBRSxDQUFDO0FBQ25FLE1BQUksQ0FBQyxTQUFTLElBQUk7QUFDaEIsUUFBSSxDQUFDLGNBQWMsU0FBUyxXQUFXLGdCQUFnQjtBQUNyRCxhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU0sSUFBSSxNQUFNLHNCQUFzQixHQUFHLFVBQVUsT0FBTyxTQUFTLE1BQU0sQ0FBQyxJQUFJLFNBQVMsVUFBVSxFQUFFO0FBQUEsRUFDckc7QUFDQSxTQUFPLE9BQU8sS0FBSyxNQUFNLFNBQVMsWUFBWSxDQUFDO0FBQ2pEO0FBUUEsZUFBZSwrQkFBaUY7QUFDOUYsdUJBQXFCLFlBQThEO0FBQ2pGLHdCQUFJLDZFQUE2RSwrREFBOEIsS0FBSztBQUNwSCxVQUFNLFdBQVcsTUFBTSxNQUFNLGlFQUFnQyxFQUFFLFNBQVMsbUJBQW1CLEVBQUUsQ0FBQztBQUM5RixRQUFJLENBQUMsU0FBUyxJQUFJO0FBQ2hCLFlBQU0sSUFBSTtBQUFBLFFBQ1IseURBQXlELCtEQUE4QixXQUMzRSxPQUFPLFNBQVMsTUFBTSxDQUFDLElBQUksU0FBUyxVQUFVO0FBQUEsTUFFNUQ7QUFBQSxJQUNGO0FBQ0EsV0FBTyxNQUFNLFNBQVMsS0FBSztBQUFBLEVBQzdCLEdBQUc7QUFFSCxNQUFJO0FBQ0YsV0FBTyxNQUFNO0FBQUEsRUFDZixTQUFTLE9BQWdCO0FBRXZCLHNCQUFrQjtBQUNsQixVQUFNO0FBQUEsRUFDUjtBQUNGO0FBVUEsZUFBZSxjQUFjLGVBQXVCLFFBQTBEO0FBQzVHLFFBQU0sRUFBRSxVQUFVLFFBQVEsSUFBSTtBQUM5QixRQUFNLE9BQU8sTUFBTSxrQkFBa0IsTUFBTTtBQUMzQyxRQUFNLHNCQUFrQixpRUFBcUMsRUFBRSxlQUFlLE9BQU8sQ0FBQztBQUV0RixzQkFBSSxzQ0FBc0MsUUFBUSxVQUFVLElBQUksSUFBSSxXQUFXLFFBQVEsU0FBUyxlQUFlLEtBQUs7QUFFcEgsUUFBTSxZQUFZLE1BQU0sUUFBUSxJQUFJO0FBQUEsSUFDbEMsR0FBRyw2REFBNEIsSUFBSSxPQUFPLGVBQWU7QUFBQSxNQUN2RDtBQUFBLE1BQ0EsU0FBUyxNQUFNLGtCQUFjLHNEQUFvQixFQUFFLFdBQVcsTUFBTSxRQUFRLENBQUMsR0FBRyxJQUFJO0FBQUEsSUFDdEYsRUFBRTtBQUFBLElBQ0YsR0FBRyw2REFBNEIsSUFBSSxPQUFPLGVBQWU7QUFBQSxNQUN2RDtBQUFBLE1BQ0EsU0FBUyxNQUFNLGtCQUFjLHNEQUFvQixFQUFFLFdBQVcsTUFBTSxRQUFRLENBQUMsR0FBRyxLQUFLO0FBQUEsSUFDdkYsRUFBRTtBQUFBLEVBQ0osQ0FBQztBQUVELGdDQUFVLGlCQUFpQixFQUFFLFdBQVcsS0FBSyxDQUFDO0FBRTlDLFFBQU0sYUFBdUIsQ0FBQztBQUM5QixhQUFXLEVBQUUsV0FBVyxRQUFRLEtBQUssV0FBVztBQUM5QyxRQUFJLFlBQVksUUFBVztBQUN6QjtBQUFBLElBQ0Y7QUFDQSwwQ0FBYyx1QkFBSyxpQkFBaUIsU0FBUyxHQUFHLE9BQU87QUFDdkQsZUFBVyxLQUFLLFNBQVM7QUFBQSxFQUMzQjtBQUVBLHNCQUFJLHFDQUFxQyxRQUFRLE1BQU0sV0FBVyxLQUFLLElBQUksQ0FBQyxHQUFHO0FBRS9FLFNBQU8sRUFBRSxZQUFZLFVBQVUsTUFBTSxRQUFRO0FBQy9DO0FBVUEsZUFBZSxrQkFBa0IsUUFBNkM7QUFDNUUsUUFBTSxFQUFFLFVBQVUsS0FBSyxJQUFJO0FBRTNCLE1BQUksU0FBUyxRQUFXO0FBQ3RCLFFBQUksS0FBQyx1REFBcUIsSUFBSSxHQUFHO0FBQy9CLFlBQU0sSUFBSSxNQUFNLDBDQUEwQyxRQUFRLE1BQU0sSUFBSSx5Q0FBeUM7QUFBQSxJQUN2SDtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxtQkFBZSxtREFBaUIsRUFBRSxTQUFTLE1BQU0sNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0FBQ2pHLE1BQUksaUJBQWlCLFFBQVc7QUFDOUIsVUFBTSxJQUFJO0FBQUEsTUFDUixxQkFBcUIsUUFBUTtBQUFBLElBRS9CO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
148
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQtYm9vdHN0cmFwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSW5zdGFsbHMgYSBkZW1vIHZhdWx0J3MgKippbmplY3RlZCBjb21tdW5pdHkgcGx1Z2lucyoqIGhlYWRsZXNzbHksIGJ5IGRvd25sb2FkaW5nXG4gKiB0aGVpciBwdWJsaXNoZWQgR2l0SHViIHJlbGVhc2UgYXNzZXRzIHN0cmFpZ2h0IGludG9cbiAqIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYC5cbiAqXG4gKiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAgcmVxdWlyZXMgZWFjaCBpbmplY3RlZCBwbHVnaW4ncyBgbWFpbi5qc2AgL1xuICogYG1hbmlmZXN0Lmpzb25gIHRvIGFscmVhZHkgYmUgb24gZGlzaywgYW5kIHRocm93cyB3aGVuIHRoZXkgYXJlIG5vdC4gVW50aWwgdGhpc1xuICogbW9kdWxlIGV4aXN0ZWQgdGhlIG9ubHkgZG9jdW1lbnRlZCByZW1lZHkgd2FzIGEgKipHVUkgc3RlcCoqIFx1MjAxNCBvcGVuIGBkZW1vLXZhdWx0L2BcbiAqIGluIE9ic2lkaWFuIG9uY2UgYW5kIGxldCBgZGVtby12YXVsdC1oZWxwZXJgIGluc3RhbGwgdGhlIHBsdWdpbiBhdCBydW50aW1lLlxuICogYC5vYnNpZGlhbi9wbHVnaW5zLypgIGlzIGdpdGlnbm9yZWQgaW4gYSBwbHVnaW4gcmVwbywgc28gdGhhdCBzdGF0ZVxuICogZXhpc3RzIG9uIGV4YWN0bHkgdGhlIG9uZSBtYWNoaW5lIHRoYXQgZGlkIGl0IGFuZCBpcyBpbnZpc2libGUgdG8gYSBmcmVzaCBjbG9uZSxcbiAqIGEgbmV3IG1hY2hpbmUsIG9yIENJLiBTaW5jZSBhIHBsdWdpbiByZXBvJ3MgcmVsZWFzZSBwcmVmbGlnaHQgcnVucyBpdHNcbiAqIGludGVncmF0aW9uIHRlc3RzLCB0aGF0IG1hZGUgKmN1dHRpbmcgYSByZWxlYXNlIGZyb20gYSBjbGVhbiBjbG9uZSogaW1wb3NzaWJsZVxuICogd2l0aG91dCBhIGh1bWFuIG9wZW5pbmcgYSBHVUkuXG4gKlxuICogRG93bmxvYWRpbmcgdGhlIHJlbGVhc2UgYXNzZXRzIGlzIHRoZSBleGFjdCBoZWFkbGVzcyBlcXVpdmFsZW50OiB0aGUgcmVzdWx0aW5nXG4gKiBmb2xkZXIgaXMgd2hhdCBPYnNpZGlhbiBpdHNlbGYgd291bGQgaGF2ZSBpbnN0YWxsZWQsIHNvIHRoZSBzaGlwcGVkXG4gKiBgKi1kZW1vLXZhdWx0LnppcGAgXHUyMDE0IHdoaWNoIHVuemlwcyBpbnRvIGEgc2luZ2xlIGAqLWRlbW8tdmF1bHQtPHZlcnNpb24+YCBmb2xkZXIgXHUyMDE0XG4gKiBzdGF5cyB0aGUgc3RhbmRhcmQgZGVtby12YXVsdCBhcnRpZmFjdC5cbiAqXG4gKiBUd28gZW50cnkgcG9pbnRzLCBwbHVzIHRoZSBgYm9vdHN0cmFwLWRlbW8tdmF1bHRgIENMSSBzdWJjb21tYW5kOlxuICpcbiAqIC0ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9IFx1MjAxNCBpbnN0YWxsIHRoZSBtaXNzaW5nIG9uZXMsIGV4cGxpY2l0bHkuXG4gKiAtIHtAbGluayBidWlsZERlbW9WYXVsdFBvcHVsYXRlQXN5bmN9IFx1MjAxNCBkbyB0aGF0IGFuZCB0aGVuIGJ1aWxkIHRoZSBwb3B1bGF0ZSBtYXAsXG4gKiAgIHNvIGEgZ2xvYmFsIHNldHVwIHNlbGYtaGVhbHMgd2l0aCBubyBtYW51YWwgc3RlcCBhdCBhbGwuXG4gKlxuICogVGhlIHN5bmMgYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgIGRlbGliZXJhdGVseSBrZWVwcyB0aHJvd2luZzogYGZldGNoYCBoYXMgbm9cbiAqIHN5bmNocm9ub3VzIGZvcm0sIHNvIGF1dG8taGVhbGluZyBjYW4gb25seSBsaXZlIG9uIGFuIGFzeW5jIHNpYmxpbmcuIEl0cyBtZXNzYWdlXG4gKiBub3cgbmFtZXMgYm90aCByZW1lZGllcyBhYm92ZSBpbnN0ZWFkIG9mIHRoZSBHVUkgc3RlcC5cbiAqL1xuXG5pbXBvcnQge1xuICBta2RpclN5bmMsXG4gIHdyaXRlRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29tbXVuaXR5UGx1Z2luUmVnaXN0cnlFbnRyeSB9IGZyb20gJy4vY29tbXVuaXR5LXBsdWdpbi1yZWdpc3RyeS5janMnO1xuaW1wb3J0IHR5cGUge1xuICBCdWlsZERlbW9WYXVsdFBvcHVsYXRlUGFyYW1zLFxuICBJbmplY3RQbHVnaW5QYXJhbXNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuL3RlbXBvcmFyeS12YXVsdC5janMnO1xuXG5pbXBvcnQge1xuICBidWlsZFBsdWdpbkFzc2V0VXJsLFxuICBDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkwsXG4gIGlzVmFsaWRSZXBvUmVmZXJlbmNlLFxuICBPUFRJT05BTF9QTFVHSU5fQVNTRVRfTkFNRVMsXG4gIFJFUVVJUkVEX1BMVUdJTl9BU1NFVF9OQU1FUyxcbiAgc2VsZWN0UGx1Z2luUmVwb1xufSBmcm9tICcuL2NvbW11bml0eS1wbHVnaW4tcmVnaXN0cnkuY2pzJztcbmltcG9ydCB7XG4gIGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGUsXG4gIHJlc29sdmVJbmplY3RlZFBsdWdpblNvdXJjZURpcmVjdG9yeSxcbiAgcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnNcbn0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLmNqcyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICcuL2xvZy5janMnO1xuXG4vKipcbiAqIEJyb3dzZXIgYFVzZXItQWdlbnRgIGZvciB0aGUgYXNzZXQgZG93bmxvYWRzLCBtYXRjaGluZyBgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCBcdTIwMTRcbiAqIGEgcGxhaW4gTm9kZSBmZXRjaCBpcyByZWplY3RlZCBieSBzb21lIENETiBlZGdlcy5cbiAqL1xuY29uc3QgRE9XTkxPQURfVVNFUl9BR0VOVCA9ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI0LjAuMC4wIFNhZmFyaS81MzcuMzYnO1xuXG5jb25zdCBIVFRQX05PVF9GT1VORCA9IDQwNDtcblxuLyoqXG4gKiBUaGUgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeSwgZmV0Y2hlZCBhdCBtb3N0IG9uY2UgcGVyIHByb2Nlc3MuIEV2ZXJ5IGluamVjdGVkXG4gKiBwbHVnaW4gb2YgZXZlcnkgZGVtby12YXVsdCBwcm9qZWN0IGluIGEgcnVuIHJlc29sdmVzIGFnYWluc3QgdGhlIHNhbWUgdGFibGUsIGFuZFxuICogaXQgaXMgYSBtdWx0aS1tZWdhYnl0ZSBkb2N1bWVudC5cbiAqL1xubGV0IHJlZ2lzdHJ5UHJvbWlzZTogUHJvbWlzZTxyZWFkb25seSBDb21tdW5pdHlQbHVnaW5SZWdpc3RyeUVudHJ5W10+IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBEZW1vVmF1bHRQbHVnaW5zUGFyYW1zIHtcbiAgLyoqXG4gIEFic29sdXRlIHBhdGggdG8gdGhlIHBsdWdpbiByZXBvJ3MgYGRlbW8tdmF1bHQvYCBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBkZW1vVmF1bHRQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RlZCBwbHVnaW5zIHRvIGluc3RhbGwgXHUyMDE0IHRoZSBzYW1lIGxpc3QgcGFzc2VkIHRvIGBidWlsZERlbW9WYXVsdFBvcHVsYXRlYC4gUGx1Z2lucyB3aG9zZVxuICAgKiBiaW5hcmllcyBhcmUgYWxyZWFkeSBwcmVzZW50IGFyZSBza2lwcGVkICh1bmxlc3Mge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMuc2hvdWxkRm9yY2V9KSxcbiAgICogYXMgYXJlIHBsdWdpbnMgY2FycnlpbmcgYW4gZXhwbGljaXQgYHNvdXJjZURpcmVjdG9yeWAuXG4gICAqL1xuICByZWFkb25seSBpbmplY3RQbHVnaW5zOiByZWFkb25seSBJbmplY3RQbHVnaW5QYXJhbXNbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZS1kb3dubG9hZCBwbHVnaW5zIHRoYXQgYXJlIGFscmVhZHkgaW5zdGFsbGVkLCByZXBsYWNpbmcgdGhlbSB3aXRoIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAgXHUyMDE0IHRoZSBub3JtYWwgcGF0aCBpbnN0YWxscyBvbmx5IHdoYXQgaXMgbWlzc2luZywgc28gYSB3YXJtIGNoZWNrb3V0IGRvZXMgbm9cbiAgICogbmV0d29yayBJL08gYXQgYWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRm9yY2U/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIGEge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9IHJ1bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBEZW1vVmF1bHRQbHVnaW5zUmVzdWx0IHtcbiAgLyoqXG4gIFRoZSBwbHVnaW5zIHRoYXQgd2VyZSBkb3dubG9hZGVkIGFuZCB3cml0dGVuLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGluc3RhbGxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlZDogcmVhZG9ubHkgSW5zdGFsbGVkUGx1Z2luSW5mb1tdO1xuXG4gIC8qKlxuICBUaGUgaWRzIG9mIHBsdWdpbnMgbGVmdCB1bnRvdWNoZWQgXHUyMDE0IGFscmVhZHkgaW5zdGFsbGVkLCBvciBvcHRlZCBvdXQgdmlhIGFuIGV4cGxpY2l0IGBzb3VyY2VEaXJlY3RvcnlgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcHBlZFBsdWdpbklkczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogT25lIHBsdWdpbiBpbnN0YWxsZWQgYnkge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxlZFBsdWdpbkluZm8ge1xuICAvKipcbiAgVGhlIGFzc2V0IGZpbGUgbmFtZXMgYWN0dWFsbHkgd3JpdHRlbiwgZS5nLiBgWydtYWluLmpzJywgJ21hbmlmZXN0Lmpzb24nLCAnc3R5bGVzLmNzcyddYC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgcGx1Z2luJ3MgaWQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgR2l0SHViIHJlcG9zaXRvcnkgdGhlIGFzc2V0cyBjYW1lIGZyb20sIGFzIGBvd25lci9uYW1lYC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcblxuICAvKipcbiAgVGhlIHJlbGVhc2UgdGFnIGRvd25sb2FkZWQgZnJvbSwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgcmVwb3NpdG9yeSdzIGxhdGVzdCByZWxlYXNlIHdhcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIGV2ZXJ5IGluamVjdGVkIGNvbW11bml0eSBwbHVnaW4gd2hvc2UgYnVpbHQgZmlsZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgZGVtbyB2YXVsdCwgYnlcbiAqIGRvd25sb2FkaW5nIGl0cyBwdWJsaXNoZWQgcmVsZWFzZSBhc3NldHMgaW50byBgZGVtby12YXVsdC8ub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AuXG4gKlxuICogRWFjaCBwbHVnaW4ncyByZXBvc2l0b3J5IGNvbWVzIGZyb20gaXRzIHtAbGluayBJbmplY3RQbHVnaW5QYXJhbXMucmVwb30gd2hlbiBnaXZlbiwgb3RoZXJ3aXNlIGZyb21cbiAqIE9ic2lkaWFuJ3Mgb3duIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnkgXHUyMDE0IHRoZSBzYW1lIGBpZGAgXHUyMTkyIGByZXBvYCB0YWJsZSB0aGUgaW4tYXBwIGNvbW11bml0eSBicm93c2VyXG4gKiBpbnN0YWxscyBmcm9tLCBzbyBubyBwbHVnaW4tc3BlY2lmaWMgbWFwcGluZyBpcyBoYXJkY29kZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtc30uXG4gKiBAcmV0dXJucyBXaGF0IHdhcyBpbnN0YWxsZWQgYW5kIHdoYXQgd2FzIHNraXBwZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGEgcGx1Z2luJ3MgcmVwb3NpdG9yeSBjYW5ub3QgYmUgcmVzb2x2ZWQsIG9yIGEgcmVxdWlyZWQgYXNzZXQgY2Fubm90IGJlIGRvd25sb2FkZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zKHBhcmFtczogQm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1BhcmFtcyk6IFByb21pc2U8Qm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc1Jlc3VsdD4ge1xuICBjb25zdCB7IGRlbW9WYXVsdFBhdGgsIGluamVjdFBsdWdpbnMsIHNob3VsZEZvcmNlID0gZmFsc2UgfSA9IHBhcmFtcztcblxuICBjb25zdCBib290c3RyYXBwYWJsZSA9IGluamVjdFBsdWdpbnMuZmlsdGVyKChwbHVnaW4pID0+IHBsdWdpbi5zb3VyY2VEaXJlY3RvcnkgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHRhcmdldHMgPSBzaG91bGRGb3JjZSA/IGJvb3RzdHJhcHBhYmxlIDogcmVzb2x2ZU1pc3NpbmdJbmplY3RlZFBsdWdpbnMoeyBkZW1vVmF1bHRQYXRoLCBpbmplY3RQbHVnaW5zIH0pO1xuICBjb25zdCB0YXJnZXRQbHVnaW5JZHMgPSBuZXcgU2V0KHRhcmdldHMubWFwKChwbHVnaW4pID0+IHBsdWdpbi5wbHVnaW5JZCkpO1xuXG4gIGNvbnN0IGluc3RhbGxlZDogSW5zdGFsbGVkUGx1Z2luSW5mb1tdID0gW107XG4gIGZvciAoY29uc3QgcGx1Z2luIG9mIHRhcmdldHMpIHtcbiAgICAvLyBTZXF1ZW50aWFsIG9uIHB1cnBvc2U6IHRoZSBpbnN0YWxscyBzaGFyZSBvbmUgbWVtb2lzZWQgcmVnaXN0cnkgZmV0Y2guXG4gICAgLy8gUGFyYWxsZWxpc20gd291bGQgYnV5IG5vdGhpbmcgYnV0IGludGVybGVhdmVkIGxvZ3MgZm9yIHRoZSBoYW5kZnVsIG9mIHBsdWdpbnMgYSBkZW1vIHZhdWx0IGluamVjdHMuXG4gICAgaW5zdGFsbGVkLnB1c2goYXdhaXQgaW5zdGFsbFBsdWdpbihkZW1vVmF1bHRQYXRoLCBwbHVnaW4pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaW5zdGFsbGVkLFxuICAgIHNraXBwZWRQbHVnaW5JZHM6IGluamVjdFBsdWdpbnMubWFwKChwbHVnaW4pID0+IHBsdWdpbi5wbHVnaW5JZCkuZmlsdGVyKChwbHVnaW5JZCkgPT4gIXRhcmdldFBsdWdpbklkcy5oYXMocGx1Z2luSWQpKVxuICB9O1xufVxuXG4vKipcbiAqIFRoZSBzZWxmLWhlYWxpbmcgY291bnRlcnBhcnQgb2YgYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgOiBpbnN0YWxscyBhbnkgaW5qZWN0ZWQgY29tbXVuaXR5IHBsdWdpbiB3aG9zZVxuICogYmluYXJpZXMgYXJlIG1pc3NpbmcgKHNlZSB7QGxpbmsgYm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2luc30pLCB0aGVuIGJ1aWxkcyB0aGUgcG9wdWxhdGUgbWFwIGV4YWN0bHkgYXMgdGhlXG4gKiBzeW5jaHJvbm91cyBidWlsZGVyIGRvZXMuXG4gKlxuICogVXNlIHRoaXMgZnJvbSBhIGdsb2JhbCBzZXR1cCdzIGBwb3B1bGF0ZWAgdGh1bmsgXHUyMDE0IGJvdGggdGhlIFZpdGVzdCBhbmQgSmVzdCBhZGFwdGVycyBhY2NlcHQgYSB0aHVua1xuICogcmV0dXJuaW5nIGEgcHJvbWlzZSBcdTIwMTQgc28gYSBmcmVzaCBjbG9uZSwgYSBuZXcgbWFjaGluZSwgb3IgQ0kgbmVlZHMgbm8gbWFudWFsIGluc3RhbGwgc3RlcC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbWUgYEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVQYXJhbXNgIHRoZSBzeW5jaHJvbm91cyBidWlsZGVyIHRha2VzLlxuICogQHJldHVybnMgVGhlIHBvcHVsYXRlIG1hcCwgcmVhZHkgdG8gaGFuZCB0byBhIGdsb2JhbCBzZXR1cCdzIGBwb3B1bGF0ZWAgb3IgYFRlbXBvcmFyeVZhdWx0LnBvcHVsYXRlYC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFRlbXBvcmFyeTogYEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVQYXJhbXNgIGlzIHJlLWV4cG9ydGVkIGZyb20gYGluZGV4LnRzYCwgc28gcmVuYW1pbmcgaXQgdG8gYEJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY1BhcmFtc2AgaXMgYSBicmVha2luZyBjaGFuZ2UgaGVsZCBmb3IgdGhlIG5leHQgbWFqb3IuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGREZW1vVmF1bHRQb3B1bGF0ZUFzeW5jKHBhcmFtczogQnVpbGREZW1vVmF1bHRQb3B1bGF0ZVBhcmFtcyk6IFByb21pc2U8UG9wdWxhdGVGaWxlc1BhcmFtcz4ge1xuICBpZiAocGFyYW1zLmluamVjdFBsdWdpbnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGF3YWl0IGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnMoeyBkZW1vVmF1bHRQYXRoOiBwYXJhbXMuZGVtb1ZhdWx0UGF0aCwgaW5qZWN0UGx1Z2luczogcGFyYW1zLmluamVjdFBsdWdpbnMgfSk7XG4gIH1cblxuICByZXR1cm4gYnVpbGREZW1vVmF1bHRQb3B1bGF0ZShwYXJhbXMpO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gTmV0d29yayBkb3dubG9hZCBnbHVlLCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJlcXVlc3QgaGVhZGVycyBmb3IgYSBHaXRIdWIgZG93bmxvYWQsIHNlbmRpbmcgYSBgR0lUSFVCX1RPS0VOYCAvIGBHSF9UT0tFTmAgYmVhcmVyIHdoZW4gb25lXG4gKiBpcyBpbiB0aGUgZW52aXJvbm1lbnQgXHUyMDE0IHdpdGhvdXQgaXQgdGhlIGFub255bW91cyBxdW90YSByZXR1cm5zIEhUVFAgNDAzIG9uIHNoYXJlZCBDSSBydW5uZXIgSVBzLlxuICpcbiAqIEByZXR1cm5zIFRoZSBoZWFkZXJzIHRvIHNlbmQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkR2l0SHViSGVhZGVycygpOiBIZWFkZXJzIHtcbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHsgJ1VzZXItQWdlbnQnOiBET1dOTE9BRF9VU0VSX0FHRU5UIH0pO1xuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52WydHSVRIVUJfVE9LRU4nXSA/PyBwcm9jZXNzLmVudlsnR0hfVE9LRU4nXTtcbiAgaWYgKHRva2VuKSB7XG4gICAgaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dG9rZW59YCk7XG4gIH1cbiAgcmV0dXJuIGhlYWRlcnM7XG59XG5cbi8qKlxuICogRG93bmxvYWRzIG9uZSByZWxlYXNlIGFzc2V0LlxuICpcbiAqIEBwYXJhbSB1cmwgLSBUaGUgYXNzZXQncyBkb3dubG9hZCBVUkwuXG4gKiBAcGFyYW0gaXNSZXF1aXJlZCAtIFdoZXRoZXIgYSBtaXNzaW5nIGFzc2V0IChIVFRQIDQwNCkgaXMgYW4gZXJyb3IgcmF0aGVyIHRoYW4gYW4gYWJzZW50IG9wdGlvbmFsIGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgYXNzZXQncyBieXRlcywgb3IgYHVuZGVmaW5lZGAgd2hlbiBhbiBvcHRpb25hbCBhc3NldCBpcyBub3QgcHVibGlzaGVkLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgZG93bmxvYWQgZmFpbHMgYW5kIHRoZSBhc3NldCBpcyByZXF1aXJlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRBc3NldCh1cmw6IHN0cmluZywgaXNSZXF1aXJlZDogYm9vbGVhbik6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IGhlYWRlcnM6IGJ1aWxkR2l0SHViSGVhZGVycygpIH0pO1xuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgaWYgKCFpc1JlcXVpcmVkICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gSFRUUF9OT1RfRk9VTkQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRvd25sb2FkICR7dXJsfTogSFRUUCAke1N0cmluZyhyZXNwb25zZS5zdGF0dXMpfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpO1xufVxuXG4vKipcbiAqIEZldGNoZXMgT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5LCBtZW1vaXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLlxuICpcbiAqIEByZXR1cm5zIFRoZSByZWdpc3RyeSByb3dzLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgcmVnaXN0cnkgY2Fubm90IGJlIGZldGNoZWQgb3IgcGFyc2VkLlxuICovXG5hc3luYyBmdW5jdGlvbiBmZXRjaENvbW11bml0eVBsdWdpblJlZ2lzdHJ5KCk6IFByb21pc2U8cmVhZG9ubHkgQ29tbXVuaXR5UGx1Z2luUmVnaXN0cnlFbnRyeVtdPiB7XG4gIHJlZ2lzdHJ5UHJvbWlzZSA/Pz0gKGFzeW5jICgpOiBQcm9taXNlPHJlYWRvbmx5IENvbW11bml0eVBsdWdpblJlZ2lzdHJ5RW50cnlbXT4gPT4ge1xuICAgIGxvZyhgW2RlbW8tdmF1bHQtYm9vdHN0cmFwXSBGZXRjaGluZyBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnkgZnJvbSAke0NPTU1VTklUWV9QTFVHSU5TX1JFR0lTVFJZX1VSTH0uLi5gKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKENPTU1VTklUWV9QTFVHSU5TX1JFR0lTVFJZX1VSTCwgeyBoZWFkZXJzOiBidWlsZEdpdEh1YkhlYWRlcnMoKSB9KTtcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5ICgke0NPTU1VTklUWV9QTFVHSU5TX1JFR0lTVFJZX1VSTH0pOiBgXG4gICAgICAgICAgKyBgSFRUUCAke1N0cmluZyhyZXNwb25zZS5zdGF0dXMpfSAke3Jlc3BvbnNlLnN0YXR1c1RleHR9LiBgXG4gICAgICAgICAgKyAnUGFzcyBhbiBleHBsaWNpdCBgcmVwb2Agb24gdGhlIGluamVjdGVkIHBsdWdpbiB0byBza2lwIHRoZSByZWdpc3RyeSBsb29rdXAuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyByZWFkb25seSBDb21tdW5pdHlQbHVnaW5SZWdpc3RyeUVudHJ5W107XG4gIH0pKCk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgcmVnaXN0cnlQcm9taXNlO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIC8vIERvIG5vdCBtZW1vaXNlIGEgZmFpbHVyZTogYSB0cmFuc2llbnQgbmV0d29yayBlcnJvciBtdXN0IG5vdCBwb2lzb24gZXZlcnkgbGF0ZXIgbG9va3VwLlxuICAgIHJlZ2lzdHJ5UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIERvd25sb2FkcyBvbmUgcGx1Z2luJ3MgcmVsZWFzZSBhc3NldHMgYW5kIHdyaXRlcyB0aGVtIGludG8gdGhlIGRlbW8gdmF1bHQuXG4gKlxuICogQHBhcmFtIGRlbW9WYXVsdFBhdGggLSBUaGUgZGVtbyB2YXVsdCByb290LlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdG8gaW5zdGFsbC5cbiAqIEByZXR1cm5zIFdoYXQgd2FzIGluc3RhbGxlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHJlcG9zaXRvcnkgY2Fubm90IGJlIHJlc29sdmVkIG9yIGEgcmVxdWlyZWQgYXNzZXQgY2Fubm90IGJlIGRvd25sb2FkZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxQbHVnaW4oZGVtb1ZhdWx0UGF0aDogc3RyaW5nLCBwbHVnaW46IEluamVjdFBsdWdpblBhcmFtcyk6IFByb21pc2U8SW5zdGFsbGVkUGx1Z2luSW5mbz4ge1xuICBjb25zdCB7IHBsdWdpbklkLCB2ZXJzaW9uIH0gPSBwbHVnaW47XG4gIGNvbnN0IHJlcG8gPSBhd2FpdCByZXNvbHZlUGx1Z2luUmVwbyhwbHVnaW4pO1xuICBjb25zdCB0YXJnZXREaXJlY3RvcnkgPSByZXNvbHZlSW5qZWN0ZWRQbHVnaW5Tb3VyY2VEaXJlY3RvcnkoeyBkZW1vVmF1bHRQYXRoLCBwbHVnaW4gfSk7XG5cbiAgbG9nKGBbZGVtby12YXVsdC1ib290c3RyYXBdIEluc3RhbGxpbmcgXCIke3BsdWdpbklkfVwiIGZyb20gJHtyZXBvfUAke3ZlcnNpb24gPz8gJ2xhdGVzdCd9IGludG8gJHt0YXJnZXREaXJlY3Rvcnl9Li4uYCk7XG5cbiAgY29uc3QgZG93bmxvYWRzID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIC4uLlJFUVVJUkVEX1BMVUdJTl9BU1NFVF9OQU1FUy5tYXAoYXN5bmMgKGFzc2V0TmFtZSkgPT4gKHtcbiAgICAgIGFzc2V0TmFtZSxcbiAgICAgIGNvbnRlbnQ6IGF3YWl0IGRvd25sb2FkQXNzZXQoYnVpbGRQbHVnaW5Bc3NldFVybCh7IGFzc2V0TmFtZSwgcmVwbywgdmVyc2lvbiB9KSwgdHJ1ZSlcbiAgICB9KSksXG4gICAgLi4uT1BUSU9OQUxfUExVR0lOX0FTU0VUX05BTUVTLm1hcChhc3luYyAoYXNzZXROYW1lKSA9PiAoe1xuICAgICAgYXNzZXROYW1lLFxuICAgICAgY29udGVudDogYXdhaXQgZG93bmxvYWRBc3NldChidWlsZFBsdWdpbkFzc2V0VXJsKHsgYXNzZXROYW1lLCByZXBvLCB2ZXJzaW9uIH0pLCBmYWxzZSlcbiAgICB9KSlcbiAgXSk7XG5cbiAgbWtkaXJTeW5jKHRhcmdldERpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgYXNzZXROYW1lczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCB7IGFzc2V0TmFtZSwgY29udGVudCB9IG9mIGRvd25sb2Fkcykge1xuICAgIGlmIChjb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4odGFyZ2V0RGlyZWN0b3J5LCBhc3NldE5hbWUpLCBjb250ZW50KTtcbiAgICBhc3NldE5hbWVzLnB1c2goYXNzZXROYW1lKTtcbiAgfVxuXG4gIGxvZyhgW2RlbW8tdmF1bHQtYm9vdHN0cmFwXSBJbnN0YWxsZWQgXCIke3BsdWdpbklkfVwiOiAke2Fzc2V0TmFtZXMuam9pbignLCAnKX0uYCk7XG5cbiAgcmV0dXJuIHsgYXNzZXROYW1lcywgcGx1Z2luSWQsIHJlcG8sIHZlcnNpb24gfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgR2l0SHViIHJlcG9zaXRvcnkgcHVibGlzaGluZyBhIHBsdWdpbiBcdTIwMTQgdGhlIGV4cGxpY2l0IG92ZXJyaWRlIHdoZW4gZ2l2ZW4sIG90aGVyd2lzZVxuICogT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgYG93bmVyL25hbWVgIHJlcG9zaXRvcnkgcmVmZXJlbmNlLlxuICogQHRocm93cyBFcnJvciBpZiBhbiBleHBsaWNpdCBvdmVycmlkZSBpcyBtYWxmb3JtZWQsIG9yIHRoZSBpZCBpcyBub3QgYSByZWdpc3RlcmVkIGNvbW11bml0eSBwbHVnaW4uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQbHVnaW5SZXBvKHBsdWdpbjogSW5qZWN0UGx1Z2luUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBwbHVnaW5JZCwgcmVwbyB9ID0gcGx1Z2luO1xuXG4gIGlmIChyZXBvICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWlzVmFsaWRSZXBvUmVmZXJlbmNlKHJlcG8pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgXFxgcmVwb1xcYCBmb3IgY29tbXVuaXR5IHBsdWdpbiBcIiR7cGx1Z2luSWR9XCI6ICR7cmVwb30uIEV4cGVjdGVkIGFuIFxcYG93bmVyL25hbWVcXGAgcmVmZXJlbmNlLmApO1xuICAgIH1cbiAgICByZXR1cm4gcmVwbztcbiAgfVxuXG4gIGNvbnN0IHJlZ2lzdHJ5UmVwbyA9IHNlbGVjdFBsdWdpblJlcG8oeyBlbnRyaWVzOiBhd2FpdCBmZXRjaENvbW11bml0eVBsdWdpblJlZ2lzdHJ5KCksIHBsdWdpbklkIH0pO1xuICBpZiAocmVnaXN0cnlSZXBvID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ29tbXVuaXR5IHBsdWdpbiBcIiR7cGx1Z2luSWR9XCIgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnksIHNvIGl0cyBHaXRIdWIgYFxuICAgICAgICArICdyZXBvc2l0b3J5IGNhbm5vdCBiZSByZXNvbHZlZC4gUGFzcyBhbiBleHBsaWNpdCBgcmVwb2AgKGBvd25lci9uYW1lYCkgb24gdGhlIGluamVjdGVkIHBsdWdpbi4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiByZWdpc3RyeVJlcG87XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUNBLHFCQUdPO0FBQ1AsdUJBQXFCO0FBQ3JCLDBCQUFvQjtBQVNwQix1Q0FPTztBQUNQLGlDQUlPO0FBQ1AsaUJBQW9CO0FBTXBCLE1BQU0sc0JBQXNCO0FBRTVCLE1BQU0saUJBQWlCO0FBT3ZCLElBQUk7QUE4RUosZUFBc0IsMEJBQTBCLFFBQW1GO0FBQ2pJLFFBQU0sRUFBRSxlQUFlLGVBQWUsY0FBYyxNQUFNLElBQUk7QUFFOUQsUUFBTSxpQkFBaUIsY0FBYyxPQUFPLENBQUMsV0FBVyxPQUFPLG9CQUFvQixNQUFTO0FBQzVGLFFBQU0sVUFBVSxjQUFjLHFCQUFpQiwwREFBOEIsRUFBRSxlQUFlLGNBQWMsQ0FBQztBQUM3RyxRQUFNLGtCQUFrQixJQUFJLElBQUksUUFBUSxJQUFJLENBQUMsV0FBVyxPQUFPLFFBQVEsQ0FBQztBQUV4RSxRQUFNLFlBQW1DLENBQUM7QUFDMUMsYUFBVyxVQUFVLFNBQVM7QUFHNUIsY0FBVSxLQUFLLE1BQU0sY0FBYyxlQUFlLE1BQU0sQ0FBQztBQUFBLEVBQzNEO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLGtCQUFrQixjQUFjLElBQUksQ0FBQyxXQUFXLE9BQU8sUUFBUSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDO0FBQUEsRUFDdEg7QUFDRjtBQWNBLGVBQXNCLDRCQUE0QixRQUFvRTtBQUNwSCxNQUFJLE9BQU8sa0JBQWtCLFFBQVc7QUFDdEMsVUFBTSwwQkFBMEIsRUFBRSxlQUFlLE9BQU8sZUFBZSxlQUFlLE9BQU8sY0FBYyxDQUFDO0FBQUEsRUFDOUc7QUFFQSxhQUFPLG1EQUF1QixNQUFNO0FBQ3RDO0FBVUEsU0FBUyxxQkFBOEI7QUFDckMsUUFBTSxVQUFVLElBQUksUUFBUSxFQUFFLGNBQWMsb0JBQW9CLENBQUM7QUFDakUsUUFBTSxRQUFRLG9CQUFBQSxRQUFRLElBQUksY0FBYyxLQUFLLG9CQUFBQSxRQUFRLElBQUksVUFBVTtBQUNuRSxNQUFJLE9BQU87QUFDVCxZQUFRLElBQUksaUJBQWlCLFVBQVUsS0FBSyxFQUFFO0FBQUEsRUFDaEQ7QUFDQSxTQUFPO0FBQ1Q7QUFVQSxlQUFlLGNBQWMsS0FBYSxZQUFrRDtBQUMxRixRQUFNLFdBQVcsTUFBTSxNQUFNLEtBQUssRUFBRSxTQUFTLG1CQUFtQixFQUFFLENBQUM7QUFDbkUsTUFBSSxDQUFDLFNBQVMsSUFBSTtBQUNoQixRQUFJLENBQUMsY0FBYyxTQUFTLFdBQVcsZ0JBQWdCO0FBQ3JELGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxJQUFJLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxPQUFPLFNBQVMsTUFBTSxDQUFDLElBQUksU0FBUyxVQUFVLEVBQUU7QUFBQSxFQUNyRztBQUNBLFNBQU8sT0FBTyxLQUFLLE1BQU0sU0FBUyxZQUFZLENBQUM7QUFDakQ7QUFRQSxlQUFlLCtCQUFpRjtBQUM5Rix1QkFBcUIsWUFBOEQ7QUFDakYsd0JBQUksNkVBQTZFLCtEQUE4QixLQUFLO0FBQ3BILFVBQU0sV0FBVyxNQUFNLE1BQU0saUVBQWdDLEVBQUUsU0FBUyxtQkFBbUIsRUFBRSxDQUFDO0FBQzlGLFFBQUksQ0FBQyxTQUFTLElBQUk7QUFDaEIsWUFBTSxJQUFJO0FBQUEsUUFDUix5REFBeUQsK0RBQThCLFdBQzNFLE9BQU8sU0FBUyxNQUFNLENBQUMsSUFBSSxTQUFTLFVBQVU7QUFBQSxNQUU1RDtBQUFBLElBQ0Y7QUFDQSxXQUFPLE1BQU0sU0FBUyxLQUFLO0FBQUEsRUFDN0IsR0FBRztBQUVILE1BQUk7QUFDRixXQUFPLE1BQU07QUFBQSxFQUNmLFNBQVMsT0FBZ0I7QUFFdkIsc0JBQWtCO0FBQ2xCLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFVQSxlQUFlLGNBQWMsZUFBdUIsUUFBMEQ7QUFDNUcsUUFBTSxFQUFFLFVBQVUsUUFBUSxJQUFJO0FBQzlCLFFBQU0sT0FBTyxNQUFNLGtCQUFrQixNQUFNO0FBQzNDLFFBQU0sc0JBQWtCLGlFQUFxQyxFQUFFLGVBQWUsT0FBTyxDQUFDO0FBRXRGLHNCQUFJLHNDQUFzQyxRQUFRLFVBQVUsSUFBSSxJQUFJLFdBQVcsUUFBUSxTQUFTLGVBQWUsS0FBSztBQUVwSCxRQUFNLFlBQVksTUFBTSxRQUFRLElBQUk7QUFBQSxJQUNsQyxHQUFHLDZEQUE0QixJQUFJLE9BQU8sZUFBZTtBQUFBLE1BQ3ZEO0FBQUEsTUFDQSxTQUFTLE1BQU0sa0JBQWMsc0RBQW9CLEVBQUUsV0FBVyxNQUFNLFFBQVEsQ0FBQyxHQUFHLElBQUk7QUFBQSxJQUN0RixFQUFFO0FBQUEsSUFDRixHQUFHLDZEQUE0QixJQUFJLE9BQU8sZUFBZTtBQUFBLE1BQ3ZEO0FBQUEsTUFDQSxTQUFTLE1BQU0sa0JBQWMsc0RBQW9CLEVBQUUsV0FBVyxNQUFNLFFBQVEsQ0FBQyxHQUFHLEtBQUs7QUFBQSxJQUN2RixFQUFFO0FBQUEsRUFDSixDQUFDO0FBRUQsZ0NBQVUsaUJBQWlCLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFFOUMsUUFBTSxhQUF1QixDQUFDO0FBQzlCLGFBQVcsRUFBRSxXQUFXLFFBQVEsS0FBSyxXQUFXO0FBQzlDLFFBQUksWUFBWSxRQUFXO0FBQ3pCO0FBQUEsSUFDRjtBQUNBLDBDQUFjLHVCQUFLLGlCQUFpQixTQUFTLEdBQUcsT0FBTztBQUN2RCxlQUFXLEtBQUssU0FBUztBQUFBLEVBQzNCO0FBRUEsc0JBQUkscUNBQXFDLFFBQVEsTUFBTSxXQUFXLEtBQUssSUFBSSxDQUFDLEdBQUc7QUFFL0UsU0FBTyxFQUFFLFlBQVksVUFBVSxNQUFNLFFBQVE7QUFDL0M7QUFVQSxlQUFlLGtCQUFrQixRQUE2QztBQUM1RSxRQUFNLEVBQUUsVUFBVSxLQUFLLElBQUk7QUFFM0IsTUFBSSxTQUFTLFFBQVc7QUFDdEIsUUFBSSxLQUFDLHVEQUFxQixJQUFJLEdBQUc7QUFDL0IsWUFBTSxJQUFJLE1BQU0sMENBQTBDLFFBQVEsTUFBTSxJQUFJLHlDQUF5QztBQUFBLElBQ3ZIO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLG1CQUFlLG1EQUFpQixFQUFFLFNBQVMsTUFBTSw2QkFBNkIsR0FBRyxTQUFTLENBQUM7QUFDakcsTUFBSSxpQkFBaUIsUUFBVztBQUM5QixVQUFNLElBQUk7QUFBQSxNQUNSLHFCQUFxQixRQUFRO0FBQUEsSUFFL0I7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJwcm9jZXNzIl0KfQo=
@@ -44,4 +44,4 @@ class DesktopOnlyPluginSkipError extends Error {
44
44
  0 && (module.exports = {
45
45
  DesktopOnlyPluginSkipError
46
46
  });
47
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3Atb25seS1wbHVnaW4tc2tpcC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gd2hlbiBhIG1vYmlsZSB0cmFuc3BvcnQgaXMgYXNrZWQgdG8gcnVuIGludGVncmF0aW9uXG4gKiB0ZXN0cyBmb3IgYSBwbHVnaW4gd2hvc2UgYG1hbmlmZXN0Lmpzb25gIHNheXMgYGlzRGVza3RvcE9ubHk6IHRydWVgLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhwZWN0ZWQsIGJlbmlnbiBvdXRjb21lIFx1MjAxNCBhIGRlc2t0b3Atb25seSBtYW5pZmVzdCBpcyBhIGxlZ2l0aW1hdGVcbiAqIHN0YXRlLCBub3QgYSBtaXNjb25maWd1cmF0aW9uIFx1MjAxNCBzbyB0aGUgZXJyb3IgZGVsaWJlcmF0ZWx5IGNhcnJpZXMgbm8gc3RhY2tcbiAqIHRyYWNlLiBJdCBpcyB0aHJvd24gcmF0aGVyIHRoYW4gcmV0dXJuZWQgYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIncyBvbmx5IHdheSB0b1xuICogc2tpcCBhIHByb2plY3QncyB0ZXN0cyBpcyBhIGZhaWxpbmcgZ2xvYmFsIHNldHVwLCBhbmQgYSBzdGFjayB0cmFjZSBvbiBhblxuICogZXhwZWN0ZWQgc2tpcCBpcyB3aGF0IG1ha2VzIGEgZ3JlZW4gcmVsZWFzZSBydW4gcmVhZCBhcyBicm9rZW4uXG4gKi9cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIGRlc2t0b3Atb25seSBwbHVnaW4ncyBtb2JpbGUgaW50ZWdyYXRpb24gdGVzdHMgYXJlIHNraXBwZWQuXG4gKlxuICogQ2FycmllcyB0aGUgcGx1Z2luIGlkIHNvIGEgY2FsbGVyIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggYW5kIHJlcG9ydCB0aGUgc2tpcFxuICogaW4gaXRzIG93biB3b3Jkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgVGhlIGlkIG9mIHRoZSBkZXNrdG9wLW9ubHkgcGx1Z2luIHdob3NlIG1vYmlsZSB0ZXN0cyB3ZXJlIHNraXBwZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IgZnJvbSB0aGUgcGx1Z2luIGlkIHJlYWQgb3V0IG9mIGBtYW5pZmVzdC5qc29uYC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIGlkIG9mIHRoZSBkZXNrdG9wLW9ubHkgcGx1Z2luLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbklkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbklkfVwiIGhhcyBpc0Rlc2t0b3BPbmx5OiB0cnVlIGluIG1hbmlmZXN0Lmpzb24uIGBcbiAgICAgICAgKyAnTW9iaWxlIGludGVncmF0aW9uIHRlc3RzIGNhbm5vdCBydW4gZm9yIGRlc2t0b3Atb25seSBwbHVnaW5zLCBzbyB0aGlzIHByb2plY3QgaXMgc2tpcHBlZC4nXG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnRGVza3RvcE9ubHlQbHVnaW5Ta2lwRXJyb3InO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwbHVnaW5JZDtcbiAgICAvLyBBbiBleHBlY3RlZCBza2lwLCBub3QgYSBkZWZlY3Q6IHRoZSBtZXNzYWdlIHNheXMgZXZlcnl0aGluZywgYW5kIGEgdHJhY2UgcG9pbnRpbmcgaW50byB0aGUgaGFybmVzc1xuICAgIC8vIE9ubHkgc3VnZ2VzdHMgdGhlIGhhcm5lc3MgYnJva2UuXG4gICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQk8sTUFBTSxtQ0FBbUMsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxVQUFrQjtBQUNuQztBQUFBLE1BQ0UsV0FBVyxRQUFRO0FBQUEsSUFFckI7QUFDQSxTQUFLLE9BQU87QUFDWixTQUFLLFdBQVc7QUFHaEIsU0FBSyxRQUFRLEdBQUcsS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPO0FBQUEsRUFDNUM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
47
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Rlc2t0b3Atb25seS1wbHVnaW4tc2tpcC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gd2hlbiBhIG1vYmlsZSB0cmFuc3BvcnQgaXMgYXNrZWQgdG8gcnVuIGludGVncmF0aW9uXG4gKiB0ZXN0cyBmb3IgYSBwbHVnaW4gd2hvc2UgYG1hbmlmZXN0Lmpzb25gIHNheXMgYGlzRGVza3RvcE9ubHk6IHRydWVgLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhwZWN0ZWQsIGJlbmlnbiBvdXRjb21lIFx1MjAxNCBhIGRlc2t0b3Atb25seSBtYW5pZmVzdCBpcyBhIGxlZ2l0aW1hdGVcbiAqIHN0YXRlLCBub3QgYSBtaXNjb25maWd1cmF0aW9uIFx1MjAxNCBzbyB0aGUgZXJyb3IgZGVsaWJlcmF0ZWx5IGNhcnJpZXMgbm8gc3RhY2tcbiAqIHRyYWNlLiBJdCBpcyB0aHJvd24gcmF0aGVyIHRoYW4gcmV0dXJuZWQgYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIncyBvbmx5IHdheSB0b1xuICogc2tpcCBhIHByb2plY3QncyB0ZXN0cyBpcyBhIGZhaWxpbmcgZ2xvYmFsIHNldHVwLCBhbmQgYSBzdGFjayB0cmFjZSBvbiBhblxuICogZXhwZWN0ZWQgc2tpcCBpcyB3aGF0IG1ha2VzIGEgZ3JlZW4gcmVsZWFzZSBydW4gcmVhZCBhcyBicm9rZW4uXG4gKi9cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIGRlc2t0b3Atb25seSBwbHVnaW4ncyBtb2JpbGUgaW50ZWdyYXRpb24gdGVzdHMgYXJlIHNraXBwZWQuXG4gKlxuICogQ2FycmllcyB0aGUgcGx1Z2luIGlkIHNvIGEgY2FsbGVyIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggYW5kIHJlcG9ydCB0aGUgc2tpcFxuICogaW4gaXRzIG93biB3b3Jkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERlc2t0b3BPbmx5UGx1Z2luU2tpcEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgVGhlIGlkIG9mIHRoZSBkZXNrdG9wLW9ubHkgcGx1Z2luIHdob3NlIG1vYmlsZSB0ZXN0cyB3ZXJlIHNraXBwZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZXJyb3IgZnJvbSB0aGUgcGx1Z2luIGlkIHJlYWQgb3V0IG9mIGBtYW5pZmVzdC5qc29uYC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIGlkIG9mIHRoZSBkZXNrdG9wLW9ubHkgcGx1Z2luLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbklkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbklkfVwiIGhhcyBpc0Rlc2t0b3BPbmx5OiB0cnVlIGluIG1hbmlmZXN0Lmpzb24uIGBcbiAgICAgICAgKyAnTW9iaWxlIGludGVncmF0aW9uIHRlc3RzIGNhbm5vdCBydW4gZm9yIGRlc2t0b3Atb25seSBwbHVnaW5zLCBzbyB0aGlzIHByb2plY3QgaXMgc2tpcHBlZC4nXG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnRGVza3RvcE9ubHlQbHVnaW5Ta2lwRXJyb3InO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwbHVnaW5JZDtcbiAgICAvLyBBbiBleHBlY3RlZCBza2lwLCBub3QgYSBkZWZlY3Q6IHRoZSBtZXNzYWdlIHNheXMgZXZlcnl0aGluZywgYW5kIGEgdHJhY2UgcG9pbnRpbmcgaW50byB0aGUgaGFybmVzc1xuICAgIC8vIG9ubHkgc3VnZ2VzdHMgdGhlIGhhcm5lc3MgYnJva2UuXG4gICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtQk8sTUFBTSxtQ0FBbUMsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1QsWUFBWSxVQUFrQjtBQUNuQztBQUFBLE1BQ0UsV0FBVyxRQUFRO0FBQUEsSUFFckI7QUFDQSxTQUFLLE9BQU87QUFDWixTQUFLLFdBQVc7QUFHaEIsU0FBSyxRQUFRLEdBQUcsS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPO0FBQUEsRUFDNUM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -75,4 +75,4 @@ function extractNetworkAgentInfo(connectivityOutput, networkId) {
75
75
  resolveDeviceIdleTimeoutInMilliseconds,
76
76
  resolveNetworkReadyTimeoutInMilliseconds
77
77
  });
78
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1yZWFkaW5lc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGhlbHBlcnMgZm9yIGRlY2lkaW5nIHdoZW4gYSBmcmVzaGx5LWJvb3RlZCBBbmRyb2lkIGVtdWxhdG9yIGlzIHJlYWR5XG4gKiBlbm91Z2ggdG8gZXN0YWJsaXNoIGFuIEFwcGl1bSBzZXNzaW9uLCBwbHVzIHJlc29sdmluZyB0aGUgdHdvIHJlYWRpbmVzcy13YWl0XG4gKiB0aW1lb3V0cyBmcm9tIHRoZSB0cmFuc3BvcnQgb3B0aW9ucy4gS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5XG4gKiBgdHJhbnNwb3J0LWZhY3RvcnlgIHNvIHRoZSBwYXJzaW5nIGFuZCBkZWZhdWx0IHJlc29sdXRpb24gc3RheSB1bml0LXRlc3RhYmxlXG4gKiAodGhlIGZhY3RvcnkgaXRzZWxmIG5lZWRzIGEgcmVhbCBlbXVsYXRvciBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBSZWFkaW5lc3MgaXMgdHdvIGluZGVwZW5kZW50IHF1ZXN0aW9ucywgd2FpdGVkIG9uIGluIHR3byBwaGFzZXM6XG4gKlxuICogMS4gKipJcyB0aGUgZ3Vlc3QgaWRsZT8qKiBgc3lzLmJvb3RfY29tcGxldGVkYCBmaXJlcyAqYmVmb3JlKiBpdCBpczogcGFja2FnZVxuICogICAgb3B0aW1pemF0aW9uIChgZGV4Mm9hdGApIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZyBhZnRlciBpdCwgc28gYVxuICogICAgc2Vzc2lvbiBlc3RhYmxpc2hlZCB0aGUgaW5zdGFudCBpdCBmaXJlcyBtYWtlcyBldmVyeSBvbmUgb2YgVWlBdXRvbWF0b3IyJ3NcbiAqICAgIHNlcmlhbGl6ZWQgYGFkYmAgcm91bmQtdHJpcHMgY29udGVuZCB3aXRoIHRoYXQgd29yayBhbmQgaW5mbGF0ZSB+M3guIEdhdGluZ1xuICogICAgdGhlIHNlc3Npb24gb24gYSBsYXRlciwgcXVpZXRlciBzaWduYWwgKHRoZSBib290IGFuaW1hdGlvbiBoYXMgc3RvcHBlZCBhbmRcbiAqICAgIHRoZSBwYWNrYWdlIG1hbmFnZXIgaXMgc2VydmluZykgbGV0cyBpdCBydW4gYWdhaW5zdCBhbiBpZGxlIGd1ZXN0IGluc3RlYWQuXG4gKiAyLiAqKkRvZXMgdGhlIGd1ZXN0IGhhdmUgYSBuZXR3b3JrPyoqIEJvdGggaWRsZSBzaWduYWxzIGFyZSB0cnVlIHdlbGwgKmJlZm9yZSpcbiAqICAgIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkIFx1MjAxNCB0aGF0IGxhbmRzIH44MHMgaW50byBndWVzdFxuICogICAgdXB0aW1lLCB0ZW5zIG9mIHNlY29uZHMgYWZ0ZXIgdGhlIGlkbGUgZ2F0ZSBjbGVhcnMgXHUyMDE0IGFuZCBuZWl0aGVyIHNheXNcbiAqICAgIGFueXRoaW5nIGFib3V0IGNvbm5lY3Rpdml0eSwgc28gYW4gaWRsZS1vbmx5IGdhdGUgaGFuZHMgdGhlIHN1aXRlIGEgZGV2aWNlXG4gKiAgICB3aXRoIG5vIHJvdXRlLiBTZWUge0BsaW5rIGNoZWNrTmV0d29ya1ZhbGlkYXRlZH0gZm9yIHRoZSBtZWFzdXJlbWVudCBhbmRcbiAqICAgIGZvciB3aHkgdGhlIHRocmVlIG9idmlvdXMgY29ubmVjdGl2aXR5IHByb2JlcyBhcmUgYWxsIHdyb25nIGhlcmUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuXG5jb25zdCBBQ1RJVkVfREVGQVVMVF9ORVRXT1JLX1BBVFRFUk4gPSAvXlxccypBY3RpdmUgZGVmYXVsdCBuZXR3b3JrOlxccyooPzxuZXR3b3JrSWQ+XFxTKykvbTtcbmNvbnN0IEJPT1RfQU5JTUFUSU9OX1NUT1BQRURfU1RBVEUgPSAnc3RvcHBlZCc7XG5jb25zdCBGSVJTVF9WQUxJREFURURfUEFUVEVSTiA9IC9cXGJmaXJzdFZhbGlkYXRlZFxccysoPzx0aW1lc3RhbXA+XFxkKykvO1xuY29uc3QgTkVUV09SS19BR0VOVF9JTkZPX01BUktFUiA9ICdOZXR3b3JrQWdlbnRJbmZveyc7XG5jb25zdCBORVRXT1JLX0lEX1BBVFRFUk4gPSAvXlxcZCskLztcbmNvbnN0IFBBQ0tBR0VfTElORV9QUkVGSVggPSAncGFja2FnZTonO1xuY29uc3QgVkFMSURBVEVEX1NDT1JFX1BPTElDWSA9ICdJU19WQUxJREFURUQnO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLmRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZJQ0VfSURMRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwXzAwMDtcblxuLyoqXG4gKiBEZWZhdWx0IGZvciB7QGxpbmsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucy5uZXR3b3JrUmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICpcbiAqIFRoZSBidWRnZXQgc3RhcnRzICphZnRlciogYHN5cy5ib290X2NvbXBsZXRlZGAsIHdoZXJlIHRoZSBtZWFzdXJlZCB3YWl0IG9uIGFcbiAqIGNvbGQgV0hQWCBlbXVsYXRvciBpcyB+MzBzICh2YWxpZGF0aW9uIGF0IH44MHMgZnJvbSBib290LCBhZ2FpbnN0IGEgYm9vdCBmbGFnXG4gKiBhdCB+NTZzKS4gVGhlIGRlZmF1bHQgaXMgaGVhZHJvb20gZm9yIHRoZSBzdGFydmVkL0NJIHJlZ2ltZSB0aGUgb3RoZXIgQW5kcm9pZFxuICogYnVkZ2V0cyBhcmUgYWxyZWFkeSBzaXplZCBmb3IsIG5vdCB0aGUgZXhwZWN0ZWQgY29zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVUV09SS19SRUFEWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDEyMF8wMDA7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNoZWNrRGV2aWNlSWRsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tEZXZpY2VJZGxlUGFyYW1zIHtcbiAgLyoqXG4gIFJhdyBzdGRvdXQgb2YgYGFkYiBzaGVsbCBnZXRwcm9wIGluaXQuc3ZjLmJvb3RhbmltYC5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3RBbmltYXRpb25Qcm9wZXJ0eTogc3RyaW5nO1xuXG4gIC8qKlxuICBSYXcgc3Rkb3V0IG9mIGBhZGIgc2hlbGwgY21kIHBhY2thZ2UgbGlzdCBwYWNrYWdlc2AuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTGlzdE91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjaGVja05ldHdvcmtWYWxpZGF0ZWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrTmV0d29ya1ZhbGlkYXRlZFBhcmFtcyB7XG4gIC8qKlxuICBSYXcgc3Rkb3V0IG9mIGBhZGIgc2hlbGwgZHVtcHN5cyBjb25uZWN0aXZpdHlgLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGl2aXR5T3V0cHV0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgYm9vdGVkIGVtdWxhdG9yIGlzIGlkbGUgZW5vdWdoIHRvIHN0YXJ0IGFuIEFwcGl1bSBzZXNzaW9uLFxuICogZnJvbSB0aGUgcmF3IG91dHB1dCBvZiB0aGUgdHdvIHByb2JlIGNvbW1hbmRzLlxuICpcbiAqIFRoZSBndWVzdCBpcyBjb25zaWRlcmVkIGlkbGUgb25jZSB0aGUgYm9vdCBhbmltYXRpb24gaGFzIHN0b3BwZWQgKiphbmQqKiB0aGVcbiAqIHBhY2thZ2UgbWFuYWdlciBpcyBzZXJ2aW5nIChpdCBsaXN0cyBhdCBsZWFzdCBvbmUgcGFja2FnZSkuIEJvdGggYXJlIGJpbmFyeSxcbiAqIGxhdGVyLXRoYW4tYHN5cy5ib290X2NvbXBsZXRlZGAgc2lnbmFscywgc28gdGhpcyByZXR1cm5zIGB0cnVlYCB3ZWxsIGFmdGVyIHRoZVxuICogcHJlbWF0dXJlIGJvb3QtY29tcGxldGVkIGZsYWcgYnV0IHdpdGhvdXQgYW55IGxhdGVuY3kgdGhyZXNob2xkcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbXBsZWQgcHJvYmUgb3V0cHV0cy5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBndWVzdCBpcyBpZGxlIGVub3VnaCB0byBwcm9jZWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEZXZpY2VJZGxlKHBhcmFtczogQ2hlY2tEZXZpY2VJZGxlUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IGlzQm9vdEFuaW1hdGlvblN0b3BwZWQgPSBwYXJhbXMuYm9vdEFuaW1hdGlvblByb3BlcnR5LnRyaW0oKSA9PT0gQk9PVF9BTklNQVRJT05fU1RPUFBFRF9TVEFURTtcbiAgY29uc3QgaXNQYWNrYWdlTWFuYWdlclJlYWR5ID0gcGFyYW1zLnBhY2thZ2VMaXN0T3V0cHV0XG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5zb21lKChsaW5lKSA9PiBsaW5lLnRyaW1TdGFydCgpLnN0YXJ0c1dpdGgoUEFDS0FHRV9MSU5FX1BSRUZJWCkpO1xuICByZXR1cm4gaXNCb290QW5pbWF0aW9uU3RvcHBlZCAmJiBpc1BhY2thZ2VNYW5hZ2VyUmVhZHk7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgYm9vdGVkIGVtdWxhdG9yIGhhcyBhIHdvcmtpbmcgbmV0d29yaywgZnJvbSB0aGUgcmF3IG91dHB1dFxuICogb2YgYGFkYiBzaGVsbCBkdW1wc3lzIGNvbm5lY3Rpdml0eWAuXG4gKlxuICogUmVhZHkgbWVhbnMgdGhlIGR1bXAgbmFtZXMgYW4gKiphY3RpdmUgZGVmYXVsdCBuZXR3b3JrKiogKmFuZCogdGhhdCBuZXR3b3JrJ3NcbiAqIG93biBhZ2VudCBpbmZvIHJlcG9ydHMgdmFsaWRhdGlvbiBcdTIwMTQgZWl0aGVyIGFuIGBJU19WQUxJREFURURgIHNjb3JlIHBvbGljeSBvciBhXG4gKiBub24temVybyBgZmlyc3RWYWxpZGF0ZWRgIHRpbWVzdGFtcC4gQm90aCBhcmUgcmVxdWlyZWQ6IGEgZGVmYXVsdCBuZXR3b3JrXG4gKiBleGlzdHMgZm9yIHNlY29uZHMgYmVmb3JlIGl0IHZhbGlkYXRlcywgYW5kIGR1cmluZyB0aGF0IHdpbmRvdyBpdCBjYXJyaWVzIG5vXG4gKiB1c2FibGUgcm91dGUuXG4gKlxuICogV2h5IHRoaXMgbWF0dGVycyBhdCBhbGw6IHRoZSB0d28ge0BsaW5rIGNoZWNrRGV2aWNlSWRsZX0gc2lnbmFscyBhcmUgc2F0aXNmaWVkXG4gKiB3ZWxsIGJlZm9yZSB0aGlzIG9uZS4gVmFsaWRhdGlvbiBsYW5kcyB+NzAtODBzIGludG8gZ3Vlc3QgdXB0aW1lIFx1MjAxNCBtZWFzdXJlZCBvblxuICogYG9ic2lkaWFuX3Rlc3RgLCBgY3JlYXRlZCA3MDYzNSBmaXJzdFZhbGlkYXRlZCA3MjY4MWAsIGFuZCBvbiBhIGNvbGQgYm9vdCBvZlxuICogYG9ic2lkaWFuX3NjcmVlbnNob3RzYCwgYGNyZWF0ZWQgNjY4NzAgZmlyc3RWYWxpZGF0ZWQgNzk4NzBgLCB3aGljaCBhdCA4NXNcbiAqIHVwdGltZSBzdGlsbCBzY29yZWQgYEVWRVJfRVZBTFVBVEVEJklTX1VOTUVURVJFRGAgd2l0aCBubyBgSVNfVkFMSURBVEVEYCBhbmRcbiAqIG5vIGBmaXJzdFZhbGlkYXRlZGAgZmllbGQgYXQgYWxsLiBBZ2FpbnN0IGEgYm9vdCBmbGFnIGF0IH41NnMgdGhhdCBsZWF2ZXMgYVxuICogZ2FwIG9mIHRlbnMgb2Ygc2Vjb25kcyBvbiBhIGZhc3QgaG9zdCwgYW5kIG1vcmUgb24gYSBzbG93IG9uZS4gQSBzdWl0ZSBzdGFydGVkXG4gKiBpbiB0aGF0IGdhcCBkb2VzIG5vdCBtZXJlbHkgcnVuIHNsb3dseTogYSB0ZXN0IHRoYXQgcmVhY2hlcyB0aGUgbmV0d29yayBydW5zXG4gKiB0byBjb21wbGV0aW9uIGFnYWluc3QgYSBzaWxlbnRseSBlbXB0eSByZXN1bHQsIHdoaWNoIG5vIGFzc2VydGlvbiBpbnNpZGUgdGhlXG4gKiBzdWl0ZSBjYW4gdGVsbCBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IGZlZWQuXG4gKlxuICogYGR1bXBzeXMgY29ubmVjdGl2aXR5YCBpcyB0aGUgaG9uZXN0IHNvdXJjZSwgYW5kIHRoZSB0aHJlZSBwcm9iZXMgdGhhdCBsb29rXG4gKiBsaWtlIGJldHRlciBvbmVzIGFyZSBhbGwgd3JvbmcgXHUyMDE0IGVhY2ggb2YgdGhlbSBtaXNsZWQgYSBmdWxsIGRheSBvZlxuICogaW52ZXN0aWdhdGlvbiBiZWZvcmUgdGhpcyB3YXMgdW5kZXJzdG9vZDpcbiAqXG4gKiAtIGBpcCByb3V0ZWAgc2hvd3MgKipubyoqIGRlZmF1bHQgcm91dGUgb24gYSBoZWFsdGh5IGRldmljZTogQW5kcm9pZCB1c2VzXG4gKiAgIHBlci1uZXR3b3JrIHBvbGljeSByb3V0aW5nLCBhbmQgdGhlIHJvdXRlIGxpdmVzIGluIHRhYmxlIDEwMTUsIG5vdCBgbWFpbmAuXG4gKiAtIGBwaW5nYCBmYWlscyBvbiBhIGhlYWx0aHkgZGV2aWNlOiBRRU1VIHVzZXItbW9kZSBOQVQgZG9lcyBub3QgZm9yd2FyZCBJQ01QXG4gKiAgIG9uIFdpbmRvd3MgaG9zdHMuXG4gKiAtIGBnZXRwcm9wIG5ldC5kbnMxYCBpcyBlbXB0eSBvbiBldmVyeSBtb2Rlcm4gQW5kcm9pZDogRE5TIHdlbnQgcGVyLW5ldHdvcmtcbiAqICAgaW4gOC85LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2FtcGxlZCBwcm9iZSBvdXRwdXQuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZ3Vlc3QgaGFzIGEgdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTmV0d29ya1ZhbGlkYXRlZChwYXJhbXM6IENoZWNrTmV0d29ya1ZhbGlkYXRlZFBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCBhY3RpdmVOZXR3b3JrSWQgPSBBQ1RJVkVfREVGQVVMVF9ORVRXT1JLX1BBVFRFUk4uZXhlYyhwYXJhbXMuY29ubmVjdGl2aXR5T3V0cHV0KT8uZ3JvdXBzPy5bJ25ldHdvcmtJZCddID8/ICcnO1xuICBpZiAoIU5FVFdPUktfSURfUEFUVEVSTi50ZXN0KGFjdGl2ZU5ldHdvcmtJZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhZ2VudEluZm8gPSBleHRyYWN0TmV0d29ya0FnZW50SW5mbyhwYXJhbXMuY29ubmVjdGl2aXR5T3V0cHV0LCBhY3RpdmVOZXR3b3JrSWQpO1xuICBpZiAoYWdlbnRJbmZvLmluY2x1ZGVzKFZBTElEQVRFRF9TQ09SRV9QT0xJQ1kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBmaXJzdFZhbGlkYXRlZFRpbWVzdGFtcCA9IE51bWJlcihGSVJTVF9WQUxJREFURURfUEFUVEVSTi5leGVjKGFnZW50SW5mbyk/Lmdyb3Vwcz8uWyd0aW1lc3RhbXAnXSA/PyAnMCcpO1xuICByZXR1cm4gZmlyc3RWYWxpZGF0ZWRUaW1lc3RhbXAgPiAwO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwb3N0LWJvb3QgZGV2aWNlLWlkbGUgd2FpdCB0aW1lb3V0LCBhcHBseWluZyB0aGUgZGVmYXVsdCB3aGVuXG4gKiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBib3VuZHMgaG93IGxvbmcgdGhlIGZhY3Rvcnkgd2FpdHMgZm9yIGEgZnJlc2hseS1zdGFydGVkIGVtdWxhdG9yIHRvXG4gKiBiZWNvbWUgaWRsZSAoc2VlIHtAbGluayBjaGVja0RldmljZUlkbGV9KSBiZWZvcmUgZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uLiBBXG4gKiB2YWx1ZSBvZiBgMGAgc2tpcHMgdGhlIHdhaXQgZW50aXJlbHkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgQW5kcm9pZCBBcHBpdW0gdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgb3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9wdGlvbnMuZGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX0RFVklDRV9JRExFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBuZXR3b3JrLXJlYWR5IHdhaXQgdGltZW91dCwgYXBwbHlpbmcgdGhlIGRlZmF1bHQgd2hlbiB0aGUgb3B0aW9uXG4gKiBpcyBvbWl0dGVkLlxuICpcbiAqIFRoaXMgYm91bmRzIGhvdyBsb25nIHRoZSBmYWN0b3J5IHdhaXRzLCBhZnRlciB0aGUgaWRsZSBnYXRlLCBmb3IgdGhlIGd1ZXN0IHRvXG4gKiByZXBvcnQgYSB2YWxpZGF0ZWQgZGVmYXVsdCBuZXR3b3JrIChzZWUge0BsaW5rIGNoZWNrTmV0d29ya1ZhbGlkYXRlZH0pIGJlZm9yZVxuICogZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uLiBBIHZhbHVlIG9mIGAwYCBza2lwcyB0aGUgd2FpdCBlbnRpcmVseS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBBbmRyb2lkIEFwcGl1bSB0cmFuc3BvcnQgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVOZXR3b3JrUmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHMoXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLm5ldHdvcmtSZWFkeVRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX05FVFdPUktfUkVBRFlfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBOZXR3b3JrQWdlbnRJbmZve1x1MjAyNn1gIGVudHJ5IGZvciBvbmUgbmV0d29yayBpZCBmcm9tIGFcbiAqIGNvbm5lY3Rpdml0eSBkdW1wLlxuICpcbiAqICoqQm91bmRlZCB0byB0aGUgZW50cnkncyBvd24gbGluZSwgYW5kIHRoYXQgYm91bmQgaXMgbG9hZC1iZWFyaW5nLioqIEEgcmVhbFxuICogZHVtcCBsaXN0cyB0aGUgYWN0aXZlIG5ldHdvcmsncyBhZ2VudCB1bmRlciBgQ3VycmVudCBOZXR3b3JrczpgIGFuZCB0aGVuLCBtdWNoXG4gKiBmdXJ0aGVyIGRvd24sIGEgYE5ldHdvcmtPZmZlcmAgcGVyIHByb3ZpZGVyIFx1MjAxNCBhbmQgdGhvc2Ugb2ZmZXJzIGNhcnJ5XG4gKiBgSVNfVkFMSURBVEVEYCBpbiB0aGVpciBzY29yZSBwb2xpY2llcyB3aGF0ZXZlciB0aGUgbGl2ZSBuZXR3b3JrIGlzIGRvaW5nLiBBXG4gKiBkdW1wIHNhbXBsZWQgaGVyZSB3aXRoIGFuIHVudmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayBoZWxkIHNldmVuIHN1Y2ggb2ZmZXJzLFxuICogc28gcmVhZGluZyBwYXN0IHRoZSBhZ2VudCdzIG93biBsaW5lIHJlcG9ydHMgKmV2ZXJ5KiBkdW1wIGFzIHZhbGlkYXRlZC4gT25lXG4gKiBlbnRyeSBpcyBvbmUgbGluZSBpbiB0aGUgb2JzZXJ2ZWQgb3V0cHV0OyBhbiBlbnRyeSB0aGF0IGV2ZXIgd3JhcHMgcmVhZHMgYXNcbiAqIG5vdC1yZWFkeSwgd2hpY2ggaXMgdGhlIHNhZmUgZGlyZWN0aW9uIHRvIGJlIHdyb25nIGluLlxuICpcbiAqIEBwYXJhbSBjb25uZWN0aXZpdHlPdXRwdXQgLSBSYXcgc3Rkb3V0IG9mIGBhZGIgc2hlbGwgZHVtcHN5cyBjb25uZWN0aXZpdHlgLlxuICogQHBhcmFtIG5ldHdvcmtJZCAtIFRoZSBuZXR3b3JrIGlkIHdob3NlIGVudHJ5IHRvIGV4dHJhY3QuXG4gKiBAcmV0dXJucyBUaGUgZW50cnkncyBsaW5lLCBvciBhbiBlbXB0eSBzdHJpbmcgd2hlbiB0aGUgZHVtcCBoYXMgbm8gc3VjaCBlbnRyeS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5ldHdvcmtBZ2VudEluZm8oY29ubmVjdGl2aXR5T3V0cHV0OiBzdHJpbmcsIG5ldHdvcmtJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RhcnRJbmRleCA9IGNvbm5lY3Rpdml0eU91dHB1dC5pbmRleE9mKGAke05FVFdPUktfQUdFTlRfSU5GT19NQVJLRVJ9bmV0d29ya3ske25ldHdvcmtJZH19YCk7XG4gIGlmIChzdGFydEluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGxpbmVFbmRJbmRleCA9IGNvbm5lY3Rpdml0eU91dHB1dC5pbmRleE9mKCdcXG4nLCBzdGFydEluZGV4KTtcbiAgcmV0dXJuIGxpbmVFbmRJbmRleCA9PT0gLTFcbiAgICA/IGNvbm5lY3Rpdml0eU91dHB1dC5zbGljZShzdGFydEluZGV4KVxuICAgIDogY29ubmVjdGl2aXR5T3V0cHV0LnNsaWNlKHN0YXJ0SW5kZXgsIGxpbmVFbmRJbmRleCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQSxNQUFNLGlDQUFpQztBQUN2QyxNQUFNLCtCQUErQjtBQUNyQyxNQUFNLDBCQUEwQjtBQUNoQyxNQUFNLDRCQUE0QjtBQUNsQyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHlCQUF5QjtBQUt4QixNQUFNLDhDQUE4QztBQVVwRCxNQUFNLGdEQUFnRDtBQXVDdEQsU0FBUyxnQkFBZ0IsUUFBd0M7QUFDdEUsUUFBTSx5QkFBeUIsT0FBTyxzQkFBc0IsS0FBSyxNQUFNO0FBQ3ZFLFFBQU0sd0JBQXdCLE9BQU8sa0JBQ2xDLE1BQU0sSUFBSSxFQUNWLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFLFdBQVcsbUJBQW1CLENBQUM7QUFDbEUsU0FBTywwQkFBMEI7QUFDbkM7QUFxQ08sU0FBUyxzQkFBc0IsUUFBOEM7QUFDbEYsUUFBTSxrQkFBa0IsK0JBQStCLEtBQUssT0FBTyxrQkFBa0IsR0FBRyxTQUFTLFdBQVcsS0FBSztBQUNqSCxNQUFJLENBQUMsbUJBQW1CLEtBQUssZUFBZSxHQUFHO0FBQzdDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxZQUFZLHdCQUF3QixPQUFPLG9CQUFvQixlQUFlO0FBQ3BGLE1BQUksVUFBVSxTQUFTLHNCQUFzQixHQUFHO0FBQzlDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSwwQkFBMEIsT0FBTyx3QkFBd0IsS0FBSyxTQUFTLEdBQUcsU0FBUyxXQUFXLEtBQUssR0FBRztBQUM1RyxTQUFPLDBCQUEwQjtBQUNuQztBQWFPLFNBQVMsdUNBQ2QsU0FDUTtBQUNSLFNBQU8sUUFBUSxtQ0FBbUM7QUFDcEQ7QUFhTyxTQUFTLHlDQUNkLFNBQ1E7QUFDUixTQUFPLFFBQVEscUNBQXFDO0FBQ3REO0FBbUJBLFNBQVMsd0JBQXdCLG9CQUE0QixXQUEyQjtBQUN0RixRQUFNLGFBQWEsbUJBQW1CLFFBQVEsR0FBRyx5QkFBeUIsV0FBVyxTQUFTLEdBQUc7QUFDakcsTUFBSSxlQUFlLElBQUk7QUFDckIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGVBQWUsbUJBQW1CLFFBQVEsTUFBTSxVQUFVO0FBQ2hFLFNBQU8saUJBQWlCLEtBQ3BCLG1CQUFtQixNQUFNLFVBQVUsSUFDbkMsbUJBQW1CLE1BQU0sWUFBWSxZQUFZO0FBQ3ZEOyIsCiAgIm5hbWVzIjogW10KfQo=
78
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RldmljZS1yZWFkaW5lc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIGhlbHBlcnMgZm9yIGRlY2lkaW5nIHdoZW4gYSBmcmVzaGx5LWJvb3RlZCBBbmRyb2lkIGVtdWxhdG9yIGlzIHJlYWR5XG4gKiBlbm91Z2ggdG8gZXN0YWJsaXNoIGFuIEFwcGl1bSBzZXNzaW9uLCBwbHVzIHJlc29sdmluZyB0aGUgdHdvIHJlYWRpbmVzcy13YWl0XG4gKiB0aW1lb3V0cyBmcm9tIHRoZSB0cmFuc3BvcnQgb3B0aW9ucy4gS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5XG4gKiBgdHJhbnNwb3J0LWZhY3RvcnlgIHNvIHRoZSBwYXJzaW5nIGFuZCBkZWZhdWx0IHJlc29sdXRpb24gc3RheSB1bml0LXRlc3RhYmxlXG4gKiAodGhlIGZhY3RvcnkgaXRzZWxmIG5lZWRzIGEgcmVhbCBlbXVsYXRvciBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBSZWFkaW5lc3MgaXMgdHdvIGluZGVwZW5kZW50IHF1ZXN0aW9ucywgd2FpdGVkIG9uIGluIHR3byBwaGFzZXM6XG4gKlxuICogMS4gKipJcyB0aGUgZ3Vlc3QgaWRsZT8qKiBgc3lzLmJvb3RfY29tcGxldGVkYCBmaXJlcyAqYmVmb3JlKiBpdCBpczogcGFja2FnZVxuICogICAgb3B0aW1pemF0aW9uIChgZGV4Mm9hdGApIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZyBhZnRlciBpdCwgc28gYVxuICogICAgc2Vzc2lvbiBlc3RhYmxpc2hlZCB0aGUgaW5zdGFudCBpdCBmaXJlcyBtYWtlcyBldmVyeSBvbmUgb2YgVWlBdXRvbWF0b3IyJ3NcbiAqICAgIHNlcmlhbGl6ZWQgYGFkYmAgcm91bmQtdHJpcHMgY29udGVuZCB3aXRoIHRoYXQgd29yayBhbmQgaW5mbGF0ZSB+M3guIEdhdGluZ1xuICogICAgdGhlIHNlc3Npb24gb24gYSBsYXRlciwgcXVpZXRlciBzaWduYWwgKHRoZSBib290IGFuaW1hdGlvbiBoYXMgc3RvcHBlZCBhbmRcbiAqICAgIHRoZSBwYWNrYWdlIG1hbmFnZXIgaXMgc2VydmluZykgbGV0cyBpdCBydW4gYWdhaW5zdCBhbiBpZGxlIGd1ZXN0IGluc3RlYWQuXG4gKiAyLiAqKkRvZXMgdGhlIGd1ZXN0IGhhdmUgYSBuZXR3b3JrPyoqIEJvdGggaWRsZSBzaWduYWxzIGFyZSB0cnVlIHdlbGwgKmJlZm9yZSpcbiAqICAgIHRoZSBkZWZhdWx0IG5ldHdvcmsgaXMgY3JlYXRlZCBhbmQgdmFsaWRhdGVkIFx1MjAxNCB0aGF0IGxhbmRzIH44MHMgaW50byBndWVzdFxuICogICAgdXB0aW1lLCB0ZW5zIG9mIHNlY29uZHMgYWZ0ZXIgdGhlIGlkbGUgZ2F0ZSBjbGVhcnMgXHUyMDE0IGFuZCBuZWl0aGVyIHNheXNcbiAqICAgIGFueXRoaW5nIGFib3V0IGNvbm5lY3Rpdml0eSwgc28gYW4gaWRsZS1vbmx5IGdhdGUgaGFuZHMgdGhlIHN1aXRlIGEgZGV2aWNlXG4gKiAgICB3aXRoIG5vIHJvdXRlLiBTZWUge0BsaW5rIGNoZWNrTmV0d29ya1ZhbGlkYXRlZH0gZm9yIHRoZSBtZWFzdXJlbWVudCBhbmRcbiAqICAgIGZvciB3aHkgdGhlIHRocmVlIG9idmlvdXMgY29ubmVjdGl2aXR5IHByb2JlcyBhcmUgYWxsIHdyb25nIGhlcmUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5janMnO1xuXG5jb25zdCBBQ1RJVkVfREVGQVVMVF9ORVRXT1JLX1BBVFRFUk4gPSAvXlxccypBY3RpdmUgZGVmYXVsdCBuZXR3b3JrOlxccyooPzxuZXR3b3JrSWQ+XFxTKykvbTtcbmNvbnN0IEJPT1RfQU5JTUFUSU9OX1NUT1BQRURfU1RBVEUgPSAnc3RvcHBlZCc7XG5jb25zdCBGSVJTVF9WQUxJREFURURfUEFUVEVSTiA9IC9cXGJmaXJzdFZhbGlkYXRlZFxccysoPzx0aW1lc3RhbXA+XFxkKykvO1xuY29uc3QgTkVUV09SS19BR0VOVF9JTkZPX01BUktFUiA9ICdOZXR3b3JrQWdlbnRJbmZveyc7XG5jb25zdCBORVRXT1JLX0lEX1BBVFRFUk4gPSAvXlxcZCskLztcbmNvbnN0IFBBQ0tBR0VfTElORV9QUkVGSVggPSAncGFja2FnZTonO1xuY29uc3QgVkFMSURBVEVEX1NDT1JFX1BPTElDWSA9ICdJU19WQUxJREFURUQnO1xuXG4vKipcbiAqIERlZmF1bHQgZm9yIHtAbGluayBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zLmRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVZJQ0VfSURMRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwXzAwMDtcblxuLyoqXG4gKiBEZWZhdWx0IGZvciB7QGxpbmsgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucy5uZXR3b3JrUmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHN9LlxuICpcbiAqIFRoZSBidWRnZXQgc3RhcnRzICphZnRlciogYHN5cy5ib290X2NvbXBsZXRlZGAsIHdoZXJlIHRoZSBtZWFzdXJlZCB3YWl0IG9uIGFcbiAqIGNvbGQgV0hQWCBlbXVsYXRvciBpcyB+MzBzICh2YWxpZGF0aW9uIGF0IH44MHMgZnJvbSBib290LCBhZ2FpbnN0IGEgYm9vdCBmbGFnXG4gKiBhdCB+NTZzKS4gVGhlIGRlZmF1bHQgaXMgaGVhZHJvb20gZm9yIHRoZSBzdGFydmVkL0NJIHJlZ2ltZSB0aGUgb3RoZXIgQW5kcm9pZFxuICogYnVkZ2V0cyBhcmUgYWxyZWFkeSBzaXplZCBmb3IsIG5vdCB0aGUgZXhwZWN0ZWQgY29zdC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVUV09SS19SRUFEWV9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDEyMF8wMDA7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNoZWNrRGV2aWNlSWRsZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tEZXZpY2VJZGxlUGFyYW1zIHtcbiAgLyoqXG4gIFJhdyBzdGRvdXQgb2YgYGFkYiBzaGVsbCBnZXRwcm9wIGluaXQuc3ZjLmJvb3RhbmltYC5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3RBbmltYXRpb25Qcm9wZXJ0eTogc3RyaW5nO1xuXG4gIC8qKlxuICBSYXcgc3Rkb3V0IG9mIGBhZGIgc2hlbGwgY21kIHBhY2thZ2UgbGlzdCBwYWNrYWdlc2AuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTGlzdE91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjaGVja05ldHdvcmtWYWxpZGF0ZWR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrTmV0d29ya1ZhbGlkYXRlZFBhcmFtcyB7XG4gIC8qKlxuICBSYXcgc3Rkb3V0IG9mIGBhZGIgc2hlbGwgZHVtcHN5cyBjb25uZWN0aXZpdHlgLlxuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGl2aXR5T3V0cHV0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgYm9vdGVkIGVtdWxhdG9yIGlzIGlkbGUgZW5vdWdoIHRvIHN0YXJ0IGFuIEFwcGl1bSBzZXNzaW9uLFxuICogZnJvbSB0aGUgcmF3IG91dHB1dCBvZiB0aGUgdHdvIHByb2JlIGNvbW1hbmRzLlxuICpcbiAqIFRoZSBndWVzdCBpcyBjb25zaWRlcmVkIGlkbGUgb25jZSB0aGUgYm9vdCBhbmltYXRpb24gaGFzIHN0b3BwZWQgKiphbmQqKiB0aGVcbiAqIHBhY2thZ2UgbWFuYWdlciBpcyBzZXJ2aW5nIChpdCBsaXN0cyBhdCBsZWFzdCBvbmUgcGFja2FnZSkuIEJvdGggYXJlIGJpbmFyeSxcbiAqIGxhdGVyLXRoYW4tYHN5cy5ib290X2NvbXBsZXRlZGAgc2lnbmFscywgc28gdGhpcyByZXR1cm5zIGB0cnVlYCB3ZWxsIGFmdGVyIHRoZVxuICogcHJlbWF0dXJlIGJvb3QtY29tcGxldGVkIGZsYWcgYnV0IHdpdGhvdXQgYW55IGxhdGVuY3kgdGhyZXNob2xkcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbXBsZWQgcHJvYmUgb3V0cHV0cy5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBndWVzdCBpcyBpZGxlIGVub3VnaCB0byBwcm9jZWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEZXZpY2VJZGxlKHBhcmFtczogQ2hlY2tEZXZpY2VJZGxlUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IGlzQm9vdEFuaW1hdGlvblN0b3BwZWQgPSBwYXJhbXMuYm9vdEFuaW1hdGlvblByb3BlcnR5LnRyaW0oKSA9PT0gQk9PVF9BTklNQVRJT05fU1RPUFBFRF9TVEFURTtcbiAgY29uc3QgaXNQYWNrYWdlTWFuYWdlclJlYWR5ID0gcGFyYW1zLnBhY2thZ2VMaXN0T3V0cHV0XG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5zb21lKChsaW5lKSA9PiBsaW5lLnRyaW1TdGFydCgpLnN0YXJ0c1dpdGgoUEFDS0FHRV9MSU5FX1BSRUZJWCkpO1xuICByZXR1cm4gaXNCb290QW5pbWF0aW9uU3RvcHBlZCAmJiBpc1BhY2thZ2VNYW5hZ2VyUmVhZHk7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgYm9vdGVkIGVtdWxhdG9yIGhhcyBhIHdvcmtpbmcgbmV0d29yaywgZnJvbSB0aGUgcmF3IG91dHB1dFxuICogb2YgYGFkYiBzaGVsbCBkdW1wc3lzIGNvbm5lY3Rpdml0eWAuXG4gKlxuICogUmVhZHkgbWVhbnMgdGhlIGR1bXAgbmFtZXMgYW4gKiphY3RpdmUgZGVmYXVsdCBuZXR3b3JrKiogKmFuZCogdGhhdCBuZXR3b3JrJ3NcbiAqIG93biBhZ2VudCBpbmZvIHJlcG9ydHMgdmFsaWRhdGlvbiBcdTIwMTQgZWl0aGVyIGFuIGBJU19WQUxJREFURURgIHNjb3JlIHBvbGljeSBvciBhXG4gKiBub24temVybyBgZmlyc3RWYWxpZGF0ZWRgIHRpbWVzdGFtcC4gQm90aCBhcmUgcmVxdWlyZWQ6IGEgZGVmYXVsdCBuZXR3b3JrXG4gKiBleGlzdHMgZm9yIHNlY29uZHMgYmVmb3JlIGl0IHZhbGlkYXRlcywgYW5kIGR1cmluZyB0aGF0IHdpbmRvdyBpdCBjYXJyaWVzIG5vXG4gKiB1c2FibGUgcm91dGUuXG4gKlxuICogV2h5IHRoaXMgbWF0dGVycyBhdCBhbGw6IHRoZSB0d28ge0BsaW5rIGNoZWNrRGV2aWNlSWRsZX0gc2lnbmFscyBhcmUgc2F0aXNmaWVkXG4gKiB3ZWxsIGJlZm9yZSB0aGlzIG9uZS4gVmFsaWRhdGlvbiBsYW5kcyB+NzAtODBzIGludG8gZ3Vlc3QgdXB0aW1lIFx1MjAxNCBtZWFzdXJlZCBvblxuICogYG9ic2lkaWFuX3Rlc3RgLCBgY3JlYXRlZCA3MDYzNSBmaXJzdFZhbGlkYXRlZCA3MjY4MWAsIGFuZCBvbiBhIGNvbGQgYm9vdCBvZlxuICogYG9ic2lkaWFuX3NjcmVlbnNob3RzYCwgYGNyZWF0ZWQgNjY4NzAgZmlyc3RWYWxpZGF0ZWQgNzk4NzBgLCB3aGljaCBhdCA4NXNcbiAqIHVwdGltZSBzdGlsbCBzY29yZWQgYEVWRVJfRVZBTFVBVEVEJklTX1VOTUVURVJFRGAgd2l0aCBubyBgSVNfVkFMSURBVEVEYCBhbmRcbiAqIG5vIGBmaXJzdFZhbGlkYXRlZGAgZmllbGQgYXQgYWxsLiBBZ2FpbnN0IGEgYm9vdCBmbGFnIGF0IH41NnMgdGhhdCBsZWF2ZXMgYVxuICogZ2FwIG9mIHRlbnMgb2Ygc2Vjb25kcyBvbiBhIGZhc3QgaG9zdCwgYW5kIG1vcmUgb24gYSBzbG93IG9uZS4gQSBzdWl0ZSBzdGFydGVkXG4gKiBpbiB0aGF0IGdhcCBkb2VzIG5vdCBtZXJlbHkgcnVuIHNsb3dseTogYSB0ZXN0IHRoYXQgcmVhY2hlcyB0aGUgbmV0d29yayBydW5zXG4gKiB0byBjb21wbGV0aW9uIGFnYWluc3QgYSBzaWxlbnRseSBlbXB0eSByZXN1bHQsIHdoaWNoIG5vIGFzc2VydGlvbiBpbnNpZGUgdGhlXG4gKiBzdWl0ZSBjYW4gdGVsbCBhcGFydCBmcm9tIGEgZ2VudWluZWx5IGVtcHR5IGZlZWQuXG4gKlxuICogYGR1bXBzeXMgY29ubmVjdGl2aXR5YCBpcyB0aGUgaG9uZXN0IHNvdXJjZSwgYW5kIHRoZSB0aHJlZSBwcm9iZXMgdGhhdCBsb29rXG4gKiBsaWtlIGJldHRlciBvbmVzIGFyZSBhbGwgd3JvbmcgXHUyMDE0IGVhY2ggb2YgdGhlbSBtaXNsZWQgYSBmdWxsIGRheSBvZlxuICogaW52ZXN0aWdhdGlvbiBiZWZvcmUgdGhpcyB3YXMgdW5kZXJzdG9vZDpcbiAqXG4gKiAtIGBpcCByb3V0ZWAgc2hvd3MgKipubyoqIGRlZmF1bHQgcm91dGUgb24gYSBoZWFsdGh5IGRldmljZTogQW5kcm9pZCB1c2VzXG4gKiAgIHBlci1uZXR3b3JrIHBvbGljeSByb3V0aW5nLCBhbmQgdGhlIHJvdXRlIGxpdmVzIGluIHRhYmxlIDEwMTUsIG5vdCBgbWFpbmAuXG4gKiAtIGBwaW5nYCBmYWlscyBvbiBhIGhlYWx0aHkgZGV2aWNlOiBRRU1VIHVzZXItbW9kZSBOQVQgZG9lcyBub3QgZm9yd2FyZCBJQ01QXG4gKiAgIG9uIFdpbmRvd3MgaG9zdHMuXG4gKiAtIGBnZXRwcm9wIG5ldC5kbnMxYCBpcyBlbXB0eSBvbiBldmVyeSBtb2Rlcm4gQW5kcm9pZDogRE5TIHdlbnQgcGVyLW5ldHdvcmtcbiAqICAgaW4gOC85LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2FtcGxlZCBwcm9iZSBvdXRwdXQuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgZ3Vlc3QgaGFzIGEgdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTmV0d29ya1ZhbGlkYXRlZChwYXJhbXM6IENoZWNrTmV0d29ya1ZhbGlkYXRlZFBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCBhY3RpdmVOZXR3b3JrSWQgPSBBQ1RJVkVfREVGQVVMVF9ORVRXT1JLX1BBVFRFUk4uZXhlYyhwYXJhbXMuY29ubmVjdGl2aXR5T3V0cHV0KT8uZ3JvdXBzPy5bJ25ldHdvcmtJZCddID8/ICcnO1xuICBpZiAoIU5FVFdPUktfSURfUEFUVEVSTi50ZXN0KGFjdGl2ZU5ldHdvcmtJZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhZ2VudEluZm8gPSBleHRyYWN0TmV0d29ya0FnZW50SW5mbyhwYXJhbXMuY29ubmVjdGl2aXR5T3V0cHV0LCBhY3RpdmVOZXR3b3JrSWQpO1xuICBpZiAoYWdlbnRJbmZvLmluY2x1ZGVzKFZBTElEQVRFRF9TQ09SRV9QT0xJQ1kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBmaXJzdFZhbGlkYXRlZFRpbWVzdGFtcCA9IE51bWJlcihGSVJTVF9WQUxJREFURURfUEFUVEVSTi5leGVjKGFnZW50SW5mbyk/Lmdyb3Vwcz8uWyd0aW1lc3RhbXAnXSA/PyAnMCcpO1xuICByZXR1cm4gZmlyc3RWYWxpZGF0ZWRUaW1lc3RhbXAgPiAwO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwb3N0LWJvb3QgZGV2aWNlLWlkbGUgd2FpdCB0aW1lb3V0LCBhcHBseWluZyB0aGUgZGVmYXVsdCB3aGVuXG4gKiB0aGUgb3B0aW9uIGlzIG9taXR0ZWQuXG4gKlxuICogVGhpcyBib3VuZHMgaG93IGxvbmcgdGhlIGZhY3Rvcnkgd2FpdHMgZm9yIGEgZnJlc2hseS1zdGFydGVkIGVtdWxhdG9yIHRvXG4gKiBiZWNvbWUgaWRsZSAoc2VlIHtAbGluayBjaGVja0RldmljZUlkbGV9KSBiZWZvcmUgZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uLiBBXG4gKiB2YWx1ZSBvZiBgMGAgc2tpcHMgdGhlIHdhaXQgZW50aXJlbHkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgQW5kcm9pZCBBcHBpdW0gdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGV2aWNlSWRsZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyhcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFuLWRldi11dGlscy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoIC0tIFBlcm1hbmVudDogYE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNgIGlzIG9uZSB0cmFuc3BvcnQgb3B0aW9ucyBiYWcgcmVhZCBieSBzaXggaGVscGVycywgc28gbm8gcGVyLW93bmVyIG5hbWUgY2FuIHNhdGlzZnkgdGhlbSBhbGwuXG4gIG9wdGlvbnM6IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbik6IG51bWJlciB7XG4gIHJldHVybiBvcHRpb25zLmRldmljZUlkbGVUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9ERVZJQ0VfSURMRV9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgbmV0d29yay1yZWFkeSB3YWl0IHRpbWVvdXQsIGFwcGx5aW5nIHRoZSBkZWZhdWx0IHdoZW4gdGhlIG9wdGlvblxuICogaXMgb21pdHRlZC5cbiAqXG4gKiBUaGlzIGJvdW5kcyBob3cgbG9uZyB0aGUgZmFjdG9yeSB3YWl0cywgYWZ0ZXIgdGhlIGlkbGUgZ2F0ZSwgZm9yIHRoZSBndWVzdCB0b1xuICogcmVwb3J0IGEgdmFsaWRhdGVkIGRlZmF1bHQgbmV0d29yayAoc2VlIHtAbGluayBjaGVja05ldHdvcmtWYWxpZGF0ZWR9KSBiZWZvcmVcbiAqIGVzdGFibGlzaGluZyB0aGUgc2Vzc2lvbi4gQSB2YWx1ZSBvZiBgMGAgc2tpcHMgdGhlIHdhaXQgZW50aXJlbHkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgQW5kcm9pZCBBcHBpdW0gdHJhbnNwb3J0IG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW4tZGV2LXV0aWxzL3BhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2ggLS0gUGVybWFuZW50OiBgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc2AgaXMgb25lIHRyYW5zcG9ydCBvcHRpb25zIGJhZyByZWFkIGJ5IHNpeCBoZWxwZXJzLCBzbyBubyBwZXItb3duZXIgbmFtZSBjYW4gc2F0aXNmeSB0aGVtIGFsbC5cbiAgb3B0aW9uczogT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9uc1xuKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9wdGlvbnMubmV0d29ya1JlYWR5VGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfTkVUV09SS19SRUFEWV9USU1FT1VUX0lOX01JTExJU0VDT05EUztcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYE5ldHdvcmtBZ2VudEluZm97XHUyMDI2fWAgZW50cnkgZm9yIG9uZSBuZXR3b3JrIGlkIGZyb20gYVxuICogY29ubmVjdGl2aXR5IGR1bXAuXG4gKlxuICogKipCb3VuZGVkIHRvIHRoZSBlbnRyeSdzIG93biBsaW5lLCBhbmQgdGhhdCBib3VuZCBpcyBsb2FkLWJlYXJpbmcuKiogQSByZWFsXG4gKiBkdW1wIGxpc3RzIHRoZSBhY3RpdmUgbmV0d29yaydzIGFnZW50IHVuZGVyIGBDdXJyZW50IE5ldHdvcmtzOmAgYW5kIHRoZW4sIG11Y2hcbiAqIGZ1cnRoZXIgZG93biwgYSBgTmV0d29ya09mZmVyYCBwZXIgcHJvdmlkZXIgXHUyMDE0IGFuZCB0aG9zZSBvZmZlcnMgY2FycnlcbiAqIGBJU19WQUxJREFURURgIGluIHRoZWlyIHNjb3JlIHBvbGljaWVzIHdoYXRldmVyIHRoZSBsaXZlIG5ldHdvcmsgaXMgZG9pbmcuIEFcbiAqIGR1bXAgc2FtcGxlZCBoZXJlIHdpdGggYW4gdW52YWxpZGF0ZWQgZGVmYXVsdCBuZXR3b3JrIGhlbGQgc2V2ZW4gc3VjaCBvZmZlcnMsXG4gKiBzbyByZWFkaW5nIHBhc3QgdGhlIGFnZW50J3Mgb3duIGxpbmUgcmVwb3J0cyAqZXZlcnkqIGR1bXAgYXMgdmFsaWRhdGVkLiBPbmVcbiAqIGVudHJ5IGlzIG9uZSBsaW5lIGluIHRoZSBvYnNlcnZlZCBvdXRwdXQ7IGFuIGVudHJ5IHRoYXQgZXZlciB3cmFwcyByZWFkcyBhc1xuICogbm90LXJlYWR5LCB3aGljaCBpcyB0aGUgc2FmZSBkaXJlY3Rpb24gdG8gYmUgd3JvbmcgaW4uXG4gKlxuICogQHBhcmFtIGNvbm5lY3Rpdml0eU91dHB1dCAtIFJhdyBzdGRvdXQgb2YgYGFkYiBzaGVsbCBkdW1wc3lzIGNvbm5lY3Rpdml0eWAuXG4gKiBAcGFyYW0gbmV0d29ya0lkIC0gVGhlIG5ldHdvcmsgaWQgd2hvc2UgZW50cnkgdG8gZXh0cmFjdC5cbiAqIEByZXR1cm5zIFRoZSBlbnRyeSdzIGxpbmUsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZSBkdW1wIGhhcyBubyBzdWNoIGVudHJ5LlxuICovXG5mdW5jdGlvbiBleHRyYWN0TmV0d29ya0FnZW50SW5mbyhjb25uZWN0aXZpdHlPdXRwdXQ6IHN0cmluZywgbmV0d29ya0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdGFydEluZGV4ID0gY29ubmVjdGl2aXR5T3V0cHV0LmluZGV4T2YoYCR7TkVUV09SS19BR0VOVF9JTkZPX01BUktFUn1uZXR3b3JreyR7bmV0d29ya0lkfX1gKTtcbiAgaWYgKHN0YXJ0SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgbGluZUVuZEluZGV4ID0gY29ubmVjdGl2aXR5T3V0cHV0LmluZGV4T2YoJ1xcbicsIHN0YXJ0SW5kZXgpO1xuICByZXR1cm4gbGluZUVuZEluZGV4ID09PSAtMVxuICAgID8gY29ubmVjdGl2aXR5T3V0cHV0LnNsaWNlKHN0YXJ0SW5kZXgpXG4gICAgOiBjb25uZWN0aXZpdHlPdXRwdXQuc2xpY2Uoc3RhcnRJbmRleCwgbGluZUVuZEluZGV4KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkJBLE1BQU0saUNBQWlDO0FBQ3ZDLE1BQU0sK0JBQStCO0FBQ3JDLE1BQU0sMEJBQTBCO0FBQ2hDLE1BQU0sNEJBQTRCO0FBQ2xDLE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0seUJBQXlCO0FBS3hCLE1BQU0sOENBQThDO0FBVXBELE1BQU0sZ0RBQWdEO0FBdUN0RCxTQUFTLGdCQUFnQixRQUF3QztBQUN0RSxRQUFNLHlCQUF5QixPQUFPLHNCQUFzQixLQUFLLE1BQU07QUFDdkUsUUFBTSx3QkFBd0IsT0FBTyxrQkFDbEMsTUFBTSxJQUFJLEVBQ1YsS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsV0FBVyxtQkFBbUIsQ0FBQztBQUNsRSxTQUFPLDBCQUEwQjtBQUNuQztBQXFDTyxTQUFTLHNCQUFzQixRQUE4QztBQUNsRixRQUFNLGtCQUFrQiwrQkFBK0IsS0FBSyxPQUFPLGtCQUFrQixHQUFHLFNBQVMsV0FBVyxLQUFLO0FBQ2pILE1BQUksQ0FBQyxtQkFBbUIsS0FBSyxlQUFlLEdBQUc7QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFlBQVksd0JBQXdCLE9BQU8sb0JBQW9CLGVBQWU7QUFDcEYsTUFBSSxVQUFVLFNBQVMsc0JBQXNCLEdBQUc7QUFDOUMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDBCQUEwQixPQUFPLHdCQUF3QixLQUFLLFNBQVMsR0FBRyxTQUFTLFdBQVcsS0FBSyxHQUFHO0FBQzVHLFNBQU8sMEJBQTBCO0FBQ25DO0FBYU8sU0FBUyx1Q0FFZCxTQUNRO0FBQ1IsU0FBTyxRQUFRLG1DQUFtQztBQUNwRDtBQWFPLFNBQVMseUNBRWQsU0FDUTtBQUNSLFNBQU8sUUFBUSxxQ0FBcUM7QUFDdEQ7QUFtQkEsU0FBUyx3QkFBd0Isb0JBQTRCLFdBQTJCO0FBQ3RGLFFBQU0sYUFBYSxtQkFBbUIsUUFBUSxHQUFHLHlCQUF5QixXQUFXLFNBQVMsR0FBRztBQUNqRyxNQUFJLGVBQWUsSUFBSTtBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sZUFBZSxtQkFBbUIsUUFBUSxNQUFNLFVBQVU7QUFDaEUsU0FBTyxpQkFBaUIsS0FDcEIsbUJBQW1CLE1BQU0sVUFBVSxJQUNuQyxtQkFBbUIsTUFBTSxZQUFZLFlBQVk7QUFDdkQ7IiwKICAibmFtZXMiOiBbXQp9Cg==