@bitgo-beta/statics 10.0.1-alpha.507 → 10.0.1-alpha.509

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 (62) hide show
  1. package/dist/src/account.d.ts +35 -1
  2. package/dist/src/account.d.ts.map +1 -1
  3. package/dist/src/account.js +63 -2
  4. package/dist/src/allCoinsAndTokens.d.ts.map +1 -1
  5. package/dist/src/allCoinsAndTokens.js +148 -14
  6. package/dist/src/base.d.ts +291 -4
  7. package/dist/src/base.d.ts.map +1 -1
  8. package/dist/src/base.js +295 -4
  9. package/dist/src/coinFeatures.d.ts +15 -12
  10. package/dist/src/coinFeatures.d.ts.map +1 -1
  11. package/dist/src/coinFeatures.js +16 -4
  12. package/dist/src/coins/avaxTokens.d.ts.map +1 -1
  13. package/dist/src/coins/avaxTokens.js +3 -1
  14. package/dist/src/coins/botOfcTokens.d.ts.map +1 -1
  15. package/dist/src/coins/botOfcTokens.js +25 -69
  16. package/dist/src/coins/botTokens.d.ts.map +1 -1
  17. package/dist/src/coins/botTokens.js +241 -69
  18. package/dist/src/coins/bscTokens.d.ts.map +1 -1
  19. package/dist/src/coins/bscTokens.js +8 -1
  20. package/dist/src/coins/cantonTokens.d.ts.map +1 -1
  21. package/dist/src/coins/cantonTokens.js +88 -1
  22. package/dist/src/coins/erc20Coins.d.ts.map +1 -1
  23. package/dist/src/coins/erc20Coins.js +7 -4
  24. package/dist/src/coins/erc7984Tokens.js +3 -3
  25. package/dist/src/coins/hoodethTokens.d.ts +2 -0
  26. package/dist/src/coins/hoodethTokens.d.ts.map +1 -0
  27. package/dist/src/coins/hoodethTokens.js +115 -0
  28. package/dist/src/coins/nep141Tokens.d.ts.map +1 -1
  29. package/dist/src/coins/nep141Tokens.js +2 -1
  30. package/dist/src/coins/ofcCoins.d.ts.map +1 -1
  31. package/dist/src/coins/ofcCoins.js +76 -8
  32. package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -1
  33. package/dist/src/coins/ofcErc20Coins.js +29 -9
  34. package/dist/src/coins/ofcHoodethTokens.d.ts +2 -0
  35. package/dist/src/coins/ofcHoodethTokens.d.ts.map +1 -0
  36. package/dist/src/coins/ofcHoodethTokens.js +113 -0
  37. package/dist/src/coins/polygonTokens.d.ts.map +1 -1
  38. package/dist/src/coins/polygonTokens.js +6 -1
  39. package/dist/src/coins/solTokens.d.ts.map +1 -1
  40. package/dist/src/coins/solTokens.js +24 -2
  41. package/dist/src/coins.d.ts.map +1 -1
  42. package/dist/src/coins.js +14 -2
  43. package/dist/src/errors.d.ts +6 -0
  44. package/dist/src/errors.d.ts.map +1 -1
  45. package/dist/src/errors.js +16 -2
  46. package/dist/src/index.d.ts +2 -2
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +6 -2
  49. package/dist/src/map.d.ts +18 -0
  50. package/dist/src/map.d.ts.map +1 -1
  51. package/dist/src/map.js +67 -12
  52. package/dist/src/networkFeatureMapForTokens.d.ts +6 -0
  53. package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -1
  54. package/dist/src/networkFeatureMapForTokens.js +30 -1
  55. package/dist/src/networks.d.ts +67 -0
  56. package/dist/src/networks.d.ts.map +1 -1
  57. package/dist/src/networks.js +100 -22
  58. package/dist/src/tokenConfig.d.ts +15 -1
  59. package/dist/src/tokenConfig.d.ts.map +1 -1
  60. package/dist/src/tokenConfig.js +26 -3
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +2 -2
package/dist/src/map.js CHANGED
@@ -18,6 +18,32 @@ class CoinMap {
18
18
  this._coinByChainId = null;
19
19
  // Do not instantiate
20
20
  }
21
+ static contractAddressKey(coin) {
22
+ return `${coin.family}:${coin.contractAddress}`;
23
+ }
24
+ static nftCollectionIdKey(coin) {
25
+ return `${coin.prefix}${coin.family}:${coin.nftCollectionId}`;
26
+ }
27
+ /**
28
+ * Whether a different token with the same contract address (or NFT collection id) is already
29
+ * registered. Token identity in the map is keyed by name/id/alias, but a token also claims a
30
+ * contract-address key (`family:contractAddress`) and, for NFTs, a collection-id key. Two tokens
31
+ * that share such a key but differ in name cannot coexist — `addCoin` throws on the second.
32
+ * Callers merging externally-sourced tokens use this to skip a colliding token rather than crash.
33
+ */
34
+ hasTokenAddressConflict(coin) {
35
+ if (coin instanceof account_1.ContractAddressDefinedToken) {
36
+ const key = CoinMap.contractAddressKey(coin);
37
+ const existing = this._coinByContractAddress.get(key);
38
+ return existing !== undefined && existing.network.type === coin.network.type;
39
+ }
40
+ if (coin instanceof account_1.NFTCollectionIdDefinedToken) {
41
+ const key = CoinMap.nftCollectionIdKey(coin);
42
+ const existing = this._coinByNftCollectionID.get(key);
43
+ return existing !== undefined && existing.network.type === coin.network.type;
44
+ }
45
+ return false;
46
+ }
21
47
  static fromCoins(coins) {
22
48
  const coinMap = new CoinMap();
23
49
  coins.forEach((coin) => {
@@ -43,10 +69,28 @@ class CoinMap {
43
69
  }
44
70
  if (coin.isToken) {
45
71
  if (coin instanceof account_1.ContractAddressDefinedToken) {
46
- this._coinByContractAddress.set(`${coin.family}:${coin.contractAddress}`, coin);
72
+ const contractAddressKey = CoinMap.contractAddressKey(coin);
73
+ const existingByContractAddress = this._coinByContractAddress.get(contractAddressKey);
74
+ if (existingByContractAddress) {
75
+ if (existingByContractAddress.network.type === coin.network.type) {
76
+ throw new errors_1.DuplicateContractAddressDefinitionError(contractAddressKey, existingByContractAddress.name);
77
+ }
78
+ }
79
+ else {
80
+ this._coinByContractAddress.set(contractAddressKey, coin);
81
+ }
47
82
  }
48
83
  else if (coin instanceof account_1.NFTCollectionIdDefinedToken) {
49
- this._coinByNftCollectionID.set(`${coin.prefix}${coin.family}:${coin.nftCollectionId}`, coin);
84
+ const nftCollectionKey = CoinMap.nftCollectionIdKey(coin);
85
+ const existingByNftCollectionId = this._coinByNftCollectionID.get(nftCollectionKey);
86
+ if (existingByNftCollectionId) {
87
+ if (existingByNftCollectionId.network.type === coin.network.type) {
88
+ throw new errors_1.DuplicateNftCollectionIdDefinitionError(nftCollectionKey, existingByNftCollectionId.name);
89
+ }
90
+ }
91
+ else {
92
+ this._coinByNftCollectionID.set(nftCollectionKey, coin);
93
+ }
50
94
  }
51
95
  }
52
96
  }
@@ -65,10 +109,10 @@ class CoinMap {
65
109
  }
66
110
  if (oldCoin.isToken) {
67
111
  if (oldCoin instanceof account_1.ContractAddressDefinedToken) {
68
- this._coinByContractAddress.delete(`${oldCoin.family}:${oldCoin.contractAddress}`);
112
+ this._coinByContractAddress.delete(CoinMap.contractAddressKey(oldCoin));
69
113
  }
70
114
  else if (oldCoin instanceof account_1.NFTCollectionIdDefinedToken) {
71
- this._coinByNftCollectionID.delete(`${oldCoin.prefix}${oldCoin.family}:${oldCoin.nftCollectionId}`);
115
+ this._coinByNftCollectionID.delete(CoinMap.nftCollectionIdKey(oldCoin));
72
116
  }
73
117
  }
74
118
  }
@@ -108,16 +152,26 @@ class CoinMap {
108
152
  * @return {BaseCoin}
109
153
  */
110
154
  get(key) {
111
- const coin = this._map.get(key) ||
112
- this._coinByIds.get(key) ||
113
- this._coinByAliases.get(key) ||
114
- this._coinByContractAddress.get(key) ||
115
- this._coinByNftCollectionID.get(key);
155
+ const coin = this.getOrUndefined(key);
116
156
  if (coin) {
117
157
  return coin;
118
158
  }
119
159
  throw new errors_1.CoinNotDefinedError(key);
120
160
  }
161
+ /**
162
+ * Safe accessor that returns undefined instead of throwing when a coin is not found.
163
+ * Prefer this over `get` at call sites where the coin name is not guaranteed to be
164
+ * registered — it makes the missing-coin case explicit in the type system.
165
+ * @param {string} key
166
+ * @return {BaseCoin | undefined}
167
+ */
168
+ getOrUndefined(key) {
169
+ return (this._map.get(key) ||
170
+ this._coinByIds.get(key) ||
171
+ this._coinByAliases.get(key) ||
172
+ this._coinByContractAddress.get(key) ||
173
+ this._coinByNftCollectionID.get(key));
174
+ }
121
175
  has(key) {
122
176
  return (this._map.has(key) ||
123
177
  this._coinByIds.has(key) ||
@@ -191,8 +245,8 @@ CoinMap.LEGACY_CHAIN_ID_MAP = {
191
245
  11142220: 'tcelo',
192
246
  2222: 'kava',
193
247
  2221: 'tkava',
194
- 43114: 'avax',
195
- 43113: 'tavax',
248
+ 43114: 'avaxc',
249
+ 43113: 'tavaxc',
196
250
  100: 'gno',
197
251
  130: 'unieth',
198
252
  1301: 'tunieth',
@@ -247,6 +301,7 @@ CoinMap.LEGACY_CHAIN_ID_MAP = {
247
301
  1952: 'tokbxlayer',
248
302
  5734951: 'jovayeth',
249
303
  2019775: 'tjovayeth',
304
+ 5042: 'arcusdc',
250
305
  5042002: 'tarcusdc',
251
306
  4217: 'tempo',
252
307
  42431: 'ttempo',
@@ -255,4 +310,4 @@ CoinMap.LEGACY_CHAIN_ID_MAP = {
255
310
  25363: 'fluenteth',
256
311
  20994: 'tfluenteth',
257
312
  };
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBNkc7QUFDN0csdUNBQXFGO0FBR3JGLE1BQWEsT0FBTztJQWFsQjtRQVppQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ2hGLCtGQUErRjtRQUN2RixtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHeEQscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTJCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sT0FBTyxDQUFDLElBQXdCO1FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLHFDQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxN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S0FBSyxFQUFFLEtBQUs7SUFDWixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLEtBQUs7SUFDWCxLQUFLLEVBQUUsUUFBUTtJQUNmLEdBQUcsRUFBRSxPQUFPO0lBQ1osSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxPQUFPO0lBQ2IsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsT0FBTztJQUNiLEtBQUssRUFBRSxXQUFXO0lBQ2xCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLElBQUksRUFBRSxLQUFLO0lBQ1gsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxNQUFNO0lBQ1gsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxTQUFTO0lBQ2YsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsVUFBVTtJQUNmLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLElBQUksRUFBRSxZQUFZO0lBQ2xCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLElBQUksRUFBRSxPQUFPO0lBQ2IsS0FBSyxFQUFFLFFBQVE7SUFDZixJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLFlBQVk7Q0FDcEIsQUEvRjBDLENBK0Z6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IsIENvaW5Ob3REZWZpbmVkRXJyb3IsIER1cGxpY2F0ZUNvaW5JZERlZmluaXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbiwgTkZUQ29sbGVjdGlvbklkRGVmaW5lZFRva2VuIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IEV0aGVyZXVtTmV0d29yayB9IGZyb20gJy4vbmV0d29ya3MnO1xuXG5leHBvcnQgY2xhc3MgQ29pbk1hcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUlkcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIEhvbGRzIGtleSBlcXVpdmFsZW5jZXMgdXNlZCBkdXJpbmcgYW4gYXNzZXQgbmFtZSBtaWdyYXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5QWxpYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IGFkZHJlc3MgLT4gdGhlIGtleSBpcyB0aGUgZmFtaWx5OmNvbnRyYWN0QWRkcmVzc1xuICAvLyB0aGUgZmFtaWx5IGlzIHRoZSB3aGVyZSB0aGUgY29pbiBpcyBlLmcgbDEgY2hhaW5zIGxpa2UgZXRoLCBic2MgZXRjLiBvciBsMiBsaWtlIGFyYmV0aCwgY2VsbyBldGMuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvaW5CeUNvbnRyYWN0QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFkb25seTxCYXNlQ29pbj4+KCk7XG4gIC8vIG1hcCBvZiBjb2luIGJ5IE5GVCBjb2xsZWN0aW9uIElEIC0+IHRoZSBrZXkgaXMgdGhlICh0KWZhbWlseTpuZnRDb2xsZWN0aW9uSURcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5TmZ0Q29sbGVjdGlvbklEID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gTGF6aWx5IGluaXRpYWxpemVkIGNhY2hlIGZvciBjaGFpbklkIHRvIGNvaW4gbmFtZSBtYXBwaW5nIChkZXJpdmVkIGZyb20gbmV0d29yayBkZWZpbml0aW9ucylcbiAgcHJpdmF0ZSBfY29pbkJ5Q2hhaW5JZDogTWFwPG51bWJlciwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRG8gbm90IGluc3RhbnRpYXRlXG4gIH1cblxuICBzdGF0aWMgZnJvbUNvaW5zKGNvaW5zOiBSZWFkb25seTxCYXNlQ29pbj5bXSk6IENvaW5NYXAge1xuICAgIGNvbnN0IGNvaW5NYXAgPSBuZXcgQ29pbk1hcCgpO1xuICAgIGNvaW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgICAgIGNvaW5NYXAuYWRkQ29pbihjb2luKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29pbk1hcDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb2luKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tYXAuaGFzKGNvaW4ubmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yKGNvaW4ubmFtZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb2luQnlJZHMuaGFzKGNvaW4uaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yKGNvaW4uaWQpO1xuICAgIH1cbiAgICBjb25zdCBhbGlhcyA9IGNvaW4uYWxpYXM7XG4gICAgaWYgKGFsaWFzICYmIHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGFsaWFzKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IoYWxpYXMpO1xuICAgIH1cbiAgICB0aGlzLl9tYXAuc2V0KGNvaW4ubmFtZSwgY29pbik7XG4gICAgdGhpcy5fY29pbkJ5SWRzLnNldChjb2luLmlkLCBjb2luKTtcbiAgICBpZiAoYWxpYXMpIHtcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuc2V0KGNvaW4uYWxpYXMsIGNvaW4pO1xuICAgIH1cblxuICAgIGlmIChjb2luLmlzVG9rZW4pIHtcbiAgICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKSB7XG4gICAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5zZXQoYCR7Y29pbi5mYW1pbHl9OiR7Y29pbi5jb250cmFjdEFkZHJlc3N9YCwgY29pbik7XG4gICAgICB9IGVsc2UgaWYgKGNvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELnNldChgJHtjb2luLnByZWZpeH0ke2NvaW4uZmFtaWx5fToke2NvaW4ubmZ0Q29sbGVjdGlvbklkfWAsIGNvaW4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgQmFzZSBjb2luIG9iamVjdCBjb21wbGV0ZWx5IGZyb20gdGhlIENvaW5NYXAgdXNpbmcgaXRzIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IGtleSB0byBzZWFyY2ggdGhlIG9sZCBjb2luIG9iamVjdFxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PEJhc2VDb2luPn0gY29pbiBuZXcgY29pbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhcyhjb2luLmlkKSkge1xuICAgICAgY29uc3Qgb2xkQ29pbiA9IHRoaXMuZ2V0KGNvaW4uaWQpO1xuICAgICAgdGhpcy5fbWFwLmRlbGV0ZShvbGRDb2luLm5hbWUpO1xuICAgICAgdGhpcy5fY29pbkJ5SWRzLmRlbGV0ZShvbGRDb2luLmlkKTtcbiAgICAgIGlmIChvbGRDb2luLmFsaWFzKSB7XG4gICAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZGVsZXRlKG9sZENvaW4uYWxpYXMpO1xuICAgICAgfVxuICAgICAgaWYgKG9sZENvaW4uaXNUb2tlbikge1xuICAgICAgICBpZiAob2xkQ29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5kZWxldGUoYCR7b2xkQ29pbi5mYW1pbHl9OiR7b2xkQ29pbi5jb250cmFjdEFkZHJlc3N9YCk7XG4gICAgICAgIH0gZWxzZSBpZiAob2xkQ29pbiBpbnN0YW5jZW9mIE5GVENvbGxlY3Rpb25JZERlZmluZWRUb2tlbikge1xuICAgICAgICAgIHRoaXMuX2NvaW5CeU5mdENvbGxlY3Rpb25JRC5kZWxldGUoYCR7b2xkQ29pbi5wcmVmaXh9JHtvbGRDb2luLmZhbWlseX06JHtvbGRDb2luLm5mdENvbGxlY3Rpb25JZH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFkZENvaW4oY29pbik7XG4gIH1cblxuICAvKipcbiAgICogSGFyZGNvZGVkIG1hcHBpbmcgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBMRUdBQ1lfQ0hBSU5fSURfTUFQOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgIDE6ICdldGgnLFxuICAgIDQyOiAndGV0aCcsXG4gICAgNTogJ2d0ZXRoJyxcbiAgICA1NjAwNDg6ICdodGV0aCcsXG4gICAgMTAwMDE6ICdldGh3JyxcbiAgICA4MDAwMjogJ3Rwb2x5Z29uJyxcbiAgICAxMzc6ICdwb2x5Z29uJyxcbiAgICA1NjogJ2JzYycsXG4gICAgOTc6ICd0YnNjJyxcbiAgICA0MjE2MTogJ2FyYmV0aCcsXG4gICAgNDIxNjE0OiAndGFyYmV0aCcsXG4gICAgMTA6ICdvcGV0aCcsXG4gICAgMTExNTU0MjA6ICd0b3BldGgnLFxuICAgIDExMTY6ICdjb3JlZGFvJyxcbiAgICAxMTE0OiAndGNvcmVkYW8nLFxuICAgIDI0ODogJ29hcycsXG4gICAgOTM3MjogJ3RvYXMnLFxuICAgIDE0OiAnZmxyJyxcbiAgICAxMTQ6ICd0ZmxyJyxcbiAgICAxOTogJ3NnYicsXG4gICAgMTY6ICd0c2diJyxcbiAgICAxMTExOiAnd2VtaXgnLFxuICAgIDExMTI6ICd0d2VtaXgnLFxuICAgIDUwOiAneGRjJyxcbiAgICA1MTogJ3R4ZGMnLFxuICAgIDgwMDk0OiAnYmVyYScsXG4gICAgODAwNjk6ICd0YmVyYScsXG4gICAgNDIyMjA6ICdjZWxvJyxcbiAgICAxMTE0MjIyMDogJ3RjZWxvJyxcbiAgICAyMjIyOiAna2F2YScsXG4gICAgMjIyMTogJ3RrYXZhJyxcbiAgICA0MzExNDogJ2F2YXgnLFxuICAgIDQzMTEzOiAndGF2YXgnLFxuICAgIDEwMDogJ2dubycsXG4gICAgMTMwOiAndW5pZXRoJyxcbiAgICAxMzAxOiAndHVuaWV0aCcsXG4gICAgMTkwNDE1OiAnaHBwZXRoJyxcbiAgICAxODEyMjg6ICd0aHBwZXRoJyxcbiAgICA2OTg1Mzg1OiAnaCcsXG4gICAgNzA4MDk2OTogJ3RoJyxcbiAgICA0NjYzOiAnaG9vZGV0aCcsXG4gICAgNDY2MzA6ICd0aG9vZGV0aCcsXG4gICAgMzI0OiAnemtldGgnLFxuICAgIDg0NTM6ICdiYXNlZXRoJyxcbiAgICA4NDUzMjogJ3RiYXNlZXRoJyxcbiAgICAxNDM6ICdtb24nLFxuICAgIDEwMTQzOiAndG1vbicsXG4gICAgNDgwOiAnd29ybGQnLFxuICAgIDQ4MDE6ICd0d29ybGQnLFxuICAgIDUwMzE6ICdzb21pJyxcbiAgICA1MDMxMjogJ3RzdHQnLFxuICAgIDE4Njg6ICdzb25laXVtJyxcbiAgICAxOTQ2OiAndHNvbmVpdW0nLFxuICAgIDMzMTExOiAndGFwZWNoYWluJyxcbiAgICAzMzEzOTogJ2FwZWNoYWluJyxcbiAgICA2ODg2ODk6ICd0cGhycycsXG4gICAgMTAyMDMwOiAnY3RjJyxcbiAgICAxMDIwMzE6ICd0Y3RjJyxcbiAgICA5OTg6ICd0aHlwZWV2bScsXG4gICAgOTk5OiAnaHlwZWV2bScsXG4gICAgMTY2MDI6ICd0b2cnLFxuICAgIDE2NjYxOiAnb2cnLFxuICAgIDk3NDY6ICd0eHBsJyxcbiAgICA5NzQ1OiAneHBsJyxcbiAgICAxNDYwMTogJ3Rzb25pYycsXG4gICAgMTQ2OiAnc29uaWMnLFxuICAgIDEzMjg6ICd0c2VpZXZtJyxcbiAgICAxMzI5OiAnc2VpZXZtJyxcbiAgICAxMDAxOiAndGthaWEnLFxuICAgIDgyMTc6ICdrYWlhJyxcbiAgICAxMjcwOiAndGlyeXMnLFxuICAgIDU5MTQxOiAndGxpbmVhZXRoJyxcbiAgICA1OTE0NDogJ2xpbmVhZXRoJyxcbiAgICAxMzE1OiAndGlwJyxcbiAgICAxNTE0OiAnaXAnLFxuICAgIDU0NTogJ3RmbG93JyxcbiAgICA3NDc6ICdmbG93JyxcbiAgICA5ODg2NzogJ3RwbHVtZScsXG4gICAgOTg4NjY6ICdwbHVtZScsXG4gICAgNjM0MzogJ3RtZWdhZXRoJyxcbiAgICA0MzI2OiAnbWVnYWV0aCcsXG4gICAgMjk1OiAnaGJhcmV2bScsXG4gICAgMjk2OiAndGhiYXJldm0nLFxuICAgIDE5NjogJ29rYnhsYXllcicsXG4gICAgMTk1MjogJ3Rva2J4bGF5ZXInLFxuICAgIDU3MzQ5NTE6ICdqb3ZheWV0aCcsXG4gICAgMjAxOTc3NTogJ3Rqb3ZheWV0aCcsXG4gICAgNTA0MjAwMjogJ3RhcmN1c2RjJyxcbiAgICA0MjE3OiAndGVtcG8nLFxuICAgIDQyNDMxOiAndHRlbXBvJyxcbiAgICA1MDAwOiAnbWFudGxlJyxcbiAgICA1MDAzOiAndG1hbnRsZScsXG4gICAgMjUzNjM6ICdmbHVlbnRldGgnLFxuICAgIDIwOTk0OiAndGZsdWVudGV0aCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBidWlsZENoYWluSWRNYXAoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3QgY2hhaW5JZE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgICAvLyBTa2lwIHRva2VucyAtIHRoZXkgc2hhcmUgdGhlIHNhbWUgY2hhaW5JZCBhcyB0aGVpciBwYXJlbnQgY2hhaW5cbiAgICAgIGlmIChjb2luLmlzVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV0d29yayA9IGNvaW4ubmV0d29yaztcbiAgICAgIGlmICgnY2hhaW5JZCcgaW4gbmV0d29yayAmJiB0eXBlb2YgKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBjaGFpbklkID0gKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkO1xuICAgICAgICBpZiAoIWNoYWluSWRNYXAuaGFzKGNoYWluSWQpKSB7XG4gICAgICAgICAgY2hhaW5JZE1hcC5zZXQoY2hhaW5JZCwgY29pbk5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoYWluSWRNYXA7XG4gIH1cblxuICBwdWJsaWMgY29pbk5hbWVGcm9tQ2hhaW5JZChjaGFpbklkOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvaW5OYW1lID0gQ29pbk1hcC5MRUdBQ1lfQ0hBSU5fSURfTUFQW2NoYWluSWRdO1xuICAgIGlmIChjb2luTmFtZSkge1xuICAgICAgcmV0dXJuIGNvaW5OYW1lO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb2luQnlDaGFpbklkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9jb2luQnlDaGFpbklkID0gdGhpcy5idWlsZENoYWluSWRNYXAoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvaW5CeUNoYWluSWQuZ2V0KGNoYWluSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGBnZXRgIHRvIHRocm93IGlmIGEgY29pbiBpcyBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJldHVybmluZyB1bmRlZmluZWQuXG4gICAqIEl0IHdpbGwgaG9ub3Iga2V5IGVxdWl2YWxlbmNlcyBpbiBjYXNlIGdpdmVuIGtleSBpcyBtaXNzaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEByZXR1cm4ge0Jhc2VDb2lufVxuICAgKi9cbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB7XG4gICAgY29uc3QgY29pbiA9XG4gICAgICB0aGlzLl9tYXAuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUlkcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5QWxpYXNlcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZ2V0KGtleSk7XG5cbiAgICBpZiAoY29pbikge1xuICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IENvaW5Ob3REZWZpbmVkRXJyb3Ioa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWFwLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmhhcyhrZXkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXA8VD4obWFwcGVyOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBUKTogVFtdIHtcbiAgICBjb25zdCBtYXBSZXN1bHQ6IFRbXSA9IFtdO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBtYXBSZXN1bHQucHVzaChtYXBwZXIodmFsdWUsIGtleSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBSZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgcmVkdWNlPFQ+KHJlZHVjZXI6IChhY2M6IFQsIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCwgaW5pdGlhbFZhbHVlOiBUKTogVCB7XG4gICAgbGV0IGFjYyA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgYWNjID0gcmVkdWNlcihhY2MsIHZhbHVlLCBrZXkpO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKHByZWRpY2F0ZTogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gYm9vbGVhbik6IENvaW5NYXAge1xuICAgIGNvbnN0IGZpbHRlclJlc3VsdDogUmVhZG9ubHk8QmFzZUNvaW4+W10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5KSkge1xuICAgICAgICBmaWx0ZXJSZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvaW5NYXAuZnJvbUNvaW5zKGZpbHRlclJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgZm9yRWFjaChjYWxsYmFjazogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPl0+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFwW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxufVxuIl19
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FNa0I7QUFDbEIsdUNBQXFGO0FBR3JGLE1BQWEsT0FBTztJQWFsQjtRQVppQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDN0MsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3BFLDZEQUE2RDtRQUM1QyxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ3hFLGtFQUFrRTtRQUNsRSxvR0FBb0c7UUFDbkYsMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQThCLENBQUM7UUFDaEYsK0VBQStFO1FBQzlELDJCQUFzQixHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO1FBQ2hGLCtGQUErRjtRQUN2RixtQkFBYyxHQUErQixJQUFJLENBQUM7UUFHeEQscUJBQXFCO0lBQ3ZCLENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBaUM7UUFDakUsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHVCQUF1QixDQUFDLElBQXdCO1FBQ3JELElBQUksSUFBSSxZQUFZLHFDQUEyQixFQUFFLENBQUM7WUFDaEQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsT0FBTyxR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QUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxNQUFNO0lBQ1gsS0FBSyxFQUFFLFFBQVE7SUFDZixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxTQUFTO0lBQ2YsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsVUFBVTtJQUNmLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLElBQUksRUFBRSxZQUFZO0lBQ2xCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLE9BQU8sRUFBRSxXQUFXO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFVBQVU7SUFDbkIsSUFBSSxFQUFFLE9BQU87SUFDYixLQUFLLEVBQUUsUUFBUTtJQUNmLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsV0FBVztJQUNsQixLQUFLLEVBQUUsWUFBWTtDQUNwQixBQWhHMEMsQ0FnR3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtcbiAgRHVwbGljYXRlQ29pbkRlZmluaXRpb25FcnJvcixcbiAgQ29pbk5vdERlZmluZWRFcnJvcixcbiAgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yLFxuICBEdXBsaWNhdGVDb250cmFjdEFkZHJlc3NEZWZpbml0aW9uRXJyb3IsXG4gIER1cGxpY2F0ZU5mdENvbGxlY3Rpb25JZERlZmluaXRpb25FcnJvcixcbn0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuLCBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4gfSBmcm9tICcuL2FjY291bnQnO1xuaW1wb3J0IHsgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnLi9uZXR3b3Jrcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2luTWFwIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5SWRzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gSG9sZHMga2V5IGVxdWl2YWxlbmNlcyB1c2VkIGR1cmluZyBhbiBhc3NldCBuYW1lIG1pZ3JhdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlBbGlhc2VzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gbWFwIG9mIGNvaW4gYnkgYWRkcmVzcyAtPiB0aGUga2V5IGlzIHRoZSBmYW1pbHk6Y29udHJhY3RBZGRyZXNzXG4gIC8vIHRoZSBmYW1pbHkgaXMgdGhlIHdoZXJlIHRoZSBjb2luIGlzIGUuZyBsMSBjaGFpbnMgbGlrZSBldGgsIGJzYyBldGMuIG9yIGwyIGxpa2UgYXJiZXRoLCBjZWxvIGV0Yy5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29pbkJ5Q29udHJhY3RBZGRyZXNzID0gbmV3IE1hcDxzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPj4oKTtcbiAgLy8gbWFwIG9mIGNvaW4gYnkgTkZUIGNvbGxlY3Rpb24gSUQgLT4gdGhlIGtleSBpcyB0aGUgKHQpZmFtaWx5Om5mdENvbGxlY3Rpb25JRFxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2luQnlOZnRDb2xsZWN0aW9uSUQgPSBuZXcgTWFwPHN0cmluZywgUmVhZG9ubHk8QmFzZUNvaW4+PigpO1xuICAvLyBMYXppbHkgaW5pdGlhbGl6ZWQgY2FjaGUgZm9yIGNoYWluSWQgdG8gY29pbiBuYW1lIG1hcHBpbmcgKGRlcml2ZWQgZnJvbSBuZXR3b3JrIGRlZmluaXRpb25zKVxuICBwcml2YXRlIF9jb2luQnlDaGFpbklkOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBEbyBub3QgaW5zdGFudGlhdGVcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnRyYWN0QWRkcmVzc0tleShjb2luOiBDb250cmFjdEFkZHJlc3NEZWZpbmVkVG9rZW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtjb2luLmZhbWlseX06JHtjb2luLmNvbnRyYWN0QWRkcmVzc31gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbmZ0Q29sbGVjdGlvbklkS2V5KGNvaW46IE5GVENvbGxlY3Rpb25JZERlZmluZWRUb2tlbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2NvaW4ucHJlZml4fSR7Y29pbi5mYW1pbHl9OiR7Y29pbi5uZnRDb2xsZWN0aW9uSWR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZGlmZmVyZW50IHRva2VuIHdpdGggdGhlIHNhbWUgY29udHJhY3QgYWRkcmVzcyAob3IgTkZUIGNvbGxlY3Rpb24gaWQpIGlzIGFscmVhZHlcbiAgICogcmVnaXN0ZXJlZC4gVG9rZW4gaWRlbnRpdHkgaW4gdGhlIG1hcCBpcyBrZXllZCBieSBuYW1lL2lkL2FsaWFzLCBidXQgYSB0b2tlbiBhbHNvIGNsYWltcyBhXG4gICAqIGNvbnRyYWN0LWFkZHJlc3Mga2V5IChgZmFtaWx5OmNvbnRyYWN0QWRkcmVzc2ApIGFuZCwgZm9yIE5GVHMsIGEgY29sbGVjdGlvbi1pZCBrZXkuIFR3byB0b2tlbnNcbiAgICogdGhhdCBzaGFyZSBzdWNoIGEga2V5IGJ1dCBkaWZmZXIgaW4gbmFtZSBjYW5ub3QgY29leGlzdCDigJQgYGFkZENvaW5gIHRocm93cyBvbiB0aGUgc2Vjb25kLlxuICAgKiBDYWxsZXJzIG1lcmdpbmcgZXh0ZXJuYWxseS1zb3VyY2VkIHRva2VucyB1c2UgdGhpcyB0byBza2lwIGEgY29sbGlkaW5nIHRva2VuIHJhdGhlciB0aGFuIGNyYXNoLlxuICAgKi9cbiAgcHVibGljIGhhc1Rva2VuQWRkcmVzc0NvbmZsaWN0KGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IGJvb2xlYW4ge1xuICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKSB7XG4gICAgICBjb25zdCBrZXkgPSBDb2luTWFwLmNvbnRyYWN0QWRkcmVzc0tleShjb2luKTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmdldChrZXkpO1xuICAgICAgcmV0dXJuIGV4aXN0aW5nICE9PSB1bmRlZmluZWQgJiYgZXhpc3RpbmcubmV0d29yay50eXBlID09PSBjb2luLm5ldHdvcmsudHlwZTtcbiAgICB9XG4gICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgIGNvbnN0IGtleSA9IENvaW5NYXAubmZ0Q29sbGVjdGlvbklkS2V5KGNvaW4pO1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmcgIT09IHVuZGVmaW5lZCAmJiBleGlzdGluZy5uZXR3b3JrLnR5cGUgPT09IGNvaW4ubmV0d29yay50eXBlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvaW5zKGNvaW5zOiBSZWFkb25seTxCYXNlQ29pbj5bXSk6IENvaW5NYXAge1xuICAgIGNvbnN0IGNvaW5NYXAgPSBuZXcgQ29pbk1hcCgpO1xuICAgIGNvaW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgICAgIGNvaW5NYXAuYWRkQ29pbihjb2luKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29pbk1hcDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb2luKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tYXAuaGFzKGNvaW4ubmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb2luRGVmaW5pdGlvbkVycm9yKGNvaW4ubmFtZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb2luQnlJZHMuaGFzKGNvaW4uaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRHVwbGljYXRlQ29pbklkRGVmaW5pdGlvbkVycm9yKGNvaW4uaWQpO1xuICAgIH1cbiAgICBjb25zdCBhbGlhcyA9IGNvaW4uYWxpYXM7XG4gICAgaWYgKGFsaWFzICYmIHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGFsaWFzKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvaW5EZWZpbml0aW9uRXJyb3IoYWxpYXMpO1xuICAgIH1cbiAgICB0aGlzLl9tYXAuc2V0KGNvaW4ubmFtZSwgY29pbik7XG4gICAgdGhpcy5fY29pbkJ5SWRzLnNldChjb2luLmlkLCBjb2luKTtcbiAgICBpZiAoYWxpYXMpIHtcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuc2V0KGNvaW4uYWxpYXMsIGNvaW4pO1xuICAgIH1cblxuICAgIGlmIChjb2luLmlzVG9rZW4pIHtcbiAgICAgIGlmIChjb2luIGluc3RhbmNlb2YgQ29udHJhY3RBZGRyZXNzRGVmaW5lZFRva2VuKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzc0tleSA9IENvaW5NYXAuY29udHJhY3RBZGRyZXNzS2V5KGNvaW4pO1xuICAgICAgICBjb25zdCBleGlzdGluZ0J5Q29udHJhY3RBZGRyZXNzID0gdGhpcy5fY29pbkJ5Q29udHJhY3RBZGRyZXNzLmdldChjb250cmFjdEFkZHJlc3NLZXkpO1xuICAgICAgICBpZiAoZXhpc3RpbmdCeUNvbnRyYWN0QWRkcmVzcykge1xuICAgICAgICAgIGlmIChleGlzdGluZ0J5Q29udHJhY3RBZGRyZXNzLm5ldHdvcmsudHlwZSA9PT0gY29pbi5uZXR3b3JrLnR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb250cmFjdEFkZHJlc3NEZWZpbml0aW9uRXJyb3IoY29udHJhY3RBZGRyZXNzS2V5LCBleGlzdGluZ0J5Q29udHJhY3RBZGRyZXNzLm5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9jb2luQnlDb250cmFjdEFkZHJlc3Muc2V0KGNvbnRyYWN0QWRkcmVzc0tleSwgY29pbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29pbiBpbnN0YW5jZW9mIE5GVENvbGxlY3Rpb25JZERlZmluZWRUb2tlbikge1xuICAgICAgICBjb25zdCBuZnRDb2xsZWN0aW9uS2V5ID0gQ29pbk1hcC5uZnRDb2xsZWN0aW9uSWRLZXkoY29pbik7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQnlOZnRDb2xsZWN0aW9uSWQgPSB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZ2V0KG5mdENvbGxlY3Rpb25LZXkpO1xuICAgICAgICBpZiAoZXhpc3RpbmdCeU5mdENvbGxlY3Rpb25JZCkge1xuICAgICAgICAgIGlmIChleGlzdGluZ0J5TmZ0Q29sbGVjdGlvbklkLm5ldHdvcmsudHlwZSA9PT0gY29pbi5uZXR3b3JrLnR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVOZnRDb2xsZWN0aW9uSWREZWZpbml0aW9uRXJyb3IobmZ0Q29sbGVjdGlvbktleSwgZXhpc3RpbmdCeU5mdENvbGxlY3Rpb25JZC5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELnNldChuZnRDb2xsZWN0aW9uS2V5LCBjb2luKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgQmFzZSBjb2luIG9iamVjdCBjb21wbGV0ZWx5IGZyb20gdGhlIENvaW5NYXAgdXNpbmcgaXRzIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IGtleSB0byBzZWFyY2ggdGhlIG9sZCBjb2luIG9iamVjdFxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PEJhc2VDb2luPn0gY29pbiBuZXcgY29pbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhcyhjb2luLmlkKSkge1xuICAgICAgY29uc3Qgb2xkQ29pbiA9IHRoaXMuZ2V0KGNvaW4uaWQpO1xuICAgICAgdGhpcy5fbWFwLmRlbGV0ZShvbGRDb2luLm5hbWUpO1xuICAgICAgdGhpcy5fY29pbkJ5SWRzLmRlbGV0ZShvbGRDb2luLmlkKTtcbiAgICAgIGlmIChvbGRDb2luLmFsaWFzKSB7XG4gICAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZGVsZXRlKG9sZENvaW4uYWxpYXMpO1xuICAgICAgfVxuICAgICAgaWYgKG9sZENvaW4uaXNUb2tlbikge1xuICAgICAgICBpZiAob2xkQ29pbiBpbnN0YW5jZW9mIENvbnRyYWN0QWRkcmVzc0RlZmluZWRUb2tlbikge1xuICAgICAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5kZWxldGUoQ29pbk1hcC5jb250cmFjdEFkZHJlc3NLZXkob2xkQ29pbikpO1xuICAgICAgICB9IGVsc2UgaWYgKG9sZENvaW4gaW5zdGFuY2VvZiBORlRDb2xsZWN0aW9uSWREZWZpbmVkVG9rZW4pIHtcbiAgICAgICAgICB0aGlzLl9jb2luQnlOZnRDb2xsZWN0aW9uSUQuZGVsZXRlKENvaW5NYXAubmZ0Q29sbGVjdGlvbklkS2V5KG9sZENvaW4pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFkZENvaW4oY29pbik7XG4gIH1cblxuICAvKipcbiAgICogSGFyZGNvZGVkIG1hcHBpbmcgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBMRUdBQ1lfQ0hBSU5fSURfTUFQOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgIDE6ICdldGgnLFxuICAgIDQyOiAndGV0aCcsXG4gICAgNTogJ2d0ZXRoJyxcbiAgICA1NjAwNDg6ICdodGV0aCcsXG4gICAgMTAwMDE6ICdldGh3JyxcbiAgICA4MDAwMjogJ3Rwb2x5Z29uJyxcbiAgICAxMzc6ICdwb2x5Z29uJyxcbiAgICA1NjogJ2JzYycsXG4gICAgOTc6ICd0YnNjJyxcbiAgICA0MjE2MTogJ2FyYmV0aCcsXG4gICAgNDIxNjE0OiAndGFyYmV0aCcsXG4gICAgMTA6ICdvcGV0aCcsXG4gICAgMTExNTU0MjA6ICd0b3BldGgnLFxuICAgIDExMTY6ICdjb3JlZGFvJyxcbiAgICAxMTE0OiAndGNvcmVkYW8nLFxuICAgIDI0ODogJ29hcycsXG4gICAgOTM3MjogJ3RvYXMnLFxuICAgIDE0OiAnZmxyJyxcbiAgICAxMTQ6ICd0ZmxyJyxcbiAgICAxOTogJ3NnYicsXG4gICAgMTY6ICd0c2diJyxcbiAgICAxMTExOiAnd2VtaXgnLFxuICAgIDExMTI6ICd0d2VtaXgnLFxuICAgIDUwOiAneGRjJyxcbiAgICA1MTogJ3R4ZGMnLFxuICAgIDgwMDk0OiAnYmVyYScsXG4gICAgODAwNjk6ICd0YmVyYScsXG4gICAgNDIyMjA6ICdjZWxvJyxcbiAgICAxMTE0MjIyMDogJ3RjZWxvJyxcbiAgICAyMjIyOiAna2F2YScsXG4gICAgMjIyMTogJ3RrYXZhJyxcbiAgICA0MzExNDogJ2F2YXhjJyxcbiAgICA0MzExMzogJ3RhdmF4YycsXG4gICAgMTAwOiAnZ25vJyxcbiAgICAxMzA6ICd1bmlldGgnLFxuICAgIDEzMDE6ICd0dW5pZXRoJyxcbiAgICAxOTA0MTU6ICdocHBldGgnLFxuICAgIDE4MTIyODogJ3RocHBldGgnLFxuICAgIDY5ODUzODU6ICdoJyxcbiAgICA3MDgwOTY5OiAndGgnLFxuICAgIDQ2NjM6ICdob29kZXRoJyxcbiAgICA0NjYzMDogJ3Rob29kZXRoJyxcbiAgICAzMjQ6ICd6a2V0aCcsXG4gICAgODQ1MzogJ2Jhc2VldGgnLFxuICAgIDg0NTMyOiAndGJhc2VldGgnLFxuICAgIDE0MzogJ21vbicsXG4gICAgMTAxNDM6ICd0bW9uJyxcbiAgICA0ODA6ICd3b3JsZCcsXG4gICAgNDgwMTogJ3R3b3JsZCcsXG4gICAgNTAzMTogJ3NvbWknLFxuICAgIDUwMzEyOiAndHN0dCcsXG4gICAgMTg2ODogJ3NvbmVpdW0nLFxuICAgIDE5NDY6ICd0c29uZWl1bScsXG4gICAgMzMxMTE6ICd0YXBlY2hhaW4nLFxuICAgIDMzMTM5OiAnYXBlY2hhaW4nLFxuICAgIDY4ODY4OTogJ3RwaHJzJyxcbiAgICAxMDIwMzA6ICdjdGMnLFxuICAgIDEwMjAzMTogJ3RjdGMnLFxuICAgIDk5ODogJ3RoeXBlZXZtJyxcbiAgICA5OTk6ICdoeXBlZXZtJyxcbiAgICAxNjYwMjogJ3RvZycsXG4gICAgMTY2NjE6ICdvZycsXG4gICAgOTc0NjogJ3R4cGwnLFxuICAgIDk3NDU6ICd4cGwnLFxuICAgIDE0NjAxOiAndHNvbmljJyxcbiAgICAxNDY6ICdzb25pYycsXG4gICAgMTMyODogJ3RzZWlldm0nLFxuICAgIDEzMjk6ICdzZWlldm0nLFxuICAgIDEwMDE6ICd0a2FpYScsXG4gICAgODIxNzogJ2thaWEnLFxuICAgIDEyNzA6ICd0aXJ5cycsXG4gICAgNTkxNDE6ICd0bGluZWFldGgnLFxuICAgIDU5MTQ0OiAnbGluZWFldGgnLFxuICAgIDEzMTU6ICd0aXAnLFxuICAgIDE1MTQ6ICdpcCcsXG4gICAgNTQ1OiAndGZsb3cnLFxuICAgIDc0NzogJ2Zsb3cnLFxuICAgIDk4ODY3OiAndHBsdW1lJyxcbiAgICA5ODg2NjogJ3BsdW1lJyxcbiAgICA2MzQzOiAndG1lZ2FldGgnLFxuICAgIDQzMjY6ICdtZWdhZXRoJyxcbiAgICAyOTU6ICdoYmFyZXZtJyxcbiAgICAyOTY6ICd0aGJhcmV2bScsXG4gICAgMTk2OiAnb2tieGxheWVyJyxcbiAgICAxOTUyOiAndG9rYnhsYXllcicsXG4gICAgNTczNDk1MTogJ2pvdmF5ZXRoJyxcbiAgICAyMDE5Nzc1OiAndGpvdmF5ZXRoJyxcbiAgICA1MDQyOiAnYXJjdXNkYycsXG4gICAgNTA0MjAwMjogJ3RhcmN1c2RjJyxcbiAgICA0MjE3OiAndGVtcG8nLFxuICAgIDQyNDMxOiAndHRlbXBvJyxcbiAgICA1MDAwOiAnbWFudGxlJyxcbiAgICA1MDAzOiAndG1hbnRsZScsXG4gICAgMjUzNjM6ICdmbHVlbnRldGgnLFxuICAgIDIwOTk0OiAndGZsdWVudGV0aCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBidWlsZENoYWluSWRNYXAoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3QgY2hhaW5JZE1hcCA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgdGhpcy5fbWFwLmZvckVhY2goKGNvaW4sIGNvaW5OYW1lKSA9PiB7XG4gICAgICAvLyBTa2lwIHRva2VucyAtIHRoZXkgc2hhcmUgdGhlIHNhbWUgY2hhaW5JZCBhcyB0aGVpciBwYXJlbnQgY2hhaW5cbiAgICAgIGlmIChjb2luLmlzVG9rZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV0d29yayA9IGNvaW4ubmV0d29yaztcbiAgICAgIGlmICgnY2hhaW5JZCcgaW4gbmV0d29yayAmJiB0eXBlb2YgKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBjaGFpbklkID0gKG5ldHdvcmsgYXMgRXRoZXJldW1OZXR3b3JrKS5jaGFpbklkO1xuICAgICAgICBpZiAoIWNoYWluSWRNYXAuaGFzKGNoYWluSWQpKSB7XG4gICAgICAgICAgY2hhaW5JZE1hcC5zZXQoY2hhaW5JZCwgY29pbk5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoYWluSWRNYXA7XG4gIH1cblxuICBwdWJsaWMgY29pbk5hbWVGcm9tQ2hhaW5JZChjaGFpbklkOiBudW1iZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvaW5OYW1lID0gQ29pbk1hcC5MRUdBQ1lfQ0hBSU5fSURfTUFQW2NoYWluSWRdO1xuICAgIGlmIChjb2luTmFtZSkge1xuICAgICAgcmV0dXJuIGNvaW5OYW1lO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb2luQnlDaGFpbklkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9jb2luQnlDaGFpbklkID0gdGhpcy5idWlsZENoYWluSWRNYXAoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvaW5CeUNoYWluSWQuZ2V0KGNoYWluSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIGBnZXRgIHRvIHRocm93IGlmIGEgY29pbiBpcyBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJldHVybmluZyB1bmRlZmluZWQuXG4gICAqIEl0IHdpbGwgaG9ub3Iga2V5IGVxdWl2YWxlbmNlcyBpbiBjYXNlIGdpdmVuIGtleSBpcyBtaXNzaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEByZXR1cm4ge0Jhc2VDb2lufVxuICAgKi9cbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IFJlYWRvbmx5PEJhc2VDb2luPiB7XG4gICAgY29uc3QgY29pbiA9IHRoaXMuZ2V0T3JVbmRlZmluZWQoa2V5KTtcbiAgICBpZiAoY29pbikge1xuICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuICAgIHRocm93IG5ldyBDb2luTm90RGVmaW5lZEVycm9yKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogU2FmZSBhY2Nlc3NvciB0aGF0IHJldHVybnMgdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhyb3dpbmcgd2hlbiBhIGNvaW4gaXMgbm90IGZvdW5kLlxuICAgKiBQcmVmZXIgdGhpcyBvdmVyIGBnZXRgIGF0IGNhbGwgc2l0ZXMgd2hlcmUgdGhlIGNvaW4gbmFtZSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZVxuICAgKiByZWdpc3RlcmVkIOKAlCBpdCBtYWtlcyB0aGUgbWlzc2luZy1jb2luIGNhc2UgZXhwbGljaXQgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAqIEByZXR1cm4ge0Jhc2VDb2luIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgcHVibGljIGdldE9yVW5kZWZpbmVkKGtleTogc3RyaW5nKTogUmVhZG9ubHk8QmFzZUNvaW4+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWFwLmdldChrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuZ2V0KGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5nZXQoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmdldChrZXkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fbWFwLmhhcyhrZXkpIHx8XG4gICAgICB0aGlzLl9jb2luQnlJZHMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUFsaWFzZXMuaGFzKGtleSkgfHxcbiAgICAgIHRoaXMuX2NvaW5CeUNvbnRyYWN0QWRkcmVzcy5oYXMoa2V5KSB8fFxuICAgICAgdGhpcy5fY29pbkJ5TmZ0Q29sbGVjdGlvbklELmhhcyhrZXkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXA8VD4obWFwcGVyOiAoY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LCBjb2luTmFtZTogc3RyaW5nKSA9PiBUKTogVFtdIHtcbiAgICBjb25zdCBtYXBSZXN1bHQ6IFRbXSA9IFtdO1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBtYXBSZXN1bHQucHVzaChtYXBwZXIodmFsdWUsIGtleSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXBSZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgcmVkdWNlPFQ+KHJlZHVjZXI6IChhY2M6IFQsIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gVCwgaW5pdGlhbFZhbHVlOiBUKTogVCB7XG4gICAgbGV0IGFjYyA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgYWNjID0gcmVkdWNlcihhY2MsIHZhbHVlLCBrZXkpO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2M7XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyKHByZWRpY2F0ZTogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gYm9vbGVhbik6IENvaW5NYXAge1xuICAgIGNvbnN0IGZpbHRlclJlc3VsdDogUmVhZG9ubHk8QmFzZUNvaW4+W10gPSBbXTtcbiAgICB0aGlzLl9tYXAuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5KSkge1xuICAgICAgICBmaWx0ZXJSZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIENvaW5NYXAuZnJvbUNvaW5zKGZpbHRlclJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgZm9yRWFjaChjYWxsYmFjazogKGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPiwgY29pbk5hbWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX21hcC5mb3JFYWNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIFJlYWRvbmx5PEJhc2VDb2luPl0+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFwW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgfVxufVxuIl19
@@ -7,5 +7,11 @@ export declare function registerNetworkFeatures(family: string, features: CoinFe
7
7
  * Returns undefined if the family is not registered in either map.
8
8
  */
9
9
  export declare function getNetworkFeatures(family: string): CoinFeature[] | undefined;
10
+ /**
11
+ * Resolve the final feature list for a token: the family's default token features
12
+ * plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
13
+ * lists to apply the per-token diff returned by AMS (`features=false`).
14
+ */
15
+ export declare function getTokenFeatures(family: string, additionalFeatures?: CoinFeature[], excludedFeatures?: CoinFeature[]): CoinFeature[];
10
16
  export declare const networkFeatureMapForTokens: Partial<Record<CoinFamily, CoinFeature[]>>;
11
17
  //# sourceMappingURL=networkFeatureMapForTokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAgBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAgCjF,CAAC"}
1
+ {"version":3,"file":"networkFeatureMapForTokens.d.ts","sourceRoot":"","sources":["../../src/networkFeatureMapForTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAgBjD,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAErF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,kBAAkB,GAAE,WAAW,EAAO,EACtC,gBAAgB,GAAE,WAAW,EAAO,GACnC,WAAW,EAAE,CAIf;AAED,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAkDjF,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.networkFeatureMapForTokens = void 0;
4
4
  exports.registerNetworkFeatures = registerNetworkFeatures;
5
5
  exports.getNetworkFeatures = getNetworkFeatures;
6
+ exports.getTokenFeatures = getTokenFeatures;
6
7
  const account_1 = require("./account");
7
8
  const base_1 = require("./base");
8
9
  const coinFeatures_1 = require("./coinFeatures");
@@ -19,6 +20,16 @@ function registerNetworkFeatures(family, features) {
19
20
  function getNetworkFeatures(family) {
20
21
  return exports.networkFeatureMapForTokens[family] ?? dynamicNetworkFeaturesMap.get(family);
21
22
  }
23
+ /**
24
+ * Resolve the final feature list for a token: the family's default token features
25
+ * plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
26
+ * lists to apply the per-token diff returned by AMS (`features=false`).
27
+ */
28
+ function getTokenFeatures(family, additionalFeatures = [], excludedFeatures = []) {
29
+ const base = getNetworkFeatures(family) ?? [];
30
+ const excluded = new Set(excludedFeatures);
31
+ return [...new Set([...base, ...additionalFeatures])].filter((f) => !excluded.has(f));
32
+ }
22
33
  exports.networkFeatureMapForTokens = {
23
34
  algo: account_1.AccountCoin.DEFAULT_FEATURES,
24
35
  apt: coinFeatures_1.APT_FEATURES,
@@ -29,8 +40,26 @@ exports.networkFeatureMapForTokens = {
29
40
  celo: account_1.AccountCoin.DEFAULT_FEATURES,
30
41
  eth: account_1.AccountCoin.DEFAULT_FEATURES,
31
42
  eos: account_1.AccountCoin.DEFAULT_FEATURES,
43
+ gasevm: [
44
+ ...coinFeatures_1.EVM_FEATURES,
45
+ base_1.CoinFeature.SHARED_EVM_SIGNING,
46
+ base_1.CoinFeature.SHARED_EVM_SDK,
47
+ base_1.CoinFeature.EVM_COMPATIBLE_IMS,
48
+ base_1.CoinFeature.EVM_COMPATIBLE_UI,
49
+ base_1.CoinFeature.EVM_COMPATIBLE_WP,
50
+ base_1.CoinFeature.SUPPORTS_ERC20,
51
+ ],
32
52
  hbar: account_1.AccountCoin.DEFAULT_FEATURES,
33
53
  opeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
54
+ katanaeth: [
55
+ ...coinFeatures_1.EVM_FEATURES,
56
+ base_1.CoinFeature.SHARED_EVM_SIGNING,
57
+ base_1.CoinFeature.SHARED_EVM_SDK,
58
+ base_1.CoinFeature.EVM_COMPATIBLE_IMS,
59
+ base_1.CoinFeature.EVM_COMPATIBLE_UI,
60
+ base_1.CoinFeature.EVM_COMPATIBLE_WP,
61
+ base_1.CoinFeature.SUPPORTS_ERC20,
62
+ ],
34
63
  polygon: coinFeatures_1.POLYGON_TOKEN_FEATURES,
35
64
  scrolleth: [
36
65
  ...coinFeatures_1.EVM_FEATURES,
@@ -52,4 +81,4 @@ exports.networkFeatureMapForTokens = {
52
81
  ofc: [],
53
82
  ada: coinFeatures_1.ADA_TOKEN_FEATURES,
54
83
  };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLDBEQUVDO0FBT0QsZ0RBRUM7QUE3QkQsdUNBQXdDO0FBQ3hDLGlDQUFpRDtBQUNqRCxpREFXd0I7QUFFeEIsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztBQUVuRSxnRkFBZ0Y7QUFDaEYsU0FBZ0IsdUJBQXVCLENBQUMsTUFBYyxFQUFFLFFBQXVCO0lBQzdFLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFjO0lBQy9DLE9BQU8sa0NBQTBCLENBQUMsTUFBb0IsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDN0QsT0FBTyxFQUFFLHFDQUFzQjtJQUMvQixTQUFTLEVBQUU7UUFDVCxHQUFHLDJCQUFZO1FBQ2Ysa0JBQVcsQ0FBQyxrQkFBa0I7UUFDOUIsa0JBQVcsQ0FBQyxjQUFjO1FBQzFCLGtCQUFXLENBQUMsa0JBQWtCO1FBQzlCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsY0FBYztLQUMzQjtJQUNELEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsS0FBSyxFQUFFLG1DQUFvQjtJQUMzQixHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxpQ0FBa0I7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY291bnRDb2luIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IENvaW5GYW1pbHksIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIEFEQV9UT0tFTl9GRUFUVVJFUyxcbiAgQVBUX0ZFQVRVUkVTLFxuICBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIEVWTV9GRUFUVVJFUyxcbiAgUE9MWUdPTl9UT0tFTl9GRUFUVVJFUyxcbiAgUE9MWVhfVE9LRU5fRkVBVFVSRVMsXG4gIFNPTF9UT0tFTl9GRUFUVVJFUyxcbiAgU1RYX1RPS0VOX0ZFQVRVUkVTLFxuICBTVUlfVE9LRU5fRkVBVFVSRVMsXG4gIFRBT19UT0tFTl9GRUFUVVJFUyxcbn0gZnJvbSAnLi9jb2luRmVhdHVyZXMnO1xuXG5jb25zdCBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIENvaW5GZWF0dXJlW10+KCk7XG5cbi8qKiBSZWdpc3RlciBkZWZhdWx0IHRva2VuIGZlYXR1cmVzIGZvciBhIGR5bmFtaWNhbGx5IG9uYm9hcmRlZCBjaGFpbiBmYW1pbHkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJOZXR3b3JrRmVhdHVyZXMoZmFtaWx5OiBzdHJpbmcsIGZlYXR1cmVzOiBDb2luRmVhdHVyZVtdKTogdm9pZCB7XG4gIGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAuc2V0KGZhbWlseSwgZmVhdHVyZXMpO1xufVxuXG4vKipcbiAqIExvb2sgdXAgdG9rZW4gZmVhdHVyZXMgZm9yIGEgZmFtaWx5LlxuICogQ2hlY2tzIHN0YXRpYyBtYXAgZmlyc3QsIHRoZW4gZmFsbHMgYmFjayB0byBkeW5hbWljIG1hcC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBmYW1pbHkgaXMgbm90IHJlZ2lzdGVyZWQgaW4gZWl0aGVyIG1hcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHk6IHN0cmluZyk6IENvaW5GZWF0dXJlW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnNbZmFtaWx5IGFzIENvaW5GYW1pbHldID8/IGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAuZ2V0KGZhbWlseSk7XG59XG5cbmV4cG9ydCBjb25zdCBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VuczogUGFydGlhbDxSZWNvcmQ8Q29pbkZhbWlseSwgQ29pbkZlYXR1cmVbXT4+ID0ge1xuICBhbGdvOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBhcHQ6IEFQVF9GRUFUVVJFUyxcbiAgYXJiZXRoOiBbLi4uQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUywgQ29pbkZlYXR1cmUuRUlQMTU1OV0sXG4gIGF2YXhjOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBiZXJhOiBbLi4uQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUywgQ29pbkZlYXR1cmUuRUlQMTU1OV0sXG4gIGJzYzogQlNDX1RPS0VOX0ZFQVRVUkVTLFxuICBjZWxvOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBldGg6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGVvczogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgaGJhcjogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgb3BldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgcG9seWdvbjogUE9MWUdPTl9UT0tFTl9GRUFUVVJFUyxcbiAgc2Nyb2xsZXRoOiBbXG4gICAgLi4uRVZNX0ZFQVRVUkVTLFxuICAgIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0lHTklORyxcbiAgICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESyxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9JTVMsXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfVUksXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfV1AsXG4gICAgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAsXG4gIF0sXG4gIHNvbDogU09MX1RPS0VOX0ZFQVRVUkVTLFxuICBzdHg6IFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgc3VpOiBTVUlfVE9LRU5fRkVBVFVSRVMsXG4gIHRhbzogVEFPX1RPS0VOX0ZFQVRVUkVTLFxuICBwb2x5eDogUE9MWVhfVE9LRU5fRkVBVFVSRVMsXG4gIHRyeDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgeGxtOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICB4cnA6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIG9mYzogW10sXG4gIGFkYTogQURBX1RPS0VOX0ZFQVRVUkVTLFxufTtcbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLDBEQUVDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQTVDRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVd3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLE1BQU0sRUFBRTtRQUNOLEdBQUcsMkJBQVk7UUFDZixrQkFBVyxDQUFDLGtCQUFrQjtRQUM5QixrQkFBVyxDQUFDLGNBQWM7UUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7UUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7UUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7UUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0tBQzNCO0lBQ0QsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEtBQUssRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM3RCxTQUFTLEVBQUU7UUFDVCxHQUFHLDJCQUFZO1FBQ2Ysa0JBQVcsQ0FBQyxrQkFBa0I7UUFDOUIsa0JBQVcsQ0FBQyxjQUFjO1FBQzFCLGtCQUFXLENBQUMsa0JBQWtCO1FBQzlCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsY0FBYztLQUMzQjtJQUNELE9BQU8sRUFBRSxxQ0FBc0I7SUFDL0IsU0FBUyxFQUFFO1FBQ1QsR0FBRywyQkFBWTtRQUNmLGtCQUFXLENBQUMsa0JBQWtCO1FBQzlCLGtCQUFXLENBQUMsY0FBYztRQUMxQixrQkFBVyxDQUFDLGtCQUFrQjtRQUM5QixrQkFBVyxDQUFDLGlCQUFpQjtRQUM3QixrQkFBVyxDQUFDLGlCQUFpQjtRQUM3QixrQkFBVyxDQUFDLGNBQWM7S0FDM0I7SUFDRCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEtBQUssRUFBRSxtQ0FBb0I7SUFDM0IsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsaUNBQWtCO0NBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2NvdW50Q29pbiB9IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBDb2luRmVhdHVyZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1xuICBBREFfVE9LRU5fRkVBVFVSRVMsXG4gIEFQVF9GRUFUVVJFUyxcbiAgQlNDX1RPS0VOX0ZFQVRVUkVTLFxuICBFVk1fRkVBVFVSRVMsXG4gIFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICBUQU9fVE9LRU5fRkVBVFVSRVMsXG59IGZyb20gJy4vY29pbkZlYXR1cmVzJztcblxuY29uc3QgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBDb2luRmVhdHVyZVtdPigpO1xuXG4vKiogUmVnaXN0ZXIgZGVmYXVsdCB0b2tlbiBmZWF0dXJlcyBmb3IgYSBkeW5hbWljYWxseSBvbmJvYXJkZWQgY2hhaW4gZmFtaWx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmV0d29ya0ZlYXR1cmVzKGZhbWlseTogc3RyaW5nLCBmZWF0dXJlczogQ29pbkZlYXR1cmVbXSk6IHZvaWQge1xuICBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLnNldChmYW1pbHksIGZlYXR1cmVzKTtcbn1cblxuLyoqXG4gKiBMb29rIHVwIHRva2VuIGZlYXR1cmVzIGZvciBhIGZhbWlseS5cbiAqIENoZWNrcyBzdGF0aWMgbWFwIGZpcnN0LCB0aGVuIGZhbGxzIGJhY2sgdG8gZHluYW1pYyBtYXAuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmFtaWx5IGlzIG5vdCByZWdpc3RlcmVkIGluIGVpdGhlciBtYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrRmVhdHVyZXMoZmFtaWx5OiBzdHJpbmcpOiBDb2luRmVhdHVyZVtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA/PyBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLmdldChmYW1pbHkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZpbmFsIGZlYXR1cmUgbGlzdCBmb3IgYSB0b2tlbjogdGhlIGZhbWlseSdzIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXNcbiAqIHBsdXMgYGFkZGl0aW9uYWxGZWF0dXJlc2AsIG1pbnVzIGBleGNsdWRlZEZlYXR1cmVzYC4gVXNlZCBieSBnZW5lcmF0ZWQgYm90LXRva2VuXG4gKiBsaXN0cyB0byBhcHBseSB0aGUgcGVyLXRva2VuIGRpZmYgcmV0dXJuZWQgYnkgQU1TIChgZmVhdHVyZXM9ZmFsc2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuRmVhdHVyZXMoXG4gIGZhbWlseTogc3RyaW5nLFxuICBhZGRpdGlvbmFsRmVhdHVyZXM6IENvaW5GZWF0dXJlW10gPSBbXSxcbiAgZXhjbHVkZWRGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdXG4pOiBDb2luRmVhdHVyZVtdIHtcbiAgY29uc3QgYmFzZSA9IGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHkpID8/IFtdO1xuICBjb25zdCBleGNsdWRlZCA9IG5ldyBTZXQ8Q29pbkZlYXR1cmU+KGV4Y2x1ZGVkRmVhdHVyZXMpO1xuICByZXR1cm4gWy4uLm5ldyBTZXQ8Q29pbkZlYXR1cmU+KFsuLi5iYXNlLCAuLi5hZGRpdGlvbmFsRmVhdHVyZXNdKV0uZmlsdGVyKChmKSA9PiAhZXhjbHVkZWQuaGFzKGYpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxDb2luRmFtaWx5LCBDb2luRmVhdHVyZVtdPj4gPSB7XG4gIGFsZ286IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGFwdDogQVBUX0ZFQVRVUkVTLFxuICBhcmJldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYXZheGM6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGJlcmE6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYnNjOiBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIGNlbG86IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGV0aDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgZW9zOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBnYXNldm06IFtcbiAgICAuLi5FVk1fRkVBVFVSRVMsXG4gICAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TSUdOSU5HLFxuICAgIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX0lNUyxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9VSSxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9XUCxcbiAgICBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCxcbiAgXSxcbiAgaGJhcjogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgb3BldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAga2F0YW5hZXRoOiBbXG4gICAgLi4uRVZNX0ZFQVRVUkVTLFxuICAgIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0lHTklORyxcbiAgICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESyxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9JTVMsXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfVUksXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfV1AsXG4gICAgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAsXG4gIF0sXG4gIHBvbHlnb246IFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIHNjcm9sbGV0aDogW1xuICAgIC4uLkVWTV9GRUFUVVJFUyxcbiAgICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NJR05JTkcsXG4gICAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREssXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfSU1TLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1VJLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1dQLFxuICAgIENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwLFxuICBdLFxuICBzb2w6IFNPTF9UT0tFTl9GRUFUVVJFUyxcbiAgc3R4OiBTVFhfVE9LRU5fRkVBVFVSRVMsXG4gIHN1aTogU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICB0YW86IFRBT19UT0tFTl9GRUFUVVJFUyxcbiAgcG9seXg6IFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICB0cng6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIHhsbTogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgeHJwOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBvZmM6IFtdLFxuICBhZGE6IEFEQV9UT0tFTl9GRUFUVVJFUyxcbn07XG4iXX0=
@@ -107,6 +107,7 @@ export interface AvalancheNetwork extends BaseNetwork {
107
107
  export interface AccountNetwork extends BaseNetwork {
108
108
  readonly accountExplorerUrl?: string;
109
109
  readonly blockExplorerUrl?: string;
110
+ readonly addressPrefix?: string;
110
111
  }
111
112
  export interface CosmosNetwork extends AccountNetwork {
112
113
  readonly addressPrefix: string;
@@ -846,81 +847,97 @@ declare class Atom extends Mainnet implements AccountNetwork {
846
847
  name: string;
847
848
  family: CoinFamily;
848
849
  explorerUrl: string;
850
+ addressPrefix: string;
849
851
  }
850
852
  declare class AtomTestnet extends Testnet implements AccountNetwork {
851
853
  name: string;
852
854
  family: CoinFamily;
853
855
  explorerUrl: string;
856
+ addressPrefix: string;
854
857
  }
855
858
  declare class Osmo extends Mainnet implements AccountNetwork {
856
859
  name: string;
857
860
  family: CoinFamily;
858
861
  explorerUrl: string;
862
+ addressPrefix: string;
859
863
  }
860
864
  declare class OsmoTestnet extends Testnet implements AccountNetwork {
861
865
  name: string;
862
866
  family: CoinFamily;
863
867
  explorerUrl: string;
868
+ addressPrefix: string;
864
869
  }
865
870
  declare class Tia extends Mainnet implements AccountNetwork {
866
871
  name: string;
867
872
  family: CoinFamily;
868
873
  explorerUrl: string;
874
+ addressPrefix: string;
869
875
  }
870
876
  declare class TiaTestnet extends Testnet implements AccountNetwork {
871
877
  name: string;
872
878
  family: CoinFamily;
873
879
  explorerUrl: string;
880
+ addressPrefix: string;
874
881
  }
875
882
  declare class Hash extends Mainnet implements AccountNetwork {
876
883
  name: string;
877
884
  family: CoinFamily;
878
885
  explorerUrl: string;
886
+ addressPrefix: string;
879
887
  }
880
888
  declare class HashTestnet extends Testnet implements AccountNetwork {
881
889
  name: string;
882
890
  family: CoinFamily;
883
891
  explorerUrl: string;
892
+ addressPrefix: string;
884
893
  }
885
894
  declare class Bld extends Mainnet implements AccountNetwork {
886
895
  name: string;
887
896
  family: CoinFamily;
888
897
  explorerUrl: string;
898
+ addressPrefix: string;
889
899
  }
890
900
  declare class BldTestnet extends Testnet implements AccountNetwork {
891
901
  name: string;
892
902
  family: CoinFamily;
893
903
  explorerUrl: string;
904
+ addressPrefix: string;
894
905
  }
895
906
  declare class Sei extends Mainnet implements AccountNetwork {
896
907
  name: string;
897
908
  family: CoinFamily;
898
909
  explorerUrl: string;
910
+ addressPrefix: string;
899
911
  }
900
912
  declare class SeiTestnet extends Testnet implements AccountNetwork {
901
913
  name: string;
902
914
  family: CoinFamily;
903
915
  explorerUrl: string;
916
+ addressPrefix: string;
904
917
  }
905
918
  declare class Zeta extends Mainnet implements AccountNetwork {
906
919
  name: string;
907
920
  family: CoinFamily;
908
921
  explorerUrl: string;
922
+ addressPrefix: string;
909
923
  }
910
924
  declare class ZetaTestnet extends Testnet implements AccountNetwork {
911
925
  name: string;
912
926
  family: CoinFamily;
913
927
  explorerUrl: string;
928
+ addressPrefix: string;
914
929
  }
915
930
  declare class Injective extends Mainnet implements AccountNetwork {
916
931
  name: string;
917
932
  family: CoinFamily;
918
933
  explorerUrl: string;
934
+ addressPrefix: string;
919
935
  }
920
936
  declare class InjectiveTestnet extends Testnet implements AccountNetwork {
921
937
  name: string;
922
938
  family: CoinFamily;
923
939
  explorerUrl: string;
940
+ addressPrefix: string;
924
941
  }
925
942
  declare class KavaCosmos extends Mainnet implements CosmosNetwork {
926
943
  name: string;
@@ -980,31 +997,37 @@ declare class Coreum extends Mainnet implements AccountNetwork {
980
997
  name: string;
981
998
  family: CoinFamily;
982
999
  explorerUrl: string;
1000
+ addressPrefix: string;
983
1001
  }
984
1002
  declare class CoreumTestnet extends Testnet implements AccountNetwork {
985
1003
  name: string;
986
1004
  family: CoinFamily;
987
1005
  explorerUrl: string;
1006
+ addressPrefix: string;
988
1007
  }
989
1008
  declare class Rune extends Mainnet implements AccountNetwork {
990
1009
  name: string;
991
1010
  family: CoinFamily;
992
1011
  explorerUrl: string;
1012
+ addressPrefix: string;
993
1013
  }
994
1014
  declare class RuneTestNet extends Testnet implements AccountNetwork {
995
1015
  name: string;
996
1016
  family: CoinFamily;
997
1017
  explorerUrl: string;
1018
+ addressPrefix: string;
998
1019
  }
999
1020
  declare class Baby extends Mainnet implements AccountNetwork {
1000
1021
  name: string;
1001
1022
  family: CoinFamily;
1002
1023
  explorerUrl: string;
1024
+ addressPrefix: string;
1003
1025
  }
1004
1026
  declare class BabyTestnet extends Testnet implements AccountNetwork {
1005
1027
  name: string;
1006
1028
  family: CoinFamily;
1007
1029
  explorerUrl: string;
1030
+ addressPrefix: string;
1008
1031
  }
1009
1032
  declare class Mantra extends Mainnet implements CosmosNetwork {
1010
1033
  name: string;
@@ -1032,11 +1055,13 @@ declare class Cronos extends Mainnet implements AccountNetwork {
1032
1055
  name: string;
1033
1056
  family: CoinFamily;
1034
1057
  explorerUrl: string;
1058
+ addressPrefix: string;
1035
1059
  }
1036
1060
  declare class CronosTestnet extends Testnet implements AccountNetwork {
1037
1061
  name: string;
1038
1062
  family: CoinFamily;
1039
1063
  explorerUrl: string;
1064
+ addressPrefix: string;
1040
1065
  }
1041
1066
  declare class FetchAi extends Mainnet implements AccountNetwork {
1042
1067
  name: string;
@@ -1052,31 +1077,37 @@ declare class Initia extends Mainnet implements AccountNetwork {
1052
1077
  name: string;
1053
1078
  family: CoinFamily;
1054
1079
  explorerUrl: string;
1080
+ addressPrefix: string;
1055
1081
  }
1056
1082
  declare class InitiaTestnet extends Testnet implements AccountNetwork {
1057
1083
  name: string;
1058
1084
  family: CoinFamily;
1059
1085
  explorerUrl: string;
1086
+ addressPrefix: string;
1060
1087
  }
1061
1088
  declare class Asi extends Mainnet implements AccountNetwork {
1062
1089
  name: string;
1063
1090
  family: CoinFamily;
1064
1091
  explorerUrl: string;
1092
+ addressPrefix: string;
1065
1093
  }
1066
1094
  declare class AsiTestnet extends Testnet implements AccountNetwork {
1067
1095
  name: string;
1068
1096
  family: CoinFamily;
1069
1097
  explorerUrl: string;
1098
+ addressPrefix: string;
1070
1099
  }
1071
1100
  declare class Islm extends Mainnet implements AccountNetwork {
1072
1101
  name: string;
1073
1102
  family: CoinFamily;
1074
1103
  explorerUrl: string;
1104
+ addressPrefix: string;
1075
1105
  }
1076
1106
  declare class IslmTestnet extends Testnet implements AccountNetwork {
1077
1107
  name: string;
1078
1108
  family: CoinFamily;
1079
1109
  explorerUrl: string;
1110
+ addressPrefix: string;
1080
1111
  }
1081
1112
  declare class Stx extends Mainnet implements StacksNetwork {
1082
1113
  name: string;
@@ -2206,6 +2237,22 @@ declare class FlowTestnet extends Testnet implements EthereumNetwork {
2206
2237
  chainId: number;
2207
2238
  nativeCoinOperationHashPrefix: string;
2208
2239
  }
2240
+ declare class GasEvm extends Mainnet implements EthereumNetwork {
2241
+ name: string;
2242
+ family: CoinFamily;
2243
+ explorerUrl: string;
2244
+ accountExplorerUrl: string;
2245
+ chainId: number;
2246
+ nativeCoinOperationHashPrefix: string;
2247
+ }
2248
+ declare class GasEvmTestnet extends Testnet implements EthereumNetwork {
2249
+ name: string;
2250
+ family: CoinFamily;
2251
+ explorerUrl: string;
2252
+ accountExplorerUrl: string;
2253
+ chainId: number;
2254
+ nativeCoinOperationHashPrefix: string;
2255
+ }
2209
2256
  declare class MegaETH extends Mainnet implements EthereumNetwork {
2210
2257
  name: string;
2211
2258
  family: CoinFamily;
@@ -2262,6 +2309,22 @@ declare class HemiEthTestnet extends Testnet implements EthereumNetwork {
2262
2309
  chainId: number;
2263
2310
  nativeCoinOperationHashPrefix: string;
2264
2311
  }
2312
+ declare class KatanaEth extends Mainnet implements EthereumNetwork {
2313
+ name: string;
2314
+ family: CoinFamily;
2315
+ explorerUrl: string;
2316
+ accountExplorerUrl: string;
2317
+ chainId: number;
2318
+ nativeCoinOperationHashPrefix: string;
2319
+ }
2320
+ declare class KatanaEthTestnet extends Testnet implements EthereumNetwork {
2321
+ name: string;
2322
+ family: CoinFamily;
2323
+ explorerUrl: string;
2324
+ accountExplorerUrl: string;
2325
+ chainId: number;
2326
+ nativeCoinOperationHashPrefix: string;
2327
+ }
2265
2328
  declare class PrividiumETH extends Mainnet implements EthereumNetwork {
2266
2329
  name: string;
2267
2330
  family: CoinFamily;
@@ -2483,6 +2546,7 @@ export declare const Networks: {
2483
2546
  fiat: Readonly<Fiat>;
2484
2547
  fetchai: Readonly<FetchAi>;
2485
2548
  flow: Readonly<Flow>;
2549
+ gasevm: Readonly<GasEvm>;
2486
2550
  flr: Readonly<Flare>;
2487
2551
  flrP: Readonly<FlareP>;
2488
2552
  fluenteth: Readonly<FluentETH>;
@@ -2505,6 +2569,7 @@ export declare const Networks: {
2505
2569
  jovayeth: Readonly<JovayETH>;
2506
2570
  kaia: Readonly<Kaia>;
2507
2571
  kaspa: Readonly<KaspaMainnet>;
2572
+ katanaeth: Readonly<KatanaEth>;
2508
2573
  kavacosmos: Readonly<KavaCosmos>;
2509
2574
  kavaevm: Readonly<KavaEVM>;
2510
2575
  lnbtc: Readonly<LightningBitcoin>;
@@ -2609,6 +2674,7 @@ export declare const Networks: {
2609
2674
  fiat: Readonly<FiatTestnet>;
2610
2675
  fetchai: Readonly<FetchAiTestnet>;
2611
2676
  flow: Readonly<FlowTestnet>;
2677
+ tgasevm: Readonly<GasEvmTestnet>;
2612
2678
  flr: Readonly<FlareTestnet>;
2613
2679
  flrP: Readonly<FlarePTestnet>;
2614
2680
  fluenteth: Readonly<FluentETHTestnet>;
@@ -2635,6 +2701,7 @@ export declare const Networks: {
2635
2701
  islm: Readonly<IslmTestnet>;
2636
2702
  jovayeth: Readonly<JovayETHTestnet>;
2637
2703
  kaspa: Readonly<KaspaTestnet>;
2704
+ katanaeth: Readonly<KatanaEthTestnet>;
2638
2705
  kavacosmos: Readonly<KavaCosmosTestnet>;
2639
2706
  kavaevm: Readonly<KavaEVMTestnet>;
2640
2707
  kovan: Readonly<Kovan>;