@bitgo/sdk-coin-eth 25.10.0 → 25.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -92,5 +92,26 @@ describe('ETH Transaction', () => {
92
92
  });
93
93
  });
94
94
  });
95
+ describe('signablePayload', () => {
96
+ it('should throw on an empty transaction', () => {
97
+ const tx = getTransaction();
98
+ assert_1.default.throws(() => tx.signablePayload);
99
+ });
100
+ testParams.map(([txnType, txData]) => {
101
+ it(`should return the keccak256 signing hash for a ${txnType} transaction`, () => {
102
+ const tx = getTransaction(txData);
103
+ const payload = tx.signablePayload;
104
+ assert_1.default.ok(Buffer.isBuffer(payload));
105
+ assert_1.default.strictEqual(payload.length, 32);
106
+ // txData.id is set from getMessageToSign() in toJson() — must match the signing payload
107
+ assert_1.default.strictEqual('0x' + payload.toString('hex'), txData.id);
108
+ });
109
+ });
110
+ it('should produce distinct payloads for Legacy and EIP1559 transactions', () => {
111
+ const legacy = getTransaction(testData.LEGACY_TXDATA).signablePayload;
112
+ const eip1559 = getTransaction(testData.EIP1559_TXDATA).signablePayload;
113
+ assert_1.default.notStrictEqual(legacy.toString('hex'), eip1559.toString('hex'));
114
+ });
115
+ });
95
116
  });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLDRDQUF3RDtBQUN4RCxtQ0FBMkQ7QUFDM0QsMkRBQTZDO0FBQzdDLGlDQUE2QjtBQUU3QixRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBQSxlQUFTLEVBQUMsVUFBVSxDQUFDLE9BQTBCLENBQUMsQ0FBQztJQUNoRTs7T0FFRztJQUNILFNBQVMsY0FBYyxDQUFDLElBQWE7UUFDbkMsT0FBTyxJQUFJLGlCQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUM5QixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRztRQUNqQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsMEJBQTBCLENBQUM7UUFDcEcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0tBQ2hHLENBQUM7SUFFWCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsSUFBQSxZQUFJLEVBQUMsV0FBVyxPQUFPLGNBQWMsRUFBRSxHQUFHLEVBQUU7Z0JBQzFDLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNqQixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxFQUFFLENBQUMseUJBQXlCLE9BQU8sWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDcEQsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUN4QyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQ3JELEVBQUUsQ0FBQyx5QkFBeUIsT0FBTyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDcEUsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGNvaW5zLCBFdGhlcmV1bU5ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBnZXRDb21tb24sIFRyYW5zYWN0aW9uLCBUeERhdGEgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL2V0aCc7XG5pbXBvcnQgeyB0ZXN0IH0gZnJvbSAnbW9jaGEnO1xuXG5kZXNjcmliZSgnRVRIIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCd0ZXRoJyk7XG4gIGNvbnN0IGNvbW1vbiA9IGdldENvbW1vbihjb2luQ29uZmlnLm5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKTtcbiAgLyoqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUcmFuc2FjdGlvbihkYXRhPzogVHhEYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbihjb2luQ29uZmlnLCBjb21tb24sIGRhdGEpO1xuICB9XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCB0aHJvdyAnLCAoKSA9PiB7XG4gICAgaXQoJ2FuIGVtcHR5IHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eC50b0pzb24oKSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCB0ZXN0UGFyYW1zID0gW1xuICAgIFsnTGVnYWN5JywgdGVzdERhdGEuTEVHQUNZX1RYREFUQSwgdGVzdERhdGEuVU5TSUdORURfTEVHQUNZX1RYLCB0ZXN0RGF0YS5FTkNPREVEX0xFR0FDWV9UUkFOU0FDVElPTl0sXG4gICAgWydFSVAxNTU5JywgdGVzdERhdGEuRUlQMTU1OV9UWERBVEEsIHRlc3REYXRhLlVOU0lHTkVEX0VJUDE1NTlfVFgsIHRlc3REYXRhLkVOQ09ERURfRUlQMTU1OV9UUkFOU0FDVElPTl0sXG4gIF0gYXMgY29uc3Q7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCByZXR1cm4nLCAoKSA9PiB7XG4gICAgdGVzdFBhcmFtcy5tYXAoKFt0eG5UeXBlLCB0eERhdGEsIHVuc2lnbmVkVHhdKSA9PiB7XG4gICAgICB0ZXN0KGBhIHZhbGlkICR7dHhuVHlwZX0gdHJhbnNhY3Rpb25gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24odHhEYXRhKTtcbiAgICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eC50b0pzb24oKSwgdHhEYXRhKTtcbiAgICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB1bnNpZ25lZFR4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHNpZ24nLCAoKSA9PiB7XG4gICAgaXQoJ2ludmFsaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKCk7XG4gICAgICByZXR1cm4gdHguc2lnbih0ZXN0RGF0YS5LRVlQQUlSX1BSVikuc2hvdWxkLmJlLnJlamVjdGVkKCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0UGFyYW1zLm1hcCgoW3R4blR5cGUsIHR4RGF0YV0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY3JlYXRlIGEgdmFsaWQgJHt0eG5UeXBlfSBzaWduYXR1cmVgLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24odHhEYXRhKTtcbiAgICAgICAgcmV0dXJuIHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpLnNob3VsZC5iZS5mdWxmaWxsZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHJldHVybiBlbmNvZGVkIHR4JywgKCkgPT4ge1xuICAgIHRlc3RQYXJhbXMubWFwKChbdHhuVHlwZSwgdHhEYXRhLCBfLCBlbmNvZGVkVHhEYXRhXSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBjcmVhdGUgYSB2YWxpZCAke3R4blR5cGV9IGVuY29kZWQgdHJhbnNhY3Rpb25gLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24odHhEYXRhKTtcbiAgICAgICAgYXdhaXQgdHguc2lnbih0ZXN0RGF0YS5LRVlQQUlSX1BSVik7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCBlbmNvZGVkVHhEYXRhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLDRDQUF3RDtBQUN4RCxtQ0FBMkQ7QUFDM0QsMkRBQTZDO0FBQzdDLGlDQUE2QjtBQUU3QixRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBQSxlQUFTLEVBQUMsVUFBVSxDQUFDLE9BQTBCLENBQUMsQ0FBQztJQUNoRTs7T0FFRztJQUNILFNBQVMsY0FBYyxDQUFDLElBQWE7UUFDbkMsT0FBTyxJQUFJLGlCQUFXLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUM5QixNQUFNLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUM1QixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRztRQUNqQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsMEJBQTBC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QUFNLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDbkMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2Qyx3RkFBd0Y7Z0JBQ3hGLGdCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtZQUM5RSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUN0RSxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUN4RSxnQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBjb2lucywgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uLCBUcmFuc2FjdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy9ldGgnO1xuaW1wb3J0IHsgdGVzdCB9IGZyb20gJ21vY2hhJztcblxuZGVzY3JpYmUoJ0VUSCBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndGV0aCcpO1xuICBjb25zdCBjb21tb24gPSBnZXRDb21tb24oY29pbkNvbmZpZy5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yayk7XG4gIC8qKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb24oZGF0YT86IFR4RGF0YSkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oY29pbkNvbmZpZywgY29tbW9uLCBkYXRhKTtcbiAgfVxuXG4gIGRlc2NyaWJlKCdzaG91bGQgdGhyb3cgJywgKCkgPT4ge1xuICAgIGl0KCdhbiBlbXB0eSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gZ2V0VHJhbnNhY3Rpb24oKTtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHgudG9Kc29uKCkpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgdGVzdFBhcmFtcyA9IFtcbiAgICBbJ0xlZ2FjeScsIHRlc3REYXRhLkxFR0FDWV9UWERBVEEsIHRlc3REYXRhLlVOU0lHTkVEX0xFR0FDWV9UWCwgdGVzdERhdGEuRU5DT0RFRF9MRUdBQ1lfVFJBTlNBQ1RJT05dLFxuICAgIFsnRUlQMTU1OScsIHRlc3REYXRhLkVJUDE1NTlfVFhEQVRBLCB0ZXN0RGF0YS5VTlNJR05FRF9FSVAxNTU5X1RYLCB0ZXN0RGF0YS5FTkNPREVEX0VJUDE1NTlfVFJBTlNBQ1RJT05dLFxuICBdIGFzIGNvbnN0O1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgcmV0dXJuJywgKCkgPT4ge1xuICAgIHRlc3RQYXJhbXMubWFwKChbdHhuVHlwZSwgdHhEYXRhLCB1bnNpZ25lZFR4XSkgPT4ge1xuICAgICAgdGVzdChgYSB2YWxpZCAke3R4blR5cGV9IHRyYW5zYWN0aW9uYCwgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKHR4RGF0YSk7XG4gICAgICAgIHNob3VsZC5kZWVwRXF1YWwodHgudG9Kc29uKCksIHR4RGF0YSk7XG4gICAgICAgIHNob3VsZC5kZWVwRXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdW5zaWduZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduJywgKCkgPT4ge1xuICAgIGl0KCdpbnZhbGlkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgcmV0dXJuIHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpLnNob3VsZC5iZS5yZWplY3RlZCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdFBhcmFtcy5tYXAoKFt0eG5UeXBlLCB0eERhdGFdKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGNyZWF0ZSBhIHZhbGlkICR7dHhuVHlwZX0gc2lnbmF0dXJlYCwgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKHR4RGF0YSk7XG4gICAgICAgIHJldHVybiB0eC5zaWduKHRlc3REYXRhLktFWVBBSVJfUFJWKS5zaG91bGQuYmUuZnVsZmlsbGVkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCByZXR1cm4gZW5jb2RlZCB0eCcsICgpID0+IHtcbiAgICB0ZXN0UGFyYW1zLm1hcCgoW3R4blR5cGUsIHR4RGF0YSwgXywgZW5jb2RlZFR4RGF0YV0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY3JlYXRlIGEgdmFsaWQgJHt0eG5UeXBlfSBlbmNvZGVkIHRyYW5zYWN0aW9uYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKHR4RGF0YSk7XG4gICAgICAgIGF3YWl0IHR4LnNpZ24odGVzdERhdGEuS0VZUEFJUl9QUlYpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgZW5jb2RlZFR4RGF0YSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NpZ25hYmxlUGF5bG9hZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGFuIGVtcHR5IHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBnZXRUcmFuc2FjdGlvbigpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eC5zaWduYWJsZVBheWxvYWQpO1xuICAgIH0pO1xuXG4gICAgdGVzdFBhcmFtcy5tYXAoKFt0eG5UeXBlLCB0eERhdGFdKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHJldHVybiB0aGUga2VjY2FrMjU2IHNpZ25pbmcgaGFzaCBmb3IgYSAke3R4blR5cGV9IHRyYW5zYWN0aW9uYCwgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eCA9IGdldFRyYW5zYWN0aW9uKHR4RGF0YSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICAgIGFzc2VydC5vayhCdWZmZXIuaXNCdWZmZXIocGF5bG9hZCkpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocGF5bG9hZC5sZW5ndGgsIDMyKTtcbiAgICAgICAgLy8gdHhEYXRhLmlkIGlzIHNldCBmcm9tIGdldE1lc3NhZ2VUb1NpZ24oKSBpbiB0b0pzb24oKSDigJQgbXVzdCBtYXRjaCB0aGUgc2lnbmluZyBwYXlsb2FkXG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbCgnMHgnICsgcGF5bG9hZC50b1N0cmluZygnaGV4JyksIHR4RGF0YS5pZCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJvZHVjZSBkaXN0aW5jdCBwYXlsb2FkcyBmb3IgTGVnYWN5IGFuZCBFSVAxNTU5IHRyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGxlZ2FjeSA9IGdldFRyYW5zYWN0aW9uKHRlc3REYXRhLkxFR0FDWV9UWERBVEEpLnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIGNvbnN0IGVpcDE1NTkgPSBnZXRUcmFuc2FjdGlvbih0ZXN0RGF0YS5FSVAxNTU5X1RYREFUQSkuc2lnbmFibGVQYXlsb2FkO1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGxlZ2FjeS50b1N0cmluZygnaGV4JyksIGVpcDE1NTkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==