@bitgo-beta/statics 15.1.1-beta.211 → 15.1.1-beta.2111

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 +1187 -73
  2. package/dist/src/account.d.ts.map +1 -1
  3. package/dist/src/account.js +1794 -161
  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 +1907 -0
  9. package/dist/src/avaxp.d.ts.map +1 -1
  10. package/dist/src/avaxp.js +8 -3
  11. package/dist/src/base.d.ts +2960 -45
  12. package/dist/src/base.d.ts.map +1 -1
  13. package/dist/src/base.js +3085 -56
  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 +134 -0
  18. package/dist/src/coinFeatures.d.ts.map +1 -0
  19. package/dist/src/coinFeatures.js +817 -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 +27 -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 +133 -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 +309 -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 +966 -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 +421 -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 +134 -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 +2086 -0
  44. package/dist/src/coins/erc7984Tokens.d.ts +17 -0
  45. package/dist/src/coins/erc7984Tokens.d.ts.map +1 -0
  46. package/dist/src/coins/erc7984Tokens.js +40 -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 +318 -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 +1500 -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 +1902 -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 +316 -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 +218 -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 +538 -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 +477 -2059
  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 +66 -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 +49 -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 +251 -35
  110. package/dist/src/networkFeatureMapForTokens.d.ts +30 -0
  111. package/dist/src/networkFeatureMapForTokens.d.ts.map +1 -0
  112. package/dist/src/networkFeatureMapForTokens.js +91 -0
  113. package/dist/src/networks.d.ts +2081 -68
  114. package/dist/src/networks.d.ts.map +1 -1
  115. package/dist/src/networks.js +2554 -104
  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 +717 -114
  120. package/dist/src/tokenConfig.d.ts.map +1 -1
  121. package/dist/src/tokenConfig.js +1132 -233
  122. package/dist/src/utxo.d.ts +6 -2
  123. package/dist/src/utxo.d.ts.map +1 -1
  124. package/dist/src/utxo.js +132 -4
  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 -1504
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.networkFeatureMapForTokens = exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES = void 0;
4
+ exports.registerNetworkFeatures = registerNetworkFeatures;
5
+ exports.registerErc20Families = registerErc20Families;
6
+ exports.getNetworkFeatures = getNetworkFeatures;
7
+ exports.getTokenFeatures = getTokenFeatures;
8
+ const account_1 = require("./account");
9
+ const base_1 = require("./base");
10
+ const coinFeatures_1 = require("./coinFeatures");
11
+ const dynamicNetworkFeaturesMap = new Map();
12
+ /** Register default token features for a dynamically onboarded chain family. */
13
+ function registerNetworkFeatures(family, features) {
14
+ dynamicNetworkFeaturesMap.set(family, features);
15
+ }
16
+ /** Default token feature set shared by "plain" EVM-compatible chain families (no bespoke features). */
17
+ exports.EVM_TOKEN_FEATURES = [
18
+ ...coinFeatures_1.EVM_FEATURES,
19
+ base_1.CoinFeature.SHARED_EVM_SIGNING,
20
+ base_1.CoinFeature.SHARED_EVM_SDK,
21
+ base_1.CoinFeature.EVM_COMPATIBLE_IMS,
22
+ base_1.CoinFeature.EVM_COMPATIBLE_UI,
23
+ base_1.CoinFeature.EVM_COMPATIBLE_WP,
24
+ base_1.CoinFeature.SUPPORTS_ERC20,
25
+ ];
26
+ /** Same as EVM_TOKEN_FEATURES, minus EIP1559, for EVM-compatible families that don't support it (e.g. xdc). */
27
+ exports.EVM_TOKEN_FEATURES_NON_EIP1559 = exports.EVM_TOKEN_FEATURES.filter((feature) => feature !== base_1.CoinFeature.EIP1559);
28
+ /**
29
+ * Populate networkFeatureMapForTokens for every family whose base coin carries
30
+ * CoinFeature.SUPPORTS_ERC20 and isn't already explicitly listed below, using EVM_TOKEN_FEATURES
31
+ * (or its non-EIP1559 variant, mirroring the base coin's own EIP1559 support). Called once from
32
+ * coins.ts (which has access to the full coin map) so this module doesn't need to import it
33
+ * directly (that would create a circular import: coins.ts -> networkFeatureMapForTokens.ts ->
34
+ * allCoinsAndTokens.ts -> coins/botTokens.ts -> networkFeatureMapForTokens.ts).
35
+ */
36
+ function registerErc20Families(families) {
37
+ for (const [family, supportsEip1559] of families) {
38
+ if (!(family in exports.networkFeatureMapForTokens)) {
39
+ exports.networkFeatureMapForTokens[family] = supportsEip1559
40
+ ? exports.EVM_TOKEN_FEATURES
41
+ : exports.EVM_TOKEN_FEATURES_NON_EIP1559;
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Look up token features for a family.
47
+ * Checks the static map first (including entries backfilled by registerErc20Families), then the
48
+ * dynamic map. Returns undefined if the family isn't recognized by either.
49
+ */
50
+ function getNetworkFeatures(family) {
51
+ return exports.networkFeatureMapForTokens[family] ?? dynamicNetworkFeaturesMap.get(family);
52
+ }
53
+ /**
54
+ * Resolve the final feature list for a token: the family's default token features
55
+ * plus `additionalFeatures`, minus `excludedFeatures`. Used by generated bot-token
56
+ * lists to apply the per-token diff returned by AMS (`features=false`).
57
+ */
58
+ function getTokenFeatures(family, additionalFeatures = [], excludedFeatures = []) {
59
+ const base = getNetworkFeatures(family) ?? [];
60
+ const excluded = new Set(excludedFeatures);
61
+ return [...new Set([...base, ...additionalFeatures])].filter((f) => !excluded.has(f));
62
+ }
63
+ exports.networkFeatureMapForTokens = {
64
+ algo: account_1.AccountCoin.DEFAULT_FEATURES,
65
+ apt: coinFeatures_1.APT_FEATURES,
66
+ arbeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
67
+ avaxc: account_1.AccountCoin.DEFAULT_FEATURES,
68
+ bera: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
69
+ bsc: coinFeatures_1.BSC_TOKEN_FEATURES,
70
+ canton: coinFeatures_1.CANTON_TOKEN_FEATURES,
71
+ celo: account_1.AccountCoin.DEFAULT_FEATURES,
72
+ eth: account_1.AccountCoin.DEFAULT_FEATURES,
73
+ eos: account_1.AccountCoin.DEFAULT_FEATURES,
74
+ gasevm: exports.EVM_TOKEN_FEATURES,
75
+ hbar: account_1.AccountCoin.DEFAULT_FEATURES,
76
+ opeth: [...account_1.AccountCoin.DEFAULT_FEATURES, base_1.CoinFeature.EIP1559],
77
+ katanaeth: exports.EVM_TOKEN_FEATURES,
78
+ polygon: coinFeatures_1.POLYGON_TOKEN_FEATURES,
79
+ scrolleth: exports.EVM_TOKEN_FEATURES,
80
+ sol: coinFeatures_1.SOL_TOKEN_FEATURES,
81
+ stx: coinFeatures_1.STX_TOKEN_FEATURES,
82
+ sui: coinFeatures_1.SUI_TOKEN_FEATURES,
83
+ tao: coinFeatures_1.TAO_TOKEN_FEATURES,
84
+ polyx: coinFeatures_1.POLYX_TOKEN_FEATURES,
85
+ trx: account_1.AccountCoin.DEFAULT_FEATURES,
86
+ xlm: account_1.AccountCoin.DEFAULT_FEATURES,
87
+ xrp: account_1.AccountCoin.DEFAULT_FEATURES,
88
+ ofc: [],
89
+ ada: coinFeatures_1.ADA_TOKEN_FEATURES,
90
+ };
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUJBLDBEQUVDO0FBMEJELHNEQVFDO0FBT0QsZ0RBRUM7QUFPRCw0Q0FRQztBQS9FRCx1Q0FBd0M7QUFDeEMsaUNBQWlEO0FBQ2pELGlEQVl3QjtBQUV4QixNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0FBRW5FLGdGQUFnRjtBQUNoRixTQUFnQix1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBdUI7SUFDN0UseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsdUdBQXVHO0FBQzFGLFFBQUEsa0JBQWtCLEdBQWtCO0lBQy9DLEdBQUcsMkJBQVk7SUFDZixrQkFBVyxDQUFDLGtCQUFrQjtJQUM5QixrQkFBVyxDQUFDLGNBQWM7SUFDMUIsa0JBQVcsQ0FBQyxrQkFBa0I7SUFDOUIsa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxpQkFBaUI7SUFDN0Isa0JBQVcsQ0FBQyxjQUFjO0NBQzNCLENBQUM7QUFFRiwrR0FBK0c7QUFDbEcsUUFBQSw4QkFBOEIsR0FBa0IsMEJBQWtCLENBQUMsTUFBTSxDQUNwRixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLGtCQUFXLENBQUMsT0FBTyxDQUM3QyxDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQThEO0lBQ2xHLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksa0NBQTBCLENBQUMsRUFBRSxDQUFDO1lBQzVDLGtDQUEwQixDQUFDLE1BQW9CLENBQUMsR0FBRyxlQUFlO2dCQUNoRSxDQUFDLENBQUMsMEJBQWtCO2dCQUNwQixDQUFDLENBQUMsc0NBQThCLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQWM7SUFDL0MsT0FBTyxrQ0FBMEIsQ0FBQyxNQUFvQixDQUFDLElBQUkseUJBQXlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxxQkFBb0MsRUFBRSxFQUN0QyxtQkFBa0MsRUFBRTtJQUVwQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRVksUUFBQSwwQkFBMEIsR0FBK0M7SUFDcEYsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSwyQkFBWTtJQUNqQixNQUFNLEVBQUUsQ0FBQyxHQUFHLHFCQUFXLENBQUMsZ0JBQWdCLEVBQUUsa0JBQVcsQ0FBQyxPQUFPLENBQUM7SUFDOUQsS0FBSyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ25DLElBQUksRUFBRSxDQUFDLEdBQUcscUJBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUM1RCxHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLE1BQU0sRUFBRSxvQ0FBcUI7SUFDN0IsSUFBSSxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2xDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsTUFBTSxFQUFFLDBCQUFrQjtJQUMxQixJQUFJLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDbEMsS0FBSyxFQUFFLENBQUMsR0FBRyxxQkFBVyxDQUFDLGdCQUFnQixFQUFFLGtCQUFXLENBQUMsT0FBTyxDQUFDO0lBQzdELFNBQVMsRUFBRSwwQkFBa0I7SUFDN0IsT0FBTyxFQUFFLHFDQUFzQjtJQUMvQixTQUFTLEVBQUUsMEJBQWtCO0lBQzdCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsR0FBRyxFQUFFLGlDQUFrQjtJQUN2QixHQUFHLEVBQUUsaUNBQWtCO0lBQ3ZCLEdBQUcsRUFBRSxpQ0FBa0I7SUFDdkIsS0FBSyxFQUFFLG1DQUFvQjtJQUMzQixHQUFHLEVBQUUscUJBQVcsQ0FBQyxnQkFBZ0I7SUFDakMsR0FBRyxFQUFFLHFCQUFXLENBQUMsZ0JBQWdCO0lBQ2pDLEdBQUcsRUFBRSxxQkFBVyxDQUFDLGdCQUFnQjtJQUNqQyxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxpQ0FBa0I7Q0FDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY291bnRDb2luIH0gZnJvbSAnLi9hY2NvdW50JztcbmltcG9ydCB7IENvaW5GYW1pbHksIENvaW5GZWF0dXJlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7XG4gIEFEQV9UT0tFTl9GRUFUVVJFUyxcbiAgQVBUX0ZFQVRVUkVTLFxuICBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIENBTlRPTl9UT0tFTl9GRUFUVVJFUyxcbiAgRVZNX0ZFQVRVUkVTLFxuICBQT0xZR09OX1RPS0VOX0ZFQVRVUkVTLFxuICBQT0xZWF9UT0tFTl9GRUFUVVJFUyxcbiAgU09MX1RPS0VOX0ZFQVRVUkVTLFxuICBTVFhfVE9LRU5fRkVBVFVSRVMsXG4gIFNVSV9UT0tFTl9GRUFUVVJFUyxcbiAgVEFPX1RPS0VOX0ZFQVRVUkVTLFxufSBmcm9tICcuL2NvaW5GZWF0dXJlcyc7XG5cbmNvbnN0IGR5bmFtaWNOZXR3b3JrRmVhdHVyZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgQ29pbkZlYXR1cmVbXT4oKTtcblxuLyoqIFJlZ2lzdGVyIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXMgZm9yIGEgZHluYW1pY2FsbHkgb25ib2FyZGVkIGNoYWluIGZhbWlseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck5ldHdvcmtGZWF0dXJlcyhmYW1pbHk6IHN0cmluZywgZmVhdHVyZXM6IENvaW5GZWF0dXJlW10pOiB2b2lkIHtcbiAgZHluYW1pY05ldHdvcmtGZWF0dXJlc01hcC5zZXQoZmFtaWx5LCBmZWF0dXJlcyk7XG59XG5cbi8qKiBEZWZhdWx0IHRva2VuIGZlYXR1cmUgc2V0IHNoYXJlZCBieSBcInBsYWluXCIgRVZNLWNvbXBhdGlibGUgY2hhaW4gZmFtaWxpZXMgKG5vIGJlc3Bva2UgZmVhdHVyZXMpLiAqL1xuZXhwb3J0IGNvbnN0IEVWTV9UT0tFTl9GRUFUVVJFUzogQ29pbkZlYXR1cmVbXSA9IFtcbiAgLi4uRVZNX0ZFQVRVUkVTLFxuICBDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NJR05JTkcsXG4gIENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLLFxuICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9JTVMsXG4gIENvaW5GZWF0dXJlLkVWTV9DT01QQVRJQkxFX1VJLFxuICBDb2luRmVhdHVyZS5FVk1fQ09NUEFUSUJMRV9XUCxcbiAgQ29pbkZlYXR1cmUuU1VQUE9SVFNfRVJDMjAsXG5dO1xuXG4vKiogU2FtZSBhcyBFVk1fVE9LRU5fRkVBVFVSRVMsIG1pbnVzIEVJUDE1NTksIGZvciBFVk0tY29tcGF0aWJsZSBmYW1pbGllcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQgKGUuZy4geGRjKS4gKi9cbmV4cG9ydCBjb25zdCBFVk1fVE9LRU5fRkVBVFVSRVNfTk9OX0VJUDE1NTk6IENvaW5GZWF0dXJlW10gPSBFVk1fVE9LRU5fRkVBVFVSRVMuZmlsdGVyKFxuICAoZmVhdHVyZSkgPT4gZmVhdHVyZSAhPT0gQ29pbkZlYXR1cmUuRUlQMTU1OVxuKTtcblxuLyoqXG4gKiBQb3B1bGF0ZSBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucyBmb3IgZXZlcnkgZmFtaWx5IHdob3NlIGJhc2UgY29pbiBjYXJyaWVzXG4gKiBDb2luRmVhdHVyZS5TVVBQT1JUU19FUkMyMCBhbmQgaXNuJ3QgYWxyZWFkeSBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdywgdXNpbmcgRVZNX1RPS0VOX0ZFQVRVUkVTXG4gKiAob3IgaXRzIG5vbi1FSVAxNTU5IHZhcmlhbnQsIG1pcnJvcmluZyB0aGUgYmFzZSBjb2luJ3Mgb3duIEVJUDE1NTkgc3VwcG9ydCkuIENhbGxlZCBvbmNlIGZyb21cbiAqIGNvaW5zLnRzICh3aGljaCBoYXMgYWNjZXNzIHRvIHRoZSBmdWxsIGNvaW4gbWFwKSBzbyB0aGlzIG1vZHVsZSBkb2Vzbid0IG5lZWQgdG8gaW1wb3J0IGl0XG4gKiBkaXJlY3RseSAodGhhdCB3b3VsZCBjcmVhdGUgYSBjaXJjdWxhciBpbXBvcnQ6IGNvaW5zLnRzIC0+IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zLnRzIC0+XG4gKiBhbGxDb2luc0FuZFRva2Vucy50cyAtPiBjb2lucy9ib3RUb2tlbnMudHMgLT4gbmV0d29ya0ZlYXR1cmVNYXBGb3JUb2tlbnMudHMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJFcmMyMEZhbWlsaWVzKGZhbWlsaWVzOiBJdGVyYWJsZTxbZmFtaWx5OiBzdHJpbmcsIHN1cHBvcnRzRWlwMTU1OTogYm9vbGVhbl0+KTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2ZhbWlseSwgc3VwcG9ydHNFaXAxNTU5XSBvZiBmYW1pbGllcykge1xuICAgIGlmICghKGZhbWlseSBpbiBuZXR3b3JrRmVhdHVyZU1hcEZvclRva2VucykpIHtcbiAgICAgIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA9IHN1cHBvcnRzRWlwMTU1OVxuICAgICAgICA/IEVWTV9UT0tFTl9GRUFUVVJFU1xuICAgICAgICA6IEVWTV9UT0tFTl9GRUFUVVJFU19OT05fRUlQMTU1OTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBMb29rIHVwIHRva2VuIGZlYXR1cmVzIGZvciBhIGZhbWlseS5cbiAqIENoZWNrcyB0aGUgc3RhdGljIG1hcCBmaXJzdCAoaW5jbHVkaW5nIGVudHJpZXMgYmFja2ZpbGxlZCBieSByZWdpc3RlckVyYzIwRmFtaWxpZXMpLCB0aGVuIHRoZVxuICogZHluYW1pYyBtYXAuIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBmYW1pbHkgaXNuJ3QgcmVjb2duaXplZCBieSBlaXRoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrRmVhdHVyZXMoZmFtaWx5OiBzdHJpbmcpOiBDb2luRmVhdHVyZVtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zW2ZhbWlseSBhcyBDb2luRmFtaWx5XSA/PyBkeW5hbWljTmV0d29ya0ZlYXR1cmVzTWFwLmdldChmYW1pbHkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZpbmFsIGZlYXR1cmUgbGlzdCBmb3IgYSB0b2tlbjogdGhlIGZhbWlseSdzIGRlZmF1bHQgdG9rZW4gZmVhdHVyZXNcbiAqIHBsdXMgYGFkZGl0aW9uYWxGZWF0dXJlc2AsIG1pbnVzIGBleGNsdWRlZEZlYXR1cmVzYC4gVXNlZCBieSBnZW5lcmF0ZWQgYm90LXRva2VuXG4gKiBsaXN0cyB0byBhcHBseSB0aGUgcGVyLXRva2VuIGRpZmYgcmV0dXJuZWQgYnkgQU1TIChgZmVhdHVyZXM9ZmFsc2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuRmVhdHVyZXMoXG4gIGZhbWlseTogc3RyaW5nLFxuICBhZGRpdGlvbmFsRmVhdHVyZXM6IENvaW5GZWF0dXJlW10gPSBbXSxcbiAgZXhjbHVkZWRGZWF0dXJlczogQ29pbkZlYXR1cmVbXSA9IFtdXG4pOiBDb2luRmVhdHVyZVtdIHtcbiAgY29uc3QgYmFzZSA9IGdldE5ldHdvcmtGZWF0dXJlcyhmYW1pbHkpID8/IFtdO1xuICBjb25zdCBleGNsdWRlZCA9IG5ldyBTZXQ8Q29pbkZlYXR1cmU+KGV4Y2x1ZGVkRmVhdHVyZXMpO1xuICByZXR1cm4gWy4uLm5ldyBTZXQ8Q29pbkZlYXR1cmU+KFsuLi5iYXNlLCAuLi5hZGRpdGlvbmFsRmVhdHVyZXNdKV0uZmlsdGVyKChmKSA9PiAhZXhjbHVkZWQuaGFzKGYpKTtcbn1cblxuZXhwb3J0IGNvbnN0IG5ldHdvcmtGZWF0dXJlTWFwRm9yVG9rZW5zOiBQYXJ0aWFsPFJlY29yZDxDb2luRmFtaWx5LCBDb2luRmVhdHVyZVtdPj4gPSB7XG4gIGFsZ286IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGFwdDogQVBUX0ZFQVRVUkVTLFxuICBhcmJldGg6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYXZheGM6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGJlcmE6IFsuLi5BY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLCBDb2luRmVhdHVyZS5FSVAxNTU5XSxcbiAgYnNjOiBCU0NfVE9LRU5fRkVBVFVSRVMsXG4gIGNhbnRvbjogQ0FOVE9OX1RPS0VOX0ZFQVRVUkVTLFxuICBjZWxvOiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICBldGg6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIGVvczogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgZ2FzZXZtOiBFVk1fVE9LRU5fRkVBVFVSRVMsXG4gIGhiYXI6IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIG9wZXRoOiBbLi4uQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUywgQ29pbkZlYXR1cmUuRUlQMTU1OV0sXG4gIGthdGFuYWV0aDogRVZNX1RPS0VOX0ZFQVRVUkVTLFxuICBwb2x5Z29uOiBQT0xZR09OX1RPS0VOX0ZFQVRVUkVTLFxuICBzY3JvbGxldGg6IEVWTV9UT0tFTl9GRUFUVVJFUyxcbiAgc29sOiBTT0xfVE9LRU5fRkVBVFVSRVMsXG4gIHN0eDogU1RYX1RPS0VOX0ZFQVRVUkVTLFxuICBzdWk6IFNVSV9UT0tFTl9GRUFUVVJFUyxcbiAgdGFvOiBUQU9fVE9LRU5fRkVBVFVSRVMsXG4gIHBvbHl4OiBQT0xZWF9UT0tFTl9GRUFUVVJFUyxcbiAgdHJ4OiBBY2NvdW50Q29pbi5ERUZBVUxUX0ZFQVRVUkVTLFxuICB4bG06IEFjY291bnRDb2luLkRFRkFVTFRfRkVBVFVSRVMsXG4gIHhycDogQWNjb3VudENvaW4uREVGQVVMVF9GRUFUVVJFUyxcbiAgb2ZjOiBbXSxcbiAgYWRhOiBBREFfVE9LRU5fRkVBVFVSRVMsXG59O1xuIl19