@bitgo/sdk-coin-stx 3.13.0 → 3.13.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sbtcWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/sbtcWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAoD,MAAM,gBAAgB,CAAC;AAiB1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,qBAAa,mBAAoB,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,eAAe,CAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;OAEG;WACW,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAS1G;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAc1C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAuClC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAqB3D,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,6BAA6B;CAqBtC"}
1
+ {"version":3,"file":"sbtcWithdrawBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/sbtcWithdrawBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAoD,MAAM,gBAAgB,CAAC;AAiB1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMpE,qBAAa,mBAAoB,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,eAAe,CAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;OAEG;WACW,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAS1G;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAc1C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAuClC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAqB3D,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,6BAA6B;CAqBtC"}
@@ -14,7 +14,6 @@ const abstractContractBuilder_1 = require("./abstractContractBuilder");
14
14
  const btcAddressUtils_1 = require("./btcAddressUtils");
15
15
  const SBTC_TOKEN_CONTRACT_NAME = 'sbtc-token';
16
16
  const SBTC_TOKEN_ASSET_NAME = 'sbtc-token';
17
- const HASHBYTES_BUFFER_LENGTH = 32;
18
17
  class SbtcWithdrawBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
19
18
  constructor(_coinConfig) {
20
19
  super(_coinConfig);
@@ -101,18 +100,11 @@ class SbtcWithdrawBuilder extends abstractContractBuilder_1.AbstractContractBuil
101
100
  }
102
101
  withdrawParamsToFunctionArgs(params) {
103
102
  const decoded = (0, btcAddressUtils_1.decodeBtcAddress)(params.btcAddress);
104
- // Pad 20-byte hashes to 32 bytes with trailing zeros per sBTC contract spec (buff 32)
105
- let hashBytes = decoded.hashBytes;
106
- if (hashBytes.length < HASHBYTES_BUFFER_LENGTH) {
107
- const padded = Buffer.alloc(HASHBYTES_BUFFER_LENGTH, 0);
108
- hashBytes.copy(padded);
109
- hashBytes = padded;
110
- }
111
103
  return [
112
104
  (0, transactions_1.uintCV)(params.amount),
113
105
  (0, transactions_1.tupleCV)({
114
106
  version: (0, transactions_1.bufferCV)(Buffer.from([decoded.version])),
115
- hashbytes: (0, transactions_1.bufferCV)(hashBytes),
107
+ hashbytes: (0, transactions_1.bufferCV)(decoded.hashBytes),
116
108
  }),
117
109
  (0, transactions_1.uintCV)(params.maxFee),
118
110
  ];
@@ -129,4 +121,4 @@ class SbtcWithdrawBuilder extends abstractContractBuilder_1.AbstractContractBuil
129
121
  }
130
122
  }
131
123
  exports.SbtcWithdrawBuilder = SbtcWithdrawBuilder;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBMEc7QUFDMUcsa0RBQTJCO0FBQzNCLHVEQWE4QjtBQUM5Qiw4Q0FBd0Q7QUFFeEQsbUNBQWtFO0FBRWxFLDJDQUErRjtBQUUvRix1RUFBb0U7QUFDcEUsdURBQXdFO0FBRXhFLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO0FBQzlDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBQzNDLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBRW5DLE1BQWEsbUJBQW9CLFNBQVEsaURBQXVCO0lBSTlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsb0JBQWUsR0FBRyxLQUFLLENBQUM7SUFJaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDZCQUE2QjtZQUN0RSxJQUFBLDhCQUFlLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyx5Q0FBNkIsS0FBSyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDOUQsNkNBQWlDLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsTUFBMEI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDN0UsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFH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RSxxQkFBcUIsQ0FBQyxDQUN0RjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEvSUQsa0RBK0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQge1xuICBBZGRyZXNzSGFzaE1vZGUsXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIGJ1ZmZlckNWLFxuICBDbGFyaXR5VHlwZSxcbiAgY3JlYXRlQXNzZXRJbmZvLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIG1ha2VTdGFuZGFyZEZ1bmdpYmxlUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIHR1cGxlQ1YsXG4gIHVpbnRDVixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsIGlzVmFsaWRBbW91bnQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNidGNXaXRoZHJhd1BhcmFtcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUwsIEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnRyYWN0Q2FsbFBheWxvYWQgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucy9kaXN0L3BheWxvYWQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIgfSBmcm9tICcuL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyJztcbmltcG9ydCB7IGRlY29kZUJ0Y0FkZHJlc3MsIGlzVmFsaWRCdGNBZGRyZXNzIH0gZnJvbSAnLi9idGNBZGRyZXNzVXRpbHMnO1xuXG5jb25zdCBTQlRDX1RPS0VOX0NPTlRSQUNUX05BTUUgPSAnc2J0Yy10b2tlbic7XG5jb25zdCBTQlRDX1RPS0VOX0FTU0VUX05BTUUgPSAnc2J0Yy10b2tlbic7XG5jb25zdCBIQVNIQllURVNfQlVGRkVSX0xFTkdUSCA9IDMyO1xuXG5leHBvcnQgY2xhc3MgU2J0Y1dpdGhkcmF3QnVpbGRlciBleHRlbmRzIEFic3RyYWN0Q29udHJhY3RCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfd2l0aGRyYXdQYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfaXNEZXNlcmlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGRlc2VyaWFsaXplZCBjb250cmFjdC1jYWxsIHBheWxvYWQgbWF0Y2hlcyB0aGUgc0JUQyB3aXRoZHJhd2FsIGNvbnRyYWN0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQ29udHJhY3RDYWxsKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBwYXlsb2FkOiBDb250cmFjdENhbGxQYXlsb2FkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zYnRjV2l0aGRyYXdhbENvbnRyYWN0QWRkcmVzcyA9PT1cbiAgICAgICAgYWRkcmVzc1RvU3RyaW5nKHBheWxvYWQuY29udHJhY3RBZGRyZXNzKSAmJlxuICAgICAgQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUwgPT09IHBheWxvYWQuY29udHJhY3ROYW1lLmNvbnRlbnQgJiZcbiAgICAgIEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTCA9PT0gcGF5bG9hZC5mdW5jdGlvbk5hbWUuY29udGVudFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHdpdGhkcmF3YWwgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtTYnRjV2l0aGRyYXdQYXJhbXN9IHBhcmFtcyAtIGFtb3VudCAoc2F0b3NoaXMpLCBidGNBZGRyZXNzLCBtYXhGZWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICB3aXRoZHJhdyhwYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyk6IHRoaXMge1xuICAgIGlmICghcGFyYW1zLmFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChwYXJhbXMuYW1vdW50KSB8fCBwYXJhbXMuYW1vdW50ID09PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIHBhcmFtcy5hbW91bnQpO1xuICAgIH1cbiAgICBpZiAoIXBhcmFtcy5idGNBZGRyZXNzIHx8ICFpc1ZhbGlkQnRjQWRkcmVzcyhwYXJhbXMuYnRjQWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBidGNBZGRyZXNzLCBnb3Q6ICcgKyBwYXJhbXMuYnRjQWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghcGFyYW1zLm1heEZlZSB8fCAhaXNWYWxpZEFtb3VudChwYXJhbXMubWF4RmVlKSB8fCBwYXJhbXMubWF4RmVlID09PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBtYXhGZWUsIGdvdDogJyArIHBhcmFtcy5tYXhGZWUpO1xuICAgIH1cbiAgICB0aGlzLl93aXRoZHJhd1BhcmFtcyA9IHBhcmFtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCBwYXlsb2FkID0gdHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkO1xuICAgIGNvbnN0IGFyZ3MgPSBwYXlsb2FkLmZ1bmN0aW9uQXJncztcblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBudW1iZXIgb2YgZnVuY3Rpb24gYXJncyBmb3Igc0JUQyB3aXRoZHJhd2FsJyk7XG4gICAgfVxuXG4gICAgLy8gYXJnc1swXSA9IHVpbnQgKGFtb3VudClcbiAgICBpZiAoYXJnc1swXS50eXBlICE9PSBDbGFyaXR5VHlwZS5VSW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCB1aW50IGZvciBhbW91bnQgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgYW1vdW50ID0gYXJnc1swXS52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgLy8gYXJnc1sxXSA9IHR1cGxlIHsgdmVyc2lvbjogKGJ1ZmYgMSksIGhhc2hieXRlczogKGJ1ZmYgMzIpIH1cbiAgICBpZiAoYXJnc1sxXS50eXBlICE9PSBDbGFyaXR5VHlwZS5UdXBsZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRXhwZWN0ZWQgdHVwbGUgZm9yIHJlY2lwaWVudCBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uQnVmID0gYXJnc1sxXS5kYXRhWyd2ZXJzaW9uJ107XG4gICAgY29uc3QgaGFzaGJ5dGVzQnVmID0gYXJnc1sxXS5kYXRhWydoYXNoYnl0ZXMnXTtcbiAgICBpZiAodmVyc2lvbkJ1Zj8udHlwZSAhPT0gQ2xhcml0eVR5cGUuQnVmZmVyIHx8IGhhc2hieXRlc0J1Zj8udHlwZSAhPT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCBidWZmZXIgZmllbGRzIGluIHJlY2lwaWVudCB0dXBsZScpO1xuICAgIH1cblxuICAgIC8vIGFyZ3NbMl0gPSB1aW50IChtYXgtZmVlKVxuICAgIGlmIChhcmdzWzJdLnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIHVpbnQgZm9yIG1heC1mZWUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RmVlID0gYXJnc1syXS52YWx1ZS50b1N0cmluZygpO1xuXG4gICAgdGhpcy5fd2l0aGRyYXdQYXJhbXMgPSB7XG4gICAgICBhbW91bnQsXG4gICAgICBidGNBZGRyZXNzOiAnJywgLy8gbm90IG5lZWRlZCBmb3IgcmVidWlsZDsgZnVuY3Rpb24gYXJncyBhcmUgcHJlc2VydmVkIGZyb20gdGhlIG9yaWdpbmFsIHR4XG4gICAgICBtYXhGZWUsXG4gICAgfTtcbiAgICB0aGlzLl9pc0Rlc2VyaWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fd2l0aGRyYXdQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1dpdGhkcmF3YWwgcGFyYW1zIGFyZSBub3Qgc2V0LiBVc2Ugd2l0aGRyYXcoKSB0byBzZXQgdGhlbS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaztcbiAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBuZXR3b3JrLnNidGNXaXRoZHJhd2FsQ29udHJhY3RBZGRyZXNzO1xuICAgIHRoaXMuX2NvbnRyYWN0TmFtZSA9IENPTlRSQUNUX05BTUVfU0JUQ19XSVRIRFJBV0FMO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTDtcblxuICAgIC8vIEZvciBkZXNlcmlhbGl6ZWQgdHJhbnNhY3Rpb25zLCBmdW5jdGlvbiBhcmdzIGFyZSBhbHJlYWR5IHByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW5hbCB0eC5cbiAgICAvLyBGb3IgZnJlc2ggYnVpbGRzLCBjb25zdHJ1Y3QgdGhlbSBmcm9tIHRoZSB3aXRoZHJhdyBwYXJhbXMuXG4gICAgaWYgKCF0aGlzLl9pc0Rlc2VyaWFsaXplZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdGhpcy53aXRoZHJhd1BhcmFtc1RvRnVuY3Rpb25BcmdzKHRoaXMuX3dpdGhkcmF3UGFyYW1zKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9uTW9kZSA9IFBvc3RDb25kaXRpb25Nb2RlLkRlbnk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbnMgPSB0aGlzLndpdGhkcmF3UGFyYW1zVG9Qb3N0Q29uZGl0aW9uKHRoaXMuX3dpdGhkcmF3UGFyYW1zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSB3aXRoZHJhd1BhcmFtc1RvRnVuY3Rpb25BcmdzKHBhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zKSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZUJ0Y0FkZHJlc3MocGFyYW1zLmJ0Y0FkZHJlc3MpO1xuXG4gICAgLy8gUGFkIDIwLWJ5dGUgaGFzaGVzIHRvIDMyIGJ5dGVzIHdpdGggdHJhaWxpbmcgemVyb3MgcGVyIHNCVEMgY29udHJhY3Qgc3BlYyAoYnVmZiAzMilcbiAgICBsZXQgaGFzaEJ5dGVzID0gZGVjb2RlZC5oYXNoQnl0ZXM7XG4gICAgaWYgKGhhc2hCeXRlcy5sZW5ndGggPCBIQVNIQllURVNfQlVGRkVSX0xFTkdUSCkge1xuICAgICAgY29uc3QgcGFkZGVkID0gQnVmZmVyLmFsbG9jKEhBU0hCWVRFU19CVUZGRVJfTEVOR1RILCAwKTtcbiAgICAgIGhhc2hCeXRlcy5jb3B5KHBhZGRlZCk7XG4gICAgICBoYXNoQnl0ZXMgPSBwYWRkZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIHVpbnRDVihwYXJhbXMuYW1vdW50KSxcbiAgICAgIHR1cGxlQ1Yoe1xuICAgICAgICB2ZXJzaW9uOiBidWZmZXJDVihCdWZmZXIuZnJvbShbZGVjb2RlZC52ZXJzaW9uXSkpLFxuICAgICAgICBoYXNoYnl0ZXM6IGJ1ZmZlckNWKGhhc2hCeXRlcyksXG4gICAgICB9KSxcbiAgICAgIHVpbnRDVihwYXJhbXMubWF4RmVlKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSB3aXRoZHJhd1BhcmFtc1RvUG9zdENvbmRpdGlvbihwYXJhbXM6IFNidGNXaXRoZHJhd1BhcmFtcyk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3QgYW1vdW50ID0gbmV3IEJpZ051bShwYXJhbXMuYW1vdW50KS5hZGQobmV3IEJpZ051bShwYXJhbXMubWF4RmVlKSk7XG4gICAgY29uc3QgbmV0d29yayA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcms7XG4gICAgY29uc3Qgc2J0Y0NvbnRyYWN0QWRkcmVzcyA9IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3M7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkRnVuZ2libGVQb3N0Q29uZGl0aW9uKFxuICAgICAgICBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMoXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMsXG4gICAgICAgICAgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVRcbiAgICAgICAgICAgID8gQWRkcmVzc1ZlcnNpb24uTWFpbm5ldE11bHRpU2lnXG4gICAgICAgICAgICA6IEFkZHJlc3NWZXJzaW9uLlRlc3RuZXRNdWx0aVNpZyxcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxID8gQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyU0ggOiBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJQS0gsXG4gICAgICAgICAgdGhpcy5fbnVtYmVyU2lnbmF0dXJlc1xuICAgICAgICApLmFkZHJlc3MsXG4gICAgICAgIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZS5FcXVhbCxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBjcmVhdGVBc3NldEluZm8oc2J0Y0NvbnRyYWN0QWRkcmVzcywgU0JUQ19UT0tFTl9DT05UUkFDVF9OQU1FLCBTQlRDX1RPS0VOX0FTU0VUX05BTUUpXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBMEc7QUFDMUcsa0RBQTJCO0FBQzNCLHVEQWE4QjtBQUM5Qiw4Q0FBd0Q7QUFFeEQsbUNBQWtFO0FBRWxFLDJDQUErRjtBQUUvRix1RUFBb0U7QUFDcEUsdURBQXdFO0FBRXhFLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDO0FBQzlDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBRTNDLE1BQWEsbUJBQW9CLFNBQVEsaURBQXVCO0lBSTlELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSGIsb0JBQWUsR0FBRyxLQUFLLENBQUM7SUFJaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQWdDLEVBQUUsT0FBNEI7UUFDOUYsT0FBTyxDQUNKLFVBQVUsQ0FBQyxPQUE4QixDQUFDLDZCQUE2QjtZQUN0RSxJQUFBLDhCQUFlLEVBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyx5Q0FBNkIsS0FBSyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDOUQsNkNBQWlDLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsTUFBMEI7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLHFCQUFhLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDN0UsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtDQUFrQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RixD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QTBCO1FBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUE2QixDQUFDO1FBQy9ELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLDZCQUE2QixDQUFDO1FBRWxFLE9BQU87WUFDTCxJQUFBLGdEQUFpQyxFQUMvQixJQUFBLGdDQUF3QixFQUN0QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQVcsQ0FBQyxPQUFPO2dCQUNuRCxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlO2dCQUNoQyxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlLEVBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsY0FBYyxFQUM3RixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUMsT0FBTyxFQUNULG9DQUFxQixDQUFDLEtBQUssRUFDM0IsTUFBTSxFQUNOLElBQUEsOEJBQWUsRUFBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUN0RjtTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0SUQsa0RBc0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUsIFN0YWNrc05ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQge1xuICBBZGRyZXNzSGFzaE1vZGUsXG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQWRkcmVzc1ZlcnNpb24sXG4gIGJ1ZmZlckNWLFxuICBDbGFyaXR5VHlwZSxcbiAgY3JlYXRlQXNzZXRJbmZvLFxuICBGdW5naWJsZUNvbmRpdGlvbkNvZGUsXG4gIG1ha2VTdGFuZGFyZEZ1bmdpYmxlUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbixcbiAgUG9zdENvbmRpdGlvbk1vZGUsXG4gIHR1cGxlQ1YsXG4gIHVpbnRDVixcbn0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBnZXRTVFhBZGRyZXNzRnJvbVB1YktleXMsIGlzVmFsaWRBbW91bnQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFNidGNXaXRoZHJhd1BhcmFtcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUwsIEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnRyYWN0Q2FsbFBheWxvYWQgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucy9kaXN0L3BheWxvYWQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIgfSBmcm9tICcuL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyJztcbmltcG9ydCB7IGRlY29kZUJ0Y0FkZHJlc3MsIGlzVmFsaWRCdGNBZGRyZXNzIH0gZnJvbSAnLi9idGNBZGRyZXNzVXRpbHMnO1xuXG5jb25zdCBTQlRDX1RPS0VOX0NPTlRSQUNUX05BTUUgPSAnc2J0Yy10b2tlbic7XG5jb25zdCBTQlRDX1RPS0VOX0FTU0VUX05BTUUgPSAnc2J0Yy10b2tlbic7XG5cbmV4cG9ydCBjbGFzcyBTYnRjV2l0aGRyYXdCdWlsZGVyIGV4dGVuZHMgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIge1xuICBwcml2YXRlIF93aXRoZHJhd1BhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9pc0Rlc2VyaWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB3aGV0aGVyIGEgZGVzZXJpYWxpemVkIGNvbnRyYWN0LWNhbGwgcGF5bG9hZCBtYXRjaGVzIHRoZSBzQlRDIHdpdGhkcmF3YWwgY29udHJhY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRDb250cmFjdENhbGwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4sIHBheWxvYWQ6IENvbnRyYWN0Q2FsbFBheWxvYWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGNvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNidGNXaXRoZHJhd2FsQ29udHJhY3RBZGRyZXNzID09PVxuICAgICAgICBhZGRyZXNzVG9TdHJpbmcocGF5bG9hZC5jb250cmFjdEFkZHJlc3MpICYmXG4gICAgICBDT05UUkFDVF9OQU1FX1NCVENfV0lUSERSQVdBTCA9PT0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCAmJlxuICAgICAgRlVOQ1RJT05fTkFNRV9JTklUSUFURV9XSVRIRFJBV0FMID09PSBwYXlsb2FkLmZ1bmN0aW9uTmFtZS5jb250ZW50XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgd2l0aGRyYXdhbCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1NidGNXaXRoZHJhd1BhcmFtc30gcGFyYW1zIC0gYW1vdW50IChzYXRvc2hpcyksIGJ0Y0FkZHJlc3MsIG1heEZlZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHdpdGhkcmF3KHBhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFwYXJhbXMuYW1vdW50IHx8ICFpc1ZhbGlkQW1vdW50KHBhcmFtcy5hbW91bnQpIHx8IHBhcmFtcy5hbW91bnQgPT09ICcwJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFtb3VudCwgZ290OiAnICsgcGFyYW1zLmFtb3VudCk7XG4gICAgfVxuICAgIGlmICghcGFyYW1zLmJ0Y0FkZHJlc3MgfHwgIWlzVmFsaWRCdGNBZGRyZXNzKHBhcmFtcy5idGNBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGJ0Y0FkZHJlc3MsIGdvdDogJyArIHBhcmFtcy5idGNBZGRyZXNzKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMubWF4RmVlIHx8ICFpc1ZhbGlkQW1vdW50KHBhcmFtcy5tYXhGZWUpIHx8IHBhcmFtcy5tYXhGZWUgPT09ICcwJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIG1heEZlZSwgZ290OiAnICsgcGFyYW1zLm1heEZlZSk7XG4gICAgfVxuICAgIHRoaXMuX3dpdGhkcmF3UGFyYW1zID0gcGFyYW1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0eC5zdHhUcmFuc2FjdGlvbi5wYXlsb2FkIGFzIENvbnRyYWN0Q2FsbFBheWxvYWQ7XG4gICAgY29uc3QgYXJncyA9IHBheWxvYWQuZnVuY3Rpb25BcmdzO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG51bWJlciBvZiBmdW5jdGlvbiBhcmdzIGZvciBzQlRDIHdpdGhkcmF3YWwnKTtcbiAgICB9XG5cbiAgICAvLyBhcmdzWzBdID0gdWludCAoYW1vdW50KVxuICAgIGlmIChhcmdzWzBdLnR5cGUgIT09IENsYXJpdHlUeXBlLlVJbnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIHVpbnQgZm9yIGFtb3VudCBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBjb25zdCBhbW91bnQgPSBhcmdzWzBdLnZhbHVlLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBhcmdzWzFdID0gdHVwbGUgeyB2ZXJzaW9uOiAoYnVmZiAxKSwgaGFzaGJ5dGVzOiAoYnVmZiAzMikgfVxuICAgIGlmIChhcmdzWzFdLnR5cGUgIT09IENsYXJpdHlUeXBlLlR1cGxlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCB0dXBsZSBmb3IgcmVjaXBpZW50IGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25CdWYgPSBhcmdzWzFdLmRhdGFbJ3ZlcnNpb24nXTtcbiAgICBjb25zdCBoYXNoYnl0ZXNCdWYgPSBhcmdzWzFdLmRhdGFbJ2hhc2hieXRlcyddO1xuICAgIGlmICh2ZXJzaW9uQnVmPy50eXBlICE9PSBDbGFyaXR5VHlwZS5CdWZmZXIgfHwgaGFzaGJ5dGVzQnVmPy50eXBlICE9PSBDbGFyaXR5VHlwZS5CdWZmZXIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIGJ1ZmZlciBmaWVsZHMgaW4gcmVjaXBpZW50IHR1cGxlJyk7XG4gICAgfVxuXG4gICAgLy8gYXJnc1syXSA9IHVpbnQgKG1heC1mZWUpXG4gICAgaWYgKGFyZ3NbMl0udHlwZSAhPT0gQ2xhcml0eVR5cGUuVUludCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRXhwZWN0ZWQgdWludCBmb3IgbWF4LWZlZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBjb25zdCBtYXhGZWUgPSBhcmdzWzJdLnZhbHVlLnRvU3RyaW5nKCk7XG5cbiAgICB0aGlzLl93aXRoZHJhd1BhcmFtcyA9IHtcbiAgICAgIGFtb3VudCxcbiAgICAgIGJ0Y0FkZHJlc3M6ICcnLCAvLyBub3QgbmVlZGVkIGZvciByZWJ1aWxkOyBmdW5jdGlvbiBhcmdzIGFyZSBwcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgdHhcbiAgICAgIG1heEZlZSxcbiAgICB9O1xuICAgIHRoaXMuX2lzRGVzZXJpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgaWYgKCF0aGlzLl93aXRoZHJhd1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignV2l0aGRyYXdhbCBwYXJhbXMgYXJlIG5vdCBzZXQuIFVzZSB3aXRoZHJhdygpIHRvIHNldCB0aGVtLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ldHdvcmsgPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrO1xuICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IG5ldHdvcmsuc2J0Y1dpdGhkcmF3YWxDb250cmFjdEFkZHJlc3M7XG4gICAgdGhpcy5fY29udHJhY3ROYW1lID0gQ09OVFJBQ1RfTkFNRV9TQlRDX1dJVEhEUkFXQUw7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gRlVOQ1RJT05fTkFNRV9JTklUSUFURV9XSVRIRFJBV0FMO1xuXG4gICAgLy8gRm9yIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbnMsIGZ1bmN0aW9uIGFyZ3MgYXJlIGFscmVhZHkgcHJlc2VydmVkIGZyb20gdGhlIG9yaWdpbmFsIHR4LlxuICAgIC8vIEZvciBmcmVzaCBidWlsZHMsIGNvbnN0cnVjdCB0aGVtIGZyb20gdGhlIHdpdGhkcmF3IHBhcmFtcy5cbiAgICBpZiAoIXRoaXMuX2lzRGVzZXJpYWxpemVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbkFyZ3MgPSB0aGlzLndpdGhkcmF3UGFyYW1zVG9GdW5jdGlvbkFyZ3ModGhpcy5fd2l0aGRyYXdQYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlID0gUG9zdENvbmRpdGlvbk1vZGUuRGVueTtcbiAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHRoaXMud2l0aGRyYXdQYXJhbXNUb1Bvc3RDb25kaXRpb24odGhpcy5fd2l0aGRyYXdQYXJhbXMpO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHdpdGhkcmF3UGFyYW1zVG9GdW5jdGlvbkFyZ3MocGFyYW1zOiBTYnRjV2l0aGRyYXdQYXJhbXMpIHtcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlQnRjQWRkcmVzcyhwYXJhbXMuYnRjQWRkcmVzcyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHVpbnRDVihwYXJhbXMuYW1vdW50KSxcbiAgICAgIHR1cGxlQ1Yoe1xuICAgICAgICB2ZXJzaW9uOiBidWZmZXJDVihCdWZmZXIuZnJvbShbZGVjb2RlZC52ZXJzaW9uXSkpLFxuICAgICAgICBoYXNoYnl0ZXM6IGJ1ZmZlckNWKGRlY29kZWQuaGFzaEJ5dGVzKSxcbiAgICAgIH0pLFxuICAgICAgdWludENWKHBhcmFtcy5tYXhGZWUpLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHdpdGhkcmF3UGFyYW1zVG9Qb3N0Q29uZGl0aW9uKHBhcmFtczogU2J0Y1dpdGhkcmF3UGFyYW1zKTogUG9zdENvbmRpdGlvbltdIHtcbiAgICBjb25zdCBhbW91bnQgPSBuZXcgQmlnTnVtKHBhcmFtcy5hbW91bnQpLmFkZChuZXcgQmlnTnVtKHBhcmFtcy5tYXhGZWUpKTtcbiAgICBjb25zdCBuZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIEJpdGdvU3RhY2tzTmV0d29yaztcbiAgICBjb25zdCBzYnRjQ29udHJhY3RBZGRyZXNzID0gbmV0d29yay5zYnRjV2l0aGRyYXdhbENvbnRyYWN0QWRkcmVzcztcblxuICAgIHJldHVybiBbXG4gICAgICBtYWtlU3RhbmRhcmRGdW5naWJsZVBvc3RDb25kaXRpb24oXG4gICAgICAgIGdldFNUWEFkZHJlc3NGcm9tUHViS2V5cyhcbiAgICAgICAgICB0aGlzLl9mcm9tUHViS2V5cyxcbiAgICAgICAgICB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuTUFJTk5FVFxuICAgICAgICAgICAgPyBBZGRyZXNzVmVyc2lvbi5NYWlubmV0TXVsdGlTaWdcbiAgICAgICAgICAgIDogQWRkcmVzc1ZlcnNpb24uVGVzdG5ldE11bHRpU2lnLFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA+IDEgPyBBZGRyZXNzSGFzaE1vZGUuU2VyaWFsaXplUDJTSCA6IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlBLSCxcbiAgICAgICAgICB0aGlzLl9udW1iZXJTaWduYXR1cmVzXG4gICAgICAgICkuYWRkcmVzcyxcbiAgICAgICAgRnVuZ2libGVDb25kaXRpb25Db2RlLkVxdWFsLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGNyZWF0ZUFzc2V0SW5mbyhzYnRjQ29udHJhY3RBZGRyZXNzLCBTQlRDX1RPS0VOX0NPTlRSQUNUX05BTUUsIFNCVENfVE9LRU5fQVNTRVRfTkFNRSlcbiAgICAgICksXG4gICAgXTtcbiAgfVxufVxuIl19
@@ -83,6 +83,17 @@ describe('Stacks: sBTC Withdraw Builder', function () {
83
83
  should_1.default.exist(txJson.payload);
84
84
  txJson.payload.should.have.property('contractName', 'sbtc-withdrawal');
85
85
  txJson.payload.should.have.property('functionName', 'initiate-withdrawal-request');
86
+ // Verify hashbytes is 20 bytes for P2PKH
87
+ const payload = tx.stxTransaction.payload;
88
+ const recipientTuple = payload.functionArgs[1];
89
+ should_1.default.equal(recipientTuple.type, transactions_1.ClarityType.Tuple);
90
+ if (recipientTuple.type === transactions_1.ClarityType.Tuple) {
91
+ const hashbytes = recipientTuple.data['hashbytes'];
92
+ should_1.default.equal(hashbytes.type, transactions_1.ClarityType.Buffer);
93
+ if (hashbytes.type === transactions_1.ClarityType.Buffer) {
94
+ hashbytes.buffer.length.should.equal(20);
95
+ }
96
+ }
86
97
  });
87
98
  it('a withdrawal with P2SH address', async () => {
88
99
  const builder = initTxBuilder();
@@ -98,6 +109,15 @@ describe('Stacks: sBTC Withdraw Builder', function () {
98
109
  const tx = await builder.build();
99
110
  const txJson = tx.toJson();
100
111
  txJson.payload.should.have.property('functionName', 'initiate-withdrawal-request');
112
+ // Verify hashbytes is 20 bytes for P2SH
113
+ const payload = tx.stxTransaction.payload;
114
+ const recipientTuple = payload.functionArgs[1];
115
+ if (recipientTuple.type === transactions_1.ClarityType.Tuple) {
116
+ const hashbytes = recipientTuple.data['hashbytes'];
117
+ if (hashbytes.type === transactions_1.ClarityType.Buffer) {
118
+ hashbytes.buffer.length.should.equal(20);
119
+ }
120
+ }
101
121
  });
102
122
  it('a withdrawal with P2WPKH (bech32) address', async () => {
103
123
  const builder = initTxBuilder();
@@ -113,6 +133,15 @@ describe('Stacks: sBTC Withdraw Builder', function () {
113
133
  const tx = await builder.build();
114
134
  const txJson = tx.toJson();
115
135
  txJson.payload.should.have.property('functionName', 'initiate-withdrawal-request');
136
+ // Verify hashbytes is 20 bytes for P2WPKH
137
+ const payload = tx.stxTransaction.payload;
138
+ const recipientTuple = payload.functionArgs[1];
139
+ if (recipientTuple.type === transactions_1.ClarityType.Tuple) {
140
+ const hashbytes = recipientTuple.data['hashbytes'];
141
+ if (hashbytes.type === transactions_1.ClarityType.Buffer) {
142
+ hashbytes.buffer.length.should.equal(20);
143
+ }
144
+ }
116
145
  });
117
146
  it('a withdrawal with P2WSH (bech32) address', async () => {
118
147
  const builder = initTxBuilder();
@@ -128,6 +157,15 @@ describe('Stacks: sBTC Withdraw Builder', function () {
128
157
  const tx = await builder.build();
129
158
  const txJson = tx.toJson();
130
159
  txJson.payload.should.have.property('functionName', 'initiate-withdrawal-request');
160
+ // Verify hashbytes is 32 bytes for P2WSH
161
+ const payload = tx.stxTransaction.payload;
162
+ const recipientTuple = payload.functionArgs[1];
163
+ if (recipientTuple.type === transactions_1.ClarityType.Tuple) {
164
+ const hashbytes = recipientTuple.data['hashbytes'];
165
+ if (hashbytes.type === transactions_1.ClarityType.Buffer) {
166
+ hashbytes.buffer.length.should.equal(32);
167
+ }
168
+ }
131
169
  });
132
170
  it('a withdrawal with P2TR (bech32m) address', async () => {
133
171
  const builder = initTxBuilder();
@@ -143,6 +181,15 @@ describe('Stacks: sBTC Withdraw Builder', function () {
143
181
  const tx = await builder.build();
144
182
  const txJson = tx.toJson();
145
183
  txJson.payload.should.have.property('functionName', 'initiate-withdrawal-request');
184
+ // Verify hashbytes is 32 bytes for P2TR
185
+ const payload = tx.stxTransaction.payload;
186
+ const recipientTuple = payload.functionArgs[1];
187
+ if (recipientTuple.type === transactions_1.ClarityType.Tuple) {
188
+ const hashbytes = recipientTuple.data['hashbytes'];
189
+ if (hashbytes.type === transactions_1.ClarityType.Buffer) {
190
+ hashbytes.buffer.length.should.equal(32);
191
+ }
192
+ }
146
193
  });
147
194
  });
148
195
  describe('round-trip: serialize → deserialize → rebuild', function () {
@@ -256,4 +303,4 @@ describe('Stacks: sBTC Withdraw Builder', function () {
256
303
  });
257
304
  });
258
305
  });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qix1REFBNEU7QUFFNUUsOENBQTBEO0FBQzFELDRDQUEwQztBQUMxQyw0Q0FBdUM7QUFFdkMsc0NBQWlEO0FBQ2pELHVEQUF5QztBQUV6QyxRQUFRLENBQUMsK0JBQStCLEVBQUU7SUFDeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQzVCLElBQUksS0FBbUIsQ0FBQztJQUV4QixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBTSxDQUFDLHlCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUU5RSxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUs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LENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUM1RCxNQUFNLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZ0NBQWlCLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBaUIsQ0FBQyxDQUFDO2dCQUNyRCxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBwdWJLZXlmcm9tUHJpdktleSwgcHVibGljS2V5VG9TdHJpbmcgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5cbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbmltcG9ydCB7IFN0eCwgVHN0eCwgU3R4TGliIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdTdGFja3M6IHNCVEMgV2l0aGRyYXcgQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbk5hbWVUZXN0ID0gJ3RzdHgnO1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcblxuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7XG4gICAgICBlbnY6ICdtb2NrJyxcbiAgICB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3N0eCcsIFN0eC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0c3R4JywgVHN0eC5jcmVhdGVJbnN0YW5jZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzQlRDIFdpdGhkcmF3IEJ1aWxkZXInLCAoKSA9PiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IG5ldyBTdHhMaWIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoY29pbk5hbWVUZXN0KSk7XG5cbiAgICBjb25zdCBpbml0VHhCdWlsZGVyID0gKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTYnRjV2l0aGRyYXdCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuZmVlKHsgZmVlOiAnMTAwMCcgfSk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoMSk7XG4gICAgICByZXR1cm4gdHhCdWlsZGVyO1xuICAgIH07XG5cbiAgICBkZXNjcmliZSgnc2hvdWxkIGJ1aWxkJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ2Egd2l0aGRyYXdhbCB3aXRoIFAyUEtIIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIGNvbnN0IHB1YktleXMgPSB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nLm1hcChwdWJLZXlmcm9tUHJpdktleSk7XG4gICAgICAgIGNvbnN0IHB1YktleVN0cmluZ3MgPSBwdWJLZXlzLm1hcChwdWJsaWNLZXlUb1N0cmluZyk7XG4gICAgICAgIGJ1aWxkZXIuZnJvbVB1YktleShwdWJLZXlTdHJpbmdzKTtcbiAgICAgICAgYnVpbGRlci5udW1iZXJTaWduYXR1cmVzKDIpO1xuICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAnLFxuICAgICAgICAgIGJ0Y0FkZHJlc3M6ICcxQnZCTVNFWXN0V2V0cVRGbjVBdTRtNEdGZzd4SmFOVk4yJyxcbiAgICAgICAgICBtYXhGZWU6ICc1MDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEucHJ2S2V5c1N0cmluZ1swXSB9KTtcbiAgICAgICAgYnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nWzFdIH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICAgIHR4SnNvbi5mZWUuc2hvdWxkLmVxdWFsKCcxMDAwJyk7XG4gICAgICAgIHR4SnNvbi5ub25jZS5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIHNob3VsZC5leGlzdCh0eEpzb24ucGF5bG9hZCk7XG4gICAgICAgIHR4SnNvbi5wYXlsb2FkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb250cmFjdE5hbWUnLCAnc2J0Yy13aXRoZHJhd2FsJyk7XG4gICAgICAgIHR4SnNvbi5wYXlsb2FkLnNob3VsZC5oYXZlLnByb3BlcnR5KCdmdW5jdGlvbk5hbWUnLCAnaW5pdGlhdGUtd2l0aGRyYXdhbC1yZXF1ZXN0Jyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egd2l0aGRyYXdhbCB3aXRoIFAyU0ggYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzIwMDAwMCcsXG4gICAgICAgICAgYnRjQWRkcmVzczogJzNKOTh0MVdwRVo3M0NObVF2aWVjcm55aVdybnFSaFdOTHknLFxuICAgICAgICAgIG1heEZlZTogJzMwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICB0eEpzb24ucGF5bG9hZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZnVuY3Rpb25OYW1lJywgJ2luaXRpYXRlLXdpdGhkcmF3YWwtcmVxdWVzdCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHdpdGhkcmF3YWwgd2l0aCBQMldQS0ggKGJlY2gzMikgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzUwMDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnYmMxcXc1MDhkNnFlanh0ZGc0eTVyM3phcnZhcnkwYzV4dzdrdjhmM3Q0JyxcbiAgICAgICAgICBtYXhGZWU6ICcyMDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgdHhKc29uLnBheWxvYWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Z1bmN0aW9uTmFtZScsICdpbml0aWF0ZS13aXRoZHJhd2FsLXJlcXVlc3QnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSB3aXRoZHJhd2FsIHdpdGggUDJXU0ggKGJlY2gzMikgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzc1MDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnYmMxcXJwMzNnMHE1YzV0eHNwOWFyeXNyeDRrNnpka2ZzNG5jZTR4ajBnZGNjY2VmdnB5c3hmM3FjY2ZtdjMnLFxuICAgICAgICAgIG1heEZlZTogJzQwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICB0eEpzb24ucGF5bG9hZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZnVuY3Rpb25OYW1lJywgJ2luaXRpYXRlLXdpdGhkcmF3YWwtcmVxdWVzdCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHdpdGhkcmF3YWwgd2l0aCBQMlRSIChiZWNoMzJtKSBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBjb25zdCBwdWJLZXlzID0gdGVzdERhdGEucHJ2S2V5c1N0cmluZy5tYXAocHViS2V5ZnJvbVByaXZLZXkpO1xuICAgICAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5cy5tYXAocHVibGljS2V5VG9TdHJpbmcpO1xuICAgICAgICBidWlsZGVyLmZyb21QdWJLZXkocHViS2V5U3RyaW5ncyk7XG4gICAgICAgIGJ1aWxkZXIubnVtYmVyU2lnbmF0dXJlcygyKTtcbiAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnYmMxcDB4bHh2bGhlbWphNmM0ZHF2MjJ1YXBjdHF1cGZobHhtOWg4ejNrMmU3MnE0azloY3o3dnF6azVqajAnLFxuICAgICAgICAgIG1heEZlZTogJzEwMDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgdHhKc29uLnBheWxvYWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Z1bmN0aW9uTmFtZScsICdpbml0aWF0ZS13aXRoZHJhd2FsLXJlcXVlc3QnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JvdW5kLXRyaXA6IHNlcmlhbGl6ZSDihpIgZGVzZXJpYWxpemUg4oaSIHJlYnVpbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlYnVpbGQgYSBzaWduZWQgd2l0aGRyYXdhbCB0cmFuc2FjdGlvbiBmcm9tIHJhdyBoZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIGNvbnN0IHB1YktleXMgPSB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nLm1hcChwdWJLZXlmcm9tUHJpdktleSk7XG4gICAgICAgIGNvbnN0IHB1YktleVN0cmluZ3MgPSBwdWJLZXlzLm1hcChwdWJsaWNLZXlUb1N0cmluZyk7XG4gICAgICAgIGJ1aWxkZXIuZnJvbVB1YktleShwdWJLZXlTdHJpbmdzKTtcbiAgICAgICAgYnVpbGRlci5udW1iZXJTaWduYXR1cmVzKDIpO1xuICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAnLFxuICAgICAgICAgIGJ0Y0FkZHJlc3M6ICcxQnZCTVNFWXN0V2V0cVRGbjVBdTRtNEdGZzd4SmFOVk4yJyxcbiAgICAgICAgICBtYXhGZWU6ICc1MDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEucHJ2S2V5c1N0cmluZ1swXSB9KTtcbiAgICAgICAgYnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nWzFdIH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmF3SGV4KTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZVxuICAgICAgICBjb25zdCByZWJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3SGV4KTtcbiAgICAgICAgY29uc3QgdHgyID0gYXdhaXQgcmVidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHR4Mi50b0Jyb2FkY2FzdEZvcm1hdCgpLnNob3VsZC5lcXVhbChyYXdIZXgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVidWlsZCBhbiB1bnNpZ25lZCB3aXRoZHJhd2FsIHRyYW5zYWN0aW9uIGZyb20gcmF3IGhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzEwMDAwMCcsXG4gICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgICAgY29uc3QgcmF3SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBhbmQgc2lnblxuICAgICAgICBjb25zdCByZWJ1aWxkZXIgPSBmYWN0b3J5LmZyb20ocmF3SGV4KTtcbiAgICAgICAgcmVidWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLnBydktleXNTdHJpbmdbMF0gfSk7XG4gICAgICAgIHJlYnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nWzFdIH0pO1xuICAgICAgICBjb25zdCB0eDIgPSBhd2FpdCByZWJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHR4Mi50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgICAgIGFtb3VudDogJy0xJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgICAgICBtYXhGZWU6ICc1MDAwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC9JbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50L1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IHplcm8gYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICAgICAgICAgIGJ0Y0FkZHJlc3M6ICcxQnZCTVNFWXN0V2V0cVRGbjVBdTRtNEdGZzd4SmFOVk4yJyxcbiAgICAgICAgICAgICAgbWF4RmVlOiAnNTAwMCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAvSW52YWxpZCBvciBtaXNzaW5nIGFtb3VudC9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSBhbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgICAgICBhbW91bnQ6ICcnLFxuICAgICAgICAgICAgICBidGNBZGRyZXNzOiAnMUJ2Qk1TRVlzdFdldHFURm41QXU0bTRHRmc3eEphTlZOMicsXG4gICAgICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBCVEMgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMCcsXG4gICAgICAgICAgICAgIGJ0Y0FkZHJlc3M6ICdpbnZhbGlkYWRkcmVzcycsXG4gICAgICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBidGNBZGRyZXNzL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgbWF4RmVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgICAgICBtYXhGZWU6ICctMTAwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC9JbnZhbGlkIG9yIG1pc3NpbmcgbWF4RmVlL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IHplcm8gbWF4RmVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgICAgICBtYXhGZWU6ICcwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC9JbnZhbGlkIG9yIG1pc3NpbmcgbWF4RmVlL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGVtcHR5IG1heEZlZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgICAgIGFtb3VudDogJzEwMDAwMCcsXG4gICAgICAgICAgICAgIGJ0Y0FkZHJlc3M6ICcxQnZCTVNFWXN0V2V0cVRGbjVBdTRtNEdGZzd4SmFOVk4yJyxcbiAgICAgICAgICAgICAgbWF4RmVlOiAnJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC9JbnZhbGlkIG9yIG1pc3NpbmcgbWF4RmVlL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB0byBidWlsZCB3aXRob3V0IHdpdGhkcmF3IHBhcmFtcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XaXRoZHJhd2FsIHBhcmFtcyBhcmUgbm90IHNldC8pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2J0Y1dpdGhkcmF3QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2J0Y1dpdGhkcmF3QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1Qix1REFBeUY7QUFHekYsOENBQTBEO0FBQzFELDRDQUEwQztBQUMxQyw0Q0FBdUM7QUFFdkMsc0NBQWlEO0FBQ2pELHVEQUF5QztBQUV6QyxRQUFRLENBQUMsK0JBQStCLEVBQUU7SUFDeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQzVCLElBQUksS0FBbUIsQ0FBQztJQUV4QixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUUsTUFBTTtTQUNaLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBTSxDQUFDLHlCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUU5RSxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDekIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUs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b0JBQ2hELE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUMsRUFDSiwyQkFBMkIsQ0FDNUIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLDRCQUE0QixFQUFFO2dCQUMvQixNQUFNLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDaEMsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQ0gsT0FBTyxDQUFDLFFBQVEsQ0FBQztvQkFDZixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsVUFBVSxFQUFFLG9DQUFvQztvQkFDaEQsTUFBTSxFQUFFLEVBQUU7aUJBQ1gsQ0FBQyxFQUNKLDJCQUEyQixDQUM1QixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsOENBQThDLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzVELE1BQU0sT0FBTyxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxnQ0FBaUIsQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdDQUFpQixDQUFDLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IENsYXJpdHlUeXBlLCBwdWJLZXlmcm9tUHJpdktleSwgcHVibGljS2V5VG9TdHJpbmcgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBDb250cmFjdENhbGxQYXlsb2FkIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMvZGlzdC9wYXlsb2FkJztcblxuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuaW1wb3J0IHsgU3R4LCBUc3R4LCBTdHhMaWIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ1N0YWNrczogc0JUQyBXaXRoZHJhdyBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luTmFtZVRlc3QgPSAndHN0eCc7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHtcbiAgICAgIGVudjogJ21vY2snLFxuICAgIH0pO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJpdGdvLnNhZmVSZWdpc3Rlcignc3R4JywgU3R4LmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RzdHgnLCBUc3R4LmNyZWF0ZUluc3RhbmNlKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NCVEMgV2l0aGRyYXcgQnVpbGRlcicsICgpID0+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFN0eExpYi5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldChjb2luTmFtZVRlc3QpKTtcblxuICAgIGNvbnN0IGluaXRUeEJ1aWxkZXIgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFNidGNXaXRoZHJhd0J1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5mZWUoeyBmZWU6ICcxMDAwJyB9KTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgxKTtcbiAgICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gICAgfTtcblxuICAgIGRlc2NyaWJlKCdzaG91bGQgYnVpbGQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnYSB3aXRoZHJhd2FsIHdpdGggUDJQS0ggYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzEwMDAwMCcsXG4gICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgYnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nWzBdIH0pO1xuICAgICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLnBydktleXNTdHJpbmdbMV0gfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgdHhKc29uLmZlZS5zaG91bGQuZXF1YWwoJzEwMDAnKTtcbiAgICAgICAgdHhKc29uLm5vbmNlLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHR4SnNvbi5wYXlsb2FkKTtcbiAgICAgICAgdHhKc29uLnBheWxvYWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2NvbnRyYWN0TmFtZScsICdzYnRjLXdpdGhkcmF3YWwnKTtcbiAgICAgICAgdHhKc29uLnBheWxvYWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Z1bmN0aW9uTmFtZScsICdpbml0aWF0ZS13aXRoZHJhd2FsLXJlcXVlc3QnKTtcblxuICAgICAgICAvLyBWZXJpZnkgaGFzaGJ5dGVzIGlzIDIwIGJ5dGVzIGZvciBQMlBLSFxuICAgICAgICBjb25zdCBwYXlsb2FkID0gKHR4IGFzIFN0eExpYi5UcmFuc2FjdGlvbikuc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkO1xuICAgICAgICBjb25zdCByZWNpcGllbnRUdXBsZSA9IHBheWxvYWQuZnVuY3Rpb25BcmdzWzFdO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVjaXBpZW50VHVwbGUudHlwZSwgQ2xhcml0eVR5cGUuVHVwbGUpO1xuICAgICAgICBpZiAocmVjaXBpZW50VHVwbGUudHlwZSA9PT0gQ2xhcml0eVR5cGUuVHVwbGUpIHtcbiAgICAgICAgICBjb25zdCBoYXNoYnl0ZXMgPSByZWNpcGllbnRUdXBsZS5kYXRhWydoYXNoYnl0ZXMnXTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwoaGFzaGJ5dGVzLnR5cGUsIENsYXJpdHlUeXBlLkJ1ZmZlcik7XG4gICAgICAgICAgaWYgKGhhc2hieXRlcy50eXBlID09PSBDbGFyaXR5VHlwZS5CdWZmZXIpIHtcbiAgICAgICAgICAgIGhhc2hieXRlcy5idWZmZXIubGVuZ3RoLnNob3VsZC5lcXVhbCgyMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egd2l0aGRyYXdhbCB3aXRoIFAyU0ggYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzIwMDAwMCcsXG4gICAgICAgICAgYnRjQWRkcmVzczogJzNKOTh0MVdwRVo3M0NObVF2aWVjcm55aVdybnFSaFdOTHknLFxuICAgICAgICAgIG1heEZlZTogJzMwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICB0eEpzb24ucGF5bG9hZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZnVuY3Rpb25OYW1lJywgJ2luaXRpYXRlLXdpdGhkcmF3YWwtcmVxdWVzdCcpO1xuXG4gICAgICAgIC8vIFZlcmlmeSBoYXNoYnl0ZXMgaXMgMjAgYnl0ZXMgZm9yIFAyU0hcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9ICh0eCBhcyBTdHhMaWIuVHJhbnNhY3Rpb24pLnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZDtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50VHVwbGUgPSBwYXlsb2FkLmZ1bmN0aW9uQXJnc1sxXTtcbiAgICAgICAgaWYgKHJlY2lwaWVudFR1cGxlLnR5cGUgPT09IENsYXJpdHlUeXBlLlR1cGxlKSB7XG4gICAgICAgICAgY29uc3QgaGFzaGJ5dGVzID0gcmVjaXBpZW50VHVwbGUuZGF0YVsnaGFzaGJ5dGVzJ107XG4gICAgICAgICAgaWYgKGhhc2hieXRlcy50eXBlID09PSBDbGFyaXR5VHlwZS5CdWZmZXIpIHtcbiAgICAgICAgICAgIGhhc2hieXRlcy5idWZmZXIubGVuZ3RoLnNob3VsZC5lcXVhbCgyMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egd2l0aGRyYXdhbCB3aXRoIFAyV1BLSCAoYmVjaDMyKSBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBjb25zdCBwdWJLZXlzID0gdGVzdERhdGEucHJ2S2V5c1N0cmluZy5tYXAocHViS2V5ZnJvbVByaXZLZXkpO1xuICAgICAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5cy5tYXAocHVibGljS2V5VG9TdHJpbmcpO1xuICAgICAgICBidWlsZGVyLmZyb21QdWJLZXkocHViS2V5U3RyaW5ncyk7XG4gICAgICAgIGJ1aWxkZXIubnVtYmVyU2lnbmF0dXJlcygyKTtcbiAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgYW1vdW50OiAnNTAwMDAnLFxuICAgICAgICAgIGJ0Y0FkZHJlc3M6ICdiYzFxdzUwOGQ2cWVqeHRkZzR5NXIzemFydmFyeTBjNXh3N2t2OGYzdDQnLFxuICAgICAgICAgIG1heEZlZTogJzIwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICB0eEpzb24ucGF5bG9hZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZnVuY3Rpb25OYW1lJywgJ2luaXRpYXRlLXdpdGhkcmF3YWwtcmVxdWVzdCcpO1xuXG4gICAgICAgIC8vIFZlcmlmeSBoYXNoYnl0ZXMgaXMgMjAgYnl0ZXMgZm9yIFAyV1BLSFxuICAgICAgICBjb25zdCBwYXlsb2FkID0gKHR4IGFzIFN0eExpYi5UcmFuc2FjdGlvbikuc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkO1xuICAgICAgICBjb25zdCByZWNpcGllbnRUdXBsZSA9IHBheWxvYWQuZnVuY3Rpb25BcmdzWzFdO1xuICAgICAgICBpZiAocmVjaXBpZW50VHVwbGUudHlwZSA9PT0gQ2xhcml0eVR5cGUuVHVwbGUpIHtcbiAgICAgICAgICBjb25zdCBoYXNoYnl0ZXMgPSByZWNpcGllbnRUdXBsZS5kYXRhWydoYXNoYnl0ZXMnXTtcbiAgICAgICAgICBpZiAoaGFzaGJ5dGVzLnR5cGUgPT09IENsYXJpdHlUeXBlLkJ1ZmZlcikge1xuICAgICAgICAgICAgaGFzaGJ5dGVzLmJ1ZmZlci5sZW5ndGguc2hvdWxkLmVxdWFsKDIwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYSB3aXRoZHJhd2FsIHdpdGggUDJXU0ggKGJlY2gzMikgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzc1MDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnYmMxcXJwMzNnMHE1YzV0eHNwOWFyeXNyeDRrNnpka2ZzNG5jZTR4ajBnZGNjY2VmdnB5c3hmM3FjY2ZtdjMnLFxuICAgICAgICAgIG1heEZlZTogJzQwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICB0eEpzb24ucGF5bG9hZC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZnVuY3Rpb25OYW1lJywgJ2luaXRpYXRlLXdpdGhkcmF3YWwtcmVxdWVzdCcpO1xuXG4gICAgICAgIC8vIFZlcmlmeSBoYXNoYnl0ZXMgaXMgMzIgYnl0ZXMgZm9yIFAyV1NIXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSAodHggYXMgU3R4TGliLlRyYW5zYWN0aW9uKS5zdHhUcmFuc2FjdGlvbi5wYXlsb2FkIGFzIENvbnRyYWN0Q2FsbFBheWxvYWQ7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudFR1cGxlID0gcGF5bG9hZC5mdW5jdGlvbkFyZ3NbMV07XG4gICAgICAgIGlmIChyZWNpcGllbnRUdXBsZS50eXBlID09PSBDbGFyaXR5VHlwZS5UdXBsZSkge1xuICAgICAgICAgIGNvbnN0IGhhc2hieXRlcyA9IHJlY2lwaWVudFR1cGxlLmRhdGFbJ2hhc2hieXRlcyddO1xuICAgICAgICAgIGlmIChoYXNoYnl0ZXMudHlwZSA9PT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgICAgICAgICBoYXNoYnl0ZXMuYnVmZmVyLmxlbmd0aC5zaG91bGQuZXF1YWwoMzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHdpdGhkcmF3YWwgd2l0aCBQMlRSIChiZWNoMzJtKSBhZGRyZXNzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBjb25zdCBwdWJLZXlzID0gdGVzdERhdGEucHJ2S2V5c1N0cmluZy5tYXAocHViS2V5ZnJvbVByaXZLZXkpO1xuICAgICAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5cy5tYXAocHVibGljS2V5VG9TdHJpbmcpO1xuICAgICAgICBidWlsZGVyLmZyb21QdWJLZXkocHViS2V5U3RyaW5ncyk7XG4gICAgICAgIGJ1aWxkZXIubnVtYmVyU2lnbmF0dXJlcygyKTtcbiAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgYW1vdW50OiAnMzAwMDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnYmMxcDB4bHh2bGhlbWphNmM0ZHF2MjJ1YXBjdHF1cGZobHhtOWg4ejNrMmU3MnE0azloY3o3dnF6azVqajAnLFxuICAgICAgICAgIG1heEZlZTogJzEwMDAwJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgICAgdHhKc29uLnBheWxvYWQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Z1bmN0aW9uTmFtZScsICdpbml0aWF0ZS13aXRoZHJhd2FsLXJlcXVlc3QnKTtcblxuICAgICAgICAvLyBWZXJpZnkgaGFzaGJ5dGVzIGlzIDMyIGJ5dGVzIGZvciBQMlRSXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSAodHggYXMgU3R4TGliLlRyYW5zYWN0aW9uKS5zdHhUcmFuc2FjdGlvbi5wYXlsb2FkIGFzIENvbnRyYWN0Q2FsbFBheWxvYWQ7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudFR1cGxlID0gcGF5bG9hZC5mdW5jdGlvbkFyZ3NbMV07XG4gICAgICAgIGlmIChyZWNpcGllbnRUdXBsZS50eXBlID09PSBDbGFyaXR5VHlwZS5UdXBsZSkge1xuICAgICAgICAgIGNvbnN0IGhhc2hieXRlcyA9IHJlY2lwaWVudFR1cGxlLmRhdGFbJ2hhc2hieXRlcyddO1xuICAgICAgICAgIGlmIChoYXNoYnl0ZXMudHlwZSA9PT0gQ2xhcml0eVR5cGUuQnVmZmVyKSB7XG4gICAgICAgICAgICBoYXNoYnl0ZXMuYnVmZmVyLmxlbmd0aC5zaG91bGQuZXF1YWwoMzIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncm91bmQtdHJpcDogc2VyaWFsaXplIOKGkiBkZXNlcmlhbGl6ZSDihpIgcmVidWlsZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmVidWlsZCBhIHNpZ25lZCB3aXRoZHJhd2FsIHRyYW5zYWN0aW9uIGZyb20gcmF3IGhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgY29uc3QgcHViS2V5cyA9IHRlc3REYXRhLnBydktleXNTdHJpbmcubWFwKHB1YktleWZyb21Qcml2S2V5KTtcbiAgICAgICAgY29uc3QgcHViS2V5U3RyaW5ncyA9IHB1YktleXMubWFwKHB1YmxpY0tleVRvU3RyaW5nKTtcbiAgICAgICAgYnVpbGRlci5mcm9tUHViS2V5KHB1YktleVN0cmluZ3MpO1xuICAgICAgICBidWlsZGVyLm51bWJlclNpZ25hdHVyZXMoMik7XG4gICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgIGFtb3VudDogJzEwMDAwMCcsXG4gICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgYnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5wcnZLZXlzU3RyaW5nWzBdIH0pO1xuICAgICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLnBydktleXNTdHJpbmdbMV0gfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICAgIGNvbnN0IHJhd0hleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5leGlzdChyYXdIZXgpO1xuXG4gICAgICAgIC8vIERlc2VyaWFsaXplXG4gICAgICAgIGNvbnN0IHJlYnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdIZXgpO1xuICAgICAgICBjb25zdCB0eDIgPSBhd2FpdCByZWJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgdHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhd0hleCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWJ1aWxkIGFuIHVuc2lnbmVkIHdpdGhkcmF3YWwgdHJhbnNhY3Rpb24gZnJvbSByYXcgaGV4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBjb25zdCBwdWJLZXlzID0gdGVzdERhdGEucHJ2S2V5c1N0cmluZy5tYXAocHViS2V5ZnJvbVByaXZLZXkpO1xuICAgICAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5cy5tYXAocHVibGljS2V5VG9TdHJpbmcpO1xuICAgICAgICBidWlsZGVyLmZyb21QdWJLZXkocHViS2V5U3RyaW5ncyk7XG4gICAgICAgIGJ1aWxkZXIubnVtYmVyU2lnbmF0dXJlcygyKTtcbiAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICBidGNBZGRyZXNzOiAnMUJ2Qk1TRVlzdFdldHFURm41QXU0bTRHRmc3eEphTlZOMicsXG4gICAgICAgICAgbWF4RmVlOiAnNTAwMCcsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAgIC8vIERlc2VyaWFsaXplIGFuZCBzaWduXG4gICAgICAgIGNvbnN0IHJlYnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdIZXgpO1xuICAgICAgICByZWJ1aWxkZXIuc2lnbih7IGtleTogdGVzdERhdGEucHJ2S2V5c1N0cmluZ1swXSB9KTtcbiAgICAgICAgcmVidWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLnBydktleXNTdHJpbmdbMV0gfSk7XG4gICAgICAgIGNvbnN0IHR4MiA9IGF3YWl0IHJlYnVpbGRlci5idWlsZCgpO1xuICAgICAgICBzaG91bGQuZXhpc3QodHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgYW1vdW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnLTEnLFxuICAgICAgICAgICAgICBidGNBZGRyZXNzOiAnMUJ2Qk1TRVlzdFdldHFURm41QXU0bTRHRmc3eEphTlZOMicsXG4gICAgICAgICAgICAgIG1heEZlZTogJzUwMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgemVybyBhbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgICAgICBhbW91bnQ6ICcwJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgICAgICBtYXhGZWU6ICc1MDAwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC9JbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50L1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGVtcHR5IGFtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGluaXRUeEJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYnVpbGRlci53aXRoZHJhdyh7XG4gICAgICAgICAgICAgIGFtb3VudDogJycsXG4gICAgICAgICAgICAgIGJ0Y0FkZHJlc3M6ICcxQnZCTVNFWXN0V2V0cVRGbjVBdTRtNEdGZzd4SmFOVk4yJyxcbiAgICAgICAgICAgICAgbWF4RmVlOiAnNTAwMCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAvSW52YWxpZCBvciBtaXNzaW5nIGFtb3VudC9cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIEJUQyBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJ2ludmFsaWRhZGRyZXNzJyxcbiAgICAgICAgICAgICAgbWF4RmVlOiAnNTAwMCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAvSW52YWxpZCBvciBtaXNzaW5nIGJ0Y0FkZHJlc3MvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBtYXhGZWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAnLFxuICAgICAgICAgICAgICBidGNBZGRyZXNzOiAnMUJ2Qk1TRVlzdFdldHFURm41QXU0bTRHRmc3eEphTlZOMicsXG4gICAgICAgICAgICAgIG1heEZlZTogJy0xMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBtYXhGZWUvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgemVybyBtYXhGZWUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBpbml0VHhCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGJ1aWxkZXIud2l0aGRyYXcoe1xuICAgICAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAnLFxuICAgICAgICAgICAgICBidGNBZGRyZXNzOiAnMUJ2Qk1TRVlzdFdldHFURm41QXU0bTRHRmc3eEphTlZOMicsXG4gICAgICAgICAgICAgIG1heEZlZTogJzAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBtYXhGZWUvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgZW1wdHkgbWF4RmVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBzaG91bGQudGhyb3dzKFxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgICBidWlsZGVyLndpdGhkcmF3KHtcbiAgICAgICAgICAgICAgYW1vdW50OiAnMTAwMDAwJyxcbiAgICAgICAgICAgICAgYnRjQWRkcmVzczogJzFCdkJNU0VZc3RXZXRxVEZuNUF1NG00R0ZnN3hKYU5WTjInLFxuICAgICAgICAgICAgICBtYXhGZWU6ICcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgL0ludmFsaWQgb3IgbWlzc2luZyBtYXhGZWUvXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHRvIGJ1aWxkIHdpdGhvdXQgd2l0aGRyYXcgcGFyYW1zJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gaW5pdFR4QnVpbGRlcigpO1xuICAgICAgICBjb25zdCBwdWJLZXlzID0gdGVzdERhdGEucHJ2S2V5c1N0cmluZy5tYXAocHViS2V5ZnJvbVByaXZLZXkpO1xuICAgICAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5cy5tYXAocHVibGljS2V5VG9TdHJpbmcpO1xuICAgICAgICBidWlsZGVyLmZyb21QdWJLZXkocHViS2V5U3RyaW5ncyk7XG4gICAgICAgIGJ1aWxkZXIubnVtYmVyU2lnbmF0dXJlcygyKTtcbiAgICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dpdGhkcmF3YWwgcGFyYW1zIGFyZSBub3Qgc2V0Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==