ccxt 4.2.11 → 4.2.13

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 (392) hide show
  1. package/README.md +5 -5
  2. package/build.sh +2 -2
  3. package/dist/ccxt.browser.js +1347 -490
  4. package/dist/ccxt.browser.min.js +3 -3
  5. package/dist/cjs/_virtual/agent.js +7 -0
  6. package/dist/cjs/_virtual/parse-proxy-response.js +7 -0
  7. package/dist/cjs/_virtual/promisify.js +7 -0
  8. package/dist/cjs/ccxt.js +1 -1
  9. package/dist/cjs/js/ccxt.js +474 -0
  10. package/dist/cjs/js/src/abstract/ace.js +9 -0
  11. package/dist/cjs/js/src/abstract/alpaca.js +9 -0
  12. package/dist/cjs/js/src/abstract/ascendex.js +9 -0
  13. package/dist/cjs/js/src/abstract/bigone.js +9 -0
  14. package/dist/cjs/js/src/abstract/binance.js +9 -0
  15. package/dist/cjs/js/src/abstract/bingx.js +9 -0
  16. package/dist/cjs/js/src/abstract/bit2c.js +9 -0
  17. package/dist/cjs/js/src/abstract/bitbank.js +9 -0
  18. package/dist/cjs/js/src/abstract/bitbns.js +9 -0
  19. package/dist/cjs/js/src/abstract/bitfinex.js +9 -0
  20. package/dist/cjs/js/src/abstract/bitfinex2.js +9 -0
  21. package/dist/cjs/js/src/abstract/bitflyer.js +9 -0
  22. package/dist/cjs/js/src/abstract/bitforex.js +9 -0
  23. package/dist/cjs/js/src/abstract/bitget.js +9 -0
  24. package/dist/cjs/js/src/abstract/bithumb.js +9 -0
  25. package/dist/cjs/js/src/abstract/bitmart.js +9 -0
  26. package/dist/cjs/js/src/abstract/bitmex.js +9 -0
  27. package/dist/cjs/js/src/abstract/bitopro.js +9 -0
  28. package/dist/cjs/js/src/abstract/bitpanda.js +9 -0
  29. package/dist/cjs/js/src/abstract/bitrue.js +9 -0
  30. package/dist/cjs/js/src/abstract/bitso.js +9 -0
  31. package/dist/cjs/js/src/abstract/bitstamp.js +9 -0
  32. package/dist/cjs/js/src/abstract/bitteam.js +9 -0
  33. package/dist/cjs/js/src/abstract/bitvavo.js +9 -0
  34. package/dist/cjs/js/src/abstract/bl3p.js +9 -0
  35. package/dist/cjs/js/src/abstract/blockchaincom.js +9 -0
  36. package/dist/cjs/js/src/abstract/btcalpha.js +9 -0
  37. package/dist/cjs/js/src/abstract/btcbox.js +9 -0
  38. package/dist/cjs/js/src/abstract/btcmarkets.js +9 -0
  39. package/dist/cjs/js/src/abstract/btcturk.js +9 -0
  40. package/dist/cjs/js/src/abstract/bybit.js +9 -0
  41. package/dist/cjs/js/src/abstract/cex.js +9 -0
  42. package/dist/cjs/js/src/abstract/coinbase.js +9 -0
  43. package/dist/cjs/js/src/abstract/coinbasepro.js +9 -0
  44. package/dist/cjs/js/src/abstract/coincheck.js +9 -0
  45. package/dist/cjs/js/src/abstract/coinex.js +9 -0
  46. package/dist/cjs/js/src/abstract/coinlist.js +9 -0
  47. package/dist/cjs/js/src/abstract/coinmate.js +9 -0
  48. package/dist/cjs/js/src/abstract/coinone.js +9 -0
  49. package/dist/cjs/js/src/abstract/coinsph.js +9 -0
  50. package/dist/cjs/js/src/abstract/coinspot.js +9 -0
  51. package/dist/cjs/js/src/abstract/cryptocom.js +9 -0
  52. package/dist/cjs/js/src/abstract/currencycom.js +9 -0
  53. package/dist/cjs/js/src/abstract/delta.js +9 -0
  54. package/dist/cjs/js/src/abstract/deribit.js +9 -0
  55. package/dist/cjs/js/src/abstract/digifinex.js +9 -0
  56. package/dist/cjs/js/src/abstract/exmo.js +9 -0
  57. package/dist/cjs/js/src/abstract/gate.js +9 -0
  58. package/dist/cjs/js/src/abstract/gemini.js +9 -0
  59. package/dist/cjs/js/src/abstract/hitbtc.js +9 -0
  60. package/dist/cjs/js/src/abstract/hollaex.js +9 -0
  61. package/dist/cjs/js/src/abstract/htx.js +9 -0
  62. package/dist/cjs/js/src/abstract/huobijp.js +9 -0
  63. package/dist/cjs/js/src/abstract/idex.js +9 -0
  64. package/dist/cjs/js/src/abstract/independentreserve.js +9 -0
  65. package/dist/cjs/js/src/abstract/indodax.js +9 -0
  66. package/dist/cjs/js/src/abstract/kraken.js +9 -0
  67. package/dist/cjs/js/src/abstract/krakenfutures.js +9 -0
  68. package/dist/cjs/js/src/abstract/kucoin.js +9 -0
  69. package/dist/cjs/js/src/abstract/kucoinfutures.js +9 -0
  70. package/dist/cjs/js/src/abstract/kuna.js +9 -0
  71. package/dist/cjs/js/src/abstract/latoken.js +9 -0
  72. package/dist/cjs/js/src/abstract/lbank.js +9 -0
  73. package/dist/cjs/js/src/abstract/luno.js +9 -0
  74. package/dist/cjs/js/src/abstract/lykke.js +9 -0
  75. package/dist/cjs/js/src/abstract/mercado.js +9 -0
  76. package/dist/cjs/js/src/abstract/mexc.js +9 -0
  77. package/dist/cjs/js/src/abstract/ndax.js +9 -0
  78. package/dist/cjs/js/src/abstract/novadax.js +9 -0
  79. package/dist/cjs/js/src/abstract/oceanex.js +9 -0
  80. package/dist/cjs/js/src/abstract/okcoin.js +9 -0
  81. package/dist/cjs/js/src/abstract/okx.js +9 -0
  82. package/dist/cjs/js/src/abstract/p2b.js +9 -0
  83. package/dist/cjs/js/src/abstract/paymium.js +9 -0
  84. package/dist/cjs/js/src/abstract/phemex.js +9 -0
  85. package/dist/cjs/js/src/abstract/poloniex.js +9 -0
  86. package/dist/cjs/js/src/abstract/poloniexfutures.js +9 -0
  87. package/dist/cjs/js/src/abstract/probit.js +9 -0
  88. package/dist/cjs/js/src/abstract/timex.js +9 -0
  89. package/dist/cjs/js/src/abstract/tokocrypto.js +9 -0
  90. package/dist/cjs/js/src/abstract/upbit.js +9 -0
  91. package/dist/cjs/js/src/abstract/wavesexchange.js +9 -0
  92. package/dist/cjs/js/src/abstract/wazirx.js +9 -0
  93. package/dist/cjs/js/src/abstract/whitebit.js +9 -0
  94. package/dist/cjs/js/src/abstract/woo.js +9 -0
  95. package/dist/cjs/js/src/abstract/yobit.js +9 -0
  96. package/dist/cjs/js/src/abstract/zaif.js +9 -0
  97. package/dist/cjs/js/src/abstract/zonda.js +9 -0
  98. package/dist/cjs/js/src/ace.js +1058 -0
  99. package/dist/cjs/js/src/alpaca.js +1125 -0
  100. package/dist/cjs/js/src/ascendex.js +3360 -0
  101. package/dist/cjs/js/src/base/Exchange.js +5110 -0
  102. package/dist/cjs/js/src/base/Precise.js +263 -0
  103. package/dist/cjs/js/src/base/errors.js +299 -0
  104. package/dist/cjs/js/src/base/functions/crypto.js +78 -0
  105. package/dist/cjs/js/src/base/functions/encode.js +44 -0
  106. package/dist/cjs/js/src/base/functions/generic.js +193 -0
  107. package/dist/cjs/js/src/base/functions/misc.js +96 -0
  108. package/dist/cjs/js/src/base/functions/number.js +297 -0
  109. package/dist/cjs/js/src/base/functions/platform.js +28 -0
  110. package/dist/cjs/js/src/base/functions/rsa.js +34 -0
  111. package/dist/cjs/js/src/base/functions/string.js +48 -0
  112. package/dist/cjs/js/src/base/functions/throttle.js +66 -0
  113. package/dist/cjs/js/src/base/functions/time.js +187 -0
  114. package/dist/cjs/js/src/base/functions/totp.js +24 -0
  115. package/dist/cjs/js/src/base/functions/type.js +162 -0
  116. package/dist/cjs/js/src/base/functions.js +157 -0
  117. package/dist/cjs/js/src/base/ws/Cache.js +254 -0
  118. package/dist/cjs/js/src/base/ws/Client.js +299 -0
  119. package/dist/cjs/js/src/base/ws/Future.js +34 -0
  120. package/dist/cjs/js/src/base/ws/OrderBook.js +107 -0
  121. package/dist/cjs/js/src/base/ws/OrderBookSide.js +281 -0
  122. package/dist/cjs/js/src/base/ws/WsClient.js +69 -0
  123. package/dist/cjs/js/src/bequant.js +33 -0
  124. package/dist/cjs/js/src/bigone.js +2209 -0
  125. package/dist/cjs/js/src/binance.js +9736 -0
  126. package/dist/cjs/js/src/binancecoinm.js +45 -0
  127. package/dist/cjs/js/src/binanceus.js +84 -0
  128. package/dist/cjs/js/src/binanceusdm.js +58 -0
  129. package/dist/cjs/js/src/bingx.js +3807 -0
  130. package/dist/cjs/js/src/bit2c.js +916 -0
  131. package/dist/cjs/js/src/bitbank.js +1000 -0
  132. package/dist/cjs/js/src/bitbay.js +17 -0
  133. package/dist/cjs/js/src/bitbns.js +1220 -0
  134. package/dist/cjs/js/src/bitcoincom.js +17 -0
  135. package/dist/cjs/js/src/bitfinex.js +1670 -0
  136. package/dist/cjs/js/src/bitfinex2.js +2990 -0
  137. package/dist/cjs/js/src/bitflyer.js +1045 -0
  138. package/dist/cjs/js/src/bitforex.js +852 -0
  139. package/dist/cjs/js/src/bitget.js +8291 -0
  140. package/dist/cjs/js/src/bithumb.js +1090 -0
  141. package/dist/cjs/js/src/bitmart.js +4454 -0
  142. package/dist/cjs/js/src/bitmex.js +2884 -0
  143. package/dist/cjs/js/src/bitopro.js +1724 -0
  144. package/dist/cjs/js/src/bitpanda.js +2002 -0
  145. package/dist/cjs/js/src/bitrue.js +3253 -0
  146. package/dist/cjs/js/src/bitso.js +1753 -0
  147. package/dist/cjs/js/src/bitstamp.js +2188 -0
  148. package/dist/cjs/js/src/bitteam.js +2309 -0
  149. package/dist/cjs/js/src/bitvavo.js +1968 -0
  150. package/dist/cjs/js/src/bl3p.js +447 -0
  151. package/dist/cjs/js/src/blockchaincom.js +1160 -0
  152. package/dist/cjs/js/src/btcalpha.js +929 -0
  153. package/dist/cjs/js/src/btcbox.js +565 -0
  154. package/dist/cjs/js/src/btcmarkets.js +1237 -0
  155. package/dist/cjs/js/src/btcturk.js +929 -0
  156. package/dist/cjs/js/src/bybit.js +7646 -0
  157. package/dist/cjs/js/src/cex.js +1693 -0
  158. package/dist/cjs/js/src/coinbase.js +3424 -0
  159. package/dist/cjs/js/src/coinbasepro.js +1866 -0
  160. package/dist/cjs/js/src/coincheck.js +843 -0
  161. package/dist/cjs/js/src/coinex.js +5414 -0
  162. package/dist/cjs/js/src/coinlist.js +2329 -0
  163. package/dist/cjs/js/src/coinmate.js +989 -0
  164. package/dist/cjs/js/src/coinone.js +1185 -0
  165. package/dist/cjs/js/src/coinsph.js +1933 -0
  166. package/dist/cjs/js/src/coinspot.js +548 -0
  167. package/dist/cjs/js/src/cryptocom.js +3007 -0
  168. package/dist/cjs/js/src/currencycom.js +2015 -0
  169. package/dist/cjs/js/src/delta.js +3256 -0
  170. package/dist/cjs/js/src/deribit.js +3306 -0
  171. package/dist/cjs/js/src/digifinex.js +4307 -0
  172. package/dist/cjs/js/src/exmo.js +2645 -0
  173. package/dist/cjs/js/src/fmfwio.js +34 -0
  174. package/dist/cjs/js/src/gate.js +7072 -0
  175. package/dist/cjs/js/src/gateio.js +16 -0
  176. package/dist/cjs/js/src/gemini.js +1801 -0
  177. package/dist/cjs/js/src/hitbtc.js +3660 -0
  178. package/dist/cjs/js/src/hitbtc3.js +19 -0
  179. package/dist/cjs/js/src/hollaex.js +1882 -0
  180. package/dist/cjs/js/src/htx.js +9049 -0
  181. package/dist/cjs/js/src/huobi.js +16 -0
  182. package/dist/cjs/js/src/huobijp.js +1918 -0
  183. package/dist/cjs/js/src/idex.js +1770 -0
  184. package/dist/cjs/js/src/independentreserve.js +761 -0
  185. package/dist/cjs/js/src/indodax.js +1069 -0
  186. package/dist/cjs/js/src/kraken.js +2857 -0
  187. package/dist/cjs/js/src/krakenfutures.js +2407 -0
  188. package/dist/cjs/js/src/kucoin.js +4489 -0
  189. package/dist/cjs/js/src/kucoinfutures.js +2475 -0
  190. package/dist/cjs/js/src/kuna.js +1949 -0
  191. package/dist/cjs/js/src/latoken.js +1729 -0
  192. package/dist/cjs/js/src/lbank.js +2851 -0
  193. package/dist/cjs/js/src/luno.js +1044 -0
  194. package/dist/cjs/js/src/lykke.js +1303 -0
  195. package/dist/cjs/js/src/mercado.js +897 -0
  196. package/dist/cjs/js/src/mexc.js +5407 -0
  197. package/dist/cjs/js/src/ndax.js +2450 -0
  198. package/dist/cjs/js/src/novadax.js +1556 -0
  199. package/dist/cjs/js/src/oceanex.js +964 -0
  200. package/dist/cjs/js/src/okcoin.js +3115 -0
  201. package/dist/cjs/js/src/okx.js +7330 -0
  202. package/dist/cjs/js/src/p2b.js +1243 -0
  203. package/dist/cjs/js/src/paymium.js +597 -0
  204. package/dist/cjs/js/src/phemex.js +4722 -0
  205. package/dist/cjs/js/src/poloniex.js +2356 -0
  206. package/dist/cjs/js/src/poloniexfutures.js +1794 -0
  207. package/dist/cjs/js/src/pro/alpaca.js +714 -0
  208. package/dist/cjs/js/src/pro/ascendex.js +957 -0
  209. package/dist/cjs/js/src/pro/bequant.js +33 -0
  210. package/dist/cjs/js/src/pro/binance.js +2796 -0
  211. package/dist/cjs/js/src/pro/binancecoinm.js +23 -0
  212. package/dist/cjs/js/src/pro/binanceus.js +51 -0
  213. package/dist/cjs/js/src/pro/binanceusdm.js +32 -0
  214. package/dist/cjs/js/src/pro/bingx.js +944 -0
  215. package/dist/cjs/js/src/pro/bitcoincom.js +29 -0
  216. package/dist/cjs/js/src/pro/bitfinex.js +672 -0
  217. package/dist/cjs/js/src/pro/bitfinex2.js +1159 -0
  218. package/dist/cjs/js/src/pro/bitget.js +1733 -0
  219. package/dist/cjs/js/src/pro/bitmart.js +1486 -0
  220. package/dist/cjs/js/src/pro/bitmex.js +1576 -0
  221. package/dist/cjs/js/src/pro/bitopro.js +327 -0
  222. package/dist/cjs/js/src/pro/bitpanda.js +1341 -0
  223. package/dist/cjs/js/src/pro/bitrue.js +462 -0
  224. package/dist/cjs/js/src/pro/bitstamp.js +547 -0
  225. package/dist/cjs/js/src/pro/bitvavo.js +704 -0
  226. package/dist/cjs/js/src/pro/blockchaincom.js +794 -0
  227. package/dist/cjs/js/src/pro/bybit.js +1843 -0
  228. package/dist/cjs/js/src/pro/cex.js +1510 -0
  229. package/dist/cjs/js/src/pro/coinbase.js +561 -0
  230. package/dist/cjs/js/src/pro/coinbasepro.js +968 -0
  231. package/dist/cjs/js/src/pro/coinex.js +1095 -0
  232. package/dist/cjs/js/src/pro/cryptocom.js +1020 -0
  233. package/dist/cjs/js/src/pro/currencycom.js +563 -0
  234. package/dist/cjs/js/src/pro/deribit.js +825 -0
  235. package/dist/cjs/js/src/pro/exmo.js +658 -0
  236. package/dist/cjs/js/src/pro/gate.js +1316 -0
  237. package/dist/cjs/js/src/pro/gateio.js +16 -0
  238. package/dist/cjs/js/src/pro/gemini.js +649 -0
  239. package/dist/cjs/js/src/pro/hitbtc.js +1293 -0
  240. package/dist/cjs/js/src/pro/hollaex.js +597 -0
  241. package/dist/cjs/js/src/pro/htx.js +2383 -0
  242. package/dist/cjs/js/src/pro/huobi.js +16 -0
  243. package/dist/cjs/js/src/pro/huobijp.js +606 -0
  244. package/dist/cjs/js/src/pro/idex.js +714 -0
  245. package/dist/cjs/js/src/pro/independentreserve.js +280 -0
  246. package/dist/cjs/js/src/pro/kraken.js +1364 -0
  247. package/dist/cjs/js/src/pro/krakenfutures.js +1500 -0
  248. package/dist/cjs/js/src/pro/kucoin.js +1052 -0
  249. package/dist/cjs/js/src/pro/kucoinfutures.js +981 -0
  250. package/dist/cjs/js/src/pro/luno.js +322 -0
  251. package/dist/cjs/js/src/pro/mexc.js +1170 -0
  252. package/dist/cjs/js/src/pro/ndax.js +545 -0
  253. package/dist/cjs/js/src/pro/okcoin.js +760 -0
  254. package/dist/cjs/js/src/pro/okx.js +1608 -0
  255. package/dist/cjs/js/src/pro/phemex.js +1511 -0
  256. package/dist/cjs/js/src/pro/poloniex.js +1253 -0
  257. package/dist/cjs/js/src/pro/poloniexfutures.js +1014 -0
  258. package/dist/cjs/js/src/pro/probit.js +586 -0
  259. package/dist/cjs/js/src/pro/upbit.js +234 -0
  260. package/dist/cjs/js/src/pro/wazirx.js +776 -0
  261. package/dist/cjs/js/src/pro/whitebit.js +927 -0
  262. package/dist/cjs/js/src/pro/woo.js +769 -0
  263. package/dist/cjs/js/src/probit.js +1867 -0
  264. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +401 -0
  265. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +195 -0
  266. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +308 -0
  267. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +554 -0
  268. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +94 -0
  269. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +70 -0
  270. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +91 -0
  271. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +16 -0
  272. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +1760 -0
  273. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +52 -0
  274. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +81 -0
  275. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +376 -0
  276. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +70 -0
  277. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +1580 -0
  278. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +74 -0
  279. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +24 -0
  280. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +158 -0
  281. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +429 -0
  282. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +176 -0
  283. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +324 -0
  284. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +163 -0
  285. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +245 -0
  286. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1018 -0
  287. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +383 -0
  288. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +258 -0
  289. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +53 -0
  290. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +120 -0
  291. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +69 -0
  292. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +7 -0
  293. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +83 -0
  294. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +240 -0
  295. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +91 -0
  296. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +130 -0
  297. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +214 -0
  298. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +239 -0
  299. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +93 -0
  300. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +354 -0
  301. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +16 -0
  302. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +20 -0
  303. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +30 -0
  304. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +239 -0
  305. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +372 -0
  306. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +273 -0
  307. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +139 -0
  308. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +14 -0
  309. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +16 -0
  310. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +81 -0
  311. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +292 -0
  312. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +103 -0
  313. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +140 -0
  314. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +175 -0
  315. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +95 -0
  316. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +7 -0
  317. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +383 -0
  318. package/dist/cjs/js/src/timex.js +1562 -0
  319. package/dist/cjs/js/src/tokocrypto.js +2542 -0
  320. package/dist/cjs/js/src/upbit.js +1844 -0
  321. package/dist/cjs/js/src/wavesexchange.js +2607 -0
  322. package/dist/cjs/js/src/wazirx.js +953 -0
  323. package/dist/cjs/js/src/whitebit.js +2309 -0
  324. package/dist/cjs/js/src/woo.js +2765 -0
  325. package/dist/cjs/js/src/yobit.js +1314 -0
  326. package/dist/cjs/js/src/zaif.js +736 -0
  327. package/dist/cjs/js/src/zonda.js +1883 -0
  328. package/js/ccxt.d.ts +1 -1
  329. package/js/ccxt.js +1 -1
  330. package/js/src/abstract/bigone.d.ts +18 -0
  331. package/js/src/abstract/binance.d.ts +2 -0
  332. package/js/src/abstract/binancecoinm.d.ts +2 -0
  333. package/js/src/abstract/binanceus.d.ts +2 -0
  334. package/js/src/abstract/binanceusdm.d.ts +2 -0
  335. package/js/src/abstract/bingx.d.ts +2 -0
  336. package/js/src/abstract/bybit.d.ts +1 -0
  337. package/js/src/abstract/gate.d.ts +11 -0
  338. package/js/src/abstract/gateio.d.ts +11 -0
  339. package/js/src/abstract/okx.d.ts +1 -0
  340. package/js/src/alpaca.js +18 -18
  341. package/js/src/base/Exchange.d.ts +5 -1
  342. package/js/src/base/Exchange.js +101 -12
  343. package/js/src/bigone.d.ts +3 -2
  344. package/js/src/bigone.js +429 -167
  345. package/js/src/binance.js +48 -34
  346. package/js/src/bingx.js +115 -38
  347. package/js/src/bitfinex.d.ts +2 -2
  348. package/js/src/bitfinex.js +2 -3
  349. package/js/src/bitget.js +33 -13
  350. package/js/src/bitmart.d.ts +2 -2
  351. package/js/src/bitmart.js +5 -5
  352. package/js/src/bitmex.js +1 -0
  353. package/js/src/bybit.js +2 -0
  354. package/js/src/coinbase.d.ts +26 -3
  355. package/js/src/coinbase.js +176 -26
  356. package/js/src/coinlist.js +3 -4
  357. package/js/src/coinone.js +1 -1
  358. package/js/src/coinsph.js +2 -3
  359. package/js/src/deribit.js +1 -0
  360. package/js/src/gate.d.ts +4 -4
  361. package/js/src/gate.js +96 -59
  362. package/js/src/gemini.js +1 -1
  363. package/js/src/hitbtc.d.ts +4 -4
  364. package/js/src/hitbtc.js +2 -3
  365. package/js/src/htx.d.ts +1 -0
  366. package/js/src/htx.js +29 -7
  367. package/js/src/huobijp.js +2 -3
  368. package/js/src/independentreserve.js +7 -5
  369. package/js/src/kraken.js +3 -6
  370. package/js/src/lbank.js +59 -33
  371. package/js/src/mexc.js +2 -1
  372. package/js/src/oceanex.js +1 -1
  373. package/js/src/okx.js +14 -3
  374. package/js/src/phemex.js +9 -2
  375. package/js/src/pro/binance.d.ts +2 -23
  376. package/js/src/pro/binance.js +58 -22
  377. package/js/src/pro/coinbase.d.ts +2 -2
  378. package/js/src/pro/coinbase.js +4 -1
  379. package/js/src/pro/coinbasepro.d.ts +2 -2
  380. package/js/src/pro/hitbtc.d.ts +2 -2
  381. package/js/src/pro/kraken.js +1 -1
  382. package/js/src/pro/okx.d.ts +1 -0
  383. package/js/src/pro/okx.js +52 -2
  384. package/js/src/pro/poloniex.d.ts +2 -2
  385. package/js/src/probit.js +4 -2
  386. package/js/src/upbit.d.ts +3 -101
  387. package/js/src/upbit.js +12 -12
  388. package/js/src/wavesexchange.js +1 -1
  389. package/js/src/woo.d.ts +2 -0
  390. package/js/src/woo.js +52 -0
  391. package/package.json +1 -1
  392. package/skip-tests.json +5 -0
@@ -0,0 +1,1760 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var util = require('./util.js');
6
+
7
+ // Copyright (c) 2005 Tom Wu
8
+ // Bits per digit
9
+ let dbits;
10
+ // JavaScript engine analysis
11
+ const canary = 0xdeadbeefcafe;
12
+ const j_lm = ((canary & 0xffffff) == 0xefcafe);
13
+ //#region
14
+ const lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];
15
+ const lplim = (1 << 26) / lowprimes[lowprimes.length - 1];
16
+ //#endregion
17
+ // (public) Constructor
18
+ /**
19
+ * @type Class
20
+ */
21
+ class BigInteger {
22
+ constructor(a, b, c) {
23
+ if (a != null) {
24
+ if ("number" == typeof a) {
25
+ this.fromNumber(a, b, c);
26
+ }
27
+ else if (b == null && "string" != typeof a) {
28
+ this.fromString(a, 256);
29
+ }
30
+ else {
31
+ this.fromString(a, b);
32
+ }
33
+ }
34
+ }
35
+ //#region PUBLIC
36
+ // BigInteger.prototype.toString = bnToString;
37
+ // (public) return string representation in given radix
38
+ toString(b) {
39
+ if (this.s < 0) {
40
+ return "-" + this.negate().toString(b);
41
+ }
42
+ let k;
43
+ if (b == 16) {
44
+ k = 4;
45
+ }
46
+ else if (b == 8) {
47
+ k = 3;
48
+ }
49
+ else if (b == 2) {
50
+ k = 1;
51
+ }
52
+ else if (b == 32) {
53
+ k = 5;
54
+ }
55
+ else if (b == 4) {
56
+ k = 2;
57
+ }
58
+ else {
59
+ return this.toRadix(b);
60
+ }
61
+ const km = (1 << k) - 1;
62
+ let d;
63
+ let m = false;
64
+ let r = "";
65
+ let i = this.t;
66
+ let p = this.DB - (i * this.DB) % k;
67
+ if (i-- > 0) {
68
+ if (p < this.DB && (d = this[i] >> p) > 0) {
69
+ m = true;
70
+ r = util.int2char(d);
71
+ }
72
+ while (i >= 0) {
73
+ if (p < k) {
74
+ d = (this[i] & ((1 << p) - 1)) << (k - p);
75
+ d |= this[--i] >> (p += this.DB - k);
76
+ }
77
+ else {
78
+ d = (this[i] >> (p -= k)) & km;
79
+ if (p <= 0) {
80
+ p += this.DB;
81
+ --i;
82
+ }
83
+ }
84
+ if (d > 0) {
85
+ m = true;
86
+ }
87
+ if (m) {
88
+ r += util.int2char(d);
89
+ }
90
+ }
91
+ }
92
+ return m ? r : "0";
93
+ }
94
+ // BigInteger.prototype.negate = bnNegate;
95
+ // (public) -this
96
+ negate() {
97
+ const r = nbi();
98
+ BigInteger.ZERO.subTo(this, r);
99
+ return r;
100
+ }
101
+ // BigInteger.prototype.abs = bnAbs;
102
+ // (public) |this|
103
+ abs() {
104
+ return (this.s < 0) ? this.negate() : this;
105
+ }
106
+ // BigInteger.prototype.compareTo = bnCompareTo;
107
+ // (public) return + if this > a, - if this < a, 0 if equal
108
+ compareTo(a) {
109
+ let r = this.s - a.s;
110
+ if (r != 0) {
111
+ return r;
112
+ }
113
+ let i = this.t;
114
+ r = i - a.t;
115
+ if (r != 0) {
116
+ return (this.s < 0) ? -r : r;
117
+ }
118
+ while (--i >= 0) {
119
+ if ((r = this[i] - a[i]) != 0) {
120
+ return r;
121
+ }
122
+ }
123
+ return 0;
124
+ }
125
+ // BigInteger.prototype.bitLength = bnBitLength;
126
+ // (public) return the number of bits in "this"
127
+ bitLength() {
128
+ if (this.t <= 0) {
129
+ return 0;
130
+ }
131
+ return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));
132
+ }
133
+ // BigInteger.prototype.mod = bnMod;
134
+ // (public) this mod a
135
+ mod(a) {
136
+ const r = nbi();
137
+ this.abs().divRemTo(a, null, r);
138
+ if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {
139
+ a.subTo(r, r);
140
+ }
141
+ return r;
142
+ }
143
+ // BigInteger.prototype.modPowInt = bnModPowInt;
144
+ // (public) this^e % m, 0 <= e < 2^32
145
+ modPowInt(e, m) {
146
+ let z;
147
+ if (e < 256 || m.isEven()) {
148
+ z = new Classic(m);
149
+ }
150
+ else {
151
+ z = new Montgomery(m);
152
+ }
153
+ return this.exp(e, z);
154
+ }
155
+ // BigInteger.prototype.clone = bnClone;
156
+ // (public)
157
+ clone() {
158
+ const r = nbi();
159
+ this.copyTo(r);
160
+ return r;
161
+ }
162
+ // BigInteger.prototype.intValue = bnIntValue;
163
+ // (public) return value as integer
164
+ intValue() {
165
+ if (this.s < 0) {
166
+ if (this.t == 1) {
167
+ return this[0] - this.DV;
168
+ }
169
+ else if (this.t == 0) {
170
+ return -1;
171
+ }
172
+ }
173
+ else if (this.t == 1) {
174
+ return this[0];
175
+ }
176
+ else if (this.t == 0) {
177
+ return 0;
178
+ }
179
+ // assumes 16 < DB < 32
180
+ return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];
181
+ }
182
+ // BigInteger.prototype.byteValue = bnByteValue;
183
+ // (public) return value as byte
184
+ byteValue() {
185
+ return (this.t == 0) ? this.s : (this[0] << 24) >> 24;
186
+ }
187
+ // BigInteger.prototype.shortValue = bnShortValue;
188
+ // (public) return value as short (assumes DB>=16)
189
+ shortValue() {
190
+ return (this.t == 0) ? this.s : (this[0] << 16) >> 16;
191
+ }
192
+ // BigInteger.prototype.signum = bnSigNum;
193
+ // (public) 0 if this == 0, 1 if this > 0
194
+ signum() {
195
+ if (this.s < 0) {
196
+ return -1;
197
+ }
198
+ else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {
199
+ return 0;
200
+ }
201
+ else {
202
+ return 1;
203
+ }
204
+ }
205
+ // BigInteger.prototype.toByteArray = bnToByteArray;
206
+ // (public) convert to bigendian byte array
207
+ toByteArray() {
208
+ let i = this.t;
209
+ const r = [];
210
+ r[0] = this.s;
211
+ let p = this.DB - (i * this.DB) % 8;
212
+ let d;
213
+ let k = 0;
214
+ if (i-- > 0) {
215
+ if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {
216
+ r[k++] = d | (this.s << (this.DB - p));
217
+ }
218
+ while (i >= 0) {
219
+ if (p < 8) {
220
+ d = (this[i] & ((1 << p) - 1)) << (8 - p);
221
+ d |= this[--i] >> (p += this.DB - 8);
222
+ }
223
+ else {
224
+ d = (this[i] >> (p -= 8)) & 0xff;
225
+ if (p <= 0) {
226
+ p += this.DB;
227
+ --i;
228
+ }
229
+ }
230
+ if ((d & 0x80) != 0) {
231
+ d |= -256;
232
+ }
233
+ if (k == 0 && (this.s & 0x80) != (d & 0x80)) {
234
+ ++k;
235
+ }
236
+ if (k > 0 || d != this.s) {
237
+ r[k++] = d;
238
+ }
239
+ }
240
+ }
241
+ return r;
242
+ }
243
+ // BigInteger.prototype.equals = bnEquals;
244
+ equals(a) {
245
+ return (this.compareTo(a) == 0);
246
+ }
247
+ // BigInteger.prototype.min = bnMin;
248
+ min(a) {
249
+ return (this.compareTo(a) < 0) ? this : a;
250
+ }
251
+ // BigInteger.prototype.max = bnMax;
252
+ max(a) {
253
+ return (this.compareTo(a) > 0) ? this : a;
254
+ }
255
+ // BigInteger.prototype.and = bnAnd;
256
+ and(a) {
257
+ const r = nbi();
258
+ this.bitwiseTo(a, util.op_and, r);
259
+ return r;
260
+ }
261
+ // BigInteger.prototype.or = bnOr;
262
+ or(a) {
263
+ const r = nbi();
264
+ this.bitwiseTo(a, util.op_or, r);
265
+ return r;
266
+ }
267
+ // BigInteger.prototype.xor = bnXor;
268
+ xor(a) {
269
+ const r = nbi();
270
+ this.bitwiseTo(a, util.op_xor, r);
271
+ return r;
272
+ }
273
+ // BigInteger.prototype.andNot = bnAndNot;
274
+ andNot(a) {
275
+ const r = nbi();
276
+ this.bitwiseTo(a, util.op_andnot, r);
277
+ return r;
278
+ }
279
+ // BigInteger.prototype.not = bnNot;
280
+ // (public) ~this
281
+ not() {
282
+ const r = nbi();
283
+ for (let i = 0; i < this.t; ++i) {
284
+ r[i] = this.DM & ~this[i];
285
+ }
286
+ r.t = this.t;
287
+ r.s = ~this.s;
288
+ return r;
289
+ }
290
+ // BigInteger.prototype.shiftLeft = bnShiftLeft;
291
+ // (public) this << n
292
+ shiftLeft(n) {
293
+ const r = nbi();
294
+ if (n < 0) {
295
+ this.rShiftTo(-n, r);
296
+ }
297
+ else {
298
+ this.lShiftTo(n, r);
299
+ }
300
+ return r;
301
+ }
302
+ // BigInteger.prototype.shiftRight = bnShiftRight;
303
+ // (public) this >> n
304
+ shiftRight(n) {
305
+ const r = nbi();
306
+ if (n < 0) {
307
+ this.lShiftTo(-n, r);
308
+ }
309
+ else {
310
+ this.rShiftTo(n, r);
311
+ }
312
+ return r;
313
+ }
314
+ // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
315
+ // (public) returns index of lowest 1-bit (or -1 if none)
316
+ getLowestSetBit() {
317
+ for (let i = 0; i < this.t; ++i) {
318
+ if (this[i] != 0) {
319
+ return i * this.DB + util.lbit(this[i]);
320
+ }
321
+ }
322
+ if (this.s < 0) {
323
+ return this.t * this.DB;
324
+ }
325
+ return -1;
326
+ }
327
+ // BigInteger.prototype.bitCount = bnBitCount;
328
+ // (public) return number of set bits
329
+ bitCount() {
330
+ let r = 0;
331
+ const x = this.s & this.DM;
332
+ for (let i = 0; i < this.t; ++i) {
333
+ r += util.cbit(this[i] ^ x);
334
+ }
335
+ return r;
336
+ }
337
+ // BigInteger.prototype.testBit = bnTestBit;
338
+ // (public) true iff nth bit is set
339
+ testBit(n) {
340
+ const j = Math.floor(n / this.DB);
341
+ if (j >= this.t) {
342
+ return (this.s != 0);
343
+ }
344
+ return ((this[j] & (1 << (n % this.DB))) != 0);
345
+ }
346
+ // BigInteger.prototype.setBit = bnSetBit;
347
+ // (public) this | (1<<n)
348
+ setBit(n) {
349
+ return this.changeBit(n, util.op_or);
350
+ }
351
+ // BigInteger.prototype.clearBit = bnClearBit;
352
+ // (public) this & ~(1<<n)
353
+ clearBit(n) {
354
+ return this.changeBit(n, util.op_andnot);
355
+ }
356
+ // BigInteger.prototype.flipBit = bnFlipBit;
357
+ // (public) this ^ (1<<n)
358
+ flipBit(n) {
359
+ return this.changeBit(n, util.op_xor);
360
+ }
361
+ // BigInteger.prototype.add = bnAdd;
362
+ // (public) this + a
363
+ add(a) {
364
+ const r = nbi();
365
+ this.addTo(a, r);
366
+ return r;
367
+ }
368
+ // BigInteger.prototype.subtract = bnSubtract;
369
+ // (public) this - a
370
+ subtract(a) {
371
+ const r = nbi();
372
+ this.subTo(a, r);
373
+ return r;
374
+ }
375
+ // BigInteger.prototype.multiply = bnMultiply;
376
+ // (public) this * a
377
+ multiply(a) {
378
+ const r = nbi();
379
+ this.multiplyTo(a, r);
380
+ return r;
381
+ }
382
+ // BigInteger.prototype.divide = bnDivide;
383
+ // (public) this / a
384
+ divide(a) {
385
+ const r = nbi();
386
+ this.divRemTo(a, r, null);
387
+ return r;
388
+ }
389
+ // BigInteger.prototype.remainder = bnRemainder;
390
+ // (public) this % a
391
+ remainder(a) {
392
+ const r = nbi();
393
+ this.divRemTo(a, null, r);
394
+ return r;
395
+ }
396
+ // BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
397
+ // (public) [this/a,this%a]
398
+ divideAndRemainder(a) {
399
+ const q = nbi();
400
+ const r = nbi();
401
+ this.divRemTo(a, q, r);
402
+ return [q, r];
403
+ }
404
+ // BigInteger.prototype.modPow = bnModPow;
405
+ // (public) this^e % m (HAC 14.85)
406
+ modPow(e, m) {
407
+ let i = e.bitLength();
408
+ let k;
409
+ let r = nbv(1);
410
+ let z;
411
+ if (i <= 0) {
412
+ return r;
413
+ }
414
+ else if (i < 18) {
415
+ k = 1;
416
+ }
417
+ else if (i < 48) {
418
+ k = 3;
419
+ }
420
+ else if (i < 144) {
421
+ k = 4;
422
+ }
423
+ else if (i < 768) {
424
+ k = 5;
425
+ }
426
+ else {
427
+ k = 6;
428
+ }
429
+ if (i < 8) {
430
+ z = new Classic(m);
431
+ }
432
+ else if (m.isEven()) {
433
+ z = new Barrett(m);
434
+ }
435
+ else {
436
+ z = new Montgomery(m);
437
+ }
438
+ // precomputation
439
+ const g = [];
440
+ let n = 3;
441
+ const k1 = k - 1;
442
+ const km = (1 << k) - 1;
443
+ g[1] = z.convert(this);
444
+ if (k > 1) {
445
+ const g2 = nbi();
446
+ z.sqrTo(g[1], g2);
447
+ while (n <= km) {
448
+ g[n] = nbi();
449
+ z.mulTo(g2, g[n - 2], g[n]);
450
+ n += 2;
451
+ }
452
+ }
453
+ let j = e.t - 1;
454
+ let w;
455
+ let is1 = true;
456
+ let r2 = nbi();
457
+ let t;
458
+ i = nbits(e[j]) - 1;
459
+ while (j >= 0) {
460
+ if (i >= k1) {
461
+ w = (e[j] >> (i - k1)) & km;
462
+ }
463
+ else {
464
+ w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);
465
+ if (j > 0) {
466
+ w |= e[j - 1] >> (this.DB + i - k1);
467
+ }
468
+ }
469
+ n = k;
470
+ while ((w & 1) == 0) {
471
+ w >>= 1;
472
+ --n;
473
+ }
474
+ if ((i -= n) < 0) {
475
+ i += this.DB;
476
+ --j;
477
+ }
478
+ if (is1) { // ret == 1, don't bother squaring or multiplying it
479
+ g[w].copyTo(r);
480
+ is1 = false;
481
+ }
482
+ else {
483
+ while (n > 1) {
484
+ z.sqrTo(r, r2);
485
+ z.sqrTo(r2, r);
486
+ n -= 2;
487
+ }
488
+ if (n > 0) {
489
+ z.sqrTo(r, r2);
490
+ }
491
+ else {
492
+ t = r;
493
+ r = r2;
494
+ r2 = t;
495
+ }
496
+ z.mulTo(r2, g[w], r);
497
+ }
498
+ while (j >= 0 && (e[j] & (1 << i)) == 0) {
499
+ z.sqrTo(r, r2);
500
+ t = r;
501
+ r = r2;
502
+ r2 = t;
503
+ if (--i < 0) {
504
+ i = this.DB - 1;
505
+ --j;
506
+ }
507
+ }
508
+ }
509
+ return z.revert(r);
510
+ }
511
+ // BigInteger.prototype.modInverse = bnModInverse;
512
+ // (public) 1/this % m (HAC 14.61)
513
+ modInverse(m) {
514
+ const ac = m.isEven();
515
+ if ((this.isEven() && ac) || m.signum() == 0) {
516
+ return BigInteger.ZERO;
517
+ }
518
+ const u = m.clone();
519
+ const v = this.clone();
520
+ const a = nbv(1);
521
+ const b = nbv(0);
522
+ const c = nbv(0);
523
+ const d = nbv(1);
524
+ while (u.signum() != 0) {
525
+ while (u.isEven()) {
526
+ u.rShiftTo(1, u);
527
+ if (ac) {
528
+ if (!a.isEven() || !b.isEven()) {
529
+ a.addTo(this, a);
530
+ b.subTo(m, b);
531
+ }
532
+ a.rShiftTo(1, a);
533
+ }
534
+ else if (!b.isEven()) {
535
+ b.subTo(m, b);
536
+ }
537
+ b.rShiftTo(1, b);
538
+ }
539
+ while (v.isEven()) {
540
+ v.rShiftTo(1, v);
541
+ if (ac) {
542
+ if (!c.isEven() || !d.isEven()) {
543
+ c.addTo(this, c);
544
+ d.subTo(m, d);
545
+ }
546
+ c.rShiftTo(1, c);
547
+ }
548
+ else if (!d.isEven()) {
549
+ d.subTo(m, d);
550
+ }
551
+ d.rShiftTo(1, d);
552
+ }
553
+ if (u.compareTo(v) >= 0) {
554
+ u.subTo(v, u);
555
+ if (ac) {
556
+ a.subTo(c, a);
557
+ }
558
+ b.subTo(d, b);
559
+ }
560
+ else {
561
+ v.subTo(u, v);
562
+ if (ac) {
563
+ c.subTo(a, c);
564
+ }
565
+ d.subTo(b, d);
566
+ }
567
+ }
568
+ if (v.compareTo(BigInteger.ONE) != 0) {
569
+ return BigInteger.ZERO;
570
+ }
571
+ if (d.compareTo(m) >= 0) {
572
+ return d.subtract(m);
573
+ }
574
+ if (d.signum() < 0) {
575
+ d.addTo(m, d);
576
+ }
577
+ else {
578
+ return d;
579
+ }
580
+ if (d.signum() < 0) {
581
+ return d.add(m);
582
+ }
583
+ else {
584
+ return d;
585
+ }
586
+ }
587
+ // BigInteger.prototype.pow = bnPow;
588
+ // (public) this^e
589
+ pow(e) {
590
+ return this.exp(e, new NullExp());
591
+ }
592
+ // BigInteger.prototype.gcd = bnGCD;
593
+ // (public) gcd(this,a) (HAC 14.54)
594
+ gcd(a) {
595
+ let x = (this.s < 0) ? this.negate() : this.clone();
596
+ let y = (a.s < 0) ? a.negate() : a.clone();
597
+ if (x.compareTo(y) < 0) {
598
+ const t = x;
599
+ x = y;
600
+ y = t;
601
+ }
602
+ let i = x.getLowestSetBit();
603
+ let g = y.getLowestSetBit();
604
+ if (g < 0) {
605
+ return x;
606
+ }
607
+ if (i < g) {
608
+ g = i;
609
+ }
610
+ if (g > 0) {
611
+ x.rShiftTo(g, x);
612
+ y.rShiftTo(g, y);
613
+ }
614
+ while (x.signum() > 0) {
615
+ if ((i = x.getLowestSetBit()) > 0) {
616
+ x.rShiftTo(i, x);
617
+ }
618
+ if ((i = y.getLowestSetBit()) > 0) {
619
+ y.rShiftTo(i, y);
620
+ }
621
+ if (x.compareTo(y) >= 0) {
622
+ x.subTo(y, x);
623
+ x.rShiftTo(1, x);
624
+ }
625
+ else {
626
+ y.subTo(x, y);
627
+ y.rShiftTo(1, y);
628
+ }
629
+ }
630
+ if (g > 0) {
631
+ y.lShiftTo(g, y);
632
+ }
633
+ return y;
634
+ }
635
+ // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
636
+ // (public) test primality with certainty >= 1-.5^t
637
+ isProbablePrime(t) {
638
+ let i;
639
+ const x = this.abs();
640
+ if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
641
+ for (i = 0; i < lowprimes.length; ++i) {
642
+ if (x[0] == lowprimes[i]) {
643
+ return true;
644
+ }
645
+ }
646
+ return false;
647
+ }
648
+ if (x.isEven()) {
649
+ return false;
650
+ }
651
+ i = 1;
652
+ while (i < lowprimes.length) {
653
+ let m = lowprimes[i];
654
+ let j = i + 1;
655
+ while (j < lowprimes.length && m < lplim) {
656
+ m *= lowprimes[j++];
657
+ }
658
+ m = x.modInt(m);
659
+ while (i < j) {
660
+ if (m % lowprimes[i++] == 0) {
661
+ return false;
662
+ }
663
+ }
664
+ }
665
+ return x.millerRabin(t);
666
+ }
667
+ //#endregion PUBLIC
668
+ //#region PROTECTED
669
+ // BigInteger.prototype.copyTo = bnpCopyTo;
670
+ // (protected) copy this to r
671
+ copyTo(r) {
672
+ for (let i = this.t - 1; i >= 0; --i) {
673
+ r[i] = this[i];
674
+ }
675
+ r.t = this.t;
676
+ r.s = this.s;
677
+ }
678
+ // BigInteger.prototype.fromInt = bnpFromInt;
679
+ // (protected) set from integer value x, -DV <= x < DV
680
+ fromInt(x) {
681
+ this.t = 1;
682
+ this.s = (x < 0) ? -1 : 0;
683
+ if (x > 0) {
684
+ this[0] = x;
685
+ }
686
+ else if (x < -1) {
687
+ this[0] = x + this.DV;
688
+ }
689
+ else {
690
+ this.t = 0;
691
+ }
692
+ }
693
+ // BigInteger.prototype.fromString = bnpFromString;
694
+ // (protected) set from string and radix
695
+ fromString(s, b) {
696
+ let k;
697
+ if (b == 16) {
698
+ k = 4;
699
+ }
700
+ else if (b == 8) {
701
+ k = 3;
702
+ }
703
+ else if (b == 256) {
704
+ k = 8;
705
+ /* byte array */
706
+ }
707
+ else if (b == 2) {
708
+ k = 1;
709
+ }
710
+ else if (b == 32) {
711
+ k = 5;
712
+ }
713
+ else if (b == 4) {
714
+ k = 2;
715
+ }
716
+ else {
717
+ this.fromRadix(s, b);
718
+ return;
719
+ }
720
+ this.t = 0;
721
+ this.s = 0;
722
+ let i = s.length;
723
+ let mi = false;
724
+ let sh = 0;
725
+ while (--i >= 0) {
726
+ const x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);
727
+ if (x < 0) {
728
+ if (s.charAt(i) == "-") {
729
+ mi = true;
730
+ }
731
+ continue;
732
+ }
733
+ mi = false;
734
+ if (sh == 0) {
735
+ this[this.t++] = x;
736
+ }
737
+ else if (sh + k > this.DB) {
738
+ this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;
739
+ this[this.t++] = (x >> (this.DB - sh));
740
+ }
741
+ else {
742
+ this[this.t - 1] |= x << sh;
743
+ }
744
+ sh += k;
745
+ if (sh >= this.DB) {
746
+ sh -= this.DB;
747
+ }
748
+ }
749
+ if (k == 8 && ((+s[0]) & 0x80) != 0) {
750
+ this.s = -1;
751
+ if (sh > 0) {
752
+ this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;
753
+ }
754
+ }
755
+ this.clamp();
756
+ if (mi) {
757
+ BigInteger.ZERO.subTo(this, this);
758
+ }
759
+ }
760
+ // BigInteger.prototype.clamp = bnpClamp;
761
+ // (protected) clamp off excess high words
762
+ clamp() {
763
+ const c = this.s & this.DM;
764
+ while (this.t > 0 && this[this.t - 1] == c) {
765
+ --this.t;
766
+ }
767
+ }
768
+ // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
769
+ // (protected) r = this << n*DB
770
+ dlShiftTo(n, r) {
771
+ let i;
772
+ for (i = this.t - 1; i >= 0; --i) {
773
+ r[i + n] = this[i];
774
+ }
775
+ for (i = n - 1; i >= 0; --i) {
776
+ r[i] = 0;
777
+ }
778
+ r.t = this.t + n;
779
+ r.s = this.s;
780
+ }
781
+ // BigInteger.prototype.drShiftTo = bnpDRShiftTo;
782
+ // (protected) r = this >> n*DB
783
+ drShiftTo(n, r) {
784
+ for (let i = n; i < this.t; ++i) {
785
+ r[i - n] = this[i];
786
+ }
787
+ r.t = Math.max(this.t - n, 0);
788
+ r.s = this.s;
789
+ }
790
+ // BigInteger.prototype.lShiftTo = bnpLShiftTo;
791
+ // (protected) r = this << n
792
+ lShiftTo(n, r) {
793
+ const bs = n % this.DB;
794
+ const cbs = this.DB - bs;
795
+ const bm = (1 << cbs) - 1;
796
+ const ds = Math.floor(n / this.DB);
797
+ let c = (this.s << bs) & this.DM;
798
+ for (let i = this.t - 1; i >= 0; --i) {
799
+ r[i + ds + 1] = (this[i] >> cbs) | c;
800
+ c = (this[i] & bm) << bs;
801
+ }
802
+ for (let i = ds - 1; i >= 0; --i) {
803
+ r[i] = 0;
804
+ }
805
+ r[ds] = c;
806
+ r.t = this.t + ds + 1;
807
+ r.s = this.s;
808
+ r.clamp();
809
+ }
810
+ // BigInteger.prototype.rShiftTo = bnpRShiftTo;
811
+ // (protected) r = this >> n
812
+ rShiftTo(n, r) {
813
+ r.s = this.s;
814
+ const ds = Math.floor(n / this.DB);
815
+ if (ds >= this.t) {
816
+ r.t = 0;
817
+ return;
818
+ }
819
+ const bs = n % this.DB;
820
+ const cbs = this.DB - bs;
821
+ const bm = (1 << bs) - 1;
822
+ r[0] = this[ds] >> bs;
823
+ for (let i = ds + 1; i < this.t; ++i) {
824
+ r[i - ds - 1] |= (this[i] & bm) << cbs;
825
+ r[i - ds] = this[i] >> bs;
826
+ }
827
+ if (bs > 0) {
828
+ r[this.t - ds - 1] |= (this.s & bm) << cbs;
829
+ }
830
+ r.t = this.t - ds;
831
+ r.clamp();
832
+ }
833
+ // BigInteger.prototype.subTo = bnpSubTo;
834
+ // (protected) r = this - a
835
+ subTo(a, r) {
836
+ let i = 0;
837
+ let c = 0;
838
+ const m = Math.min(a.t, this.t);
839
+ while (i < m) {
840
+ c += this[i] - a[i];
841
+ r[i++] = c & this.DM;
842
+ c >>= this.DB;
843
+ }
844
+ if (a.t < this.t) {
845
+ c -= a.s;
846
+ while (i < this.t) {
847
+ c += this[i];
848
+ r[i++] = c & this.DM;
849
+ c >>= this.DB;
850
+ }
851
+ c += this.s;
852
+ }
853
+ else {
854
+ c += this.s;
855
+ while (i < a.t) {
856
+ c -= a[i];
857
+ r[i++] = c & this.DM;
858
+ c >>= this.DB;
859
+ }
860
+ c -= a.s;
861
+ }
862
+ r.s = (c < 0) ? -1 : 0;
863
+ if (c < -1) {
864
+ r[i++] = this.DV + c;
865
+ }
866
+ else if (c > 0) {
867
+ r[i++] = c;
868
+ }
869
+ r.t = i;
870
+ r.clamp();
871
+ }
872
+ // BigInteger.prototype.multiplyTo = bnpMultiplyTo;
873
+ // (protected) r = this * a, r != this,a (HAC 14.12)
874
+ // "this" should be the larger one if appropriate.
875
+ multiplyTo(a, r) {
876
+ const x = this.abs();
877
+ const y = a.abs();
878
+ let i = x.t;
879
+ r.t = i + y.t;
880
+ while (--i >= 0) {
881
+ r[i] = 0;
882
+ }
883
+ for (i = 0; i < y.t; ++i) {
884
+ r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);
885
+ }
886
+ r.s = 0;
887
+ r.clamp();
888
+ if (this.s != a.s) {
889
+ BigInteger.ZERO.subTo(r, r);
890
+ }
891
+ }
892
+ // BigInteger.prototype.squareTo = bnpSquareTo;
893
+ // (protected) r = this^2, r != this (HAC 14.16)
894
+ squareTo(r) {
895
+ const x = this.abs();
896
+ let i = r.t = 2 * x.t;
897
+ while (--i >= 0) {
898
+ r[i] = 0;
899
+ }
900
+ for (i = 0; i < x.t - 1; ++i) {
901
+ const c = x.am(i, x[i], r, 2 * i, 0, 1);
902
+ if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
903
+ r[i + x.t] -= x.DV;
904
+ r[i + x.t + 1] = 1;
905
+ }
906
+ }
907
+ if (r.t > 0) {
908
+ r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);
909
+ }
910
+ r.s = 0;
911
+ r.clamp();
912
+ }
913
+ // BigInteger.prototype.divRemTo = bnpDivRemTo;
914
+ // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
915
+ // r != q, this != m. q or r may be null.
916
+ divRemTo(m, q, r) {
917
+ const pm = m.abs();
918
+ if (pm.t <= 0) {
919
+ return;
920
+ }
921
+ const pt = this.abs();
922
+ if (pt.t < pm.t) {
923
+ if (q != null) {
924
+ q.fromInt(0);
925
+ }
926
+ if (r != null) {
927
+ this.copyTo(r);
928
+ }
929
+ return;
930
+ }
931
+ if (r == null) {
932
+ r = nbi();
933
+ }
934
+ const y = nbi();
935
+ const ts = this.s;
936
+ const ms = m.s;
937
+ const nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus
938
+ if (nsh > 0) {
939
+ pm.lShiftTo(nsh, y);
940
+ pt.lShiftTo(nsh, r);
941
+ }
942
+ else {
943
+ pm.copyTo(y);
944
+ pt.copyTo(r);
945
+ }
946
+ const ys = y.t;
947
+ const y0 = y[ys - 1];
948
+ if (y0 == 0) {
949
+ return;
950
+ }
951
+ const yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);
952
+ const d1 = this.FV / yt;
953
+ const d2 = (1 << this.F1) / yt;
954
+ const e = 1 << this.F2;
955
+ let i = r.t;
956
+ let j = i - ys;
957
+ const t = (q == null) ? nbi() : q;
958
+ y.dlShiftTo(j, t);
959
+ if (r.compareTo(t) >= 0) {
960
+ r[r.t++] = 1;
961
+ r.subTo(t, r);
962
+ }
963
+ BigInteger.ONE.dlShiftTo(ys, t);
964
+ t.subTo(y, y); // "negative" y so we can replace sub with am later
965
+ while (y.t < ys) {
966
+ y[y.t++] = 0;
967
+ }
968
+ while (--j >= 0) {
969
+ // Estimate quotient digit
970
+ let qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);
971
+ if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
972
+ y.dlShiftTo(j, t);
973
+ r.subTo(t, r);
974
+ while (r[i] < --qd) {
975
+ r.subTo(t, r);
976
+ }
977
+ }
978
+ }
979
+ if (q != null) {
980
+ r.drShiftTo(ys, q);
981
+ if (ts != ms) {
982
+ BigInteger.ZERO.subTo(q, q);
983
+ }
984
+ }
985
+ r.t = ys;
986
+ r.clamp();
987
+ if (nsh > 0) {
988
+ r.rShiftTo(nsh, r);
989
+ } // Denormalize remainder
990
+ if (ts < 0) {
991
+ BigInteger.ZERO.subTo(r, r);
992
+ }
993
+ }
994
+ // BigInteger.prototype.invDigit = bnpInvDigit;
995
+ // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
996
+ // justification:
997
+ // xy == 1 (mod m)
998
+ // xy = 1+km
999
+ // xy(2-xy) = (1+km)(1-km)
1000
+ // x[y(2-xy)] = 1-k^2m^2
1001
+ // x[y(2-xy)] == 1 (mod m^2)
1002
+ // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
1003
+ // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
1004
+ // JS multiply "overflows" differently from C/C++, so care is needed here.
1005
+ invDigit() {
1006
+ if (this.t < 1) {
1007
+ return 0;
1008
+ }
1009
+ const x = this[0];
1010
+ if ((x & 1) == 0) {
1011
+ return 0;
1012
+ }
1013
+ let y = x & 3; // y == 1/x mod 2^2
1014
+ y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
1015
+ y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
1016
+ y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
1017
+ // last step - calculate inverse mod DV directly;
1018
+ // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
1019
+ y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
1020
+ // we really want the negative inverse, and -DV < y < DV
1021
+ return (y > 0) ? this.DV - y : -y;
1022
+ }
1023
+ // BigInteger.prototype.isEven = bnpIsEven;
1024
+ // (protected) true iff this is even
1025
+ isEven() {
1026
+ return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;
1027
+ }
1028
+ // BigInteger.prototype.exp = bnpExp;
1029
+ // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
1030
+ exp(e, z) {
1031
+ if (e > 0xffffffff || e < 1) {
1032
+ return BigInteger.ONE;
1033
+ }
1034
+ let r = nbi();
1035
+ let r2 = nbi();
1036
+ const g = z.convert(this);
1037
+ let i = nbits(e) - 1;
1038
+ g.copyTo(r);
1039
+ while (--i >= 0) {
1040
+ z.sqrTo(r, r2);
1041
+ if ((e & (1 << i)) > 0) {
1042
+ z.mulTo(r2, g, r);
1043
+ }
1044
+ else {
1045
+ const t = r;
1046
+ r = r2;
1047
+ r2 = t;
1048
+ }
1049
+ }
1050
+ return z.revert(r);
1051
+ }
1052
+ // BigInteger.prototype.chunkSize = bnpChunkSize;
1053
+ // (protected) return x s.t. r^x < DV
1054
+ chunkSize(r) {
1055
+ return Math.floor(Math.LN2 * this.DB / Math.log(r));
1056
+ }
1057
+ // BigInteger.prototype.toRadix = bnpToRadix;
1058
+ // (protected) convert to radix string
1059
+ toRadix(b) {
1060
+ if (b == null) {
1061
+ b = 10;
1062
+ }
1063
+ if (this.signum() == 0 || b < 2 || b > 36) {
1064
+ return "0";
1065
+ }
1066
+ const cs = this.chunkSize(b);
1067
+ const a = Math.pow(b, cs);
1068
+ const d = nbv(a);
1069
+ const y = nbi();
1070
+ const z = nbi();
1071
+ let r = "";
1072
+ this.divRemTo(d, y, z);
1073
+ while (y.signum() > 0) {
1074
+ r = (a + z.intValue()).toString(b).substr(1) + r;
1075
+ y.divRemTo(d, y, z);
1076
+ }
1077
+ return z.intValue().toString(b) + r;
1078
+ }
1079
+ // BigInteger.prototype.fromRadix = bnpFromRadix;
1080
+ // (protected) convert from radix string
1081
+ fromRadix(s, b) {
1082
+ this.fromInt(0);
1083
+ if (b == null) {
1084
+ b = 10;
1085
+ }
1086
+ const cs = this.chunkSize(b);
1087
+ const d = Math.pow(b, cs);
1088
+ let mi = false;
1089
+ let j = 0;
1090
+ let w = 0;
1091
+ for (let i = 0; i < s.length; ++i) {
1092
+ const x = intAt(s, i);
1093
+ if (x < 0) {
1094
+ if (s.charAt(i) == "-" && this.signum() == 0) {
1095
+ mi = true;
1096
+ }
1097
+ continue;
1098
+ }
1099
+ w = b * w + x;
1100
+ if (++j >= cs) {
1101
+ this.dMultiply(d);
1102
+ this.dAddOffset(w, 0);
1103
+ j = 0;
1104
+ w = 0;
1105
+ }
1106
+ }
1107
+ if (j > 0) {
1108
+ this.dMultiply(Math.pow(b, j));
1109
+ this.dAddOffset(w, 0);
1110
+ }
1111
+ if (mi) {
1112
+ BigInteger.ZERO.subTo(this, this);
1113
+ }
1114
+ }
1115
+ // BigInteger.prototype.fromNumber = bnpFromNumber;
1116
+ // (protected) alternate constructor
1117
+ fromNumber(a, b, c) {
1118
+ if ("number" == typeof b) {
1119
+ // new BigInteger(int,int,RNG)
1120
+ if (a < 2) {
1121
+ this.fromInt(1);
1122
+ }
1123
+ else {
1124
+ this.fromNumber(a, c);
1125
+ if (!this.testBit(a - 1)) {
1126
+ // force MSB set
1127
+ this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), util.op_or, this);
1128
+ }
1129
+ if (this.isEven()) {
1130
+ this.dAddOffset(1, 0);
1131
+ } // force odd
1132
+ while (!this.isProbablePrime(b)) {
1133
+ this.dAddOffset(2, 0);
1134
+ if (this.bitLength() > a) {
1135
+ this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);
1136
+ }
1137
+ }
1138
+ }
1139
+ }
1140
+ else {
1141
+ // new BigInteger(int,RNG)
1142
+ const x = [];
1143
+ const t = a & 7;
1144
+ x.length = (a >> 3) + 1;
1145
+ b.nextBytes(x);
1146
+ if (t > 0) {
1147
+ x[0] &= ((1 << t) - 1);
1148
+ }
1149
+ else {
1150
+ x[0] = 0;
1151
+ }
1152
+ this.fromString(x, 256);
1153
+ }
1154
+ }
1155
+ // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
1156
+ // (protected) r = this op a (bitwise)
1157
+ bitwiseTo(a, op, r) {
1158
+ let i;
1159
+ let f;
1160
+ const m = Math.min(a.t, this.t);
1161
+ for (i = 0; i < m; ++i) {
1162
+ r[i] = op(this[i], a[i]);
1163
+ }
1164
+ if (a.t < this.t) {
1165
+ f = a.s & this.DM;
1166
+ for (i = m; i < this.t; ++i) {
1167
+ r[i] = op(this[i], f);
1168
+ }
1169
+ r.t = this.t;
1170
+ }
1171
+ else {
1172
+ f = this.s & this.DM;
1173
+ for (i = m; i < a.t; ++i) {
1174
+ r[i] = op(f, a[i]);
1175
+ }
1176
+ r.t = a.t;
1177
+ }
1178
+ r.s = op(this.s, a.s);
1179
+ r.clamp();
1180
+ }
1181
+ // BigInteger.prototype.changeBit = bnpChangeBit;
1182
+ // (protected) this op (1<<n)
1183
+ changeBit(n, op) {
1184
+ const r = BigInteger.ONE.shiftLeft(n);
1185
+ this.bitwiseTo(r, op, r);
1186
+ return r;
1187
+ }
1188
+ // BigInteger.prototype.addTo = bnpAddTo;
1189
+ // (protected) r = this + a
1190
+ addTo(a, r) {
1191
+ let i = 0;
1192
+ let c = 0;
1193
+ const m = Math.min(a.t, this.t);
1194
+ while (i < m) {
1195
+ c += this[i] + a[i];
1196
+ r[i++] = c & this.DM;
1197
+ c >>= this.DB;
1198
+ }
1199
+ if (a.t < this.t) {
1200
+ c += a.s;
1201
+ while (i < this.t) {
1202
+ c += this[i];
1203
+ r[i++] = c & this.DM;
1204
+ c >>= this.DB;
1205
+ }
1206
+ c += this.s;
1207
+ }
1208
+ else {
1209
+ c += this.s;
1210
+ while (i < a.t) {
1211
+ c += a[i];
1212
+ r[i++] = c & this.DM;
1213
+ c >>= this.DB;
1214
+ }
1215
+ c += a.s;
1216
+ }
1217
+ r.s = (c < 0) ? -1 : 0;
1218
+ if (c > 0) {
1219
+ r[i++] = c;
1220
+ }
1221
+ else if (c < -1) {
1222
+ r[i++] = this.DV + c;
1223
+ }
1224
+ r.t = i;
1225
+ r.clamp();
1226
+ }
1227
+ // BigInteger.prototype.dMultiply = bnpDMultiply;
1228
+ // (protected) this *= n, this >= 0, 1 < n < DV
1229
+ dMultiply(n) {
1230
+ this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);
1231
+ ++this.t;
1232
+ this.clamp();
1233
+ }
1234
+ // BigInteger.prototype.dAddOffset = bnpDAddOffset;
1235
+ // (protected) this += n << w words, this >= 0
1236
+ dAddOffset(n, w) {
1237
+ if (n == 0) {
1238
+ return;
1239
+ }
1240
+ while (this.t <= w) {
1241
+ this[this.t++] = 0;
1242
+ }
1243
+ this[w] += n;
1244
+ while (this[w] >= this.DV) {
1245
+ this[w] -= this.DV;
1246
+ if (++w >= this.t) {
1247
+ this[this.t++] = 0;
1248
+ }
1249
+ ++this[w];
1250
+ }
1251
+ }
1252
+ // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
1253
+ // (protected) r = lower n words of "this * a", a.t <= n
1254
+ // "this" should be the larger one if appropriate.
1255
+ multiplyLowerTo(a, n, r) {
1256
+ let i = Math.min(this.t + a.t, n);
1257
+ r.s = 0; // assumes a,this >= 0
1258
+ r.t = i;
1259
+ while (i > 0) {
1260
+ r[--i] = 0;
1261
+ }
1262
+ for (const j = r.t - this.t; i < j; ++i) {
1263
+ r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);
1264
+ }
1265
+ for (const j = Math.min(a.t, n); i < j; ++i) {
1266
+ this.am(0, a[i], r, i, 0, n - i);
1267
+ }
1268
+ r.clamp();
1269
+ }
1270
+ // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
1271
+ // (protected) r = "this * a" without lower n words, n > 0
1272
+ // "this" should be the larger one if appropriate.
1273
+ multiplyUpperTo(a, n, r) {
1274
+ --n;
1275
+ let i = r.t = this.t + a.t - n;
1276
+ r.s = 0; // assumes a,this >= 0
1277
+ while (--i >= 0) {
1278
+ r[i] = 0;
1279
+ }
1280
+ for (i = Math.max(n - this.t, 0); i < a.t; ++i) {
1281
+ r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);
1282
+ }
1283
+ r.clamp();
1284
+ r.drShiftTo(1, r);
1285
+ }
1286
+ // BigInteger.prototype.modInt = bnpModInt;
1287
+ // (protected) this % n, n < 2^26
1288
+ modInt(n) {
1289
+ if (n <= 0) {
1290
+ return 0;
1291
+ }
1292
+ const d = this.DV % n;
1293
+ let r = (this.s < 0) ? n - 1 : 0;
1294
+ if (this.t > 0) {
1295
+ if (d == 0) {
1296
+ r = this[0] % n;
1297
+ }
1298
+ else {
1299
+ for (let i = this.t - 1; i >= 0; --i) {
1300
+ r = (d * r + this[i]) % n;
1301
+ }
1302
+ }
1303
+ }
1304
+ return r;
1305
+ }
1306
+ // BigInteger.prototype.millerRabin = bnpMillerRabin;
1307
+ // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
1308
+ millerRabin(t) {
1309
+ const n1 = this.subtract(BigInteger.ONE);
1310
+ const k = n1.getLowestSetBit();
1311
+ if (k <= 0) {
1312
+ return false;
1313
+ }
1314
+ const r = n1.shiftRight(k);
1315
+ t = (t + 1) >> 1;
1316
+ if (t > lowprimes.length) {
1317
+ t = lowprimes.length;
1318
+ }
1319
+ const a = nbi();
1320
+ for (let i = 0; i < t; ++i) {
1321
+ // Pick bases at random, instead of starting at 2
1322
+ a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);
1323
+ let y = a.modPow(r, this);
1324
+ if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
1325
+ let j = 1;
1326
+ while (j++ < k && y.compareTo(n1) != 0) {
1327
+ y = y.modPowInt(2, this);
1328
+ if (y.compareTo(BigInteger.ONE) == 0) {
1329
+ return false;
1330
+ }
1331
+ }
1332
+ if (y.compareTo(n1) != 0) {
1333
+ return false;
1334
+ }
1335
+ }
1336
+ }
1337
+ return true;
1338
+ }
1339
+ // BigInteger.prototype.square = bnSquare;
1340
+ // (public) this^2
1341
+ square() {
1342
+ const r = nbi();
1343
+ this.squareTo(r);
1344
+ return r;
1345
+ }
1346
+ //#region ASYNC
1347
+ // Public API method
1348
+ gcda(a, callback) {
1349
+ let x = (this.s < 0) ? this.negate() : this.clone();
1350
+ let y = (a.s < 0) ? a.negate() : a.clone();
1351
+ if (x.compareTo(y) < 0) {
1352
+ const t = x;
1353
+ x = y;
1354
+ y = t;
1355
+ }
1356
+ let i = x.getLowestSetBit();
1357
+ let g = y.getLowestSetBit();
1358
+ if (g < 0) {
1359
+ callback(x);
1360
+ return;
1361
+ }
1362
+ if (i < g) {
1363
+ g = i;
1364
+ }
1365
+ if (g > 0) {
1366
+ x.rShiftTo(g, x);
1367
+ y.rShiftTo(g, y);
1368
+ }
1369
+ // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.
1370
+ const gcda1 = function () {
1371
+ if ((i = x.getLowestSetBit()) > 0) {
1372
+ x.rShiftTo(i, x);
1373
+ }
1374
+ if ((i = y.getLowestSetBit()) > 0) {
1375
+ y.rShiftTo(i, y);
1376
+ }
1377
+ if (x.compareTo(y) >= 0) {
1378
+ x.subTo(y, x);
1379
+ x.rShiftTo(1, x);
1380
+ }
1381
+ else {
1382
+ y.subTo(x, y);
1383
+ y.rShiftTo(1, y);
1384
+ }
1385
+ if (!(x.signum() > 0)) {
1386
+ if (g > 0) {
1387
+ y.lShiftTo(g, y);
1388
+ }
1389
+ setTimeout(function () { callback(y); }, 0); // escape
1390
+ }
1391
+ else {
1392
+ setTimeout(gcda1, 0);
1393
+ }
1394
+ };
1395
+ setTimeout(gcda1, 10);
1396
+ }
1397
+ // (protected) alternate constructor
1398
+ fromNumberAsync(a, b, c, callback) {
1399
+ if ("number" == typeof b) {
1400
+ if (a < 2) {
1401
+ this.fromInt(1);
1402
+ }
1403
+ else {
1404
+ this.fromNumber(a, c);
1405
+ if (!this.testBit(a - 1)) {
1406
+ this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), util.op_or, this);
1407
+ }
1408
+ if (this.isEven()) {
1409
+ this.dAddOffset(1, 0);
1410
+ }
1411
+ const bnp = this;
1412
+ const bnpfn1 = function () {
1413
+ bnp.dAddOffset(2, 0);
1414
+ if (bnp.bitLength() > a) {
1415
+ bnp.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp);
1416
+ }
1417
+ if (bnp.isProbablePrime(b)) {
1418
+ setTimeout(function () { callback(); }, 0); // escape
1419
+ }
1420
+ else {
1421
+ setTimeout(bnpfn1, 0);
1422
+ }
1423
+ };
1424
+ setTimeout(bnpfn1, 0);
1425
+ }
1426
+ }
1427
+ else {
1428
+ const x = [];
1429
+ const t = a & 7;
1430
+ x.length = (a >> 3) + 1;
1431
+ b.nextBytes(x);
1432
+ if (t > 0) {
1433
+ x[0] &= ((1 << t) - 1);
1434
+ }
1435
+ else {
1436
+ x[0] = 0;
1437
+ }
1438
+ this.fromString(x, 256);
1439
+ }
1440
+ }
1441
+ }
1442
+ //#region REDUCERS
1443
+ //#region NullExp
1444
+ class NullExp {
1445
+ constructor() {
1446
+ }
1447
+ // NullExp.prototype.convert = nNop;
1448
+ convert(x) {
1449
+ return x;
1450
+ }
1451
+ // NullExp.prototype.revert = nNop;
1452
+ revert(x) {
1453
+ return x;
1454
+ }
1455
+ // NullExp.prototype.mulTo = nMulTo;
1456
+ mulTo(x, y, r) {
1457
+ x.multiplyTo(y, r);
1458
+ }
1459
+ // NullExp.prototype.sqrTo = nSqrTo;
1460
+ sqrTo(x, r) {
1461
+ x.squareTo(r);
1462
+ }
1463
+ }
1464
+ // Modular reduction using "classic" algorithm
1465
+ class Classic {
1466
+ constructor(m) {
1467
+ this.m = m;
1468
+ }
1469
+ // Classic.prototype.convert = cConvert;
1470
+ convert(x) {
1471
+ if (x.s < 0 || x.compareTo(this.m) >= 0) {
1472
+ return x.mod(this.m);
1473
+ }
1474
+ else {
1475
+ return x;
1476
+ }
1477
+ }
1478
+ // Classic.prototype.revert = cRevert;
1479
+ revert(x) {
1480
+ return x;
1481
+ }
1482
+ // Classic.prototype.reduce = cReduce;
1483
+ reduce(x) {
1484
+ x.divRemTo(this.m, null, x);
1485
+ }
1486
+ // Classic.prototype.mulTo = cMulTo;
1487
+ mulTo(x, y, r) {
1488
+ x.multiplyTo(y, r);
1489
+ this.reduce(r);
1490
+ }
1491
+ // Classic.prototype.sqrTo = cSqrTo;
1492
+ sqrTo(x, r) {
1493
+ x.squareTo(r);
1494
+ this.reduce(r);
1495
+ }
1496
+ }
1497
+ //#endregion
1498
+ //#region Montgomery
1499
+ // Montgomery reduction
1500
+ class Montgomery {
1501
+ constructor(m) {
1502
+ this.m = m;
1503
+ this.mp = m.invDigit();
1504
+ this.mpl = this.mp & 0x7fff;
1505
+ this.mph = this.mp >> 15;
1506
+ this.um = (1 << (m.DB - 15)) - 1;
1507
+ this.mt2 = 2 * m.t;
1508
+ }
1509
+ // Montgomery.prototype.convert = montConvert;
1510
+ // xR mod m
1511
+ convert(x) {
1512
+ const r = nbi();
1513
+ x.abs().dlShiftTo(this.m.t, r);
1514
+ r.divRemTo(this.m, null, r);
1515
+ if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {
1516
+ this.m.subTo(r, r);
1517
+ }
1518
+ return r;
1519
+ }
1520
+ // Montgomery.prototype.revert = montRevert;
1521
+ // x/R mod m
1522
+ revert(x) {
1523
+ const r = nbi();
1524
+ x.copyTo(r);
1525
+ this.reduce(r);
1526
+ return r;
1527
+ }
1528
+ // Montgomery.prototype.reduce = montReduce;
1529
+ // x = x/R mod m (HAC 14.32)
1530
+ reduce(x) {
1531
+ while (x.t <= this.mt2) {
1532
+ // pad x so am has enough room later
1533
+ x[x.t++] = 0;
1534
+ }
1535
+ for (let i = 0; i < this.m.t; ++i) {
1536
+ // faster way of calculating u0 = x[i]*mp mod DV
1537
+ let j = x[i] & 0x7fff;
1538
+ const u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;
1539
+ // use am to combine the multiply-shift-add into one call
1540
+ j = i + this.m.t;
1541
+ x[j] += this.m.am(0, u0, x, i, 0, this.m.t);
1542
+ // propagate carry
1543
+ while (x[j] >= x.DV) {
1544
+ x[j] -= x.DV;
1545
+ x[++j]++;
1546
+ }
1547
+ }
1548
+ x.clamp();
1549
+ x.drShiftTo(this.m.t, x);
1550
+ if (x.compareTo(this.m) >= 0) {
1551
+ x.subTo(this.m, x);
1552
+ }
1553
+ }
1554
+ // Montgomery.prototype.mulTo = montMulTo;
1555
+ // r = "xy/R mod m"; x,y != r
1556
+ mulTo(x, y, r) {
1557
+ x.multiplyTo(y, r);
1558
+ this.reduce(r);
1559
+ }
1560
+ // Montgomery.prototype.sqrTo = montSqrTo;
1561
+ // r = "x^2/R mod m"; x != r
1562
+ sqrTo(x, r) {
1563
+ x.squareTo(r);
1564
+ this.reduce(r);
1565
+ }
1566
+ }
1567
+ //#endregion Montgomery
1568
+ //#region Barrett
1569
+ // Barrett modular reduction
1570
+ class Barrett {
1571
+ constructor(m) {
1572
+ this.m = m;
1573
+ // setup Barrett
1574
+ this.r2 = nbi();
1575
+ this.q3 = nbi();
1576
+ BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);
1577
+ this.mu = this.r2.divide(m);
1578
+ }
1579
+ // Barrett.prototype.convert = barrettConvert;
1580
+ convert(x) {
1581
+ if (x.s < 0 || x.t > 2 * this.m.t) {
1582
+ return x.mod(this.m);
1583
+ }
1584
+ else if (x.compareTo(this.m) < 0) {
1585
+ return x;
1586
+ }
1587
+ else {
1588
+ const r = nbi();
1589
+ x.copyTo(r);
1590
+ this.reduce(r);
1591
+ return r;
1592
+ }
1593
+ }
1594
+ // Barrett.prototype.revert = barrettRevert;
1595
+ revert(x) {
1596
+ return x;
1597
+ }
1598
+ // Barrett.prototype.reduce = barrettReduce;
1599
+ // x = x mod m (HAC 14.42)
1600
+ reduce(x) {
1601
+ x.drShiftTo(this.m.t - 1, this.r2);
1602
+ if (x.t > this.m.t + 1) {
1603
+ x.t = this.m.t + 1;
1604
+ x.clamp();
1605
+ }
1606
+ this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);
1607
+ this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);
1608
+ while (x.compareTo(this.r2) < 0) {
1609
+ x.dAddOffset(1, this.m.t + 1);
1610
+ }
1611
+ x.subTo(this.r2, x);
1612
+ while (x.compareTo(this.m) >= 0) {
1613
+ x.subTo(this.m, x);
1614
+ }
1615
+ }
1616
+ // Barrett.prototype.mulTo = barrettMulTo;
1617
+ // r = x*y mod m; x,y != r
1618
+ mulTo(x, y, r) {
1619
+ x.multiplyTo(y, r);
1620
+ this.reduce(r);
1621
+ }
1622
+ // Barrett.prototype.sqrTo = barrettSqrTo;
1623
+ // r = x^2 mod m; x != r
1624
+ sqrTo(x, r) {
1625
+ x.squareTo(r);
1626
+ this.reduce(r);
1627
+ }
1628
+ }
1629
+ //#endregion
1630
+ //#endregion REDUCERS
1631
+ // return new, unset BigInteger
1632
+ function nbi() { return new BigInteger(null); }
1633
+ function parseBigInt(str, r) {
1634
+ return new BigInteger(str, r);
1635
+ }
1636
+ // am: Compute w_j += (x*this_i), propagate carries,
1637
+ // c is initial carry, returns final carry.
1638
+ // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
1639
+ // We need to select the fastest one that works in this environment.
1640
+ const inBrowser = typeof navigator !== "undefined";
1641
+ if (inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
1642
+ // am2 avoids a big mult-and-extract completely.
1643
+ // Max digit bits should be <= 30 because we do bitwise ops
1644
+ // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
1645
+ BigInteger.prototype.am = function am2(i, x, w, j, c, n) {
1646
+ const xl = x & 0x7fff;
1647
+ const xh = x >> 15;
1648
+ while (--n >= 0) {
1649
+ let l = this[i] & 0x7fff;
1650
+ const h = this[i++] >> 15;
1651
+ const m = xh * l + h * xl;
1652
+ l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);
1653
+ c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);
1654
+ w[j++] = l & 0x3fffffff;
1655
+ }
1656
+ return c;
1657
+ };
1658
+ dbits = 30;
1659
+ }
1660
+ else if (inBrowser && j_lm && (navigator.appName != "Netscape")) {
1661
+ // am1: use a single mult and divide to get the high bits,
1662
+ // max digit bits should be 26 because
1663
+ // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
1664
+ BigInteger.prototype.am = function am1(i, x, w, j, c, n) {
1665
+ while (--n >= 0) {
1666
+ const v = x * this[i++] + w[j] + c;
1667
+ c = Math.floor(v / 0x4000000);
1668
+ w[j++] = v & 0x3ffffff;
1669
+ }
1670
+ return c;
1671
+ };
1672
+ dbits = 26;
1673
+ }
1674
+ else { // Mozilla/Netscape seems to prefer am3
1675
+ // Alternately, set max digit bits to 28 since some
1676
+ // browsers slow down when dealing with 32-bit numbers.
1677
+ BigInteger.prototype.am = function am3(i, x, w, j, c, n) {
1678
+ const xl = x & 0x3fff;
1679
+ const xh = x >> 14;
1680
+ while (--n >= 0) {
1681
+ let l = this[i] & 0x3fff;
1682
+ const h = this[i++] >> 14;
1683
+ const m = xh * l + h * xl;
1684
+ l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;
1685
+ c = (l >> 28) + (m >> 14) + xh * h;
1686
+ w[j++] = l & 0xfffffff;
1687
+ }
1688
+ return c;
1689
+ };
1690
+ dbits = 28;
1691
+ }
1692
+ BigInteger.prototype.DB = dbits;
1693
+ BigInteger.prototype.DM = ((1 << dbits) - 1);
1694
+ BigInteger.prototype.DV = (1 << dbits);
1695
+ const BI_FP = 52;
1696
+ BigInteger.prototype.FV = Math.pow(2, BI_FP);
1697
+ BigInteger.prototype.F1 = BI_FP - dbits;
1698
+ BigInteger.prototype.F2 = 2 * dbits - BI_FP;
1699
+ // Digit conversions
1700
+ const BI_RC = [];
1701
+ let rr;
1702
+ let vv;
1703
+ rr = "0".charCodeAt(0);
1704
+ for (vv = 0; vv <= 9; ++vv) {
1705
+ BI_RC[rr++] = vv;
1706
+ }
1707
+ rr = "a".charCodeAt(0);
1708
+ for (vv = 10; vv < 36; ++vv) {
1709
+ BI_RC[rr++] = vv;
1710
+ }
1711
+ rr = "A".charCodeAt(0);
1712
+ for (vv = 10; vv < 36; ++vv) {
1713
+ BI_RC[rr++] = vv;
1714
+ }
1715
+ function intAt(s, i) {
1716
+ const c = BI_RC[s.charCodeAt(i)];
1717
+ return (c == null) ? -1 : c;
1718
+ }
1719
+ // return bigint initialized to value
1720
+ function nbv(i) {
1721
+ const r = nbi();
1722
+ r.fromInt(i);
1723
+ return r;
1724
+ }
1725
+ // returns bit length of the integer x
1726
+ function nbits(x) {
1727
+ let r = 1;
1728
+ let t;
1729
+ if ((t = x >>> 16) != 0) {
1730
+ x = t;
1731
+ r += 16;
1732
+ }
1733
+ if ((t = x >> 8) != 0) {
1734
+ x = t;
1735
+ r += 8;
1736
+ }
1737
+ if ((t = x >> 4) != 0) {
1738
+ x = t;
1739
+ r += 4;
1740
+ }
1741
+ if ((t = x >> 2) != 0) {
1742
+ x = t;
1743
+ r += 2;
1744
+ }
1745
+ if ((t = x >> 1) != 0) {
1746
+ x = t;
1747
+ r += 1;
1748
+ }
1749
+ return r;
1750
+ }
1751
+ // "constants"
1752
+ BigInteger.ZERO = nbv(0);
1753
+ BigInteger.ONE = nbv(1);
1754
+
1755
+ exports.BigInteger = BigInteger;
1756
+ exports.intAt = intAt;
1757
+ exports.nbi = nbi;
1758
+ exports.nbits = nbits;
1759
+ exports.nbv = nbv;
1760
+ exports.parseBigInt = parseBigInt;