@bitgo-beta/statics 15.1.1-beta.187 → 15.1.1-beta.1871

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 (129) hide show
  1. package/dist/src/account.d.ts +1130 -75
  2. package/dist/src/account.d.ts.map +1 -1
  3. package/dist/src/account.js +1780 -160
  4. package/dist/src/ada.d.ts.map +1 -1
  5. package/dist/src/ada.js +7 -3
  6. package/dist/src/allCoinsAndTokens.d.ts +2 -0
  7. package/dist/src/allCoinsAndTokens.d.ts.map +1 -0
  8. package/dist/src/allCoinsAndTokens.js +1755 -0
  9. package/dist/src/avaxp.d.ts.map +1 -1
  10. package/dist/src/avaxp.js +9 -3
  11. package/dist/src/base.d.ts +2713 -57
  12. package/dist/src/base.d.ts.map +1 -1
  13. package/dist/src/base.js +2823 -67
  14. package/dist/src/canton.d.ts +34 -0
  15. package/dist/src/canton.d.ts.map +1 -0
  16. package/dist/src/canton.js +51 -0
  17. package/dist/src/coinFeatures.d.ts +119 -0
  18. package/dist/src/coinFeatures.d.ts.map +1 -0
  19. package/dist/src/coinFeatures.js +774 -0
  20. package/dist/src/coins/adaTokens.d.ts +2 -0
  21. package/dist/src/coins/adaTokens.d.ts.map +1 -0
  22. package/dist/src/coins/adaTokens.js +22 -0
  23. package/dist/src/coins/avaxTokens.d.ts +2 -0
  24. package/dist/src/coins/avaxTokens.d.ts.map +1 -0
  25. package/dist/src/coins/avaxTokens.js +131 -0
  26. package/dist/src/coins/botOfcTokens.d.ts +3 -0
  27. package/dist/src/coins/botOfcTokens.d.ts.map +1 -0
  28. package/dist/src/coins/botOfcTokens.js +64 -0
  29. package/dist/src/coins/botTokens.d.ts +3 -0
  30. package/dist/src/coins/botTokens.d.ts.map +1 -0
  31. package/dist/src/coins/botTokens.js +282 -0
  32. package/dist/src/coins/bscTokens.d.ts +2 -0
  33. package/dist/src/coins/bscTokens.d.ts.map +1 -0
  34. package/dist/src/coins/bscTokens.js +220 -0
  35. package/dist/src/coins/cantonTokens.d.ts +2 -0
  36. package/dist/src/coins/cantonTokens.d.ts.map +1 -0
  37. package/dist/src/coins/cantonTokens.js +106 -0
  38. package/dist/src/coins/cosmosTokens.d.ts +2 -0
  39. package/dist/src/coins/cosmosTokens.d.ts.map +1 -0
  40. package/dist/src/coins/cosmosTokens.js +14 -0
  41. package/dist/src/coins/erc20Coins.d.ts +2 -0
  42. package/dist/src/coins/erc20Coins.d.ts.map +1 -0
  43. package/dist/src/coins/erc20Coins.js +2048 -0
  44. package/dist/src/coins/erc7984Tokens.d.ts +18 -0
  45. package/dist/src/coins/erc7984Tokens.d.ts.map +1 -0
  46. package/dist/src/coins/erc7984Tokens.js +32 -0
  47. package/dist/src/coins/generateERC20.d.ts +36 -0
  48. package/dist/src/coins/generateERC20.d.ts.map +1 -0
  49. package/dist/src/coins/generateERC20.js +46 -0
  50. package/dist/src/coins/hoodethTokens.d.ts +2 -0
  51. package/dist/src/coins/hoodethTokens.d.ts.map +1 -0
  52. package/dist/src/coins/hoodethTokens.js +115 -0
  53. package/dist/src/coins/jettonTokens.d.ts +2 -0
  54. package/dist/src/coins/jettonTokens.d.ts.map +1 -0
  55. package/dist/src/coins/jettonTokens.js +19 -0
  56. package/dist/src/coins/nep141Tokens.d.ts +2 -0
  57. package/dist/src/coins/nep141Tokens.d.ts.map +1 -0
  58. package/dist/src/coins/nep141Tokens.js +18 -0
  59. package/dist/src/coins/ofcCoins.d.ts +2 -0
  60. package/dist/src/coins/ofcCoins.d.ts.map +1 -0
  61. package/dist/src/coins/ofcCoins.js +1162 -0
  62. package/dist/src/coins/ofcErc20Coins.d.ts +4 -0
  63. package/dist/src/coins/ofcErc20Coins.d.ts.map +1 -0
  64. package/dist/src/coins/ofcErc20Coins.js +1837 -0
  65. package/dist/src/coins/ofcHoodethTokens.d.ts +2 -0
  66. package/dist/src/coins/ofcHoodethTokens.d.ts.map +1 -0
  67. package/dist/src/coins/ofcHoodethTokens.js +113 -0
  68. package/dist/src/coins/polygonTokens.d.ts +2 -0
  69. package/dist/src/coins/polygonTokens.d.ts.map +1 -0
  70. package/dist/src/coins/polygonTokens.js +203 -0
  71. package/dist/src/coins/polyxTokens.d.ts +2 -0
  72. package/dist/src/coins/polyxTokens.d.ts.map +1 -0
  73. package/dist/src/coins/polyxTokens.js +22 -0
  74. package/dist/src/coins/sip10Tokens.d.ts +2 -0
  75. package/dist/src/coins/sip10Tokens.d.ts.map +1 -0
  76. package/dist/src/coins/sip10Tokens.js +25 -0
  77. package/dist/src/coins/solTokens.d.ts +3 -0
  78. package/dist/src/coins/solTokens.d.ts.map +1 -0
  79. package/dist/src/coins/solTokens.js +499 -0
  80. package/dist/src/coins/vetTokens.d.ts +2 -0
  81. package/dist/src/coins/vetTokens.d.ts.map +1 -0
  82. package/dist/src/coins/vetTokens.js +11 -0
  83. package/dist/src/coins.d.ts +22 -1
  84. package/dist/src/coins.d.ts.map +1 -1
  85. package/dist/src/coins.js +463 -1708
  86. package/dist/src/constants.d.ts +1 -0
  87. package/dist/src/constants.d.ts.map +1 -1
  88. package/dist/src/constants.js +3 -2
  89. package/dist/src/errors.d.ts +9 -0
  90. package/dist/src/errors.d.ts.map +1 -1
  91. package/dist/src/errors.js +23 -2
  92. package/dist/src/flrp.d.ts +40 -0
  93. package/dist/src/flrp.d.ts.map +1 -0
  94. package/dist/src/flrp.js +68 -0
  95. package/dist/src/hypeevm.d.ts +28 -0
  96. package/dist/src/hypeevm.d.ts.map +1 -0
  97. package/dist/src/hypeevm.js +60 -0
  98. package/dist/src/index.d.ts +5 -1
  99. package/dist/src/index.d.ts.map +1 -1
  100. package/dist/src/index.js +41 -3
  101. package/dist/src/kaspa.d.ts +34 -0
  102. package/dist/src/kaspa.d.ts.map +1 -0
  103. package/dist/src/kaspa.js +63 -0
  104. package/dist/src/lightning.d.ts +43 -0
  105. package/dist/src/lightning.d.ts.map +1 -0
  106. package/dist/src/lightning.js +64 -0
  107. package/dist/src/map.d.ts +34 -1
  108. package/dist/src/map.d.ts.map +1 -1
  109. package/dist/src/map.js +250 -35
  110. package/dist/src/networkFeatureMapForTokens.d.ts +17 -0
  111. package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -0
  112. package/dist/src/networkFeatureMapForTokens.js +84 -0
  113. package/dist/src/networks.d.ts +1968 -67
  114. package/dist/src/networks.d.ts.map +1 -1
  115. package/dist/src/networks.js +2416 -108
  116. package/dist/src/ofc.d.ts +695 -3
  117. package/dist/src/ofc.d.ts.map +1 -1
  118. package/dist/src/ofc.js +1653 -28
  119. package/dist/src/tokenConfig.d.ts +692 -108
  120. package/dist/src/tokenConfig.d.ts.map +1 -1
  121. package/dist/src/tokenConfig.js +1087 -220
  122. package/dist/src/utxo.d.ts +3 -1
  123. package/dist/src/utxo.d.ts.map +1 -1
  124. package/dist/src/utxo.js +84 -3
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +6 -3
  127. package/.mocharc.js +0 -10
  128. package/.prettierignore +0 -2
  129. package/CHANGELOG.md +0 -1221
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.networkFeatureMapForTokens = void 0;
4
+ exports.registerNetworkFeatures = registerNetworkFeatures;
5
+ exports.getNetworkFeatures = getNetworkFeatures;
6
+ exports.getTokenFeatures = getTokenFeatures;
7
+ const account_1 = require("./account");
8
+ const base_1 = require("./base");
9
+ const coinFeatures_1 = require("./coinFeatures");
10
+ const dynamicNetworkFeaturesMap = new Map();
11
+ /** Register default token features for a dynamically onboarded chain family. */
12
+ function registerNetworkFeatures(family, features) {
13
+ dynamicNetworkFeaturesMap.set(family, features);
14
+ }
15
+ /**
16
+ * Look up token features for a family.
17
+ * Checks static map first, then falls back to dynamic map.
18
+ * Returns undefined if the family is not registered in either map.
19
+ */
20
+ function getNetworkFeatures(family) {
21
+ return exports.networkFeatureMapForTokens[family] ?? dynamicNetworkFeaturesMap.get(family);
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
+ }
33
+ exports.networkFeatureMapForTokens = {
34
+ algo: account_1.AccountCoin.DEFAULT_FEATURES,
35
+ apt: coinFeatures_1.APT_FEATURES,
36
+ arbeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
37
+ avaxc: account_1.AccountCoin.DEFAULT_FEATURES,
38
+ bera: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
39
+ bsc: coinFeatures_1.BSC_TOKEN_FEATURES,
40
+ celo: account_1.AccountCoin.DEFAULT_FEATURES,
41
+ eth: account_1.AccountCoin.DEFAULT_FEATURES,
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
+ ],
52
+ hbar: account_1.AccountCoin.DEFAULT_FEATURES,
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
+ ],
63
+ polygon: coinFeatures_1.POLYGON_TOKEN_FEATURES,
64
+ scrolleth: [
65
+ ...coinFeatures_1.EVM_FEATURES,
66
+ base_1.CoinFeature.SHARED_EVM_SIGNING,
67
+ base_1.CoinFeature.SHARED_EVM_SDK,
68
+ base_1.CoinFeature.EVM_COMPATIBLE_IMS,
69
+ base_1.CoinFeature.EVM_COMPATIBLE_UI,
70
+ base_1.CoinFeature.EVM_COMPATIBLE_WP,
71
+ base_1.CoinFeature.SUPPORTS_ERC20,
72
+ ],
73
+ sol: coinFeatures_1.SOL_TOKEN_FEATURES,
74
+ stx: coinFeatures_1.STX_TOKEN_FEATURES,
75
+ sui: coinFeatures_1.SUI_TOKEN_FEATURES,
76
+ tao: coinFeatures_1.TAO_TOKEN_FEATURES,
77
+ polyx: coinFeatures_1.POLYX_TOKEN_FEATURES,
78
+ trx: account_1.AccountCoin.DEFAULT_FEATURES,
79
+ xlm: account_1.AccountCoin.DEFAULT_FEATURES,
80
+ xrp: account_1.AccountCoin.DEFAULT_FEATURES,
81
+ ofc: [],
82
+ ada: coinFeatures_1.ADA_TOKEN_FEATURES,
83
+ };
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLDBEQUVDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQTVDRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVd3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLElBQUksRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNsQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLE1BQU0sRUFBRTtRQUNOLEdBQUcsMkJBQVk7UUFDZixrQkFBVyxDQUFDLGtCQUFrQjtRQUM5QixrQkFBVyxDQUFDLGNBQWM7UUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7UUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7UUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7UUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0tBQzNCO0lBQ0QsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEtBQUssRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM3RCxTQUFTLEVBQUU7UUFDVCxHQUFHLDJCQUFZO1FBQ2Ysa0JBQVcsQ0FBQyxrQkFBa0I7UUFDOUIsa0JBQVcsQ0FBQyxjQUFjO1FBQzFCLGtCQUFXLENBQUMsa0JBQWtCO1FBQzlCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsaUJBQWlCO1FBQzdCLGtCQUFXLENBQUMsY0FBYztLQUMzQjtJQUNELE9BQU8sRUFBRSxxQ0FBc0I7SUFDL0IsU0FBUyxFQUFFO1FBQ1QsR0FBRywyQkFBWTtRQUNmLGtCQUFXLENBQUMsa0JBQWtCO1FBQzlCLGtCQUFXLENBQUMsY0FBYztRQUMxQixrQkFBVyxDQUFDLGtCQUFrQjtRQUM5QixrQkFBVyxDQUFDLGlCQUFpQjtRQUM3QixrQkFBVyxDQUFDLGlCQUFpQjtRQUM3QixrQkFBVyxDQUFDLGNBQWM7S0FDM0I7SUFDRCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEtBQUssRUFBRSxtQ0FBb0I7SUFDM0IsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsaUNBQWtCO0NBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2NvdW50Q29pbiB9IGZyb20gJy4vYWNjb3VudCc7XG5pbXBvcnQgeyBDb2luRmFtaWx5LCBDb2luRmVhdHVyZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1xuICBBREFfVE9LRU5fRkVBVFVSRVMsXG4gIEFQVF9GRUFUVVJFUyxcbiAgQlNDX1RPS0VOX0ZFQVRVUkVTLFxuICBFVk1fRkVBVFVSRVMsXG4gIFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIFNUWF9UT0tFTl9GRUFUVVJFUyxcbiAgU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICBUQU9fVE9LRU5fRkVBVFVSRVMsXG59IGZyb20gJy4vY29pbkZlYXR1cmVzJztcblxuY29uc3QgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBDb2luRmVhdHVyZVtdPigpO1xuXG4vKiogUmVnaXN0ZXIgZGVmYXVsdCB0b2tlbiBmZWF0dXJlcyBmb3IgYSBkeW5hbWljYWxseSBvbmJvYXJkZWQgY2hhaW4gZmFtaWx5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTmV0d29ya0ZlYXR1cmVzKGZhbWlseTogc3RyaW5nLCBmZWF0dXJlczogQ29pbkZlYXR1cmVbXSk6IHZvaWQge1xuICBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLnNldChmYW1pbHksIGZlYXR1cmVzKTtcbn1cblxuLyoqXG4gKiBMb29rIHVwIHRva2VuIGZlYXR1cmVzIGZvciBhIGZhbWlseS5cbiAqIENoZWNrcyBzdGF0aWMgbWFwIGZpcnN0LCB0aGVuIGZhbGxzIGJhY2sgdG8gZHluYW1pYyBtYXAuXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmFtaWx5IGlzIG5vdCByZWdpc3RlcmVkIGluIGVpdGhlciBtYXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrRmVhdHVyZXMoZmFtaWx5OiBzdHJpbmcpOiBDb2luRmVhdHVyZVtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA/PyBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLmdldChmYW1pbHkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZpbmFsIGZlYXR1cmUgbGlzdCBmb3IgYSB0b2tlbjogdGhlIGZhbWlseSdzIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXNcbiAqIHBsdXMgYGFkZGl0aW9uYWxGZWF0dXJlc2AsIG1pbnVzIGBleGNsdWRlZEZlYXR1cmVzYC4gVXNlZCBieSBnZW5lcmF0ZWQgYm90LXRva2VuXG4gKiBsaXN0cyB0byBhcHBseSB0aGUgcGVyLXRva2VuIGRpZmYgcmV0dXJuZWQgYnkgQU1TIChgZmVhdHVyZXM9ZmFsc2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuRmVhdHVyZXMoXG4gIGZhbWlseTogc3RyaW5nLFxuICBhZGRpdGlvbmFsRmVhdHVyZXM6IENvaW5GZWF0dXJlW10gPSBbXSxcbiAgZXhjbHVkZWRGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdXG4pOiBDb2luRmVhdHVyZVtdIHtcbiAgY29uc3QgYmFzZSA9IGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHkpID8/IFtdO1xuICBjb25zdCBleGNsdWRlZCA9IG5ldyBTZXQ8Q29pbkZlYXR1cmU+KGV4Y2x1ZGVkRmVhdHVyZXMpO1xuICByZXR1cm4gWy4uLm5ldyBTZXQ8Q29pbkZlYXR1cmU+KFsuLi5iYXNlLCAuLi5hZGRpdGlvbmFsRmVhdHVyZXNdKV0uZmlsdGVyKChmKSA9PiAhZXhjbHVkZWQuaGFzKGYpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxDb2luRmFtaWx5LCBDb2luRmVhdHVyZVtdPj4gPSB7XG4gIGFsZ286IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGFwdDogQVBUX0ZFQVRVUkVTLFxuICBhcmJldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYXZheGM6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGJlcmE6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYnNjOiBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIGNlbG86IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGV0aDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgZW9zOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBnYXNldm06IFtcbiAgICAuLi5FVk1fRkVBVFVSRVMsXG4gICAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TSUdOSU5HLFxuICAgIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX0lNUyxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9VSSxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9XUCxcbiAgICBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCxcbiAgXSxcbiAgaGJhcjogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgb3BldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAga2F0YW5hZXRoOiBbXG4gICAgLi4uRVZNX0ZFQVRVUkVTLFxuICAgIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0lHTklORyxcbiAgICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESyxcbiAgICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9JTVMsXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfVUksXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfV1AsXG4gICAgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAsXG4gIF0sXG4gIHBvbHlnb246IFBPTFlHT05fVE9LRU5fRkVBVFVSRVMsXG4gIHNjcm9sbGV0aDogW1xuICAgIC4uLkVWTV9GRUFUVVJFUyxcbiAgICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NJR05JTkcsXG4gICAgQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREssXG4gICAgQ29pbkZlYXR1cmUuRVZNX0NPTVBBVElCTEVfSU1TLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1VJLFxuICAgIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1dQLFxuICAgIENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwLFxuICBdLFxuICBzb2w6IFNPTF9UT0tFTl9GRUFUVVJFUyxcbiAgc3R4OiBTVFhfVE9LRU5fRkVBVFVSRVMsXG4gIHN1aTogU1VJX1RPS0VOX0ZFQVRVUkVTLFxuICB0YW86IFRBT19UT0tFTl9GRUFUVVJFUyxcbiAgcG9seXg6IFBPTFlYX1RPS0VOX0ZFQVRVUkVTLFxuICB0cng6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIHhsbTogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgeHJwOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBvZmM6IFtdLFxuICBhZGE6IEFEQV9UT0tFTl9GRUFUVVJFUyxcbn07XG4iXX0=