@bitgo-beta/sdk-coin-sol 7.6.4-beta.790 → 7.6.4-beta.792

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 (33) hide show
  1. package/dist/cjs/src/lib/constants.d.ts +8 -0
  2. package/dist/cjs/src/lib/constants.d.ts.map +1 -1
  3. package/dist/cjs/src/lib/constants.js +13 -2
  4. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -1
  5. package/dist/cjs/src/lib/explainTransactionWasm.js +26 -8
  6. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -1
  7. package/dist/cjs/src/lib/instructionParamsFactory.js +13 -1
  8. package/dist/cjs/src/lib/utils.d.ts +12 -1
  9. package/dist/cjs/src/lib/utils.d.ts.map +1 -1
  10. package/dist/cjs/src/lib/utils.js +55 -3
  11. package/dist/cjs/src/sol.d.ts.map +1 -1
  12. package/dist/cjs/src/sol.js +9 -1
  13. package/dist/cjs/test/resources/sol.d.ts +1 -1
  14. package/dist/cjs/test/resources/sol.d.ts.map +1 -1
  15. package/dist/cjs/test/resources/sol.js +2 -2
  16. package/dist/cjs/test/unit/explainTransactionWasm.js +82 -1
  17. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +14 -38
  18. package/dist/cjs/test/unit/sol.js +63 -1
  19. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +2 -2
  20. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  21. package/dist/esm/lib/constants.d.ts +8 -0
  22. package/dist/esm/lib/constants.d.ts.map +1 -1
  23. package/dist/esm/lib/constants.js +12 -1
  24. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -1
  25. package/dist/esm/lib/explainTransactionWasm.js +26 -8
  26. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -1
  27. package/dist/esm/lib/instructionParamsFactory.js +13 -1
  28. package/dist/esm/lib/utils.d.ts +12 -1
  29. package/dist/esm/lib/utils.d.ts.map +1 -1
  30. package/dist/esm/lib/utils.js +53 -4
  31. package/dist/esm/sol.d.ts.map +1 -1
  32. package/dist/esm/sol.js +10 -2
  33. package/package.json +8 -8
@@ -230,7 +230,7 @@ describe('Sol Staking Deactivate Builder', () => {
230
230
  address: 'opNS8ENpEMWdXcJUgJCsJTDp7arTXayoBEeBUg6UezP',
231
231
  amount: '2300000',
232
232
  });
233
- const marinadeMemo = `{\\"PrepareForRevoke\\":{\\"user\\":\\"${wallet.pub}}\\",\\"amount\\":\\"500000000000\\"}`;
233
+ const marinadeMemo = `{"PrepareForRevoke":{"user":"${wallet.pub}","amount":"500000000000"}}`;
234
234
  it('Marinade: build and sign a staking deactivate tx', async () => {
235
235
  await performTest({
236
236
  makeUnsignedBuilder: () => {
@@ -381,4 +381,4 @@ describe('Sol Staking Deactivate Builder', () => {
381
381
  });
382
382
  });
383
383
  });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9zdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNERBQXlEO0FBQ3pELHNDQUF3RTtBQUN4RSw4REFBZ0Q7QUFDaEQsc0RBQXlEO0FBQ3pELG1EQUFtRjtBQUNuRiwyQ0FBNkI7QUFDN0IsMERBQXFFO0FBRXJFLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6RCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFDekIsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLFVBQVUsR0FPWCxFQUFFLEVBQUU7UUFDSCxvQkFBb0I7UUFDcEIsTUFBTSxTQUFTLEdB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TCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uL2dldEJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IEtleVBhaXIsIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciwgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3NvbCc7XG5pbXBvcnQgeyBTb2xTdGFraW5nVHlwZUVudW0gfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgSklUT19TVEFLRV9QT09MX0FERFJFU1MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5cbmRlc2NyaWJlKCdTb2wgU3Rha2luZyBEZWFjdGl2YXRlIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgndHNvbCcpO1xuXG4gIGNvbnN0IHdhbGxldEtleVBhaXIgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCk7XG4gIGNvbnN0IHdhbGxldCA9IHdhbGxldEtleVBhaXIuZ2V0S2V5cygpO1xuICBjb25zdCBzdGFrZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3Qgc3BsaXRBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgcmVjZW50QmxvY2tIYXNoID0gJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJztcbiAgY29uc3QgaW52YWxpZFB1YktleSA9IHRlc3REYXRhLnB1YktleXMuaW52YWxpZFB1YktleXNbMF07XG5cbiAgY29uc3QgcGVyZm9ybVRlc3QgPSBhc3luYyAoe1xuICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXIsXG4gICAgc2lnbkJ1aWxkZXIsXG4gICAgYWRkU2lnbmF0dXJlcyxcbiAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uLFxuICAgIGtub3duUmF3VHgsXG4gIH06IHtcbiAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXI7XG4gICAgc2lnbkJ1aWxkZXI/OiB1bmRlZmluZWQgfCAoKHg6IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcikgPT4gU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKTtcbiAgICBhZGRTaWduYXR1cmVzPzogdW5kZWZpbmVkIHwgKCh4OiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIsIHNpZ25hdHVyZTogc3RyaW5nW10pID0+IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcik7XG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbjogKHg6IEJhc2VUcmFuc2FjdGlvbikgPT4gdm9pZDtcbiAgICBrbm93blJhd1R4Pzogc3RyaW5nO1xuICB9KSA9PiB7XG4gICAgLy8gQnVpbGQgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBtYWtlVW5zaWduZWRCdWlsZGVyKCk7XG4gICAgY29uc3QgdW5zaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4ID0gc2lnbkJ1aWxkZXIgPyBhd2FpdCBzaWduQnVpbGRlcih0eEJ1aWxkZXIpLmJ1aWxkKCkgOiB1bnNpZ25lZFR4O1xuXG4gICAgLy8gVmVyaWZ5IGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbih0eCk7XG5cbiAgICAvLyBWZXJpZnkgcmF3IHRyYW5zYWN0aW9uXG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICBpZiAoa25vd25SYXdUeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaG91bGQuZXF1YWwocmF3VHgsIGtub3duUmF3VHgpO1xuICAgIH1cblxuICAgIC8vIFJlYnVpbGQgdHJhbnNhY3Rpb24gYW5kIHZlcmlmeVxuICAgIGNvbnN0IGJ1aWxkZXJGcm9tUmF3VHggPSBmYWN0b3J5LmZyb20ocmF3VHgpO1xuICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IGJ1aWxkZXJGcm9tUmF3VHguYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdW5zaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JyksIHVuc2lnbmVkVHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0VHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YSwgdHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YSk7XG5cbiAgICAvLyBWZXJpZnkgYWRkU2lnbmF0dXJlXG4gICAgaWYgKGFkZFNpZ25hdHVyZXMpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBtYWtlVW5zaWduZWRCdWlsZGVyKCk7XG4gICAgICBhZGRTaWduYXR1cmVzKHR4QnVpbGRlcjIsIHR4LnNpZ25hdHVyZSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgyLnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZSk7XG4gICAgICBjb25zdCByYXdUeDIgPSB0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHgyLnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGEsIHR4LnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGEpO1xuICAgICAgaWYgKGtub3duUmF3VHggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgyLCBrbm93blJhd1R4KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbWFrZVVuc2lnbmVkQnVpbGRlck5hdGl2ZUdlbmVyaWMgPSAoZG9NZW1vOiBib29sZWFuLCBzdGFraW5nQWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgaWYgKHR5cGVvZiBzdGFraW5nQWRkcmVzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhzdGFraW5nQWRkcmVzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzc2VzKHN0YWtpbmdBZGRyZXNzKTtcbiAgICB9XG4gICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgaWYgKGRvTWVtbykge1xuICAgICAgdHhCdWlsZGVyLm1lbW8oJ1Rlc3QgZGVhY3RpdmF0ZScpO1xuICAgIH1cbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25CdWlsZGVyTmF0aXZlID0gKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKSA9PiB7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCBhZGRTaWduYXR1cmVzTmF0aXZlID0gKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLCBzaWduYXR1cmU6IHN0cmluZ1tdKSA9PiB7XG4gICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogd2FsbGV0LnB1YiB9LCBCdWZmZXIuZnJvbShiczU4LmRlY29kZShzaWduYXR1cmVbMF0pKSk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uTmF0aXZlR2VuZXJpYyA9ICh0eDogQmFzZVRyYW5zYWN0aW9uLCBkb01lbW86IGJvb2xlYW4sIHN0YWtpbmdBZGRyZXNzZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAuLi4oZG9NZW1vXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnTWVtbycsXG4gICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1lbW86ICdUZXN0IGRlYWN0aXZhdGUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uc3Rha2luZ0FkZHJlc3Nlcy5tYXAoKHN0YWtpbmdBZGRyZXNzKSA9PiAoe1xuICAgICAgICB0eXBlOiAnRGVhY3RpdmF0ZScsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIHN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdW5kZWZpbmVkLFxuICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgIHVuc3Rha2luZ0FkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk5BVElWRSxcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICBdKTtcbiAgfTtcblxuICBkZXNjcmliZSgnU2hvdWxkIHN1Y2NlZWQnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ05hdGl2ZSBzdGFraW5nIGRlYWN0aXZhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwZXJmb3JtVGVzdE5hdGl2ZSA9IGFzeW5jIChcbiAgICAgICAgZG9NZW1vOiBib29sZWFuLFxuICAgICAgICBzdGFraW5nQWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIGRvU2lnbjogYm9vbGVhbixcbiAgICAgICAga25vd25SYXdUeDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3Qgc3Rha2luZ0FkZHJlc3NlcyA9IHR5cGVvZiBzdGFraW5nQWRkcmVzcyA9PT0gJ3N0cmluZycgPyBbc3Rha2luZ0FkZHJlc3NdIDogc3Rha2luZ0FkZHJlc3M7XG4gICAgICAgIGF3YWl0IHBlcmZvcm1UZXN0KHtcbiAgICAgICAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiBtYWtlVW5zaWduZWRCdWlsZGVyTmF0aXZlR2VuZXJpYyhkb01lbW8sIHN0YWtpbmdBZGRyZXNzKSxcbiAgICAgICAgICBzaWduQnVpbGRlcjogZG9TaWduID8gc2lnbkJ1aWxkZXJOYXRpdmUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgYWRkU2lnbmF0dXJlczogZG9TaWduID8gYWRkU2lnbmF0dXJlc05hdGl2ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAodHgpID0+IHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb25OYXRpdmVHZW5lcmljKHR4LCBkb01lbW8sIHN0YWtpbmdBZGRyZXNzZXMpLFxuICAgICAgICAgIGtub3duUmF3VHgsXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgdHJ1ZSwgdGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBtdWx0aSBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBbc3Rha2VBY2NvdW50LnB1Yiwgc3BsaXRBY2NvdW50LnB1Yl0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICB0ZXN0RGF0YS5TVEFLSU5HX01VTFRJX0RFQUNUSVZBVEVfU0lHTkVEX1RYXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhbmQgc2lnbiBhIG11bHRpIGRlYWN0aXZhdGUgc2luZ2xlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgW3N0YWtlQWNjb3VudC5wdWJdLCB0cnVlLCB0ZXN0RGF0YS5TVEFLSU5HX01VTFRJX0RFQUNUSVZBVEVfU0lHTkVEX1RYX3NpbmdsZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhbmQgc2lnbiBhIGRlYWN0aXZhdGUgc2luZ2xlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgdHJ1ZSwgdGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWF9zaW5nbGUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSBzaWduZWQgdHggd2l0aCBtZW1vJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZSh0cnVlLCBzdGFrZUFjY291bnQucHViLCB0cnVlLCB0ZXN0RGF0YS5TVEFLSU5HX0RFQUNUSVZBVEVfU0lHTkVEX1RYX1dJVEhfTUVNTyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHVuc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgZmFsc2UsIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHVuc2lnbmVkIHR4IHdpdGggbWVtbycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcGVyZm9ybVRlc3ROYXRpdmUodHJ1ZSwgc3Rha2VBY2NvdW50LnB1YiwgZmFsc2UsIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB1bnNpZ25lZCB0eCB3aXRoIG1lbW8nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHBlcmZvcm1UZXN0TmF0aXZlKHRydWUsIHN0YWtlQWNjb3VudC5wdWIsIGZhbHNlLCB0ZXN0RGF0YS5TVEFLSU5HX0RFQUNUSVZBVEVfVU5TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYWxsIGNvbWJpbmF0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBkb01lbW8gb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgIGZvciAoY29uc3Qgc3Rha2luZ0FkZHJlc3Mgb2YgW3N0YWtlQWNjb3VudC5wdWIsIFtzdGFrZUFjY291bnQucHViXSwgW3N0YWtlQWNjb3VudC5wdWIsIHNwbGl0QWNjb3VudC5wdWJdXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb1NpZ24gb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShkb01lbW8sIHN0YWtpbmdBZGRyZXNzLCBkb1NpZ24sIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGFuIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGRpbmcgYW4gZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbiBhbmQgc2lnbmluZyBpdCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGRpbmcgYSBwYXJ0aWFsIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAgIC5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgICAudW5zdGFraW5nQWRkcmVzcyh0ZXN0RGF0YS5zcGxpdFN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgICAgLmFtb3VudCgnMTAwMDAwJylcbiAgICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ0RlYWN0aXZhdGUnLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgICAgICBzdGFraW5nQWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgdW5zdGFraW5nQWRkcmVzczogdGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQucHViLFxuICAgICAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk5BVElWRSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19QQVJUSUFMX0RFQUNUSVZBVEVfU0lHTkVEX1RYKTtcblxuICAgICAgICBjb25zdCB0eDIgPSBhd2FpdCBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19QQVJUSUFMX0RFQUNUSVZBVEVfU0lHTkVEX1RYKS5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24yID0gdHgyLnRvSnNvbigpO1xuICAgICAgICB0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICBkZWxldGUgdHhbJ19pZCddO1xuICAgICAgICBkZWxldGUgdHgyWydfaWQnXTtcblxuICAgICAgICAvLyBzaG91bGQuZGVlcEVxdWFsKHR4LCB0eDIpIC8vIF91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWUgdHJ1ZSBmb3IgdHgyXG4gICAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uMiwgdHhKc29uMik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdNYXJpbmFkZSBzdGFraW5nIGRlYWN0aXZhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJpbmFkZVJlY2lwaWVudHNPYmplY3Q6IFJlY2lwaWVudFtdID0gW107XG4gICAgICBtYXJpbmFkZVJlY2lwaWVudHNPYmplY3QucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6ICdvcE5TOEVOcEVNV2RYY0pVZ0pDc0pURHA3YXJUWGF5b0JFZUJVZzZVZXpQJyxcbiAgICAgICAgYW1vdW50OiAnMjMwMDAwMCcsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbWFyaW5hZGVNZW1vID0gYHtcXFxcXCJQcmVwYXJlRm9yUmV2b2tlXFxcXFwiOntcXFxcXCJ1c2VyXFxcXFwiOlxcXFxcIiR7d2FsbGV0LnB1Yn19XFxcXFwiLFxcXFxcImFtb3VudFxcXFxcIjpcXFxcXCI1MDAwMDAwMDAwMDBcXFxcXCJ9YDtcblxuICAgICAgaXQoJ01hcmluYWRlOiBidWlsZCBhbmQgc2lnbiBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcGVyZm9ybVRlc3Qoe1xuICAgICAgICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgICAgICAgLm5vbmNlKHJlY2VudEJsb2NrSGFzaClcbiAgICAgICAgICAgICAgLnN0YWtpbmdUeXBlKFNvbFN0YWtpbmdUeXBlRW51bS5NQVJJTkFERSlcbiAgICAgICAgICAgICAgLm1lbW8obWFyaW5hZGVNZW1vKVxuICAgICAgICAgICAgICAucmVjaXBpZW50cyhtYXJpbmFkZVJlY2lwaWVudHNPYmplY3QpO1xuICAgICAgICAgICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNpZ25CdWlsZGVyOiBzaWduQnVpbGRlck5hdGl2ZSxcbiAgICAgICAgICBhZGRTaWduYXR1cmVzOiBhZGRTaWduYXR1cmVzTmF0aXZlLFxuICAgICAgICAgIHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb246ICh0eDogQmFzZVRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgICAgIHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICBtZW1vOiBtYXJpbmFkZU1lbW8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnTWVtbycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnRGVhY3RpdmF0ZScsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICBmcm9tQWRkcmVzczogJycsXG4gICAgICAgICAgICAgICAgICBzdGFraW5nQWRkcmVzczogJycsXG4gICAgICAgICAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk1BUklOQURFLFxuICAgICAgICAgICAgICAgICAgcmVjaXBpZW50czogbWFyaW5hZGVSZWNpcGllbnRzT2JqZWN0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtub3duUmF3VHg6IHRlc3REYXRhLk1BUklOQURFX1NUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFgsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnSml0byBzdGFraW5nIGRlYWN0aXZhdGUnLCAoKSA9PiB7XG4gICAgICBpdCgnSml0bzogYnVpbGQgYW5kIHNpZ24gYSBzdGFraW5nIGRlYWN0aXZhdGUgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyQXV0aG9yaXR5ID0gbmV3IEtleVBhaXIodGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQpLmdldEtleXMoKTtcblxuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdCh7XG4gICAgICAgICAgbWFrZVVuc2lnbmVkQnVpbGRlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgICAgICAgIHR4QnVpbGRlclxuICAgICAgICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgICAgICAgIC5zdGFraW5nQWRkcmVzcyhKSVRPX1NUQUtFX1BPT0xfQUREUkVTUylcbiAgICAgICAgICAgICAgLnVuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgICAgICAgLnN0YWtpbmdUeXBlKFNvbFN0YWtpbmdUeXBlRW51bS5KSVRPKVxuICAgICAgICAgICAgICAuZXh0cmFQYXJhbXMoe1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvckFkZHJlc3M6IHRlc3REYXRhLkpJVE9fU1RBS0VfUE9PTF9WQUxJREFUT1JfQUREUkVTUyxcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckF1dGhvcml0eUFkZHJlc3M6IHRyYW5zZmVyQXV0aG9yaXR5LnB1YixcbiAgICAgICAgICAgICAgICBzdGFrZVBvb2xEYXRhOiB7XG4gICAgICAgICAgICAgICAgICBtYW5hZ2VyRmVlQWNjb3VudDogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELm1hbmFnZXJGZWVBY2NvdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICBwb29sTWludDogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELnBvb2xNaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3JMaXN0QWNjb3VudDogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELnZhbGlkYXRvckxpc3QudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYW1vdW50KCcxMDAwJylcbiAgICAgICAgICAgICAgLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2lnbkJ1aWxkZXI6ICh0eEJ1aWxkZXI6IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogc3Rha2VBY2NvdW50LnBydiB9KTtcbiAgICAgICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB0cmFuc2ZlckF1dGhvcml0eS5wcnYgfSk7XG4gICAgICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWRkU2lnbmF0dXJlczogKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLCBzaWduYXR1cmU6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiB3YWxsZXQucHViIH0sIEJ1ZmZlci5mcm9tKGJzNTguZGVjb2RlKHNpZ25hdHVyZVswXSkpKTtcbiAgICAgICAgICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHN0YWtlQWNjb3VudC5wdWIgfSwgQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoc2lnbmF0dXJlWzFdKSkpO1xuICAgICAgICAgICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdHJhbnNmZXJBdXRob3JpdHkucHViIH0sIEJ1ZmZlci5mcm9tKGJzNTguZGVjb2RlKHNpZ25hdHVyZVsyXSkpKTtcbiAgICAgICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAodHg6IEJhc2VUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICAgICAgICB0eEpzb24uaW5zdHJ1Y3Rpb25zRGF0YS5zaG91bGQuZGVlcEVxdWFsKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdEZWFjdGl2YXRlJyxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgICAgICAgICAgc3Rha2luZ0FkZHJlc3M6IEpJVE9fU1RBS0VfUE9PTF9BRERSRVNTLFxuICAgICAgICAgICAgICAgICAgdW5zdGFraW5nQWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgICAgICAgICAgIGFtb3VudDogJzEwMDAnLFxuICAgICAgICAgICAgICAgICAgc3Rha2luZ1R5cGU6IFNvbFN0YWtpbmdUeXBlRW51bS5KSVRPLFxuICAgICAgICAgICAgICAgICAgZXh0cmFQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQWRkcmVzczogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX1ZBTElEQVRPUl9BRERSRVNTLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlckF1dGhvcml0eUFkZHJlc3M6IHRyYW5zZmVyQXV0aG9yaXR5LnB1YixcbiAgICAgICAgICAgICAgICAgICAgc3Rha2VQb29sRGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXJGZWVBY2NvdW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQubWFuYWdlckZlZUFjY291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICBwb29sTWludDogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELnBvb2xNaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yTGlzdEFjY291bnQ6IHRlc3REYXRhLkpJVE9fU1RBS0VfUE9PTF9EQVRBX1BBUlNFRC52YWxpZGF0b3JMaXN0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHR4LmlucHV0cy5zaG91bGQuZGVlcEVxdWFsKFtdKTtcbiAgICAgICAgICAgIHR4Lm91dHB1dHMuc2hvdWxkLmRlZXBFcXVhbChbXSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrbm93blJhd1R4OiB0ZXN0RGF0YS5KSVRPX1NUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFgsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTaG91bGQgZmFpbCcsICgpID0+IHtcbiAgICBpdCgnYnVpbGRpbmcgYSBzdGFraW5nIGRlYWN0aXZhdGUgdHggd2l0aG91dCBzdGFraW5nIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKS5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdTdGFraW5nIGFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHR4IHdpdGggYSB3cm9uZyBzdGFraW5nIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKS5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhpbnZhbGlkUHViS2V5KSkudGhyb3dFcnJvcihcbiAgICAgICAgYEludmFsaWQgb3IgbWlzc2luZyBzdGFraW5nQWRkcmVzcywgZ290OiAke2ludmFsaWRQdWJLZXl9YFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCB3aXRoIHRoZSBzYW1lIGFkZHJlc3MgYXMgc2VuZGVyIGFuZCBzdGFraW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yikubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyh3YWxsZXQucHViKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ1NlbmRlciBhZGRyZXNzIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgU3Rha2luZyBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGRpbmcgYSBwYXJ0aWFsIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCB3aXRob3V0IGFuIGFtb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnlcbiAgICAgICAgLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpXG4gICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgLm5vbmNlKHJlY2VudEJsb2NrSGFzaClcbiAgICAgICAgLnN0YWtpbmdBZGRyZXNzKHRlc3REYXRhLnN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgIC51bnN0YWtpbmdBZGRyZXNzKHRlc3REYXRhLnNwbGl0U3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcblxuICAgICAgYXdhaXQgdHhCdWlsZGVyXG4gICAgICAgIC5idWlsZCgpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKFxuICAgICAgICAgICdJZiBhbiB1bnN0YWtpbmcgYWRkcmVzcyBpcyBnaXZlbiB0aGVuIGEgcGFydGlhbCBhbW91bnQgdG8gdW5zdGFrZSBtdXN0IGFsc28gYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nXG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGRpbmcgYSBwYXJ0aWFsIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCB3aXRob3V0IGFuIHVuc3Rha2luZyBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3ModGVzdERhdGEuc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLmFtb3VudCgnMTAnKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXJcbiAgICAgICAgLmJ1aWxkKClcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ1doZW4gcGFydGlhbGx5IHVuc3Rha2luZyB0aGUgdW5zdGFraW5nIGFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbidcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9zdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNERBQXlEO0FBQ3pELHNDQUF3RTtBQUN4RSw4REFBZ0Q7QUFDaEQsc0RBQXlEO0FBQ3pELG1EQUFtRjtBQUNuRiwyQ0FBNkI7QUFDN0IsMERBQXFFO0FBRXJFLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFlBQVksR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6RCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFDekIsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLFVBQVUsR0FPWCxFQUFFLEVBQUU7UUFDSCxvQkFBb0I7UUFDcEIsTUFBTSxTQUFTLEdB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TCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uL2dldEJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IEtleVBhaXIsIFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlciwgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3NvbCc7XG5pbXBvcnQgeyBTb2xTdGFraW5nVHlwZUVudW0gfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgSklUT19TVEFLRV9QT09MX0FERFJFU1MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5cbmRlc2NyaWJlKCdTb2wgU3Rha2luZyBEZWFjdGl2YXRlIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgndHNvbCcpO1xuXG4gIGNvbnN0IHdhbGxldEtleVBhaXIgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCk7XG4gIGNvbnN0IHdhbGxldCA9IHdhbGxldEtleVBhaXIuZ2V0S2V5cygpO1xuICBjb25zdCBzdGFrZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3Qgc3BsaXRBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgcmVjZW50QmxvY2tIYXNoID0gJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJztcbiAgY29uc3QgaW52YWxpZFB1YktleSA9IHRlc3REYXRhLnB1YktleXMuaW52YWxpZFB1YktleXNbMF07XG5cbiAgY29uc3QgcGVyZm9ybVRlc3QgPSBhc3luYyAoe1xuICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXIsXG4gICAgc2lnbkJ1aWxkZXIsXG4gICAgYWRkU2lnbmF0dXJlcyxcbiAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uLFxuICAgIGtub3duUmF3VHgsXG4gIH06IHtcbiAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXI7XG4gICAgc2lnbkJ1aWxkZXI/OiB1bmRlZmluZWQgfCAoKHg6IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcikgPT4gU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKTtcbiAgICBhZGRTaWduYXR1cmVzPzogdW5kZWZpbmVkIHwgKCh4OiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIsIHNpZ25hdHVyZTogc3RyaW5nW10pID0+IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcik7XG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbjogKHg6IEJhc2VUcmFuc2FjdGlvbikgPT4gdm9pZDtcbiAgICBrbm93blJhd1R4Pzogc3RyaW5nO1xuICB9KSA9PiB7XG4gICAgLy8gQnVpbGQgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBtYWtlVW5zaWduZWRCdWlsZGVyKCk7XG4gICAgY29uc3QgdW5zaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4ID0gc2lnbkJ1aWxkZXIgPyBhd2FpdCBzaWduQnVpbGRlcih0eEJ1aWxkZXIpLmJ1aWxkKCkgOiB1bnNpZ25lZFR4O1xuXG4gICAgLy8gVmVyaWZ5IGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbih0eCk7XG5cbiAgICAvLyBWZXJpZnkgcmF3IHRyYW5zYWN0aW9uXG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICBpZiAoa25vd25SYXdUeCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzaG91bGQuZXF1YWwocmF3VHgsIGtub3duUmF3VHgpO1xuICAgIH1cblxuICAgIC8vIFJlYnVpbGQgdHJhbnNhY3Rpb24gYW5kIHZlcmlmeVxuICAgIGNvbnN0IGJ1aWxkZXJGcm9tUmF3VHggPSBmYWN0b3J5LmZyb20ocmF3VHgpO1xuICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IGJ1aWxkZXJGcm9tUmF3VHguYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdW5zaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICBzaG91bGQuZXF1YWwocmVidWlsdFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JyksIHVuc2lnbmVkVHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0VHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YSwgdHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YSk7XG5cbiAgICAvLyBWZXJpZnkgYWRkU2lnbmF0dXJlXG4gICAgaWYgKGFkZFNpZ25hdHVyZXMpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjIgPSBtYWtlVW5zaWduZWRCdWlsZGVyKCk7XG4gICAgICBhZGRTaWduYXR1cmVzKHR4QnVpbGRlcjIsIHR4LnNpZ25hdHVyZSk7XG4gICAgICBjb25zdCB0eDIgPSBhd2FpdCB0eEJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgyLnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZSk7XG4gICAgICBjb25zdCByYXdUeDIgPSB0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHgyLnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGEsIHR4LnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGEpO1xuICAgICAgaWYgKGtub3duUmF3VHggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgyLCBrbm93blJhd1R4KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbWFrZVVuc2lnbmVkQnVpbGRlck5hdGl2ZUdlbmVyaWMgPSAoZG9NZW1vOiBib29sZWFuLCBzdGFraW5nQWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgaWYgKHR5cGVvZiBzdGFraW5nQWRkcmVzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhzdGFraW5nQWRkcmVzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzc2VzKHN0YWtpbmdBZGRyZXNzKTtcbiAgICB9XG4gICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgaWYgKGRvTWVtbykge1xuICAgICAgdHhCdWlsZGVyLm1lbW8oJ1Rlc3QgZGVhY3RpdmF0ZScpO1xuICAgIH1cbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25CdWlsZGVyTmF0aXZlID0gKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKSA9PiB7XG4gICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCBhZGRTaWduYXR1cmVzTmF0aXZlID0gKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyLCBzaWduYXR1cmU6IHN0cmluZ1tdKSA9PiB7XG4gICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogd2FsbGV0LnB1YiB9LCBCdWZmZXIuZnJvbShiczU4LmRlY29kZShzaWduYXR1cmVbMF0pKSk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uTmF0aXZlR2VuZXJpYyA9ICh0eDogQmFzZVRyYW5zYWN0aW9uLCBkb01lbW86IGJvb2xlYW4sIHN0YWtpbmdBZGRyZXNzZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAuLi4oZG9NZW1vXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnTWVtbycsXG4gICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIG1lbW86ICdUZXN0IGRlYWN0aXZhdGUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uc3Rha2luZ0FkZHJlc3Nlcy5tYXAoKHN0YWtpbmdBZGRyZXNzKSA9PiAoe1xuICAgICAgICB0eXBlOiAnRGVhY3RpdmF0ZScsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIHN0YWtpbmdBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdW5kZWZpbmVkLFxuICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgIHVuc3Rha2luZ0FkZHJlc3M6IHVuZGVmaW5lZCxcbiAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk5BVElWRSxcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICBdKTtcbiAgfTtcblxuICBkZXNjcmliZSgnU2hvdWxkIHN1Y2NlZWQnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ05hdGl2ZSBzdGFraW5nIGRlYWN0aXZhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwZXJmb3JtVGVzdE5hdGl2ZSA9IGFzeW5jIChcbiAgICAgICAgZG9NZW1vOiBib29sZWFuLFxuICAgICAgICBzdGFraW5nQWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICAgIGRvU2lnbjogYm9vbGVhbixcbiAgICAgICAga25vd25SYXdUeDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3Qgc3Rha2luZ0FkZHJlc3NlcyA9IHR5cGVvZiBzdGFraW5nQWRkcmVzcyA9PT0gJ3N0cmluZycgPyBbc3Rha2luZ0FkZHJlc3NdIDogc3Rha2luZ0FkZHJlc3M7XG4gICAgICAgIGF3YWl0IHBlcmZvcm1UZXN0KHtcbiAgICAgICAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiBtYWtlVW5zaWduZWRCdWlsZGVyTmF0aXZlR2VuZXJpYyhkb01lbW8sIHN0YWtpbmdBZGRyZXNzKSxcbiAgICAgICAgICBzaWduQnVpbGRlcjogZG9TaWduID8gc2lnbkJ1aWxkZXJOYXRpdmUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgYWRkU2lnbmF0dXJlczogZG9TaWduID8gYWRkU2lnbmF0dXJlc05hdGl2ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAodHgpID0+IHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb25OYXRpdmVHZW5lcmljKHR4LCBkb01lbW8sIHN0YWtpbmdBZGRyZXNzZXMpLFxuICAgICAgICAgIGtub3duUmF3VHgsXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgdHJ1ZSwgdGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBtdWx0aSBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBbc3Rha2VBY2NvdW50LnB1Yiwgc3BsaXRBY2NvdW50LnB1Yl0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICB0ZXN0RGF0YS5TVEFLSU5HX01VTFRJX0RFQUNUSVZBVEVfU0lHTkVEX1RYXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhbmQgc2lnbiBhIG11bHRpIGRlYWN0aXZhdGUgc2luZ2xlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgW3N0YWtlQWNjb3VudC5wdWJdLCB0cnVlLCB0ZXN0RGF0YS5TVEFLSU5HX01VTFRJX0RFQUNUSVZBVEVfU0lHTkVEX1RYX3NpbmdsZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhbmQgc2lnbiBhIGRlYWN0aXZhdGUgc2luZ2xlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgdHJ1ZSwgdGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWF9zaW5nbGUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSBzaWduZWQgdHggd2l0aCBtZW1vJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZSh0cnVlLCBzdGFrZUFjY291bnQucHViLCB0cnVlLCB0ZXN0RGF0YS5TVEFLSU5HX0RFQUNUSVZBVEVfU0lHTkVEX1RYX1dJVEhfTUVNTyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHVuc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShmYWxzZSwgc3Rha2VBY2NvdW50LnB1YiwgZmFsc2UsIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHVuc2lnbmVkIHR4IHdpdGggbWVtbycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgcGVyZm9ybVRlc3ROYXRpdmUodHJ1ZSwgc3Rha2VBY2NvdW50LnB1YiwgZmFsc2UsIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB1bnNpZ25lZCB0eCB3aXRoIG1lbW8nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHBlcmZvcm1UZXN0TmF0aXZlKHRydWUsIHN0YWtlQWNjb3VudC5wdWIsIGZhbHNlLCB0ZXN0RGF0YS5TVEFLSU5HX0RFQUNUSVZBVEVfVU5TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYWxsIGNvbWJpbmF0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBkb01lbW8gb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgIGZvciAoY29uc3Qgc3Rha2luZ0FkZHJlc3Mgb2YgW3N0YWtlQWNjb3VudC5wdWIsIFtzdGFrZUFjY291bnQucHViXSwgW3N0YWtlQWNjb3VudC5wdWIsIHNwbGl0QWNjb3VudC5wdWJdXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb1NpZ24gb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdE5hdGl2ZShkb01lbW8sIHN0YWtpbmdBZGRyZXNzLCBkb1NpZ24sIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkaW5nIGFuIGVuY29kZWQgc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGRpbmcgYW4gZW5jb2RlZCB1bnNpZ25lZCB0cmFuc2FjdGlvbiBhbmQgc2lnbmluZyBpdCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9VTlNJR05FRF9UWF9XSVRIX01FTU8pO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNUQUtJTkdfREVBQ1RJVkFURV9TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGRpbmcgYSBwYXJ0aWFsIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAgIC5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgICAudW5zdGFraW5nQWRkcmVzcyh0ZXN0RGF0YS5zcGxpdFN0YWtlQWNjb3VudC5wdWIpXG4gICAgICAgICAgLmFtb3VudCgnMTAwMDAwJylcbiAgICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ0RlYWN0aXZhdGUnLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgICAgICBzdGFraW5nQWRkcmVzczogc3Rha2VBY2NvdW50LnB1YixcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgdW5zdGFraW5nQWRkcmVzczogdGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQucHViLFxuICAgICAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk5BVElWRSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19QQVJUSUFMX0RFQUNUSVZBVEVfU0lHTkVEX1RYKTtcblxuICAgICAgICBjb25zdCB0eDIgPSBhd2FpdCBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19QQVJUSUFMX0RFQUNUSVZBVEVfU0lHTkVEX1RYKS5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24yID0gdHgyLnRvSnNvbigpO1xuICAgICAgICB0eDIudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICBkZWxldGUgdHhbJ19pZCddO1xuICAgICAgICBkZWxldGUgdHgyWydfaWQnXTtcblxuICAgICAgICAvLyBzaG91bGQuZGVlcEVxdWFsKHR4LCB0eDIpIC8vIF91c2VUb2tlbkFkZHJlc3NUb2tlbk5hbWUgdHJ1ZSBmb3IgdHgyXG4gICAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uMiwgdHhKc29uMik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdNYXJpbmFkZSBzdGFraW5nIGRlYWN0aXZhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJpbmFkZVJlY2lwaWVudHNPYmplY3Q6IFJlY2lwaWVudFtdID0gW107XG4gICAgICBtYXJpbmFkZVJlY2lwaWVudHNPYmplY3QucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6ICdvcE5TOEVOcEVNV2RYY0pVZ0pDc0pURHA3YXJUWGF5b0JFZUJVZzZVZXpQJyxcbiAgICAgICAgYW1vdW50OiAnMjMwMDAwMCcsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbWFyaW5hZGVNZW1vID0gYHtcIlByZXBhcmVGb3JSZXZva2VcIjp7XCJ1c2VyXCI6XCIke3dhbGxldC5wdWJ9XCIsXCJhbW91bnRcIjpcIjUwMDAwMDAwMDAwMFwifX1gO1xuXG4gICAgICBpdCgnTWFyaW5hZGU6IGJ1aWxkIGFuZCBzaWduIGEgc3Rha2luZyBkZWFjdGl2YXRlIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdCh7XG4gICAgICAgICAgbWFrZVVuc2lnbmVkQnVpbGRlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgICAgICAgIHR4QnVpbGRlclxuICAgICAgICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgICAgICAgIC5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKVxuICAgICAgICAgICAgICAuc3Rha2luZ1R5cGUoU29sU3Rha2luZ1R5cGVFbnVtLk1BUklOQURFKVxuICAgICAgICAgICAgICAubWVtbyhtYXJpbmFkZU1lbW8pXG4gICAgICAgICAgICAgIC5yZWNpcGllbnRzKG1hcmluYWRlUmVjaXBpZW50c09iamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2lnbkJ1aWxkZXI6IHNpZ25CdWlsZGVyTmF0aXZlLFxuICAgICAgICAgIGFkZFNpZ25hdHVyZXM6IGFkZFNpZ25hdHVyZXNOYXRpdmUsXG4gICAgICAgICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbjogKHR4OiBCYXNlVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICAgICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgIG1lbW86IG1hcmluYWRlTWVtbyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdNZW1vJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdEZWFjdGl2YXRlJyxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgIGZyb21BZGRyZXNzOiAnJyxcbiAgICAgICAgICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiAnJyxcbiAgICAgICAgICAgICAgICAgIHN0YWtpbmdUeXBlOiBTb2xTdGFraW5nVHlwZUVudW0uTUFSSU5BREUsXG4gICAgICAgICAgICAgICAgICByZWNpcGllbnRzOiBtYXJpbmFkZVJlY2lwaWVudHNPYmplY3QsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAga25vd25SYXdUeDogdGVzdERhdGEuTUFSSU5BREVfU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdKaXRvIHN0YWtpbmcgZGVhY3RpdmF0ZScsICgpID0+IHtcbiAgICAgIGl0KCdKaXRvOiBidWlsZCBhbmQgc2lnbiBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNmZXJBdXRob3JpdHkgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5zcGxpdFN0YWtlQWNjb3VudCkuZ2V0S2V5cygpO1xuXG4gICAgICAgIGF3YWl0IHBlcmZvcm1UZXN0KHtcbiAgICAgICAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgICAgICAgdHhCdWlsZGVyXG4gICAgICAgICAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgICAgICAgICAgLnN0YWtpbmdBZGRyZXNzKEpJVE9fU1RBS0VfUE9PTF9BRERSRVNTKVxuICAgICAgICAgICAgICAudW5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKVxuICAgICAgICAgICAgICAuc3Rha2luZ1R5cGUoU29sU3Rha2luZ1R5cGVFbnVtLkpJVE8pXG4gICAgICAgICAgICAgIC5leHRyYVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yQWRkcmVzczogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX1ZBTElEQVRPUl9BRERSRVNTLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyQXV0aG9yaXR5QWRkcmVzczogdHJhbnNmZXJBdXRob3JpdHkucHViLFxuICAgICAgICAgICAgICAgIHN0YWtlUG9vbERhdGE6IHtcbiAgICAgICAgICAgICAgICAgIG1hbmFnZXJGZWVBY2NvdW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQubWFuYWdlckZlZUFjY291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHBvb2xNaW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQucG9vbE1pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckxpc3RBY2NvdW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQudmFsaWRhdG9yTGlzdC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hbW91bnQoJzEwMDAnKVxuICAgICAgICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaWduQnVpbGRlcjogKHR4QnVpbGRlcjogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKSA9PiB7XG4gICAgICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBzdGFrZUFjY291bnQucHJ2IH0pO1xuICAgICAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRyYW5zZmVyQXV0aG9yaXR5LnBydiB9KTtcbiAgICAgICAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhZGRTaWduYXR1cmVzOiAodHhCdWlsZGVyOiBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIsIHNpZ25hdHVyZTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHR4QnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHdhbGxldC5wdWIgfSwgQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoc2lnbmF0dXJlWzBdKSkpO1xuICAgICAgICAgICAgdHhCdWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc3Rha2VBY2NvdW50LnB1YiB9LCBCdWZmZXIuZnJvbShiczU4LmRlY29kZShzaWduYXR1cmVbMV0pKSk7XG4gICAgICAgICAgICB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiB0cmFuc2ZlckF1dGhvcml0eS5wdWIgfSwgQnVmZmVyLmZyb20oYnM1OC5kZWNvZGUoc2lnbmF0dXJlWzJdKSkpO1xuICAgICAgICAgICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb246ICh0eDogQmFzZVRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgICAgIHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0RlYWN0aXZhdGUnLFxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgZnJvbUFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgICAgICAgICBzdGFraW5nQWRkcmVzczogSklUT19TVEFLRV9QT09MX0FERFJFU1MsXG4gICAgICAgICAgICAgICAgICB1bnN0YWtpbmdBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMCcsXG4gICAgICAgICAgICAgICAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLkpJVE8sXG4gICAgICAgICAgICAgICAgICBleHRyYVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JBZGRyZXNzOiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfVkFMSURBVE9SX0FERFJFU1MsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyQXV0aG9yaXR5QWRkcmVzczogdHJhbnNmZXJBdXRob3JpdHkucHViLFxuICAgICAgICAgICAgICAgICAgICBzdGFrZVBvb2xEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbWFuYWdlckZlZUFjY291bnQ6IHRlc3REYXRhLkpJVE9fU1RBS0VfUE9PTF9EQVRBX1BBUlNFRC5tYW5hZ2VyRmVlQWNjb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgIHBvb2xNaW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQucG9vbE1pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JMaXN0QWNjb3VudDogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELnZhbGlkYXRvckxpc3QudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgdHguaW5wdXRzLnNob3VsZC5kZWVwRXF1YWwoW10pO1xuICAgICAgICAgICAgdHgub3V0cHV0cy5zaG91bGQuZGVlcEVxdWFsKFtdKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtub3duUmF3VHg6IHRlc3REYXRhLkpJVE9fU1RBS0lOR19ERUFDVElWQVRFX1NJR05FRF9UWCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Nob3VsZCBmYWlsJywgKCkgPT4ge1xuICAgIGl0KCdidWlsZGluZyBhIHN0YWtpbmcgZGVhY3RpdmF0ZSB0eCB3aXRob3V0IHN0YWtpbmcgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1N0YWtpbmcgYWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGRpbmcgYSBzdGFraW5nIGRlYWN0aXZhdGUgdHggd2l0aCBhIHdyb25nIHN0YWtpbmcgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLnN0YWtpbmdBZGRyZXNzKGludmFsaWRQdWJLZXkpKS50aHJvd0Vycm9yKFxuICAgICAgICBgSW52YWxpZCBvciBtaXNzaW5nIHN0YWtpbmdBZGRyZXNzLCBnb3Q6ICR7aW52YWxpZFB1YktleX1gXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkaW5nIGEgc3Rha2luZyBkZWFjdGl2YXRlIHR4IHdpdGggdGhlIHNhbWUgYWRkcmVzcyBhcyBzZW5kZXIgYW5kIHN0YWtpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKS5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdBZGRyZXNzKHdhbGxldC5wdWIpO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLnJlamVjdGVkV2l0aCgnU2VuZGVyIGFkZHJlc3MgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBTdGFraW5nIGFkZHJlc3MnKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZGluZyBhIHBhcnRpYWwgc3Rha2luZyBkZWFjdGl2YXRlIHR4IHdpdGhvdXQgYW4gYW1vdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeVxuICAgICAgICAuZ2V0U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih3YWxsZXQucHViKVxuICAgICAgICAubm9uY2UocmVjZW50QmxvY2tIYXNoKVxuICAgICAgICAuc3Rha2luZ0FkZHJlc3ModGVzdERhdGEuc3Rha2VBY2NvdW50LnB1YilcbiAgICAgICAgLnVuc3Rha2luZ0FkZHJlc3ModGVzdERhdGEuc3BsaXRTdGFrZUFjY291bnQucHViKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXJcbiAgICAgICAgLmJ1aWxkKClcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgJ0lmIGFuIHVuc3Rha2luZyBhZGRyZXNzIGlzIGdpdmVuIHRoZW4gYSBwYXJ0aWFsIGFtb3VudCB0byB1bnN0YWtlIG11c3QgYWxzbyBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbidcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZGluZyBhIHBhcnRpYWwgc3Rha2luZyBkZWFjdGl2YXRlIHR4IHdpdGhvdXQgYW4gdW5zdGFraW5nIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5XG4gICAgICAgIC5nZXRTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIoKVxuICAgICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAgIC5ub25jZShyZWNlbnRCbG9ja0hhc2gpXG4gICAgICAgIC5zdGFraW5nQWRkcmVzcyh0ZXN0RGF0YS5zdGFrZUFjY291bnQucHViKVxuICAgICAgICAuYW1vdW50KCcxMCcpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlclxuICAgICAgICAuYnVpbGQoKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAnV2hlbiBwYXJ0aWFsbHkgdW5zdGFraW5nIHRoZSB1bnN0YWtpbmcgYWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJ1xuICAgICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19