@bitgo-beta/sdk-core 8.2.1-beta.7 → 8.2.1-beta.70

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 (99) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  5. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +38 -12
  6. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +555 -178
  8. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  9. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  10. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  11. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +92 -155
  12. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  13. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  14. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +0 -3
  15. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  16. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  17. package/dist/src/account-lib/util/crypto.d.ts +5 -25
  18. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  19. package/dist/src/account-lib/util/crypto.js +10 -55
  20. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +16 -0
  21. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  22. package/dist/src/bitgo/baseCoin/baseCoin.js +15 -1
  23. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +13 -1
  24. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  25. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  26. package/dist/src/bitgo/enterprise/enterprise.d.ts +3 -3
  27. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  28. package/dist/src/bitgo/enterprise/enterprise.js +7 -6
  29. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +3 -3
  30. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  31. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  32. package/dist/src/bitgo/environments.d.ts +6 -0
  33. package/dist/src/bitgo/environments.d.ts.map +1 -1
  34. package/dist/src/bitgo/environments.js +15 -3
  35. package/dist/src/bitgo/keychain/iKeychains.d.ts +1 -0
  36. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  37. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  38. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  39. package/dist/src/bitgo/keychain/keychains.js +30 -24
  40. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +124 -89
  41. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  42. package/dist/src/bitgo/keychain/ovcJsonCodec.js +31 -24
  43. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +1 -0
  44. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  45. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +1 -1
  46. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  47. package/dist/src/bitgo/pendingApproval/pendingApproval.js +12 -1
  48. package/dist/src/bitgo/staking/iStakingWallet.d.ts +11 -1
  49. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  50. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  51. package/dist/src/bitgo/staking/stakingWallet.d.ts +7 -1
  52. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  53. package/dist/src/bitgo/staking/stakingWallet.js +9 -1
  54. package/dist/src/bitgo/tss/common.d.ts +16 -6
  55. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  56. package/dist/src/bitgo/tss/common.js +26 -11
  57. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +11 -8
  58. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  59. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +36 -33
  60. package/dist/src/bitgo/tss/ecdsa/types.d.ts +2 -2
  61. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  62. package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
  63. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +4 -3
  64. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  65. package/dist/src/bitgo/tss/eddsa/eddsa.js +16 -5
  66. package/dist/src/bitgo/tss/types.d.ts +4 -0
  67. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  68. package/dist/src/bitgo/tss/types.js +1 -1
  69. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +38 -12
  70. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  71. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +28 -9
  72. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +48 -8
  73. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  74. package/dist/src/bitgo/utils/tss/baseTypes.js +11 -2
  75. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +10 -8
  76. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  77. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +65 -62
  78. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +4 -3
  79. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  80. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  81. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +18 -5
  82. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  83. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +76 -22
  84. package/dist/src/bitgo/wallet/iWallet.d.ts +2 -1
  85. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  86. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  87. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  88. package/dist/src/bitgo/wallet/wallet.js +22 -8
  89. package/dist/src/openssl/index.d.ts +4 -1
  90. package/dist/src/openssl/index.d.ts.map +1 -1
  91. package/dist/src/openssl/index.js +7 -12
  92. package/dist/tsconfig.tsbuildinfo +1 -8264
  93. package/package.json +6 -7
  94. package/dist/src/openssl/openssl.d.ts +0 -12
  95. package/dist/src/openssl/openssl.d.ts.map +0 -1
  96. package/dist/src/openssl/openssl.js +0 -48
  97. package/dist/src/openssl/opensslbytes.d.ts +0 -4
  98. package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
  99. package/dist/src/openssl/opensslbytes.js +0 -20
@@ -1,18 +1,22 @@
1
1
  import * as t from 'io-ts';
2
- export declare const OvcShare: t.TypeC<{
2
+ export declare const OvcShare: t.IntersectionC<[t.TypeC<{
3
3
  publicShare: t.StringC;
4
4
  privateShare: t.StringC;
5
5
  vssProof: t.StringC;
6
6
  i: t.NumberC;
7
7
  j: t.NumberC;
8
- }>;
9
- export declare const OvcToOtherShare: t.IntersectionC<[t.TypeC<{
8
+ }>, t.PartialC<{
9
+ paillierPublicKey: t.StringC;
10
+ }>]>;
11
+ export declare const OvcToOtherShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
10
12
  publicShare: t.StringC;
11
13
  privateShare: t.StringC;
12
14
  vssProof: t.StringC;
13
15
  i: t.NumberC;
14
16
  j: t.NumberC;
15
- }>, t.TypeC<{
17
+ }>, t.PartialC<{
18
+ paillierPublicKey: t.StringC;
19
+ }>]>, t.TypeC<{
16
20
  uSig: t.StringC;
17
21
  }>]>;
18
22
  export declare const OvcToBitGoJSON: t.ExactC<t.TypeC<{
@@ -23,108 +27,48 @@ export declare const OvcToBitGoJSON: t.ExactC<t.TypeC<{
23
27
  ovc: t.TypeC<{
24
28
  1: t.TypeC<{
25
29
  gpgPubKey: t.StringC;
26
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
30
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
27
31
  publicShare: t.StringC;
28
32
  privateShare: t.StringC;
29
33
  vssProof: t.StringC;
30
34
  i: t.NumberC;
31
35
  j: t.NumberC;
32
- }>, t.TypeC<{
36
+ }>, t.PartialC<{
37
+ paillierPublicKey: t.StringC;
38
+ }>]>, t.TypeC<{
33
39
  uSig: t.StringC;
34
40
  }>]>;
35
41
  }>;
36
42
  2: t.TypeC<{
37
43
  gpgPubKey: t.StringC;
38
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
44
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
39
45
  publicShare: t.StringC;
40
46
  privateShare: t.StringC;
41
47
  vssProof: t.StringC;
42
48
  i: t.NumberC;
43
49
  j: t.NumberC;
44
- }>, t.TypeC<{
50
+ }>, t.PartialC<{
51
+ paillierPublicKey: t.StringC;
52
+ }>]>, t.TypeC<{
45
53
  uSig: t.StringC;
46
54
  }>]>;
47
- ovcToOvcShare: t.IntersectionC<[t.TypeC<{
55
+ ovcToOvcShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
48
56
  publicShare: t.StringC;
49
57
  privateShare: t.StringC;
50
58
  vssProof: t.StringC;
51
59
  i: t.NumberC;
52
60
  j: t.NumberC;
53
- }>, t.TypeC<{
61
+ }>, t.PartialC<{
62
+ paillierPublicKey: t.StringC;
63
+ }>]>, t.TypeC<{
54
64
  uSig: t.StringC;
55
65
  }>]>;
56
66
  }>;
57
67
  }>;
58
68
  }>>;
59
69
  export declare type OvcToBitGoJSON = t.TypeOf<typeof OvcToBitGoJSON>;
60
- export declare const BitGoToOvcJSON: t.IntersectionC<[t.ExactC<t.TypeC<{
61
- tssVersion: t.StringC;
62
- walletType: t.StringC;
63
- coin: t.StringC;
64
- state: t.NumberC;
65
- ovc: t.TypeC<{
66
- 1: t.TypeC<{
67
- gpgPubKey: t.StringC;
68
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
69
- publicShare: t.StringC;
70
- privateShare: t.StringC;
71
- vssProof: t.StringC;
72
- i: t.NumberC;
73
- j: t.NumberC;
74
- }>, t.TypeC<{
75
- uSig: t.StringC;
76
- }>]>;
77
- }>;
78
- 2: t.TypeC<{
79
- gpgPubKey: t.StringC;
80
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
81
- publicShare: t.StringC;
82
- privateShare: t.StringC;
83
- vssProof: t.StringC;
84
- i: t.NumberC;
85
- j: t.NumberC;
86
- }>, t.TypeC<{
87
- uSig: t.StringC;
88
- }>]>;
89
- ovcToOvcShare: t.IntersectionC<[t.TypeC<{
90
- publicShare: t.StringC;
91
- privateShare: t.StringC;
92
- vssProof: t.StringC;
93
- i: t.NumberC;
94
- j: t.NumberC;
95
- }>, t.TypeC<{
96
- uSig: t.StringC;
97
- }>]>;
98
- }>;
99
- }>;
100
- }>>, t.TypeC<{
101
- platform: t.TypeC<{
102
- commonKeychain: t.StringC;
103
- walletHSMGPGPublicKeySigs: t.StringC;
104
- ovc: t.TypeC<{
105
- 1: t.TypeC<{
106
- bitgoToOvcShare: t.TypeC<{
107
- publicShare: t.StringC;
108
- privateShare: t.StringC;
109
- vssProof: t.StringC;
110
- i: t.NumberC;
111
- j: t.NumberC;
112
- }>;
113
- }>;
114
- 2: t.TypeC<{
115
- bitgoToOvcShare: t.TypeC<{
116
- publicShare: t.StringC;
117
- privateShare: t.StringC;
118
- vssProof: t.StringC;
119
- i: t.NumberC;
120
- j: t.NumberC;
121
- }>;
122
- }>;
123
- }>;
124
- }>;
125
- }>]>;
126
- export declare const BitGoKeyFromOvcShares: t.ExactC<t.TypeC<{
127
- bitGoOutputJsonForOvc: t.IntersectionC<[t.ExactC<t.TypeC<{
70
+ export declare const BitGoToOvcJSON: t.ExactC<t.TypeC<{
71
+ wallet: t.IntersectionC<[t.ExactC<t.TypeC<{
128
72
  tssVersion: t.StringC;
129
73
  walletType: t.StringC;
130
74
  coin: t.StringC;
@@ -132,34 +76,40 @@ export declare const BitGoKeyFromOvcShares: t.ExactC<t.TypeC<{
132
76
  ovc: t.TypeC<{
133
77
  1: t.TypeC<{
134
78
  gpgPubKey: t.StringC;
135
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
79
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
136
80
  publicShare: t.StringC;
137
81
  privateShare: t.StringC;
138
82
  vssProof: t.StringC;
139
83
  i: t.NumberC;
140
84
  j: t.NumberC;
141
- }>, t.TypeC<{
85
+ }>, t.PartialC<{
86
+ paillierPublicKey: t.StringC;
87
+ }>]>, t.TypeC<{
142
88
  uSig: t.StringC;
143
89
  }>]>;
144
90
  }>;
145
91
  2: t.TypeC<{
146
92
  gpgPubKey: t.StringC;
147
- ovcToBitgoShare: t.IntersectionC<[t.TypeC<{
93
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
148
94
  publicShare: t.StringC;
149
95
  privateShare: t.StringC;
150
96
  vssProof: t.StringC;
151
97
  i: t.NumberC;
152
98
  j: t.NumberC;
153
- }>, t.TypeC<{
99
+ }>, t.PartialC<{
100
+ paillierPublicKey: t.StringC;
101
+ }>]>, t.TypeC<{
154
102
  uSig: t.StringC;
155
103
  }>]>;
156
- ovcToOvcShare: t.IntersectionC<[t.TypeC<{
104
+ ovcToOvcShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
157
105
  publicShare: t.StringC;
158
106
  privateShare: t.StringC;
159
107
  vssProof: t.StringC;
160
108
  i: t.NumberC;
161
109
  j: t.NumberC;
162
- }>, t.TypeC<{
110
+ }>, t.PartialC<{
111
+ paillierPublicKey: t.StringC;
112
+ }>]>, t.TypeC<{
163
113
  uSig: t.StringC;
164
114
  }>]>;
165
115
  }>;
@@ -167,29 +117,114 @@ export declare const BitGoKeyFromOvcShares: t.ExactC<t.TypeC<{
167
117
  }>>, t.TypeC<{
168
118
  platform: t.TypeC<{
169
119
  commonKeychain: t.StringC;
170
- walletHSMGPGPublicKeySigs: t.StringC;
120
+ walletGpgPubKeySigs: t.StringC;
171
121
  ovc: t.TypeC<{
172
122
  1: t.TypeC<{
173
- bitgoToOvcShare: t.TypeC<{
123
+ bitgoToOvcShare: t.IntersectionC<[t.TypeC<{
174
124
  publicShare: t.StringC;
175
125
  privateShare: t.StringC;
176
126
  vssProof: t.StringC;
177
127
  i: t.NumberC;
178
128
  j: t.NumberC;
179
- }>;
129
+ }>, t.PartialC<{
130
+ paillierPublicKey: t.StringC;
131
+ }>]>;
180
132
  }>;
181
133
  2: t.TypeC<{
182
- bitgoToOvcShare: t.TypeC<{
134
+ bitgoToOvcShare: t.IntersectionC<[t.TypeC<{
183
135
  publicShare: t.StringC;
184
136
  privateShare: t.StringC;
185
137
  vssProof: t.StringC;
186
138
  i: t.NumberC;
187
139
  j: t.NumberC;
188
- }>;
140
+ }>, t.PartialC<{
141
+ paillierPublicKey: t.StringC;
142
+ }>]>;
189
143
  }>;
190
144
  }>;
191
145
  }>;
192
146
  }>]>;
147
+ }>>;
148
+ export declare type BitGoToOvcJSON = t.TypeOf<typeof BitGoToOvcJSON>;
149
+ export declare const BitGoKeyFromOvcShares: t.ExactC<t.TypeC<{
150
+ bitGoOutputJsonForOvc: t.ExactC<t.TypeC<{
151
+ wallet: t.IntersectionC<[t.ExactC<t.TypeC<{
152
+ tssVersion: t.StringC;
153
+ walletType: t.StringC;
154
+ coin: t.StringC;
155
+ state: t.NumberC;
156
+ ovc: t.TypeC<{
157
+ 1: t.TypeC<{
158
+ gpgPubKey: t.StringC;
159
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
160
+ publicShare: t.StringC;
161
+ privateShare: t.StringC;
162
+ vssProof: t.StringC;
163
+ i: t.NumberC;
164
+ j: t.NumberC;
165
+ }>, t.PartialC<{
166
+ paillierPublicKey: t.StringC;
167
+ }>]>, t.TypeC<{
168
+ uSig: t.StringC;
169
+ }>]>;
170
+ }>;
171
+ 2: t.TypeC<{
172
+ gpgPubKey: t.StringC;
173
+ ovcToBitgoShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
174
+ publicShare: t.StringC;
175
+ privateShare: t.StringC;
176
+ vssProof: t.StringC;
177
+ i: t.NumberC;
178
+ j: t.NumberC;
179
+ }>, t.PartialC<{
180
+ paillierPublicKey: t.StringC;
181
+ }>]>, t.TypeC<{
182
+ uSig: t.StringC;
183
+ }>]>;
184
+ ovcToOvcShare: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
185
+ publicShare: t.StringC;
186
+ privateShare: t.StringC;
187
+ vssProof: t.StringC;
188
+ i: t.NumberC;
189
+ j: t.NumberC;
190
+ }>, t.PartialC<{
191
+ paillierPublicKey: t.StringC;
192
+ }>]>, t.TypeC<{
193
+ uSig: t.StringC;
194
+ }>]>;
195
+ }>;
196
+ }>;
197
+ }>>, t.TypeC<{
198
+ platform: t.TypeC<{
199
+ commonKeychain: t.StringC;
200
+ walletGpgPubKeySigs: t.StringC;
201
+ ovc: t.TypeC<{
202
+ 1: t.TypeC<{
203
+ bitgoToOvcShare: t.IntersectionC<[t.TypeC<{
204
+ publicShare: t.StringC;
205
+ privateShare: t.StringC;
206
+ vssProof: t.StringC;
207
+ i: t.NumberC;
208
+ j: t.NumberC;
209
+ }>, t.PartialC<{
210
+ paillierPublicKey: t.StringC;
211
+ }>]>;
212
+ }>;
213
+ 2: t.TypeC<{
214
+ bitgoToOvcShare: t.IntersectionC<[t.TypeC<{
215
+ publicShare: t.StringC;
216
+ privateShare: t.StringC;
217
+ vssProof: t.StringC;
218
+ i: t.NumberC;
219
+ j: t.NumberC;
220
+ }>, t.PartialC<{
221
+ paillierPublicKey: t.StringC;
222
+ }>]>;
223
+ }>;
224
+ }>;
225
+ }>;
226
+ }>]>;
227
+ }>>;
193
228
  bitGoKeyId: t.StringC;
194
229
  }>>;
195
230
  export declare type BitGoKeyFromOvcShares = t.TypeOf<typeof BitGoKeyFromOvcShares>;
@@ -1 +1 @@
1
- {"version":3,"file":"ovcJsonCodec.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/ovcJsonCodec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,QAAQ;;;;;;EASpB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;IAQ3B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmB1B,CAAC;AAEF,oBAAY,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqB1B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMjC,CAAC;AAEF,oBAAY,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"ovcJsonCodec.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/ovcJsonCodec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAE3B,eAAO,MAAM,QAAQ;;;;;;;;IAcpB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;IAQ3B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmB1B,CAAC;AAEF,oBAAY,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuB1B,CAAC;AAEF,oBAAY,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMjC,CAAC;AAEF,oBAAY,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -22,13 +22,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.BitGoKeyFromOvcShares = exports.BitGoToOvcJSON = exports.OvcToBitGoJSON = exports.OvcToOtherShare = exports.OvcShare = void 0;
23
23
  /* eslint-disable no-redeclare */
24
24
  const t = __importStar(require("io-ts"));
25
- exports.OvcShare = t.type({
26
- publicShare: t.string,
27
- privateShare: t.string,
28
- vssProof: t.string,
29
- i: t.number,
30
- j: t.number,
31
- }, 'OvcShare');
25
+ exports.OvcShare = t.intersection([
26
+ t.type({
27
+ publicShare: t.string,
28
+ privateShare: t.string,
29
+ vssProof: t.string,
30
+ i: t.number,
31
+ j: t.number,
32
+ }),
33
+ t.partial({
34
+ paillierPublicKey: t.string,
35
+ }),
36
+ ], 'OvcShare');
32
37
  exports.OvcToOtherShare = t.intersection([
33
38
  exports.OvcShare,
34
39
  t.type({
@@ -52,27 +57,29 @@ exports.OvcToBitGoJSON = t.strict({
52
57
  }),
53
58
  }),
54
59
  }, 'OvcToBitGoJSON');
55
- exports.BitGoToOvcJSON = t.intersection([
56
- exports.OvcToBitGoJSON,
57
- t.type({
58
- platform: t.type({
59
- commonKeychain: t.string,
60
- walletHSMGPGPublicKeySigs: t.string,
61
- ovc: t.type({
62
- // BitGo to User (OVC-1)
63
- 1: t.type({
64
- bitgoToOvcShare: exports.OvcShare,
65
- }),
66
- // BitGo to Backup (OVC-2)
67
- 2: t.type({
68
- bitgoToOvcShare: exports.OvcShare,
60
+ exports.BitGoToOvcJSON = t.strict({
61
+ wallet: t.intersection([
62
+ exports.OvcToBitGoJSON,
63
+ t.type({
64
+ platform: t.type({
65
+ commonKeychain: t.string,
66
+ walletGpgPubKeySigs: t.string,
67
+ ovc: t.type({
68
+ // BitGo to User (OVC-1)
69
+ 1: t.type({
70
+ bitgoToOvcShare: exports.OvcShare,
71
+ }),
72
+ // BitGo to Backup (OVC-2)
73
+ 2: t.type({
74
+ bitgoToOvcShare: exports.OvcShare,
75
+ }),
69
76
  }),
70
77
  }),
71
78
  }),
72
- }),
73
- ], 'BitgoToOvcJson');
79
+ ]),
80
+ }, 'BitgoToOvcJson');
74
81
  exports.BitGoKeyFromOvcShares = t.strict({
75
82
  bitGoOutputJsonForOvc: exports.BitGoToOvcJSON,
76
83
  bitGoKeyId: t.string,
77
84
  }, 'BitGoKeyFromOvcShares');
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZjSnNvbkNvZGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL292Y0pzb25Db2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHlDQUEyQjtBQUVkLFFBQUEsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzVCO0lBQ0UsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ3JCLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTTtJQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDbEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ1osRUFDRCxVQUFVLENBQ1gsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQzNDO0lBQ0UsZ0JBQVE7SUFDUixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO0tBQ2YsQ0FBQztDQUNILEVBQ0QsaUJBQWlCLENBQ2xCLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUNwQztJQUNFLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNwQixVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2YsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDVixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNSLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNuQixlQUFlLEVBQUUsdUJBQWU7U0FDakMsQ0FBQztRQUNGLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ1IsU0FBUyxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ25CLGVBQWUsRUFBRSx1QkFBZTtZQUNoQyxhQUFhLEVBQUUsdUJBQWU7U0FDL0IsQ0FBQztLQUNILENBQUM7Q0FDSCxFQUNELGdCQUFnQixDQUNqQixDQUFDO0FBSVcsUUFBQSxjQUFjLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FDMUM7SUFDRSxzQkFBYztJQUNkLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNmLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTTtZQUN4Qix5QkFBeUIsRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNuQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDVix3QkFBd0I7Z0JBQ3hCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNSLGVBQWUsRUFBRSxnQkFBUTtpQkFDMUIsQ0FBQztnQkFDRiwwQkFBMEI7Z0JBQzFCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNSLGVBQWUsRUFBRSxnQkFBUTtpQkFDMUIsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDO0tBQ0gsQ0FBQztDQUNILEVBQ0QsZ0JBQWdCLENBQ2pCLENBQUM7QUFFVyxRQUFBLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQzNDO0lBQ0UscUJBQXFCLEVBQUUsc0JBQWM7SUFDckMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ3JCLEVBQ0QsdUJBQXVCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuXG5leHBvcnQgY29uc3QgT3ZjU2hhcmUgPSB0LnR5cGUoXG4gIHtcbiAgICBwdWJsaWNTaGFyZTogdC5zdHJpbmcsXG4gICAgcHJpdmF0ZVNoYXJlOiB0LnN0cmluZyxcbiAgICB2c3NQcm9vZjogdC5zdHJpbmcsXG4gICAgaTogdC5udW1iZXIsXG4gICAgajogdC5udW1iZXIsXG4gIH0sXG4gICdPdmNTaGFyZSdcbik7XG5cbmV4cG9ydCBjb25zdCBPdmNUb090aGVyU2hhcmUgPSB0LmludGVyc2VjdGlvbihcbiAgW1xuICAgIE92Y1NoYXJlLFxuICAgIHQudHlwZSh7XG4gICAgICB1U2lnOiB0LnN0cmluZyxcbiAgICB9KSxcbiAgXSxcbiAgJ092Y1RvT3RoZXJTaGFyZSdcbik7XG5cbmV4cG9ydCBjb25zdCBPdmNUb0JpdEdvSlNPTiA9IHQuc3RyaWN0KFxuICB7XG4gICAgdHNzVmVyc2lvbjogdC5zdHJpbmcsXG4gICAgd2FsbGV0VHlwZTogdC5zdHJpbmcsXG4gICAgY29pbjogdC5zdHJpbmcsXG4gICAgc3RhdGU6IHQubnVtYmVyLFxuICAgIG92YzogdC50eXBlKHtcbiAgICAgIDE6IHQudHlwZSh7XG4gICAgICAgIGdwZ1B1YktleTogdC5zdHJpbmcsXG4gICAgICAgIG92Y1RvQml0Z29TaGFyZTogT3ZjVG9PdGhlclNoYXJlLFxuICAgICAgfSksXG4gICAgICAyOiB0LnR5cGUoe1xuICAgICAgICBncGdQdWJLZXk6IHQuc3RyaW5nLFxuICAgICAgICBvdmNUb0JpdGdvU2hhcmU6IE92Y1RvT3RoZXJTaGFyZSxcbiAgICAgICAgb3ZjVG9PdmNTaGFyZTogT3ZjVG9PdGhlclNoYXJlLFxuICAgICAgfSksXG4gICAgfSksXG4gIH0sXG4gICdPdmNUb0JpdEdvSlNPTidcbik7XG5cbmV4cG9ydCB0eXBlIE92Y1RvQml0R29KU09OID0gdC5UeXBlT2Y8dHlwZW9mIE92Y1RvQml0R29KU09OPjtcblxuZXhwb3J0IGNvbnN0IEJpdEdvVG9PdmNKU09OID0gdC5pbnRlcnNlY3Rpb24oXG4gIFtcbiAgICBPdmNUb0JpdEdvSlNPTixcbiAgICB0LnR5cGUoe1xuICAgICAgcGxhdGZvcm06IHQudHlwZSh7XG4gICAgICAgIGNvbW1vbktleWNoYWluOiB0LnN0cmluZyxcbiAgICAgICAgd2FsbGV0SFNNR1BHUHVibGljS2V5U2lnczogdC5zdHJpbmcsXG4gICAgICAgIG92YzogdC50eXBlKHtcbiAgICAgICAgICAvLyBCaXRHbyB0byBVc2VyIChPVkMtMSlcbiAgICAgICAgICAxOiB0LnR5cGUoe1xuICAgICAgICAgICAgYml0Z29Ub092Y1NoYXJlOiBPdmNTaGFyZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBCaXRHbyB0byBCYWNrdXAgKE9WQy0yKVxuICAgICAgICAgIDI6IHQudHlwZSh7XG4gICAgICAgICAgICBiaXRnb1RvT3ZjU2hhcmU6IE92Y1NoYXJlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICBdLFxuICAnQml0Z29Ub092Y0pzb24nXG4pO1xuXG5leHBvcnQgY29uc3QgQml0R29LZXlGcm9tT3ZjU2hhcmVzID0gdC5zdHJpY3QoXG4gIHtcbiAgICBiaXRHb091dHB1dEpzb25Gb3JPdmM6IEJpdEdvVG9PdmNKU09OLFxuICAgIGJpdEdvS2V5SWQ6IHQuc3RyaW5nLFxuICB9LFxuICAnQml0R29LZXlGcm9tT3ZjU2hhcmVzJ1xuKTtcblxuZXhwb3J0IHR5cGUgQml0R29LZXlGcm9tT3ZjU2hhcmVzID0gdC5UeXBlT2Y8dHlwZW9mIEJpdEdvS2V5RnJvbU92Y1NoYXJlcz47XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZjSnNvbkNvZGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL292Y0pzb25Db2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBQ2pDLHlDQUEyQjtBQUVkLFFBQUEsUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQ3BDO0lBQ0UsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNMLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTTtRQUNyQixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDdEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2xCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTTtRQUNYLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTTtLQUNaLENBQUM7SUFDRixDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ1IsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU07S0FDNUIsQ0FBQztDQUNILEVBQ0QsVUFBVSxDQUNYLENBQUM7QUFFVyxRQUFBLGVBQWUsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUMzQztJQUNFLGdCQUFRO0lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNMLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtLQUNmLENBQUM7Q0FDSCxFQUNELGlCQUFpQixDQUNsQixDQUFDO0FBRVcsUUFBQSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FDcEM7SUFDRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDcEIsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNmLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1YsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDUixTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU07WUFDbkIsZUFBZSxFQUFFLHVCQUFlO1NBQ2pDLENBQUM7UUFDRixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNSLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNuQixlQUFlLEVBQUUsdUJBQWU7WUFDaEMsYUFBYSxFQUFFLHVCQUFlO1NBQy9CLENBQUM7S0FDSCxDQUFDO0NBQ0gsRUFDRCxnQkFBZ0IsQ0FDakIsQ0FBQztBQUlXLFFBQUEsY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQ3BDO0lBQ0UsTUFBTSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDckIsc0JBQWM7UUFDZCxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ0wsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsY0FBYyxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUN4QixtQkFBbUIsRUFBRSxDQUFDLENBQUMsTUFBTTtnQkFDN0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQ1Ysd0JBQXdCO29CQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDUixlQUFlLEVBQUUsZ0JBQVE7cUJBQzFCLENBQUM7b0JBQ0YsMEJBQTBCO29CQUMxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDUixlQUFlLEVBQUUsZ0JBQVE7cUJBQzFCLENBQUM7aUJBQ0gsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDO0tBQ0gsQ0FBQztDQUNILEVBQ0QsZ0JBQWdCLENBQ2pCLENBQUM7QUFJVyxRQUFBLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQzNDO0lBQ0UscUJBQXFCLEVBQUUsc0JBQWM7SUFDckMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ3JCLEVBQ0QsdUJBQXVCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZWRlY2xhcmUgKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuXG5leHBvcnQgY29uc3QgT3ZjU2hhcmUgPSB0LmludGVyc2VjdGlvbihcbiAgW1xuICAgIHQudHlwZSh7XG4gICAgICBwdWJsaWNTaGFyZTogdC5zdHJpbmcsXG4gICAgICBwcml2YXRlU2hhcmU6IHQuc3RyaW5nLFxuICAgICAgdnNzUHJvb2Y6IHQuc3RyaW5nLFxuICAgICAgaTogdC5udW1iZXIsXG4gICAgICBqOiB0Lm51bWJlcixcbiAgICB9KSxcbiAgICB0LnBhcnRpYWwoe1xuICAgICAgcGFpbGxpZXJQdWJsaWNLZXk6IHQuc3RyaW5nLFxuICAgIH0pLFxuICBdLFxuICAnT3ZjU2hhcmUnXG4pO1xuXG5leHBvcnQgY29uc3QgT3ZjVG9PdGhlclNoYXJlID0gdC5pbnRlcnNlY3Rpb24oXG4gIFtcbiAgICBPdmNTaGFyZSxcbiAgICB0LnR5cGUoe1xuICAgICAgdVNpZzogdC5zdHJpbmcsXG4gICAgfSksXG4gIF0sXG4gICdPdmNUb090aGVyU2hhcmUnXG4pO1xuXG5leHBvcnQgY29uc3QgT3ZjVG9CaXRHb0pTT04gPSB0LnN0cmljdChcbiAge1xuICAgIHRzc1ZlcnNpb246IHQuc3RyaW5nLFxuICAgIHdhbGxldFR5cGU6IHQuc3RyaW5nLFxuICAgIGNvaW46IHQuc3RyaW5nLFxuICAgIHN0YXRlOiB0Lm51bWJlcixcbiAgICBvdmM6IHQudHlwZSh7XG4gICAgICAxOiB0LnR5cGUoe1xuICAgICAgICBncGdQdWJLZXk6IHQuc3RyaW5nLFxuICAgICAgICBvdmNUb0JpdGdvU2hhcmU6IE92Y1RvT3RoZXJTaGFyZSxcbiAgICAgIH0pLFxuICAgICAgMjogdC50eXBlKHtcbiAgICAgICAgZ3BnUHViS2V5OiB0LnN0cmluZyxcbiAgICAgICAgb3ZjVG9CaXRnb1NoYXJlOiBPdmNUb090aGVyU2hhcmUsXG4gICAgICAgIG92Y1RvT3ZjU2hhcmU6IE92Y1RvT3RoZXJTaGFyZSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICB9LFxuICAnT3ZjVG9CaXRHb0pTT04nXG4pO1xuXG5leHBvcnQgdHlwZSBPdmNUb0JpdEdvSlNPTiA9IHQuVHlwZU9mPHR5cGVvZiBPdmNUb0JpdEdvSlNPTj47XG5cbmV4cG9ydCBjb25zdCBCaXRHb1RvT3ZjSlNPTiA9IHQuc3RyaWN0KFxuICB7XG4gICAgd2FsbGV0OiB0LmludGVyc2VjdGlvbihbXG4gICAgICBPdmNUb0JpdEdvSlNPTixcbiAgICAgIHQudHlwZSh7XG4gICAgICAgIHBsYXRmb3JtOiB0LnR5cGUoe1xuICAgICAgICAgIGNvbW1vbktleWNoYWluOiB0LnN0cmluZyxcbiAgICAgICAgICB3YWxsZXRHcGdQdWJLZXlTaWdzOiB0LnN0cmluZyxcbiAgICAgICAgICBvdmM6IHQudHlwZSh7XG4gICAgICAgICAgICAvLyBCaXRHbyB0byBVc2VyIChPVkMtMSlcbiAgICAgICAgICAgIDE6IHQudHlwZSh7XG4gICAgICAgICAgICAgIGJpdGdvVG9PdmNTaGFyZTogT3ZjU2hhcmUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vIEJpdEdvIHRvIEJhY2t1cCAoT1ZDLTIpXG4gICAgICAgICAgICAyOiB0LnR5cGUoe1xuICAgICAgICAgICAgICBiaXRnb1RvT3ZjU2hhcmU6IE92Y1NoYXJlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgXSksXG4gIH0sXG4gICdCaXRnb1RvT3ZjSnNvbidcbik7XG5cbmV4cG9ydCB0eXBlIEJpdEdvVG9PdmNKU09OID0gdC5UeXBlT2Y8dHlwZW9mIEJpdEdvVG9PdmNKU09OPjtcblxuZXhwb3J0IGNvbnN0IEJpdEdvS2V5RnJvbU92Y1NoYXJlcyA9IHQuc3RyaWN0KFxuICB7XG4gICAgYml0R29PdXRwdXRKc29uRm9yT3ZjOiBCaXRHb1RvT3ZjSlNPTixcbiAgICBiaXRHb0tleUlkOiB0LnN0cmluZyxcbiAgfSxcbiAgJ0JpdEdvS2V5RnJvbU92Y1NoYXJlcydcbik7XG5cbmV4cG9ydCB0eXBlIEJpdEdvS2V5RnJvbU92Y1NoYXJlcyA9IHQuVHlwZU9mPHR5cGVvZiBCaXRHb0tleUZyb21PdmNTaGFyZXM+O1xuIl19
@@ -26,6 +26,7 @@ export interface ApproveOptions {
26
26
  otp?: string;
27
27
  tx?: string;
28
28
  xprv?: string;
29
+ previewPendingTxs?: boolean;
29
30
  }
30
31
  export interface PendingApprovalInfo {
31
32
  type: Type;
@@ -1 +1 @@
1
- {"version":3,"file":"iPendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/iPendingApproval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,oBAAY,KAAK;IACf,OAAO,YAAY;IACnB,kBAAkB,sBAAsB;IACxC,4BAA4B,8BAA8B;IAC1D,uBAAuB,0BAA0B;IACjD,0BAA0B,6BAA6B;IACvD,sBAAsB,yBAAyB;IAC/C,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,QAAQ,aAAa;CACtB;AAED,oBAAY,IAAI;IACd,mBAAmB,sBAAsB;IACzC,mBAAmB,uBAAuB;IAC1C,mBAAmB,sBAAsB;IACzC,iCAAiC,mCAAmC;IACpE,wBAAwB,2BAA2B;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,kBAAkB,CAAC,EAAE;QACnB,YAAY,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QACrC,UAAU,EAAE,GAAG,CAAC;QAChB,WAAW,EAAE;YACX,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;YAChC,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;SACtB,CAAC;QACF,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,IAAI,MAAM,CAAC;IACb,SAAS,IAAI,SAAS,CAAC;IACvB,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC,KAAK,IAAI,KAAK,CAAC;IACf,OAAO,IAAI,MAAM,CAAC;IAClB,IAAI,IAAI,IAAI,CAAC;IACb,IAAI,IAAI,mBAAmB,CAAC;IAC5B,iBAAiB,IAAI,MAAM,CAAC;IAC5B,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzG,0BAA0B,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACxD"}
1
+ {"version":3,"file":"iPendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/iPendingApproval.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,4 @@ var Type;
26
26
  Type["UPDATE_APPROVALS_REQUIRED_REQUEST"] = "updateApprovalsRequiredRequest";
27
27
  Type["TRANSACTION_REQUEST_FULL"] = "transactionRequestFull";
28
28
  })(Type = exports.Type || (exports.Type = {}));
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVBlbmRpbmdBcHByb3ZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9wZW5kaW5nQXBwcm92YWwvaVBlbmRpbmdBcHByb3ZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDbkIsOEJBQWlCLENBQUE7SUFDakIsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBR3BCO0FBRUQsSUFBWSxLQVVYO0FBVkQsV0FBWSxLQUFLO0lBQ2YsNEJBQW1CLENBQUE7SUFDbkIsaURBQXdDLENBQUE7SUFDeEMsbUVBQTBELENBQUE7SUFDMUQsMERBQWlELENBQUE7SUFDakQsZ0VBQXVELENBQUE7SUFDdkQsd0RBQStDLENBQUE7SUFDL0MsOEJBQXFCLENBQUE7SUFDckIsa0NBQXlCLENBQUE7SUFDekIsOEJBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLEtBQUssR0FBTCxhQUFLLEtBQUwsYUFBSyxRQVVoQjtBQUVELElBQVksSUFNWDtBQU5ELFdBQVksSUFBSTtJQUNkLGlEQUF5QyxDQUFBO0lBQ3pDLGtEQUEwQyxDQUFBO0lBQzFDLGlEQUF5QyxDQUFBO0lBQ3pDLDRFQUFvRSxDQUFBO0lBQ3BFLDJEQUFtRCxDQUFBO0FBQ3JELENBQUMsRUFOVyxJQUFJLEdBQUosWUFBSSxLQUFKLFlBQUksUUFNZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vYXBpJztcblxuZXhwb3J0IGVudW0gT3duZXJUeXBlIHtcbiAgV0FMTEVUID0gJ3dhbGxldCcsXG4gIEVOVEVSUFJJU0UgPSAnZW50ZXJwcmlzZScsXG59XG5cbmV4cG9ydCBlbnVtIFN0YXRlIHtcbiAgUEVORElORyA9ICdwZW5kaW5nJyxcbiAgQVdBSVRJTkdfU0lHTkFUVVJFID0gJ2F3YWl0aW5nU2lnbmF0dXJlJyxcbiAgUEVORElOR19CSVRHT19BRE1JTl9BUFBST1ZBTCA9ICdwZW5kaW5nQml0R29BZG1pbkFwcHJvdmFsJyxcbiAgUEVORElOR19JRF9WRVJJRklDQVRJT04gPSAncGVuZGluZ0lkVmVyaWZpY2F0aW9uJyxcbiAgUEVORElOR19DVVNUT0RJQU5fQVBQUk9WQUwgPSAncGVuZGluZ0N1c3RvZGlhbkFwcHJvdmFsJyxcbiAgUEVORElOR19GSU5BTF9BUFBST1ZBTCA9ICdwZW5kaW5nRmluYWxBcHByb3ZhbCcsXG4gIEFQUFJPVkVEID0gJ2FwcHJvdmVkJyxcbiAgUFJPQ0VTU0lORyA9ICdwcm9jZXNzaW5nJyxcbiAgUkVKRUNURUQgPSAncmVqZWN0ZWQnLFxufVxuXG5leHBvcnQgZW51bSBUeXBlIHtcbiAgVVNFUl9DSEFOR0VfUkVRVUVTVCA9ICd1c2VyQ2hhbmdlUmVxdWVzdCcsXG4gIFRSQU5TQUNUSU9OX1JFUVVFU1QgPSAndHJhbnNhY3Rpb25SZXF1ZXN0JyxcbiAgUE9MSUNZX1JVTEVfUkVRVUVTVCA9ICdwb2xpY3lSdWxlUmVxdWVzdCcsXG4gIFVQREFURV9BUFBST1ZBTFNfUkVRVUlSRURfUkVRVUVTVCA9ICd1cGRhdGVBcHByb3ZhbHNSZXF1aXJlZFJlcXVlc3QnLFxuICBUUkFOU0FDVElPTl9SRVFVRVNUX0ZVTEwgPSAndHJhbnNhY3Rpb25SZXF1ZXN0RnVsbCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92ZU9wdGlvbnMge1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBvdHA/OiBzdHJpbmc7XG4gIHR4Pzogc3RyaW5nO1xuICB4cHJ2Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlbmRpbmdBcHByb3ZhbEluZm8ge1xuICB0eXBlOiBUeXBlO1xuICB0cmFuc2FjdGlvblJlcXVlc3Q/OiB7XG4gICAgY29pblNwZWNpZmljOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAgIHJlY2lwaWVudHM6IGFueTtcbiAgICBidWlsZFBhcmFtczoge1xuICAgICAgdHlwZT86ICdmYW5vdXQnIHwgJ2NvbnNvbGlkYXRlJztcbiAgICAgIFtpbmRleDogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgc291cmNlV2FsbGV0Pzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlbmRpbmdBcHByb3ZhbERhdGEge1xuICBpZDogc3RyaW5nO1xuICB3YWxsZXQ/OiBzdHJpbmc7XG4gIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gIHN0YXRlOiBTdGF0ZTtcbiAgY3JlYXRvcjogc3RyaW5nO1xuICBpbmZvOiBQZW5kaW5nQXBwcm92YWxJbmZvO1xuICBhcHByb3ZhbHNSZXF1aXJlZD86IG51bWJlcjtcbiAgdHhSZXF1ZXN0SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlbmRpbmdBcHByb3ZhbCB7XG4gIGlkKCk6IHN0cmluZztcbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZTtcbiAgd2FsbGV0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGF0ZSgpOiBTdGF0ZTtcbiAgY3JlYXRvcigpOiBzdHJpbmc7XG4gIHR5cGUoKTogVHlwZTtcbiAgaW5mbygpOiBQZW5kaW5nQXBwcm92YWxJbmZvO1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXI7XG4gIHVybChleHRyYT86IHN0cmluZyk6IHN0cmluZztcbiAgZ2V0KHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIG5ldmVyPik6IFByb21pc2U8SVBlbmRpbmdBcHByb3ZhbD47XG4gIGFwcHJvdmUocGFyYW1zPzogQXBwcm92ZU9wdGlvbnMpOiBQcm9taXNlPGFueT47XG4gIHJlamVjdChwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pOiBQcm9taXNlPGFueT47XG4gIGNhbmNlbChwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4pOiBQcm9taXNlPGFueT47XG4gIHJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtczogQXBwcm92ZU9wdGlvbnMsIHJlcUlkOiBJUmVxdWVzdFRyYWNlcik6IFByb21pc2U8eyB0eEhleDogc3RyaW5nIH0+O1xuICByZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXM/OiBhbnkpOiBQcm9taXNlPGFueT47XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVBlbmRpbmdBcHByb3ZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9wZW5kaW5nQXBwcm92YWwvaVBlbmRpbmdBcHByb3ZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDbkIsOEJBQWlCLENBQUE7SUFDakIsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUhXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBR3BCO0FBRUQsSUFBWSxLQVVYO0FBVkQsV0FBWSxLQUFLO0lBQ2YsNEJBQW1CLENBQUE7SUFDbkIsaURBQXdDLENBQUE7SUFDeEMsbUVBQTBELENBQUE7SUFDMUQsMERBQWlELENBQUE7SUFDakQsZ0VBQXVELENBQUE7SUFDdkQsd0RBQStDLENBQUE7SUFDL0MsOEJBQXFCLENBQUE7SUFDckIsa0NBQXlCLENBQUE7SUFDekIsOEJBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLEtBQUssR0FBTCxhQUFLLEtBQUwsYUFBSyxRQVVoQjtBQUVELElBQVksSUFNWDtBQU5ELFdBQVksSUFBSTtJQUNkLGlEQUF5QyxDQUFBO0lBQ3pDLGtEQUEwQyxDQUFBO0lBQzFDLGlEQUF5QyxDQUFBO0lBQ3pDLDRFQUFvRSxDQUFBO0lBQ3BFLDJEQUFtRCxDQUFBO0FBQ3JELENBQUMsRUFOVyxJQUFJLEdBQUosWUFBSSxLQUFKLFlBQUksUUFNZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vYXBpJztcblxuZXhwb3J0IGVudW0gT3duZXJUeXBlIHtcbiAgV0FMTEVUID0gJ3dhbGxldCcsXG4gIEVOVEVSUFJJU0UgPSAnZW50ZXJwcmlzZScsXG59XG5cbmV4cG9ydCBlbnVtIFN0YXRlIHtcbiAgUEVORElORyA9ICdwZW5kaW5nJyxcbiAgQVdBSVRJTkdfU0lHTkFUVVJFID0gJ2F3YWl0aW5nU2lnbmF0dXJlJyxcbiAgUEVORElOR19CSVRHT19BRE1JTl9BUFBST1ZBTCA9ICdwZW5kaW5nQml0R29BZG1pbkFwcHJvdmFsJyxcbiAgUEVORElOR19JRF9WRVJJRklDQVRJT04gPSAncGVuZGluZ0lkVmVyaWZpY2F0aW9uJyxcbiAgUEVORElOR19DVVNUT0RJQU5fQVBQUk9WQUwgPSAncGVuZGluZ0N1c3RvZGlhbkFwcHJvdmFsJyxcbiAgUEVORElOR19GSU5BTF9BUFBST1ZBTCA9ICdwZW5kaW5nRmluYWxBcHByb3ZhbCcsXG4gIEFQUFJPVkVEID0gJ2FwcHJvdmVkJyxcbiAgUFJPQ0VTU0lORyA9ICdwcm9jZXNzaW5nJyxcbiAgUkVKRUNURUQgPSAncmVqZWN0ZWQnLFxufVxuXG5leHBvcnQgZW51bSBUeXBlIHtcbiAgVVNFUl9DSEFOR0VfUkVRVUVTVCA9ICd1c2VyQ2hhbmdlUmVxdWVzdCcsXG4gIFRSQU5TQUNUSU9OX1JFUVVFU1QgPSAndHJhbnNhY3Rpb25SZXF1ZXN0JyxcbiAgUE9MSUNZX1JVTEVfUkVRVUVTVCA9ICdwb2xpY3lSdWxlUmVxdWVzdCcsXG4gIFVQREFURV9BUFBST1ZBTFNfUkVRVUlSRURfUkVRVUVTVCA9ICd1cGRhdGVBcHByb3ZhbHNSZXF1aXJlZFJlcXVlc3QnLFxuICBUUkFOU0FDVElPTl9SRVFVRVNUX0ZVTEwgPSAndHJhbnNhY3Rpb25SZXF1ZXN0RnVsbCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92ZU9wdGlvbnMge1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xuICBvdHA/OiBzdHJpbmc7XG4gIHR4Pzogc3RyaW5nO1xuICB4cHJ2Pzogc3RyaW5nO1xuICBwcmV2aWV3UGVuZGluZ1R4cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gIHR5cGU6IFR5cGU7XG4gIHRyYW5zYWN0aW9uUmVxdWVzdD86IHtcbiAgICBjb2luU3BlY2lmaWM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gICAgcmVjaXBpZW50czogYW55O1xuICAgIGJ1aWxkUGFyYW1zOiB7XG4gICAgICB0eXBlPzogJ2Zhbm91dCcgfCAnY29uc29saWRhdGUnO1xuICAgICAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbiAgICBzb3VyY2VXYWxsZXQ/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVuZGluZ0FwcHJvdmFsRGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHdhbGxldD86IHN0cmluZztcbiAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgc3RhdGU6IFN0YXRlO1xuICBjcmVhdG9yOiBzdHJpbmc7XG4gIGluZm86IFBlbmRpbmdBcHByb3ZhbEluZm87XG4gIGFwcHJvdmFsc1JlcXVpcmVkPzogbnVtYmVyO1xuICB0eFJlcXVlc3RJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVuZGluZ0FwcHJvdmFsIHtcbiAgaWQoKTogc3RyaW5nO1xuICBvd25lclR5cGUoKTogT3duZXJUeXBlO1xuICB3YWxsZXRJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVudGVycHJpc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN0YXRlKCk6IFN0YXRlO1xuICBjcmVhdG9yKCk6IHN0cmluZztcbiAgdHlwZSgpOiBUeXBlO1xuICBpbmZvKCk6IFBlbmRpbmdBcHByb3ZhbEluZm87XG4gIGFwcHJvdmFsc1JlcXVpcmVkKCk6IG51bWJlcjtcbiAgdXJsKGV4dHJhPzogc3RyaW5nKTogc3RyaW5nO1xuICBnZXQocGFyYW1zPzogUmVjb3JkPHN0cmluZywgbmV2ZXI+KTogUHJvbWlzZTxJUGVuZGluZ0FwcHJvdmFsPjtcbiAgYXBwcm92ZShwYXJhbXM/OiBBcHByb3ZlT3B0aW9ucyk6IFByb21pc2U8YW55PjtcbiAgcmVqZWN0KHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIG5ldmVyPik6IFByb21pc2U8YW55PjtcbiAgY2FuY2VsKHBhcmFtcz86IFJlY29yZDxzdHJpbmcsIG5ldmVyPik6IFByb21pc2U8YW55PjtcbiAgcmVjcmVhdGVBbmRTaWduVFNTVHJhbnNhY3Rpb24ocGFyYW1zOiBBcHByb3ZlT3B0aW9ucywgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfT47XG4gIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcz86IGFueSk6IFByb21pc2U8YW55Pjtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6DjE"}
1
+ {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAsGxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6DjE"}
@@ -25,6 +25,7 @@ exports.PendingApproval = void 0;
25
25
  */
26
26
  const _ = __importStar(require("lodash"));
27
27
  const common = __importStar(require("../../common"));
28
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
28
29
  const pendingApproval_1 = require("../pendingApproval");
29
30
  const utils_1 = require("../utils");
30
31
  class PendingApproval {
@@ -146,8 +147,10 @@ class PendingApproval {
146
147
  * Sets this PendingApproval to an approved state
147
148
  */
148
149
  async approve(params = {}) {
150
+ var _a, _b, _c, _d, _e, _f;
149
151
  common.validateParams(params, [], ['walletPassphrase', 'otp']);
150
152
  let canRecreateTransaction = true;
153
+ params.previewPendingTxs = true;
151
154
  /*
152
155
  * Cold wallets cannot recreate transactions if the only thing provided is the wallet passphrase
153
156
  *
@@ -163,6 +166,14 @@ class PendingApproval {
163
166
  if (!params.xprv && !(params.walletPassphrase && !isColdWallet && !isOFCWallet)) {
164
167
  canRecreateTransaction = false;
165
168
  }
169
+ // If there are no recipients, then the transaction cannot be recreated
170
+ const recipients = ((_c = (_b = (_a = this.info()) === null || _a === void 0 ? void 0 : _a.transactionRequest) === null || _b === void 0 ? void 0 : _b.buildParams) === null || _c === void 0 ? void 0 : _c.recipients) || [];
171
+ const type = (_f = (_e = (_d = this.info()) === null || _d === void 0 ? void 0 : _d.transactionRequest) === null || _e === void 0 ? void 0 : _e.buildParams) === null || _f === void 0 ? void 0 : _f.type;
172
+ // We only want to not recreate transactions with no recipients if it is a UTXO coin.
173
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
174
+ if (utxolib.isValidNetwork(this.baseCoin.network) && recipients.length === 0 && type !== 'consolidate') {
175
+ canRecreateTransaction = false;
176
+ }
166
177
  const reqId = new utils_1.RequestTracer();
167
178
  /*
168
179
  * Internal helper function to get the serialized transaction which is being approved
@@ -317,4 +328,4 @@ class PendingApproval {
317
328
  }
318
329
  }
319
330
  exports.PendingApproval = PendingApproval;
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2Qyx3REFRNEI7QUFDNUIsb0NBQW1EO0FBR25ELE1BQWEsZUFBZTtJQU8xQixZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxtQkFBd0MsRUFBRSxNQUFnQjtRQUMzRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxPQUFPLDJCQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzNDLE9BQU8sMkJBQVMsQ0FBQyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7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Qyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFDRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUM7WUFDckUsMEJBQTBCLENBQUMsMkJBQTJCLEdBQUcseUJBQXlCLENBQUMsMkJBQTJCLEVBQzlHO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUF2VkQsMENBdVZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgY29tbW9uIGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHtcbiAgQXBwcm92ZU9wdGlvbnMsXG4gIElQZW5kaW5nQXBwcm92YWwsXG4gIE93bmVyVHlwZSxcbiAgUGVuZGluZ0FwcHJvdmFsRGF0YSxcbiAgUGVuZGluZ0FwcHJvdmFsSW5mbyxcbiAgU3RhdGUsXG4gIFR5cGUsXG59IGZyb20gJy4uL3BlbmRpbmdBcHByb3ZhbCc7XG5pbXBvcnQgeyBSZXF1ZXN0VHJhY2VyLCBUc3NVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsIGltcGxlbWVudHMgSVBlbmRpbmdBcHByb3ZhbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29pbjogSUJhc2VDb2luO1xuICBwcml2YXRlIHRzc1V0aWxzOiBUc3NVdGlscztcbiAgcHJpdmF0ZSB3YWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIF9wZW5kaW5nQXBwcm92YWw6IFBlbmRpbmdBcHByb3ZhbERhdGE7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgcGVuZGluZ0FwcHJvdmFsRGF0YTogUGVuZGluZ0FwcHJvdmFsRGF0YSwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy50c3NVdGlscyA9IG5ldyBUc3NVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IHBlbmRpbmdBcHByb3ZhbERhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBzZWxmLndhbGxldCBpcyBzZXRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVXYWxsZXQoKTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodXBkYXRlZFdhbGxldCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgc291cmNld2FsbGV0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2FsbGV0ID0gdXBkYXRlZFdhbGxldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXQuaWQoKSAhPT0gdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhbiBhcHByb3ZlZCBzdGF0ZVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZShwYXJhbXM6IEFwcHJvdmVPcHRpb25zID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldFBhc3NwaHJhc2UnLCAnb3RwJ10pO1xuXG4gICAgbGV0IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgIC8qXG4gICAgICogQ29sZCB3YWxsZXRzIGNhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbnMgaWYgdGhlIG9ubHkgdGhpbmcgcHJvdmlkZWQgaXMgdGhlIHdhbGxldCBwYXNzcGhyYXNlXG4gICAgICpcbiAgICAgKiBUaGUgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpZiBlaXRoZXJcbiAgICAgKiDigJMgdGhlcmUgaXMgYW4geHBydlxuICAgICAqIOKAkyB0aGVyZSBpcyBhIHdhbGxldFBhc3NwaHJhc2UgYW5kIHRoZSB3YWxsZXQgaXMgbm90IGNvbGQgKGJlY2F1c2UgaWYgaXQncyBjb2xkLCB0aGUgcGFzc3BocmFzZSBpcyBvZiBsaXR0bGUgdXNlKVxuICAgICAqXG4gICAgICogVGhlcmVmb3JlLCBpZiBuZWl0aGVyIG9mIHRoZXNlIGlzIHRydWUsIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVjcmVhdGVkLCB3aGljaCBpcyByZWZsZWN0ZWQgaW4gdGhlIGlmXG4gICAgICogc3RhdGVtZW50IGJlbG93LlxuICAgICAqL1xuICAgIGNvbnN0IGlzQ29sZFdhbGxldCA9ICEhXy5nZXQodGhpcy53YWxsZXQsICdfd2FsbGV0LmlzQ29sZCcpO1xuICAgIGNvbnN0IGlzT0ZDV2FsbGV0ID0gdGhpcy5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ29mYyc7IC8vIE9mZi1jaGFpbiB0cmFuc2FjdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSByZWJ1aWx0XG4gICAgaWYgKCFwYXJhbXMueHBydiAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlICYmICFpc0NvbGRXYWxsZXQgJiYgIWlzT0ZDV2FsbGV0KSkge1xuICAgICAgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvbiB3aGljaCBpcyBiZWluZyBhcHByb3ZlZFxuICAgICAqL1xuICAgIGNvbnN0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0Jykge1xuICAgICAgICAvKlxuICAgICAgICAgKiBJZiB0aGlzIGlzIGEgcmVxdWVzdCBmb3IgYXBwcm92aW5nIGEgdHJhbnNhY3Rpb24sIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgdXNlciBoYXMgYSBwcml2YXRlIGtleSB0byB0aGUgd2FsbGV0XG4gICAgICAgICAqIChzb21lIGFkbWlucyBtYXkgbm90IGhhdmUgdGhlIHNwZW5kIHBlcm1pc3Npb24pLCB0aGUgdHJhbnNhY3Rpb24gY291bGQgZWl0aGVyIGJlIHJlYnJvYWRjYXN0IGFzIGlzLCBvciBpdCBjb3VsZFxuICAgICAgICAgKiBiZSByZWNvbnN0cnVjdGVkLiBJdCBpcyBwcmVmZXJhYmxlIHRvIHJlY29uc3RydWN0IGEgdHggaW4gb3JkZXIgdG8gYWRoZXJlIHRvIHRoZSBsYXRlc3QgbmV0d29yayBjb25kaXRpb25zXG4gICAgICAgICAqIHN1Y2ggYXMgbmV3ZXIgdW5zcGVudHMsIGRpZmZlcmVudCBmZWVzLCBvciBhIGhpZ2hlciBzZXF1ZW5jZSBpZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBhcmFtcy50eCkge1xuICAgICAgICAgIC8vIHRoZSBhcHByb3ZhbCB0eCB3YXMgcmVjb25zdHJ1Y3RlZCBhbmQgZXhwbGljaXRseSBzcGVjaWZpZWQgLSBwYXNzIGl0IHRocm91Z2hcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhIZXg6IHBhcmFtcy50eCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBfLmdldCh0aGlzLmluZm8oKSwgYHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWMuJHt0aGlzLmJhc2VDb2luLnR5cGV9YCkgYXMge1xuICAgICAgICAgIHR4SGV4OiBzdHJpbmc7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdGhpcyB1c2VyIG1heSBub3QgaGF2ZSBzcGVuZGluZyBwcml2aWxlZ2VzIG9yIGEgcGFzc3BocmFzZSBtYXkgbm90IGhhdmUgYmVlbiBwYXNzZWQgaW5cbiAgICAgICAgaWYgKCFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgaWYgKCFfLmlzT2JqZWN0KHRyYW5zYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGVyZSBpcyBuZWl0aGVyIGFuIG9yaWdpbmFsIHRyYW5zYWN0aW9uIG9iamVjdCBub3IgY2FuIGEgbmV3IG9uZSBiZSByZWNyZWF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVdhbGxldCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nQXBwcm92YWwudHhSZXF1ZXN0SWQpIHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXMsIHJlcUlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKlxuICAgICAqIEludGVybmFsIGhlbHBlciBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBhcHByb3ZhbCBwYXlsb2FkIGFuZCBzZW5kIGl0IHRvIGJpdGdvXG4gICAgICovXG4gICAgY29uc3Qgc2VuZEFwcHJvdmFsID0gKHRyYW5zYWN0aW9uOiB7IHR4SGV4OiBzdHJpbmc7IGhhbGZTaWduZWQ/OiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogYW55ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgLy8gaWYgdGhlIHRyYW5zYWN0aW9uIGFscmVhZHkgaGFzIGEgaGFsZiBzaWduZWQgcHJvcGVydHksIHdlIHRha2UgdGhhdCBkaXJlY3RseVxuICAgICAgICBhcHByb3ZhbFBhcmFtcy5oYWxmU2lnbmVkID0gdHJhbnNhY3Rpb24uaGFsZlNpZ25lZCB8fCB0cmFuc2FjdGlvbjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFJZCk7XG4gICAgICByZXR1cm4gdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHByb3ZhbFRyYW5zYWN0aW9uID0gKGF3YWl0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24oKSkgYXMgYW55O1xuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZW5kQXBwcm92YWwoYXBwcm92YWxUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiAmJlxuICAgICAgICAoZS5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGUubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWplY3QocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgUGVuZGluZ0FwcHJvdmFsLnJlamVjdCgpXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGNhbmNlbChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWplY3QocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhbmQgc2lnbiBUU1MgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcHByb3ZlT3B0aW9uc30gcGFyYW1zIG5lZWRlZCB0byBnZXQgdHhzIGFuZCB1c2UgdGhlIHdhbGxldFBhc3NwaHJhc2UgdG8gdHNzIHNpZ25cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zLCByZXFJZDogUmVxdWVzdFRyYWNlcik6IFByb21pc2U8eyB0eEhleDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IHdhbGxldFBhc3NwaHJhc2UgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0eFJlcXVlc3RJZCA9IHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZDtcblxuICAgIGlmICghdGhpcy53YWxsZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2FsbGV0IG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghd2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3YWxsZXRQYXNzcGhyYXNlIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghdHhSZXF1ZXN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdGVkUHJ2ID0gYXdhaXQgdGhpcy53YWxsZXQuZ2V0UHJ2KHsgd2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCB0aGlzLnRzc1V0aWxzLnJlY3JlYXRlVHhSZXF1ZXN0KHR4UmVxdWVzdElkLCBkZWNyeXB0ZWRQcnYsIHJlcUlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHhIZXg6IHR4UmVxdWVzdC51bnNpZ25lZFR4c1swXS5zZXJpYWxpemVkVHhIZXgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhIHRyYW5zYWN0aW9uIGZvciBhIHBlbmRpbmcgYXBwcm92YWwgdG8gcmVzcG9uZCB0byB1cGRhdGVkIG5ldHdvcmsgY29uZGl0aW9uc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0aGlzIG1ldGhvZCBvbmx5IG1ha2VzIHNlbnNlIHdpdGggZXhpc3RpbmcgdHJhbnNhY3Rpb24gcmVxdWVzdHNcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb24gd2l0aG91dCB0cmFuc2FjdGlvbiByZXF1ZXN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy53YWxsZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHdhbGxldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsUHJlYnVpbGQgPSB0cmFuc2FjdGlvblJlcXVlc3QuY29pblNwZWNpZmljW3RoaXMuYmFzZUNvaW4udHlwZV07XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdHJhbnNhY3Rpb25SZXF1ZXN0LnJlY2lwaWVudHM7XG4gICAgY29uc3QgcHJlYnVpbGRQYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zLCB7IHJlY2lwaWVudHM6IHJlY2lwaWVudHMgfSwgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvcmlnaW5hbFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uKSkge1xuICAgICAgcHJlYnVpbGRQYXJhbXMuaG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zICYmIHRyYW5zYWN0aW9uUmVxdWVzdC5idWlsZFBhcmFtcy50eXBlID09PSAnY29uc29saWRhdGUnKSB7XG4gICAgICAvLyBjb25zb2xpZGF0ZSB0YWcgaXMgaW4gdGhlIGJ1aWxkIHBhcmFtcyAtIHRoaXMgaXMgYSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uLCBzb1xuICAgICAgLy8gaXQgbmVlZHMgdG8gYmUgcmVidWlsdCB1c2luZyB0aGUgc3BlY2lhbCBjb25zb2xpZGF0aW9uIGJ1aWxkIHJvdXRlXG4gICAgICBwcmVidWlsZFBhcmFtcy5wcmVidWlsZFR4ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAucG9zdCh0aGlzLndhbGxldC51cmwoYC9jb25zb2xpZGF0ZVVuc3BlbnRzYCkpXG4gICAgICAgIC5zZW5kKHByZWJ1aWxkUGFyYW1zKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgICBkZWxldGUgcHJlYnVpbGRQYXJhbXMucmVjaXBpZW50cztcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMud2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHByZWJ1aWxkUGFyYW1zKTtcbiAgICAvLyBjb21wYXJlIFBBWUdvIGZlZXNcbiAgICBjb25zdCBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogb3JpZ2luYWxQcmVidWlsZCxcbiAgICB9KSkgYXMgYW55O1xuICAgIGNvbnN0IHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfSkpIGFzIGFueTtcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkpIHtcbiAgICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ICE9PSAnYmlnaW50JyAmJlxuICAgICAgIV8uaXNGaW5pdGUocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgY291bGQgbm90IGJlIGRldGVybWluZWQnKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIV8uaXNVbmRlZmluZWQob3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpICYmXG4gICAgICByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPiBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWNyZWF0ZWQgdHJhbnNhY3Rpb24gaXMgdXNpbmcgYSBoaWdoZXIgcGF5LWFzLXlvdS1nby1mZWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUN2Qyw4REFBZ0Q7QUFHaEQsd0RBUTRCO0FBQzVCLG9DQUFtRDtBQUduRCxNQUFhLGVBQWU7SUFPMUIsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsbUJBQXdDLEVBQUUsTUFBZ0I7UUFDM0csSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxFQUFFO1FBQ0EsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7WUFDaEMsT0FBTywyQkFBUyxDQUFDLE1BQU0sQ0FBQztTQUN6QjthQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtZQUMzQyxPQUFPLDJCQUFTLENBQUMsVUFBVSxDQUFDO1NBQzdCO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7U0FDakc7SUFDSCxDQUFDO0lBRUQ7O09B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eEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFVBQVUsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFRLENBQUM7UUFDWCxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZFLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixVQUFVLEVBQUUsaUJBQWlCO1NBQzlCLENBQUMsQ0FBUSxDQUFDO1FBRVgsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLDJCQUEyQixDQUFDLEVBQUU7WUFDekUsT0FBTyxpQkFBaUIsQ0FBQztTQUMxQjtRQUVELElBQ0UsT0FBTywwQkFBMEIsQ0FBQywyQkFBMkIsS0FBSyxRQUFRO1lBQzFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQywyQkFBMkIsQ0FBQyxFQUNuRTtZQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztTQUMzRTtRQUNELElBQ0UsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLDJCQUEyQixDQUFDO1lBQ3JFLDBCQUEwQixDQUFDLDJCQUEyQixHQUFHLHlCQUF5QixDQUFDLDJCQUEyQixFQUM5RztZQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBbFdELDBDQWtXQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIGNvbW1vbiBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHtcbiAgQXBwcm92ZU9wdGlvbnMsXG4gIElQZW5kaW5nQXBwcm92YWwsXG4gIE93bmVyVHlwZSxcbiAgUGVuZGluZ0FwcHJvdmFsRGF0YSxcbiAgUGVuZGluZ0FwcHJvdmFsSW5mbyxcbiAgU3RhdGUsXG4gIFR5cGUsXG59IGZyb20gJy4uL3BlbmRpbmdBcHByb3ZhbCc7XG5pbXBvcnQgeyBSZXF1ZXN0VHJhY2VyLCBUc3NVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsIGltcGxlbWVudHMgSVBlbmRpbmdBcHByb3ZhbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29pbjogSUJhc2VDb2luO1xuICBwcml2YXRlIHRzc1V0aWxzOiBUc3NVdGlscztcbiAgcHJpdmF0ZSB3YWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIF9wZW5kaW5nQXBwcm92YWw6IFBlbmRpbmdBcHByb3ZhbERhdGE7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgcGVuZGluZ0FwcHJvdmFsRGF0YTogUGVuZGluZ0FwcHJvdmFsRGF0YSwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy50c3NVdGlscyA9IG5ldyBUc3NVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IHBlbmRpbmdBcHByb3ZhbERhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBzZWxmLndhbGxldCBpcyBzZXRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVXYWxsZXQoKTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodXBkYXRlZFdhbGxldCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgc291cmNld2FsbGV0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2FsbGV0ID0gdXBkYXRlZFdhbGxldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXQuaWQoKSAhPT0gdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhbiBhcHByb3ZlZCBzdGF0ZVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZShwYXJhbXM6IEFwcHJvdmVPcHRpb25zID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldFBhc3NwaHJhc2UnLCAnb3RwJ10pO1xuXG4gICAgbGV0IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgIHBhcmFtcy5wcmV2aWV3UGVuZGluZ1R4cyA9IHRydWU7XG4gICAgLypcbiAgICAgKiBDb2xkIHdhbGxldHMgY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9ucyBpZiB0aGUgb25seSB0aGluZyBwcm92aWRlZCBpcyB0aGUgd2FsbGV0IHBhc3NwaHJhc2VcbiAgICAgKlxuICAgICAqIFRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgcmVjcmVhdGVkIGlmIGVpdGhlclxuICAgICAqIOKAkyB0aGVyZSBpcyBhbiB4cHJ2XG4gICAgICog4oCTIHRoZXJlIGlzIGEgd2FsbGV0UGFzc3BocmFzZSBhbmQgdGhlIHdhbGxldCBpcyBub3QgY29sZCAoYmVjYXVzZSBpZiBpdCdzIGNvbGQsIHRoZSBwYXNzcGhyYXNlIGlzIG9mIGxpdHRsZSB1c2UpXG4gICAgICpcbiAgICAgKiBUaGVyZWZvcmUsIGlmIG5laXRoZXIgb2YgdGhlc2UgaXMgdHJ1ZSwgdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSByZWNyZWF0ZWQsIHdoaWNoIGlzIHJlZmxlY3RlZCBpbiB0aGUgaWZcbiAgICAgKiBzdGF0ZW1lbnQgYmVsb3cuXG4gICAgICovXG4gICAgY29uc3QgaXNDb2xkV2FsbGV0ID0gISFfLmdldCh0aGlzLndhbGxldCwgJ193YWxsZXQuaXNDb2xkJyk7XG4gICAgY29uc3QgaXNPRkNXYWxsZXQgPSB0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnb2ZjJzsgLy8gT2ZmLWNoYWluIHRyYW5zYWN0aW9ucyBkb24ndCBuZWVkIHRvIGJlIHJlYnVpbHRcbiAgICBpZiAoIXBhcmFtcy54cHJ2ICYmICEocGFyYW1zLndhbGxldFBhc3NwaHJhc2UgJiYgIWlzQ29sZFdhbGxldCAmJiAhaXNPRkNXYWxsZXQpKSB7XG4gICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIHJlY2lwaWVudHMsIHRoZW4gdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSByZWNyZWF0ZWRcbiAgICBjb25zdCByZWNpcGllbnRzID0gdGhpcy5pbmZvKCk/LnRyYW5zYWN0aW9uUmVxdWVzdD8uYnVpbGRQYXJhbXM/LnJlY2lwaWVudHMgfHwgW107XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuaW5mbygpPy50cmFuc2FjdGlvblJlcXVlc3Q/LmJ1aWxkUGFyYW1zPy50eXBlO1xuXG4gICAgLy8gV2Ugb25seSB3YW50IHRvIG5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbnMgd2l0aCBubyByZWNpcGllbnRzIGlmIGl0IGlzIGEgVVRYTyBjb2luLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgaWYgKHV0eG9saWIuaXNWYWxpZE5ldHdvcmsoKHRoaXMuYmFzZUNvaW4gYXMgYW55KS5uZXR3b3JrKSAmJiByZWNpcGllbnRzLmxlbmd0aCA9PT0gMCAmJiB0eXBlICE9PSAnY29uc29saWRhdGUnKSB7XG4gICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuXG4gICAgLypcbiAgICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGJlaW5nIGFwcHJvdmVkXG4gICAgICovXG4gICAgY29uc3QgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbiA9IGFzeW5jICgpOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0cmFuc2FjdGlvblJlcXVlc3QnKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhcHByb3ZpbmcgYSB0cmFuc2FjdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyB1c2VyIGhhcyBhIHByaXZhdGUga2V5IHRvIHRoZSB3YWxsZXRcbiAgICAgICAgICogKHNvbWUgYWRtaW5zIG1heSBub3QgaGF2ZSB0aGUgc3BlbmQgcGVybWlzc2lvbiksIHRoZSB0cmFuc2FjdGlvbiBjb3VsZCBlaXRoZXIgYmUgcmVicm9hZGNhc3QgYXMgaXMsIG9yIGl0IGNvdWxkXG4gICAgICAgICAqIGJlIHJlY29uc3RydWN0ZWQuIEl0IGlzIHByZWZlcmFibGUgdG8gcmVjb25zdHJ1Y3QgYSB0eCBpbiBvcmRlciB0byBhZGhlcmUgdG8gdGhlIGxhdGVzdCBuZXR3b3JrIGNvbmRpdGlvbnNcbiAgICAgICAgICogc3VjaCBhcyBuZXdlciB1bnNwZW50cywgZGlmZmVyZW50IGZlZXMsIG9yIGEgaGlnaGVyIHNlcXVlbmNlIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGFyYW1zLnR4KSB7XG4gICAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eEhleDogcGFyYW1zLnR4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IF8uZ2V0KHRoaXMuaW5mbygpLCBgdHJhbnNhY3Rpb25SZXF1ZXN0LmNvaW5TcGVjaWZpYy4ke3RoaXMuYmFzZUNvaW4udHlwZX1gKSBhcyB7XG4gICAgICAgICAgdHhIZXg6IHN0cmluZztcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0aGlzIHVzZXIgbWF5IG5vdCBoYXZlIHNwZW5kaW5nIHByaXZpbGVnZXMgb3IgYSBwYXNzcGhyYXNlIG1heSBub3QgaGF2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgICBpZiAoIWNhblJlY3JlYXRlVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICBpZiAoIV8uaXNPYmplY3QodHJhbnNhY3Rpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZXJlIGlzIG5laXRoZXIgYW4gb3JpZ2luYWwgdHJhbnNhY3Rpb24gb2JqZWN0IG5vciBjYW4gYSBuZXcgb25lIGJlIHJlY3JlYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBvcHVsYXRlV2FsbGV0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGFwcHJvdmFsIHBheWxvYWQgYW5kIHNlbmQgaXQgdG8gYml0Z29cbiAgICAgKi9cbiAgICBjb25zdCBzZW5kQXBwcm92YWwgPSAodHJhbnNhY3Rpb246IHsgdHhIZXg6IHN0cmluZzsgaGFsZlNpZ25lZD86IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsUGFyYW1zOiBhbnkgPSB7IHN0YXRlOiAnYXBwcm92ZWQnLCBvdHA6IHBhcmFtcy5vdHAgfTtcbiAgICAgIGlmICh0cmFuc2FjdGlvbikge1xuICAgICAgICAvLyBpZiB0aGUgdHJhbnNhY3Rpb24gYWxyZWFkeSBoYXMgYSBoYWxmIHNpZ25lZCBwcm9wZXJ0eSwgd2UgdGFrZSB0aGF0IGRpcmVjdGx5XG4gICAgICAgIGFwcHJvdmFsUGFyYW1zLmhhbGZTaWduZWQgPSB0cmFuc2FjdGlvbi5oYWxmU2lnbmVkIHx8IHRyYW5zYWN0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiB0aGlzLmJpdGdvLnB1dCh0aGlzLnVybCgpKS5zZW5kKGFwcHJvdmFsUGFyYW1zKS5yZXN1bHQoKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsVHJhbnNhY3Rpb24gPSAoYXdhaXQgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbigpKSBhcyBhbnk7XG4gICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgcmV0dXJuIGF3YWl0IHNlbmRBcHByb3ZhbChhcHByb3ZhbFRyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uICYmXG4gICAgICAgIChlLm1lc3NhZ2UuaW5kZXhPZignY291bGQgbm90IGZpbmQgdW5zcGVudCBvdXRwdXQgZm9yIGlucHV0JykgIT09IC0xIHx8XG4gICAgICAgICAgZS5tZXNzYWdlLmluZGV4T2YoJ3RyYW5zYWN0aW9uIGNvbmZsaWN0cyB3aXRoIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGluIHRoZSBzZW5kIHF1ZXVlJykgIT09IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5zcGVudHMgZXhwaXJlZCwgd2FsbGV0IHBhc3NwaHJhc2Ugb3IgeHBydiByZXF1aXJlZCB0byByZWNyZWF0ZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhIHJlamVjdGVkIHN0YXRlXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlamVjdChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZCh7IHN0YXRlOiAncmVqZWN0ZWQnIH0pLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciBQZW5kaW5nQXBwcm92YWwucmVqZWN0KClcbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgY2FuY2VsKHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlamVjdChwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGFuZCBzaWduIFRTUyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0FwcHJvdmVPcHRpb25zfSBwYXJhbXMgbmVlZGVkIHRvIGdldCB0eHMgYW5kIHVzZSB0aGUgd2FsbGV0UGFzc3BocmFzZSB0byB0c3Mgc2lnblxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlci5cbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtczogQXBwcm92ZU9wdGlvbnMsIHJlcUlkOiBSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgd2FsbGV0UGFzc3BocmFzZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLnR4UmVxdWVzdElkO1xuXG4gICAgaWYgKCF0aGlzLndhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXYWxsZXQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF3YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldFBhc3NwaHJhc2Ugbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0eFJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eFJlcXVlc3RJZCBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLndhbGxldC5nZXRQcnYoeyB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IHRoaXMudHNzVXRpbHMucmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQsIGRlY3J5cHRlZFBydiwgcmVxSWQpO1xuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogdHhSZXF1ZXN0LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGEgdHJhbnNhY3Rpb24gZm9yIGEgcGVuZGluZyBhcHByb3ZhbCB0byByZXNwb25kIHRvIHVwZGF0ZWQgbmV0d29yayBjb25kaXRpb25zXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbiByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHRyYW5zYWN0aW9uIHJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxQcmVidWlsZCA9IHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWNbdGhpcy5iYXNlQ29pbi50eXBlXTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cztcbiAgICBjb25zdCBwcmVidWlsZFBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwYXJhbXMsIHsgcmVjaXBpZW50czogcmVjaXBpZW50cyB9LCB0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9yaWdpbmFsUHJlYnVpbGQuaG9wVHJhbnNhY3Rpb24pKSB7XG4gICAgICBwcmVidWlsZFBhcmFtcy5ob3AgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMgJiYgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zLnR5cGUgPT09ICdjb25zb2xpZGF0ZScpIHtcbiAgICAgIC8vIGNvbnNvbGlkYXRlIHRhZyBpcyBpbiB0aGUgYnVpbGQgcGFyYW1zIC0gdGhpcyBpcyBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24sIHNvXG4gICAgICAvLyBpdCBuZWVkcyB0byBiZSByZWJ1aWx0IHVzaW5nIHRoZSBzcGVjaWFsIGNvbnNvbGlkYXRpb24gYnVpbGQgcm91dGVcbiAgICAgIHByZWJ1aWxkUGFyYW1zLnByZWJ1aWxkVHggPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAgIC5wb3N0KHRoaXMud2FsbGV0LnVybChgL2NvbnNvbGlkYXRlVW5zcGVudHNgKSlcbiAgICAgICAgLnNlbmQocHJlYnVpbGRQYXJhbXMpXG4gICAgICAgIC5yZXN1bHQoKTtcbiAgICAgIGRlbGV0ZSBwcmVidWlsZFBhcmFtcy5yZWNpcGllbnRzO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy53YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24ocHJlYnVpbGRQYXJhbXMpO1xuICAgIC8vIGNvbXBhcmUgUEFZR28gZmVlc1xuICAgIGNvbnN0IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBvcmlnaW5hbFByZWJ1aWxkLFxuICAgIH0pKSBhcyBhbnk7XG4gICAgY29uc3QgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBzaWduZWRUcmFuc2FjdGlvbixcbiAgICB9KSkgYXMgYW55O1xuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSkge1xuICAgICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgIT09ICdiaWdpbnQnICYmXG4gICAgICAhXy5pc0Zpbml0ZShyZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhXy5pc1VuZGVmaW5lZChvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkgJiZcbiAgICAgIHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA+IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY3JlYXRlZCB0cmFuc2FjdGlvbiBpcyB1c2luZyBhIGhpZ2hlciBwYXktYXMteW91LWdvLWZlZScpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==