@bitgo/sdk-coin-canton 1.19.2 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/src/canton.d.ts.map +1 -1
  2. package/dist/src/canton.js +3 -1
  3. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  4. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  5. package/dist/src/lib/allocationAllocateBuilder.js +250 -0
  6. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  7. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  8. package/dist/src/lib/allocationRequestBuilder.js +246 -0
  9. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
  10. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  11. package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
  12. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
  13. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
  15. package/dist/src/lib/iface.d.ts +45 -0
  16. package/dist/src/lib/iface.d.ts.map +1 -1
  17. package/dist/src/lib/iface.js +1 -1
  18. package/dist/src/lib/index.d.ts +4 -0
  19. package/dist/src/lib/index.d.ts.map +1 -1
  20. package/dist/src/lib/index.js +10 -2
  21. package/dist/src/lib/transaction/transaction.d.ts +5 -1
  22. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  23. package/dist/src/lib/transaction/transaction.js +63 -8
  24. package/dist/src/lib/transactionBuilderFactory.d.ts +8 -0
  25. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  26. package/dist/src/lib/transactionBuilderFactory.js +29 -1
  27. package/dist/src/lib/utils.d.ts.map +1 -1
  28. package/dist/src/lib/utils.js +16 -1
  29. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  30. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  31. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +309 -0
  32. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  33. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  34. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +386 -0
  35. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
  36. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  37. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +75 -0
  38. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
  39. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
  40. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +7 -7
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const should_1 = __importDefault(require("should"));
8
+ const statics_1 = require("@bitgo/statics");
9
+ const src_1 = require("../../../../src");
10
+ const contractId = '001b549bfa833bab661ab30e4d0a3ab0ec01fcc4a2bef5369795f4928147706353ca1112205a8d0e780cf3b3115cf8be0d6315f4aed6a1c25b67e8c5d64cf9848d0458fd17';
11
+ const operatorId = '12205::12205b4e3537a95126d90604592344d8ad3c3ddccda4f79901954280ee19c576714d';
12
+ const updateId = '1220d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1';
13
+ const packageName = 'splice-amulet';
14
+ describe('CosignDelegationProposal Builder', () => {
15
+ it('should get the cosign delegation proposal request object', function () {
16
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
17
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
18
+ txBuilder.initBuilder(tx);
19
+ txBuilder.contractId(contractId).operatorId(operatorId).updateId(updateId).packageName(packageName);
20
+ const requestObj = txBuilder.toRequestObject();
21
+ should_1.default.exist(requestObj);
22
+ assert_1.default.equal(requestObj.contractId, contractId);
23
+ assert_1.default.equal(requestObj.operatorId, operatorId);
24
+ assert_1.default.equal(requestObj.updateId, updateId);
25
+ assert_1.default.equal(requestObj.packageName, packageName);
26
+ });
27
+ it('should get the cosign delegation proposal request object without packageName', function () {
28
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
29
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
30
+ txBuilder.initBuilder(tx);
31
+ txBuilder.contractId(contractId).operatorId(operatorId).updateId(updateId);
32
+ const requestObj = txBuilder.toRequestObject();
33
+ should_1.default.exist(requestObj);
34
+ assert_1.default.equal(requestObj.contractId, contractId);
35
+ assert_1.default.equal(requestObj.operatorId, operatorId);
36
+ assert_1.default.equal(requestObj.updateId, updateId);
37
+ assert_1.default.equal(requestObj.packageName, undefined);
38
+ });
39
+ it('should throw if contractId is missing', function () {
40
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
41
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
42
+ txBuilder.initBuilder(tx);
43
+ txBuilder.operatorId(operatorId);
44
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /contractId is missing/);
45
+ });
46
+ it('should throw if operatorId is missing', function () {
47
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
48
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
49
+ txBuilder.initBuilder(tx);
50
+ txBuilder.contractId(contractId);
51
+ assert_1.default.throws(() => txBuilder.toRequestObject(), /operatorId is missing/);
52
+ });
53
+ it('should throw if contractId is empty string', function () {
54
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
55
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
56
+ txBuilder.initBuilder(tx);
57
+ assert_1.default.throws(() => txBuilder.contractId(''), /contractId must be a non-empty string/);
58
+ });
59
+ it('should throw if operatorId is empty string', function () {
60
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
61
+ const tx = new src_1.Transaction(statics_1.coins.get('tcanton'));
62
+ txBuilder.initBuilder(tx);
63
+ assert_1.default.throws(() => txBuilder.operatorId(''), /operatorId must be a non-empty string/);
64
+ });
65
+ it('should throw on setTransaction', function () {
66
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
67
+ assert_1.default.throws(() => txBuilder.setTransaction({}), /Not implemented/);
68
+ });
69
+ it('should throw on addSignature', function () {
70
+ const txBuilder = new src_1.CosignDelegationProposalBuilder(statics_1.coins.get('tcanton'));
71
+ assert_1.default.throws(() => txBuilder.addSignature({}, Buffer.from('')), /Not implemented/);
72
+ });
73
+ });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9idWlsZGVyL2Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbC9jb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1Qiw0Q0FBdUM7QUFFdkMseUNBQStFO0FBRy9FLE1BQU0sVUFBVSxHQUNkLDRJQUE0SSxDQUFDO0FBQy9JLE1BQU0sVUFBVSxHQUFHLDZFQUE2RSxDQUFDO0FBQ2pHLE1BQU0sUUFBUSxHQUFHLHNFQUFzRSxDQUFDO0FBQ3hGLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztBQUVwQyxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELEVBQUUsQ0FBQywwREFBMEQsRUFBRTtRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFDQUErQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRyxNQUFNLFVBQVUsR0FBNkIsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEVBQThFLEVBQUU7UUFDakYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQ0FBK0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRSxNQUFNLFVBQVUsR0FBNkIsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUU7UUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQ0FBK0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUU7UUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQ0FBK0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNENBQTRDLEVBQUU7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQ0FBK0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNqRCxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsdUNBQXVDLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFDQUErQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLEVBQUUsR0FBRyxJQUFJLGlCQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdDQUFnQyxFQUFFO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUkscUNBQStCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVFLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBUyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRTtRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHFDQUErQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RSxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuXG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuaW1wb3J0IHsgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlciwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmNvbnN0IGNvbnRyYWN0SWQgPVxuICAnMDAxYjU0OWJmYTgzM2JhYjY2MWFiMzBlNGQwYTNhYjBlYzAxZmNjNGEyYmVmNTM2OTc5NWY0OTI4MTQ3NzA2MzUzY2ExMTEyMjA1YThkMGU3ODBjZjNiMzExNWNmOGJlMGQ2MzE1ZjRhZWQ2YTFjMjViNjdlOGM1ZDY0Y2Y5ODQ4ZDA0NThmZDE3JztcbmNvbnN0IG9wZXJhdG9ySWQgPSAnMTIyMDU6OjEyMjA1YjRlMzUzN2E5NTEyNmQ5MDYwNDU5MjM0NGQ4YWQzYzNkZGNjZGE0Zjc5OTAxOTU0MjgwZWUxOWM1NzY3MTRkJztcbmNvbnN0IHVwZGF0ZUlkID0gJzEyMjBkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxZDFkMWQxJztcbmNvbnN0IHBhY2thZ2VOYW1lID0gJ3NwbGljZS1hbXVsZXQnO1xuXG5kZXNjcmliZSgnQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3NpZ24gZGVsZWdhdGlvbiBwcm9wb3NhbCByZXF1ZXN0IG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0SWQoY29udHJhY3RJZCkub3BlcmF0b3JJZChvcGVyYXRvcklkKS51cGRhdGVJZCh1cGRhdGVJZCkucGFja2FnZU5hbWUocGFja2FnZU5hbWUpO1xuICAgIGNvbnN0IHJlcXVlc3RPYmo6IENvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbCA9IHR4QnVpbGRlci50b1JlcXVlc3RPYmplY3QoKTtcbiAgICBzaG91bGQuZXhpc3QocmVxdWVzdE9iaik7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmouY29udHJhY3RJZCwgY29udHJhY3RJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoub3BlcmF0b3JJZCwgb3BlcmF0b3JJZCk7XG4gICAgYXNzZXJ0LmVxdWFsKHJlcXVlc3RPYmoudXBkYXRlSWQsIHVwZGF0ZUlkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5wYWNrYWdlTmFtZSwgcGFja2FnZU5hbWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgY29zaWduIGRlbGVnYXRpb24gcHJvcG9zYWwgcmVxdWVzdCBvYmplY3Qgd2l0aG91dCBwYWNrYWdlTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0SWQoY29udHJhY3RJZCkub3BlcmF0b3JJZChvcGVyYXRvcklkKS51cGRhdGVJZCh1cGRhdGVJZCk7XG4gICAgY29uc3QgcmVxdWVzdE9iajogQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsID0gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpO1xuICAgIHNob3VsZC5leGlzdChyZXF1ZXN0T2JqKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5jb250cmFjdElkLCBjb250cmFjdElkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai5vcGVyYXRvcklkLCBvcGVyYXRvcklkKTtcbiAgICBhc3NlcnQuZXF1YWwocmVxdWVzdE9iai51cGRhdGVJZCwgdXBkYXRlSWQpO1xuICAgIGFzc2VydC5lcXVhbChyZXF1ZXN0T2JqLnBhY2thZ2VOYW1lLCB1bmRlZmluZWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGNvbnRyYWN0SWQgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIHR4QnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdHhCdWlsZGVyLm9wZXJhdG9ySWQob3BlcmF0b3JJZCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIudG9SZXF1ZXN0T2JqZWN0KCksIC9jb250cmFjdElkIGlzIG1pc3NpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBvcGVyYXRvcklkIGlzIG1pc3NpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdElkKGNvbnRyYWN0SWQpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLnRvUmVxdWVzdE9iamVjdCgpLCAvb3BlcmF0b3JJZCBpcyBtaXNzaW5nLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgY29udHJhY3RJZCBpcyBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IENvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbEJ1aWxkZXIoY29pbnMuZ2V0KCd0Y2FudG9uJykpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICB0eEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmNvbnRyYWN0SWQoJycpLCAvY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIG9wZXJhdG9ySWQgaXMgZW1wdHkgc3RyaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBDb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxCdWlsZGVyKGNvaW5zLmdldCgndGNhbnRvbicpKTtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgdHhCdWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHR4QnVpbGRlci5vcGVyYXRvcklkKCcnKSwgL29wZXJhdG9ySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBzZXRUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2V0VHJhbnNhY3Rpb24oe30gYXMgYW55KSwgL05vdCBpbXBsZW1lbnRlZC8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IG9uIGFkZFNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsQnVpbGRlcihjb2lucy5nZXQoJ3RjYW50b24nKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuYWRkU2lnbmF0dXJlKHt9IGFzIGFueSwgQnVmZmVyLmZyb20oJycpKSwgL05vdCBpbXBsZW1lbnRlZC8pO1xuICB9KTtcbn0pO1xuIl19